Skip to content

Commit e03f7d7

Browse files
committed
Improvements & Config Field Changes & New Server Feature (Old Sneak Height)
1 parent 4aa3021 commit e03f7d7

31 files changed

+212
-143
lines changed

src/main/java/org/visuals/legacy/animatium/AnimatiumConstants.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727

2828
import lombok.experimental.UtilityClass;
2929
import net.fabricmc.fabric.api.client.model.loading.v1.ExtraModelKey;
30-
import net.minecraft.client.GraphicsStatus;
31-
import net.minecraft.client.Minecraft;
3230
import net.minecraft.client.renderer.block.model.BlockStateModel;
3331
import net.minecraft.resources.ResourceLocation;
3432
import org.visuals.legacy.animatium.packet.AnimatiumInfoPayloadPacket;
@@ -46,8 +44,4 @@ public class AnimatiumConstants {
4644
public AnimatiumInfoPayloadPacket getInfoPayload() {
4745
return new AnimatiumInfoPayloadPacket(VERSION, IS_DEVELOPMENT ? DEVELOPMENT_VERSION : null);
4846
}
49-
50-
public boolean isFastGraphics() {
51-
return GraphicsStatus.FAST.equals(Minecraft.getInstance().options.graphicsMode().get());
52-
}
5347
}

src/main/java/org/visuals/legacy/animatium/config/category/ItemsConfigCategory.java

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,6 @@
3131
import org.visuals.legacy.animatium.util.enums.FishingRodVersion;
3232

