From db091d68d73bb2fb6079fe96df6313e8ea06edb7 Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Sat, 1 Jun 2019 21:07:58 +0530 Subject: [PATCH 1/3] 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", From a018f2a2ae731b2443a7c0faff5341293b9cf6cd Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Sun, 2 Jun 2019 22:53:33 +0530 Subject: [PATCH 2/3] fix merge conflicts --- src/main/resources/carpet.mixins.json | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 7f5c43a0..a2b25c7e 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -48,14 +48,10 @@ "FossilFeatureMixin", "BuriedTreasureGeneratorPieceMixin", "GravityStructureProcessorMixin", -<<<<<<< HEAD - "EntityMixin", - "DirectionMixin", -======= "ServerPlayNetworkHandler_scarpetEventsMixin", "ServerPlayerInteractionManager_scarpetEventsMixin", ->>>>>>> master - + "EntityMixin", + "DirectionMixin", "ServerChunkManagerMixin", "SpawnHelperMixin", From 4dad60a664206251ccb140fd0e049736c6b5efe3 Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Sun, 2 Jun 2019 22:58:18 +0530 Subject: [PATCH 3/3] refactored IEntity.java --- src/main/java/carpet/fakes/EntityInterface.java | 6 ++++++ src/main/java/carpet/mixins/DirectionMixin.java | 4 ++-- src/main/java/carpet/mixins/EntityMixin.java | 4 ++-- src/main/java/carpet/utils/IEntity.java | 6 ------ 4 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 src/main/java/carpet/fakes/EntityInterface.java delete mode 100644 src/main/java/carpet/utils/IEntity.java diff --git a/src/main/java/carpet/fakes/EntityInterface.java b/src/main/java/carpet/fakes/EntityInterface.java new file mode 100644 index 00000000..deb9a033 --- /dev/null +++ b/src/main/java/carpet/fakes/EntityInterface.java @@ -0,0 +1,6 @@ +package carpet.fakes; + +public interface EntityInterface +{ + float getMainYaw(float partialTicks); +} diff --git a/src/main/java/carpet/mixins/DirectionMixin.java b/src/main/java/carpet/mixins/DirectionMixin.java index f34b6998..4cb395aa 100644 --- a/src/main/java/carpet/mixins/DirectionMixin.java +++ b/src/main/java/carpet/mixins/DirectionMixin.java @@ -1,7 +1,7 @@ package carpet.mixins; import carpet.CarpetSettings; -import carpet.utils.IEntity; +import carpet.fakes.EntityInterface; import net.minecraft.entity.Entity; import net.minecraft.util.math.Direction; import org.spongepowered.asm.mixin.Mixin; @@ -20,7 +20,7 @@ public abstract class DirectionMixin } else { - return -((IEntity) entity).getMainYaw(1.0F) * 0.017453292F; + return -((EntityInterface) entity).getMainYaw(1.0F) * 0.017453292F; } } } diff --git a/src/main/java/carpet/mixins/EntityMixin.java b/src/main/java/carpet/mixins/EntityMixin.java index 32bea1a1..beee62f0 100644 --- a/src/main/java/carpet/mixins/EntityMixin.java +++ b/src/main/java/carpet/mixins/EntityMixin.java @@ -1,13 +1,13 @@ package carpet.mixins; -import carpet.utils.IEntity; +import carpet.fakes.EntityInterface; 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 +public abstract class EntityMixin implements EntityInterface { @Shadow public float yaw; diff --git a/src/main/java/carpet/utils/IEntity.java b/src/main/java/carpet/utils/IEntity.java deleted file mode 100644 index 84f17320..00000000 --- a/src/main/java/carpet/utils/IEntity.java +++ /dev/null @@ -1,6 +0,0 @@ -package carpet.utils; - -public interface IEntity -{ - float getMainYaw(float partialTicks); -}