diff --git a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java index 14968b2c..240f43d4 100644 --- a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java +++ b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java @@ -34,10 +34,12 @@ import java.util.concurrent.CompletableFuture; /* * TODO | Port 1.21.3 - * - VehicleMovePacket handling now has distance check - * - Game options are now only send if they changed - * - Illusioner/Sniffer doesn't override visibility bounding box anymore - * - AbstractFireabll#shouldRender new + * - VehicleMovePacket handling now has distance check in ClientPlayNetworkHandler + * - Illusioner/Sniffer don't override visibility bounding box anymore + * - AbstractFireabll/EyeOfEnder#shouldRender new + * - Entity#baseTick doesn't set prev rotation anymore at top + * - LivingEntity movement code got refactored completely + * - BundleItem#use, ConsumableComponent behaviour in use functions * * TODO | Port 1.20.6 * - ClientPlayerInteractionManager#interactBlockInternal added new condition diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java index ee3a3841..5323f581 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java @@ -86,6 +86,24 @@ public abstract class MixinEntity implements IEntity { @Unique private boolean viaFabricPlus$isInLoadedChunkAndShouldTick; + @Redirect(method = "move", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Vec3d;lengthSquared()D")) + private double allowSmallValues(Vec3d instance) { + if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21)) { + return 0; + } else { + return instance.lengthSquared(); + } + } + + @Redirect(method = "setPitch", at = @At(value = "INVOKE", target = "Ljava/lang/Math;clamp(FFF)F", remap = false)) + private float dontClampPitch(float value, float min, float max) { + if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21)) { + return value; + } else { + return Math.clamp(value, min, max); + } + } + @Inject(method = "adjustMovementForCollisions(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;", at = @At("HEAD"), cancellable = true) private void use1_20_6StepCollisionCalculation(Vec3d movement, CallbackInfoReturnable cir) { if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_20_5)) {