3333
public class ItemsConfigCategory extends Category {
34-
// (Items) Fishing Rod
35-
public boolean fishingRodTextureStackCheck = true;
36-
public boolean fishingRodLineInterpolation = true;
37-
public boolean noMoveFishingRodLine = false;
38-
public boolean fishingRodLinePositionThirdPerson = true;
39-
public boolean fishingRodLineThickness = true;
40-
public boolean thinFishingRodLineThickness = false;
41-
public boolean stickModelWhenCastInThirdperson = true;
4234
// (Items) Enchantment Glint
4335
public boolean legacyGlintSpeed = true;
4436
public boolean glintOnItemDrops2D = true;
@@ -56,6 +48,7 @@ public class ItemsConfigCategory extends Category {
5648
public boolean skullPosition = true;
5749
public FishingRodVersion fishingRodVersion = FishingRodVersion.V1_7;
5850
// (Items) Other
51+
public boolean thinFishingRodLineThickness = false;
5952
public boolean itemUsageSwinging = true;
6053
public boolean swingOnUse = false;
6154
public boolean swingOnDrop = false;
@@ -72,20 +65,6 @@ public static ConfigCategory create(final ItemsConfigCategory defaults, final It
7265
final ConfigCategory.Builder category = ConfigCategory.createBuilder();
7366
category.name(Component.translatable("animatium.category.items"));
7467

75-
// Fishing Rod
76-
{
77-
final OptionGroup.Builder fishingRodGroup = OptionGroup.createBuilder();
78-
fishingRodGroup.name(Component.translatable("animatium.category.items.group.fishing_rod"));
79-
fishingRodGroup.option(booleanOption("fishingRodTextureStackCheck", defaults, config));
80-
fishingRodGroup.option(booleanOption("fishingRodLineInterpolation", defaults, config));
81-
fishingRodGroup.option(booleanOption("noMoveFishingRodLine", defaults, config));
82-
fishingRodGroup.option(booleanOption("fishingRodLinePositionThirdPerson", defaults, config));
83-
fishingRodGroup.option(booleanOption("fishingRodLineThickness", defaults, config));
84-
fishingRodGroup.option(booleanOption("thinFishingRodLineThickness", defaults, config));
85-
fishingRodGroup.option(booleanOption("stickModelWhenCastInThirdperson", defaults, config));
86-
category.group(fishingRodGroup.build());
87-
}
88-
8968
// Glint
9069
{
9170
final OptionGroup.Builder glintGroup = OptionGroup.createBuilder();
@@ -102,7 +81,7 @@ public static ConfigCategory create(final ItemsConfigCategory defaults, final It
10281
drops2dGroup.name(Component.translatable("animatium.category.items.group.2d_drops"));
10382
drops2dGroup.option(booleanOption("itemDropsFaceCamera", defaults, config));
10483
drops2dGroup.option(booleanOption("itemDropsFaceCameraRotationFix", defaults, config));
105-
// TODO: drops2dGroup.option(booleanOption("itemDrops2D", defaults, config));
84+
drops2dGroup.option(booleanOption("itemDrops2D", defaults, config));
10685
drops2dGroup.option(booleanOption("itemFramed2D", defaults, config));
10786
drops2dGroup.option(booleanOption("itemColors2D", defaults, config));
10887
category.group(drops2dGroup.build());
@@ -124,6 +103,7 @@ public static ConfigCategory create(final ItemsConfigCategory defaults, final It
124103
{
125104
final OptionGroup.Builder otherGroup = OptionGroup.createBuilder();
126105
otherGroup.name(Component.translatable("animatium.category.items.group.other"));
106+
otherGroup.option(booleanOption("thinFishingRodLineThickness", defaults, config));
127107
otherGroup.option(booleanOption("itemUsageSwinging", defaults, config));
128108
otherGroup.option(booleanOption("swingOnUse", defaults, config));
129109
otherGroup.option(booleanOption("swingOnDrop", defaults, config));

src/main/java/org/visuals/legacy/animatium/config/category/MovementConfigCategory.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,18 @@
2828
import dev.isxander.yacl3.api.ConfigCategory;
2929
import dev.isxander.yacl3.api.OptionGroup;
3030
import net.minecraft.network.chat.Component;
31+
import org.visuals.legacy.animatium.util.enums.SneakAnimationSetting;
3132

3233
public class MovementConfigCategory extends Category {
33-
// (Movement) Sneaking
34-
public boolean smoothSneaking = true;
35-
public boolean sneakAnimationInterpolation = true;
36-
public boolean fakeOldSneakEyeHeight = false;
37-
public boolean sneakingFeetPosition = true;
38-
public boolean syncPlayerModelWithEyeHeight = true;
39-
public boolean sneakAnimationWhileFlying = true;
4034
// (Movement) Cape
4135
public boolean capeMovement = true;
4236
public boolean disableCapeLean = false;
4337
public boolean capeSwingRotation = true;
4438
public boolean capeChestplateTranslation = true;
4539
public boolean capeSneakPosition = true;
4640
// (Movement) Other
41+
public SneakAnimationSetting sneakAnimation = SneakAnimationSetting.V1_7;
42+
public boolean fakeOldSneakEyeHeight = false;
4743
public boolean rotateBackwardsWalking = true;
4844
public boolean uncapBlockingHeadRotation = true;
4945
public boolean disableHeadRotationInterpolation = true;
@@ -57,18 +53,6 @@ public static ConfigCategory create(final MovementConfigCategory defaults, final
5753
final ConfigCategory.Builder category = ConfigCategory.createBuilder();
5854
category.name(Component.translatable("animatium.category.movement"));
5955

60-
{
61-
final OptionGroup.Builder sneakingGroup = OptionGroup.createBuilder();
62-
sneakingGroup.name(Component.translatable("animatium.category.movement.group.sneaking"));
63-
sneakingGroup.option(booleanOption("smoothSneaking", defaults, config));
64-
sneakingGroup.option(booleanOption("sneakAnimationInterpolation", defaults, config));
65-
sneakingGroup.option(booleanOption("fakeOldSneakEyeHeight", defaults, config));
66-
sneakingGroup.option(booleanOption("sneakingFeetPosition", defaults, config));
67-
sneakingGroup.option(booleanOption("syncPlayerModelWithEyeHeight", defaults, config));
68-
sneakingGroup.option(booleanOption("sneakAnimationWhileFlying", defaults, config));
69-
category.group(sneakingGroup.build());
70-
}
71-
7256
{
7357
final OptionGroup.Builder capeGroup = OptionGroup.createBuilder();
7458
capeGroup.name(Component.translatable("animatium.category.movement.group.cape"));
@@ -83,6 +67,8 @@ public static ConfigCategory create(final MovementConfigCategory defaults, final
8367
{
8468
final OptionGroup.Builder otherGroup = OptionGroup.createBuilder();
8569
otherGroup.name(Component.translatable("animatium.category.movement.group.other"));
70+
otherGroup.option(enumOption("sneakAnimation", defaults, config, SneakAnimationSetting.class));
71+
otherGroup.option(booleanOption("fakeOldSneakEyeHeight", defaults, config));
8672
otherGroup.option(booleanOption("rotateBackwardsWalking", defaults, config));
8773
otherGroup.option(booleanOption("uncapBlockingHeadRotation", defaults, config));
8874
otherGroup.option(booleanOption("disableHeadRotationInterpolation", defaults, config));

src/main/java/org/visuals/legacy/animatium/config/category/OtherConfigCategory.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import dev.isxander.yacl3.api.ConfigCategory;
2929
import dev.isxander.yacl3.api.OptionGroup;
3030
import net.minecraft.network.chat.Component;
31+
import org.visuals.legacy.animatium.util.enums.VoidFogSetting;
3132

3233
public class OtherConfigCategory extends Category {
3334
// Sky
@@ -59,13 +60,12 @@ public class OtherConfigCategory extends Category {
5960
public boolean oldMinimumSmoothLighting = true;
6061
public boolean oldCloudRendering = true;
6162
public boolean oldWindowIcon = true;
62-
public boolean voidParticles = true;
63-
public boolean voidFog = true;
6463
public boolean oldFallParticlePhysics = true;
6564
public boolean alwaysSteveModel = true;
6665
public boolean fastGrass = true;
6766
public boolean oldY0Height = true;
6867
public boolean disableRandomBlockRotations = true;
68+
public VoidFogSetting voidFog = VoidFogSetting.BOTH;
6969

7070
public static ConfigCategory create(final OtherConfigCategory defaults, final OtherConfigCategory config) {
7171
final ConfigCategory.Builder category = ConfigCategory.createBuilder();
@@ -104,13 +104,12 @@ public static ConfigCategory create(final OtherConfigCategory defaults, final Ot
104104
category.option(booleanOption("oldMinimumSmoothLighting", defaults, config));
105105
category.option(booleanOption("oldCloudRendering", defaults, config));
106106
category.option(booleanOption("oldWindowIcon", defaults, config));
107-
category.option(booleanOption("voidParticles", defaults, config));
108-
category.option(booleanOption("voidFog", defaults, config));
109107
category.option(booleanOption("oldFallParticlePhysics", defaults, config));
110108
category.option(booleanOption("alwaysSteveModel", defaults, config));
111109
category.option(booleanOption("fastGrass", defaults, config));
112110
category.option(booleanOption("oldY0Height", defaults, config));
113111
category.option(booleanOption("disableRandomBlockRotations", defaults, config));
112+
category.option(enumOption("voidFog", defaults, config, VoidFogSetting.class));
114113
return category.build();
115114
}
116115
}

src/main/java/org/visuals/legacy/animatium/mixins/v1/entity/MixinHumanoidModel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.visuals.legacy.animatium.Animatium;
4949
import org.visuals.legacy.animatium.config.AnimatiumConfig;
5050
import org.visuals.legacy.animatium.util.Utils;
51+
import org.visuals.legacy.animatium.util.enums.SneakAnimationSetting;
5152
import org.visuals.legacy.animatium.util.states.UtilityRenderState;
5253

5354
import java.util.function.Function;
@@ -85,7 +86,7 @@ protected MixinHumanoidModel(ModelPart modelPart, Function<ResourceLocation, Ren
8586
// TODO/MOVE
8687
@WrapOperation(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)V", at = @At(value = "FIELD", opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;isCrouching:Z"))
8788
private boolean animatium$sneakingFeetPosition(HumanoidRenderState instance, Operation<Boolean> original) {
88-
if (Animatium.isEnabled() && AnimatiumConfig.instance().movement.sneakingFeetPosition && instance.isCrouching) {
89+
if (Animatium.isEnabled() && AnimatiumConfig.instance().movement.sneakAnimation == SneakAnimationSetting.V1_7 && instance.isCrouching) {
8990
// Values sourced from older versions
9091
body.xRot = 0.5F;
9192
rightArm.xRot += 0.4F;

src/main/java/org/visuals/legacy/animatium/mixins/v1/entity/MixinLivingEntityRenderer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.visuals.legacy.animatium.Animatium;
4747
import org.visuals.legacy.animatium.config.AnimatiumConfig;
4848
import org.visuals.legacy.animatium.util.Utils;
49+
import org.visuals.legacy.animatium.util.enums.SneakAnimationSetting;
4950
import org.visuals.legacy.animatium.util.states.CameraUtilityRenderState;
5051
import org.visuals.legacy.animatium.util.states.UtilityRenderState;
5152

@@ -55,7 +56,7 @@ public abstract class MixinLivingEntityRenderer<S extends LivingEntityRenderStat
5556
@Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;translate(FFF)V", ordinal = 1))
5657
private void animatium$syncPlayerModelWithEyeHeight(S livingEntityRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) {
5758
final CameraUtilityRenderState cameraUtilityRenderState = (CameraUtilityRenderState) cameraRenderState;
58-
if (Animatium.isEnabled() && AnimatiumConfig.instance().movement.syncPlayerModelWithEyeHeight && livingEntityRenderState instanceof AvatarRenderState avatarRenderState && cameraUtilityRenderState.animatium$getId() == avatarRenderState.id) {
59+
if (Animatium.isEnabled() && AnimatiumConfig.instance().movement.sneakAnimation == SneakAnimationSetting.V1_7 && livingEntityRenderState instanceof AvatarRenderState avatarRenderState && cameraUtilityRenderState.animatium$getId() == avatarRenderState.id) {
5960
final float cameraLerpValue = Utils.lerpCameraPosition(cameraUtilityRenderState);
6061
poseStack.translate(0.0F, (livingEntityRenderState.eyeHeight * livingEntityRenderState.scale) - cameraLerpValue, 0.0F);
6162
}

src/main/java/org/visuals/legacy/animatium/mixins/v1/entity/fishing/MixinFishingHookRenderer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ protected MixinFishingHookRenderer(EntityRendererProvider.Context context) {
8181
@Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/FishingHookRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;popPose()V", ordinal = 0, shift = At.Shift.AFTER))
8282
private void animatium$fishingRodLineThickness(FishingHookRenderState fishingHookRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) {
8383
if (Animatium.isEnabled()) {
84-
// TODO/NOTE: 1.21.11 removes setLineWidth, lineWidth is now part of the buffer
84+
// TODO/NOTE: 1.21.11 removes setLineWidth, lineWidth is now part of the vertex consumer/buffer builder
8585
final LineState lineState = RenderUtils.getLineState();
8686
if (AnimatiumConfig.instance().items.thinFishingRodLineThickness) {
8787
lineState.setWidth(1.0F);
88-
} else if (AnimatiumConfig.instance().items.fishingRodLineThickness) {
88+
} else if (AnimatiumConfig.instance().items.fishingRodVersion.ordinal() <= FishingRodVersion.V1_13.ordinal()) {
8989
lineState.setWidth(2.0F);
9090
}
9191
}
@@ -97,7 +97,7 @@ protected MixinFishingHookRenderer(EntityRendererProvider.Context context) {
9797
if (Animatium.isEnabled()) {
9898
CameraAccessor cameraAccessor = (CameraAccessor) entityRenderDispatcher.camera;
9999
float eyeHeight;
100-
if (AnimatiumConfig.instance().items.fishingRodLineInterpolation) {
100+
if (AnimatiumConfig.instance().items.fishingRodVersion.ordinal() <= FishingRodVersion.V1_13.ordinal()) {
101101
eyeHeight = Mth.lerp(tickDelta, cameraAccessor.animatium$getOldEyeHeight(), cameraAccessor.animatium$getEyeHeight());
102102
} else if (AnimatiumConfig.instance().movement.fakeOldSneakEyeHeight) {
103103
// Non-lerped eyeheight trick
@@ -113,8 +113,8 @@ protected MixinFishingHookRenderer(EntityRendererProvider.Context context) {
113113
}
114114

115115
@ModifyExpressionValue(method = "getPlayerHandPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isCrouching()Z"))
116-
private boolean animatium$noMoveFishingRodLine(boolean original, @Local(argsOnly = true) Player player) {
117-
if (Animatium.isEnabled() && AnimatiumConfig.instance().items.noMoveFishingRodLine) {
116+
private boolean animatium$noMoveFishingRodLine(boolean original) {
117+
if (Animatium.isEnabled() && AnimatiumConfig.instance().items.fishingRodVersion == FishingRodVersion.V1_7) {
118118
return false;
119119
} else {
120120
return original;
@@ -123,7 +123,7 @@ protected MixinFishingHookRenderer(EntityRendererProvider.Context context) {
123123

124124
@ModifyExpressionValue(method = "getPlayerHandPos", at = @At(value = "CONSTANT", args = "doubleValue=0.8"))
125125
private double animatium$fishingRodLinePositionThirdPerson(double original) {
126-
if (Animatium.isEnabled() && AnimatiumConfig.instance().items.fishingRodLinePositionThirdPerson) {
126+
if (Animatium.isEnabled() && AnimatiumConfig.instance().items.fishingRodVersion == FishingRodVersion.V1_7) {
127127
return original + 0.05;
128128
} else {
129129
return original;

src/main/java/org/visuals/legacy/animatium/mixins/v1/entity/fishing/MixinItemModelResolver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
4646
import org.visuals.legacy.animatium.Animatium;
4747
import org.visuals.legacy.animatium.config.AnimatiumConfig;
48+
import org.visuals.legacy.animatium.util.enums.FishingRodVersion;
4849
import org.visuals.legacy.animatium.util.states.ItemUtilityRenderState;
4950

5051
@Mixin(ItemModelResolver.class)
@@ -58,7 +59,7 @@ public abstract class MixinItemModelResolver {
5859
private Object animatium$stickModelWhenCastInThirdperson(ItemStack instance, DataComponentType<?> dataComponentType, Operation<Object> original, @Local(argsOnly = true) ItemDisplayContext displayContext, @Local(argsOnly = true) ItemOwner itemOwner, @Local(argsOnly = true) ItemStack itemStack) {
5960
final LivingEntity livingEntity = itemOwner == null ? null : itemOwner.asLivingEntity();
6061
if (Animatium.isEnabled() &&
61-
AnimatiumConfig.instance().items.stickModelWhenCastInThirdperson &&
62+
AnimatiumConfig.instance().items.fishingRodVersion == FishingRodVersion.V1_7 &&
6263
itemStack.getItem() == Items.FISHING_ROD &&
6364
(livingEntity instanceof Player player && player.fishing != null) &&
6465
((displayContext == ItemDisplayContext.THIRD_PERSON_LEFT_HAND && livingEntity.getOffhandItem() == itemStack) ||

src/main/java/org/visuals/legacy/animatium/mixins/v1/entity/flame/MixinFlameFeatureRenderer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.visuals.legacy.animatium.Animatium;
4040
import org.visuals.legacy.animatium.config.AnimatiumConfig;
4141
import org.visuals.legacy.animatium.util.Utils;
42+
import org.visuals.legacy.animatium.util.enums.SneakAnimationSetting;
4243

4344
@Mixin(FlameFeatureRenderer.class)
4445
public abstract class MixinFlameFeatureRenderer {
@@ -64,7 +65,7 @@ public abstract class MixinFlameFeatureRenderer {
6465
private float animatium$flameOffset(float original, @Local(argsOnly = true) EntityRenderState entityRenderState) {
6566
final Camera camera = Minecraft.getInstance().getEntityRenderDispatcher().camera;
6667
if (Animatium.isEnabled() && entityRenderState instanceof AvatarRenderState avatarRenderState && camera != null && camera.getEntity().getId() == avatarRenderState.id) {
67-
final boolean shouldSyncPlayerModelWithEyeHeight = AnimatiumConfig.instance().movement.syncPlayerModelWithEyeHeight;
68+
final boolean shouldSyncPlayerModelWithEyeHeight = AnimatiumConfig.instance().movement.sneakAnimation == SneakAnimationSetting.V1_7;
6869
if (shouldSyncPlayerModelWithEyeHeight) {
6970
final float cameraLerpValue = Utils.lerpCameraPosition(camera);
7071
original = (avatarRenderState.eyeHeight * avatarRenderState.scale) - cameraLerpValue;

0 commit comments

Comments
 (0)