diff --git a/build.gradle b/build.gradle index cbd2afd..0314c48 100644 --- a/build.gradle +++ b/build.gradle @@ -93,8 +93,7 @@ jar { "MixinConfigs": 'mixins.SilentClient.json', "TweakClass": "net.silentclient.client.mixin.SilentClientTweaker", "TweakOrder": 0, - "Manifest-Version": 1.0, - 'FMLAT': 'silentclient_at.cfg' + "Manifest-Version": 1.0 ) configurations.embed.each { dep -> diff --git a/src/main/java/net/silentclient/client/mixin/SilentClientTransformer.java b/src/main/java/net/silentclient/client/mixin/SilentClientTransformer.java index e121729..5323532 100644 --- a/src/main/java/net/silentclient/client/mixin/SilentClientTransformer.java +++ b/src/main/java/net/silentclient/client/mixin/SilentClientTransformer.java @@ -1,8 +1,8 @@ package net.silentclient.client.mixin; import net.minecraft.launchwrapper.IClassTransformer; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; +import net.silentclient.client.Client; +import org.objectweb.asm.*; import java.lang.reflect.Modifier; @@ -15,14 +15,14 @@ public class SilentClientTransformer implements IClassTransformer { return null; } -// if(transformedName.equals("bfl$e") || transformedName.equals("bfl$r") || transformedName.equals("bnm$a") || transformedName.equals("ajd$a") || transformedName.equals("bha$a")) { -// Client.logger.info("Transforming class: " + transformedName); -// ClassReader classreader = new ClassReader(bytes); -// ClassWriter classwriter = new ClassWriter(1); -// SilentClientTransformer.AccessTransformerVisitor visitor = new SilentClientTransformer.AccessTransformerVisitor(262144, classwriter); -// classreader.accept(visitor, 0); -// return classwriter.toByteArray(); -// } + if(transformedName.equals("bfl$e") || transformedName.equals("bfl$r") || transformedName.equals("bnm$a") || transformedName.equals("ajd$a") || transformedName.equals("bha$a") || transformedName.equals("re$a")) { + Client.logger.info("Transforming class: " + transformedName); + ClassReader classreader = new ClassReader(bytes); + ClassWriter classwriter = new ClassWriter(1); + SilentClientTransformer.AccessTransformerVisitor visitor = new AccessTransformerVisitor(262144, classwriter); + classreader.accept(visitor, 0); + return classwriter.toByteArray(); + } return bytes; } @@ -31,7 +31,7 @@ public class SilentClientTransformer implements IClassTransformer { return clazz.getName().replace(".", "/"); } - public class AccessTransformerVisitor extends ClassVisitor { + public static class AccessTransformerVisitor extends ClassVisitor { public AccessTransformerVisitor(int api, ClassVisitor cv) { super(api, cv); diff --git a/src/main/java/net/silentclient/client/mixin/ducks/EntityLookHelperExt.java b/src/main/java/net/silentclient/client/mixin/ducks/EntityLookHelperExt.java new file mode 100644 index 0000000..d15e68c --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/ducks/EntityLookHelperExt.java @@ -0,0 +1,5 @@ +package net.silentclient.client.mixin.ducks; + +public interface EntityLookHelperExt { + Object client$getEntity(); +} diff --git a/src/main/java/net/silentclient/client/mixin/mixins/EntityLookHelperMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/EntityLookHelperMixin.java new file mode 100644 index 0000000..d5cee8a --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/mixins/EntityLookHelperMixin.java @@ -0,0 +1,17 @@ +package net.silentclient.client.mixin.mixins; + +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.ai.EntityLookHelper; +import net.silentclient.client.mixin.ducks.EntityLookHelperExt; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(EntityLookHelper.class) +public class EntityLookHelperMixin implements EntityLookHelperExt { + @Shadow private EntityLiving entity; + + @Override + public Object client$getEntity() { + return this.entity; + } +} diff --git a/src/main/java/net/silentclient/client/mods/other/ai/FixedEntityLookHelper.java b/src/main/java/net/silentclient/client/mods/other/ai/FixedEntityLookHelper.java index 95ad630..df5d3e1 100644 --- a/src/main/java/net/silentclient/client/mods/other/ai/FixedEntityLookHelper.java +++ b/src/main/java/net/silentclient/client/mods/other/ai/FixedEntityLookHelper.java @@ -4,6 +4,7 @@ import net.minecraft.entity.EntityLiving; import net.minecraft.entity.ai.EntityLookHelper; import net.minecraft.util.MathHelper; import net.silentclient.client.mixin.accessors.EntityLookHelperAccessor; +import net.silentclient.client.mixin.ducks.EntityLookHelperExt; /** * Created by Dark on 7/20/2015. @@ -17,27 +18,27 @@ public class FixedEntityLookHelper extends EntityLookHelper @Override public void onUpdateLook() { - this.entity.rotationPitch = 0.0f; + ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationPitch = 0.0f; if (((EntityLookHelperAccessor)((Object)this)).isLooking()) { ((EntityLookHelperAccessor)((Object)this)).setLooking(false); - double d0 = ((EntityLookHelperAccessor)((Object)this)).getPosX() - this.entity.posX; - double d1 = ((EntityLookHelperAccessor)((Object)this)).getPosY() - (this.entity.posY + (double)this.entity.getEyeHeight()); - double d2 = ((EntityLookHelperAccessor)((Object)this)).getPosZ() - this.entity.posZ; + double d0 = ((EntityLookHelperAccessor)((Object)this)).getPosX() - ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).posX; + double d1 = ((EntityLookHelperAccessor)((Object)this)).getPosY() - (((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).posY + (double)((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).getEyeHeight()); + double d2 = ((EntityLookHelperAccessor)((Object)this)).getPosZ() - ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).posZ; double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); float f = (float)((double)FixedEntityLookHelper.tan(d2, d0) * 180.0 / Math.PI) - 90.0f; float f1 = (float)(-((double)FixedEntityLookHelper.tan(d1, d3) * 180.0 / Math.PI)); - this.entity.rotationPitch = this.updateRotation(this.entity.rotationPitch, f1, ((EntityLookHelperAccessor)((Object)this)).getDeltaLookPitch()); - this.entity.rotationYawHead = this.updateRotation(this.entity.rotationYawHead, f, ((EntityLookHelperAccessor)((Object)this)).getDeltaLookYaw()); + ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationPitch = this.updateRotation(((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationPitch, f1, ((EntityLookHelperAccessor)((Object)this)).getDeltaLookPitch()); + ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead = this.updateRotation(((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead, f, ((EntityLookHelperAccessor)((Object)this)).getDeltaLookYaw()); } else { - this.entity.rotationYawHead = this.updateRotation(this.entity.rotationYawHead, this.entity.renderYawOffset, 10.0f); + ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead = this.updateRotation(((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead, ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).renderYawOffset, 10.0f); } - float f2 = MathHelper.wrapAngleTo180_float(this.entity.rotationYawHead - this.entity.renderYawOffset); - if (!this.entity.getNavigator().noPath()) { + float f2 = MathHelper.wrapAngleTo180_float(((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead - ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).renderYawOffset); + if (!((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).getNavigator().noPath()) { if (f2 < -75.0f) { - this.entity.rotationYawHead = this.entity.renderYawOffset - 75.0f; + ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead = ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).renderYawOffset - 75.0f; } if (f2 > 75.0f) { - this.entity.rotationYawHead = this.entity.renderYawOffset + 75.0f; + ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).rotationYawHead = ((EntityLiving) ((EntityLookHelperExt) this).client$getEntity()).renderYawOffset + 75.0f; } } } diff --git a/src/main/resources/mixins.SilentClient.json b/src/main/resources/mixins.SilentClient.json index f049495..e9bf42c 100644 --- a/src/main/resources/mixins.SilentClient.json +++ b/src/main/resources/mixins.SilentClient.json @@ -38,6 +38,7 @@ "mixins.EntityFXMixin", "mixins.EntityLivingBaseMixin", "mixins.EntityLivingMixin", + "mixins.EntityLookHelperMixin", "mixins.EntityMixin", "mixins.EntityOtherPlayerMPMixin", "mixins.EntityPacketsMixin", diff --git a/src/main/resources/silentclient_at.cfg b/src/main/resources/silentclient_at.cfg index 32e33df..febc1b8 100644 --- a/src/main/resources/silentclient_at.cfg +++ b/src/main/resources/silentclient_at.cfg @@ -13,5 +13,4 @@ public net.minecraft.client.renderer.tileentity.TileEntityBannerRenderer$TimedBa public net.minecraft.block.BlockRedstoneTorch$Toggle # EntityAITasks -public net.minecraft.entity.ai.EntityAITasks$EntityAITaskEntry -public net.minecraft.entity.ai.EntityLookHelper field_75659_a #EntityLiving entity; \ No newline at end of file +public net.minecraft.entity.ai.EntityAITasks$EntityAITaskEntry \ No newline at end of file