From db091d68d73bb2fb6079fe96df6313e8ea06edb7 Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Sat, 1 Jun 2019 21:07:58 +0530 Subject: [PATCH] added placementRotationFix mixins --- src/main/java/carpet/CarpetSettings.java | 2 +- .../java/carpet/mixins/DirectionMixin.java | 26 +++++++++++++++++++ src/main/java/carpet/mixins/EntityMixin.java | 22 ++++++++++++++++ src/main/java/carpet/utils/IEntity.java | 6 +++++ src/main/resources/carpet.mixins.json | 2 ++ 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/main/java/carpet/mixins/DirectionMixin.java create mode 100644 src/main/java/carpet/mixins/EntityMixin.java create mode 100644 src/main/java/carpet/utils/IEntity.java diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 474bf9c0..314b419c 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -197,7 +197,7 @@ public class CarpetSettings rule("kelpGenerationGrowLimit", "feature", "limits growth limit of newly naturally generated kelp to this amount of blocks") .choices("25", "0 2 25").setNotStrict(), rule("renewableCoral", "feature", "Coral structures will grow with bonemeal from coral plants"), - rule("placementRotationFix", "fix", "fixes block placement rotation issue when player rotates quickly while placing blocks").wip(), + rule("placementRotationFix", "fix", "fixes block placement rotation issue when player rotates quickly while placing blocks"), rule("leadFix", "fix", "Fixes leads breaking/becoming invisible in unloaded chunks") .extraInfo("You may still get visibly broken leash links on the client side, but server side the link is still there.").wip(), rule("lagFreeSpawning", "optimizations", "Spawning requires much less CPU and Memory").boolAccelerate() diff --git a/src/main/java/carpet/mixins/DirectionMixin.java b/src/main/java/carpet/mixins/DirectionMixin.java new file mode 100644 index 00000000..f34b6998 --- /dev/null +++ b/src/main/java/carpet/mixins/DirectionMixin.java @@ -0,0 +1,26 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import carpet.utils.IEntity; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.Direction; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Direction.class) +public abstract class DirectionMixin +{ + @Redirect(method = "getEntityFacingOrder", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getYaw(F)F")) + private static float ifGetYaw(Entity entity, float float_1) + { + if (!CarpetSettings.getBool("placementRotationFix")) + { + return -entity.getYaw(1.0F) * 0.017453292F; + } + else + { + return -((IEntity) entity).getMainYaw(1.0F) * 0.017453292F; + } + } +} diff --git a/src/main/java/carpet/mixins/EntityMixin.java b/src/main/java/carpet/mixins/EntityMixin.java new file mode 100644 index 00000000..32bea1a1 --- /dev/null +++ b/src/main/java/carpet/mixins/EntityMixin.java @@ -0,0 +1,22 @@ +package carpet.mixins; + +import carpet.utils.IEntity; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.MathHelper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(Entity.class) +public abstract class EntityMixin implements IEntity +{ + @Shadow + public float yaw; + + @Shadow + public float prevYaw; + + public float getMainYaw(float partialTicks) + { + return partialTicks == 1.0F ? this.yaw : MathHelper.lerp(partialTicks, this.prevYaw, this.yaw); + } +} diff --git a/src/main/java/carpet/utils/IEntity.java b/src/main/java/carpet/utils/IEntity.java new file mode 100644 index 00000000..84f17320 --- /dev/null +++ b/src/main/java/carpet/utils/IEntity.java @@ -0,0 +1,6 @@ +package carpet.utils; + +public interface IEntity +{ + float getMainYaw(float partialTicks); +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 12cba0c2..1d624cb0 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -48,6 +48,8 @@ "FossilFeatureMixin", "BuriedTreasureGeneratorPieceMixin", "GravityStructureProcessorMixin", + "EntityMixin", + "DirectionMixin", "ServerChunkManagerMixin",