From aa84d594f985d539602eb2e627c7b63052ec8b89 Mon Sep 17 00:00:00 2001 From: kirillsaint Date: Fri, 30 Jun 2023 00:34:55 +0600 Subject: [PATCH] Animations Mod --- .../silentclient/client/hooks/ChunkHook.java | 21 +++ .../client/hooks/MinecraftHook.java | 55 ++++++++ .../client/hooks/OptiFineHook.java | 13 ++ .../client/hooks/RenderEntityItemHook.java | 124 ++++++++++++++++++ .../mixin/accessors/GuiChatAccessor.java | 10 +- .../mixin/accessors/MinecraftAccessor.java | 8 +- .../client/mixin/ducks/MinecraftExt.java | 9 ++ .../mixins/AbstractClientPlayerMixin.java | 19 +++ .../mixin/mixins/EntityRendererMixin.java | 30 ++++- .../client/mixin/mixins/GuiChatMixin.java | 28 ++++ .../mixin/mixins/ItemRendererMixin.java | 16 +++ .../mixin/mixins/LayerArmorBaseMixin.java | 19 +++ .../mixins/LoadingScreenRendererMixin.java | 86 ++++++++++++ .../client/mixin/mixins/MinecraftMixin.java | 33 ++++- .../client/mixin/mixins/ModelBipedMixin.java | 16 +++ .../mixins/NetHandlerPlayClientMixin.java | 10 ++ .../mixin/mixins/RenderEntityItemMixin.java | 19 ++- .../client/mixin/mixins/RenderItemMixin.java | 60 +++++++++ .../mixin/wrappers/GuiTextFieldWrapper.java | 15 +++ .../wrappers/IMetadataSerializerWrapper.java | 15 +++ .../mixin/wrappers/TextureManagerWrapper.java | 15 +++ .../client/mods/render/AnimationsMod.java | 7 +- .../mods/render/ColorSaturationMod.java | 18 ++- .../utils/calculator/ChatCalculator.java | 4 +- src/main/resources/mixins.SilentClient.json | 9 +- 25 files changed, 625 insertions(+), 34 deletions(-) create mode 100644 src/main/java/net/silentclient/client/hooks/ChunkHook.java create mode 100644 src/main/java/net/silentclient/client/hooks/MinecraftHook.java create mode 100644 src/main/java/net/silentclient/client/hooks/OptiFineHook.java create mode 100644 src/main/java/net/silentclient/client/hooks/RenderEntityItemHook.java create mode 100644 src/main/java/net/silentclient/client/mixin/ducks/MinecraftExt.java create mode 100644 src/main/java/net/silentclient/client/mixin/mixins/GuiChatMixin.java create mode 100644 src/main/java/net/silentclient/client/mixin/mixins/LayerArmorBaseMixin.java create mode 100644 src/main/java/net/silentclient/client/mixin/mixins/LoadingScreenRendererMixin.java create mode 100644 src/main/java/net/silentclient/client/mixin/mixins/ModelBipedMixin.java create mode 100644 src/main/java/net/silentclient/client/mixin/mixins/RenderItemMixin.java create mode 100644 src/main/java/net/silentclient/client/mixin/wrappers/GuiTextFieldWrapper.java create mode 100644 src/main/java/net/silentclient/client/mixin/wrappers/IMetadataSerializerWrapper.java create mode 100644 src/main/java/net/silentclient/client/mixin/wrappers/TextureManagerWrapper.java diff --git a/src/main/java/net/silentclient/client/hooks/ChunkHook.java b/src/main/java/net/silentclient/client/hooks/ChunkHook.java new file mode 100644 index 0000000..25a41f9 --- /dev/null +++ b/src/main/java/net/silentclient/client/hooks/ChunkHook.java @@ -0,0 +1,21 @@ +package net.silentclient.client.hooks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; + +public class ChunkHook { + + public static IBlockState getBlockState(Chunk chunk, BlockPos pos) { + final int y = pos.getY(); + + if (y >= 0 && y >> 4 < chunk.getBlockStorageArray().length) { + final ExtendedBlockStorage storage = chunk.getBlockStorageArray()[y >> 4]; + if (storage != null) return storage.get(pos.getX() & 15, y & 15, pos.getZ() & 15); + } + + return Blocks.air.getDefaultState(); + } +} diff --git a/src/main/java/net/silentclient/client/hooks/MinecraftHook.java b/src/main/java/net/silentclient/client/hooks/MinecraftHook.java new file mode 100644 index 0000000..e41d2c2 --- /dev/null +++ b/src/main/java/net/silentclient/client/hooks/MinecraftHook.java @@ -0,0 +1,55 @@ +package net.silentclient.client.hooks; + +import org.lwjgl.LWJGLException; +import org.lwjgl.opengl.Display; +import org.lwjgl.opengl.DisplayMode; + +import net.minecraft.client.Minecraft; +import net.silentclient.client.Client; +import net.silentclient.client.mods.settings.RenderMod; + +public class MinecraftHook { + + public static void displayFix(boolean fullscreen, int displayWidth, int displayHeight) throws LWJGLException { + Display.setFullscreen(false); + if (fullscreen) { + if (Client.getInstance().getModInstances() != null && RenderMod.isBorderlessFullScreen()) { + System.setProperty("org.lwjgl.opengl.Window.undecorated", "true"); + } else { + Display.setFullscreen(true); + DisplayMode displaymode = Display.getDisplayMode(); + Minecraft.getMinecraft().displayWidth = Math.max(1, displaymode.getWidth()); + Minecraft.getMinecraft().displayHeight = Math.max(1, displaymode.getHeight()); + } + } else { + if (Client.getInstance().getModInstances() != null && RenderMod.isBorderlessFullScreen()) { + System.setProperty("org.lwjgl.opengl.Window.undecorated", "false"); + } else { + Display.setDisplayMode(new DisplayMode(displayWidth, displayHeight)); + } + } + + Display.setResizable(false); + Display.setResizable(true); + } + + public static void fullScreenFix(boolean fullscreen, int displayWidth, int displayHeight) throws LWJGLException { + if (Client.getInstance().getModInstances() != null && RenderMod.isBorderlessFullScreen()) { + if (fullscreen) { + System.setProperty("org.lwjgl.opengl.Window.undecorated", "true"); + Display.setDisplayMode(Display.getDesktopDisplayMode()); + Display.setLocation(0, 0); + Display.setFullscreen(false); + } else { + System.setProperty("org.lwjgl.opengl.Window.undecorated", "false"); + Display.setDisplayMode(new DisplayMode(displayWidth, displayHeight)); + } + } else { + Display.setFullscreen(fullscreen); + System.setProperty("org.lwjgl.opengl.Window.undecorated", "false"); + } + + Display.setResizable(false); + Display.setResizable(true); + } +} \ No newline at end of file diff --git a/src/main/java/net/silentclient/client/hooks/OptiFineHook.java b/src/main/java/net/silentclient/client/hooks/OptiFineHook.java new file mode 100644 index 0000000..72334c0 --- /dev/null +++ b/src/main/java/net/silentclient/client/hooks/OptiFineHook.java @@ -0,0 +1,13 @@ +package net.silentclient.client.hooks; + +import net.minecraft.client.gui.FontRenderer; + +public class OptiFineHook { + public float getCharWidth(FontRenderer renderer, char c) {//Remapped by OptiFineHookTransformer to Optifine if needed + return renderer.getCharWidth(c); + } + + public float getOptifineBoldOffset(FontRenderer renderer) { //Remapped by FontRendererHookTransformer to Optifine if needed + return 1; + } +} diff --git a/src/main/java/net/silentclient/client/hooks/RenderEntityItemHook.java b/src/main/java/net/silentclient/client/hooks/RenderEntityItemHook.java new file mode 100644 index 0000000..d3443b9 --- /dev/null +++ b/src/main/java/net/silentclient/client/hooks/RenderEntityItemHook.java @@ -0,0 +1,124 @@ +package net.silentclient.client.hooks; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.resources.model.IBakedModel; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.silentclient.client.Client; +import net.silentclient.client.mods.render.AnimationsMod; +import net.silentclient.client.mods.render.ItemPhysicsMod; +import net.silentclient.client.mods.render.UhcOverlayMod; + +public class RenderEntityItemHook { + public static int func_177077_a(EntityItem itemIn, double p_177077_2_, double p_177077_4_, double p_177077_6_, float p_177077_8_, IBakedModel p_177077_9_, int func_177078_a) { + ItemStack itemstack = itemIn.getEntityItem(); + Item item = itemstack.getItem(); + Block block = Block.getBlockFromItem(item); + + if (item == null) + { + return 0; + } + else + { + boolean flag = p_177077_9_.isGui3d(); + int i = func_177078_a; + + if(Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + if(block != null) { + GlStateManager.translate((float)p_177077_2_, (float)p_177077_4_ + 0.15F, (float)p_177077_6_); + }else { + GlStateManager.translate((float)p_177077_2_, (float)p_177077_4_ + 0.02F, (float)p_177077_6_); + GlStateManager.rotate(-90F, 1F, 0F, 0F); + } + }else { + float f1 = MathHelper.sin(((float)itemIn.getAge() + p_177077_8_) / 10.0F + itemIn.hoverStart) * 0.1F + 0.1F; + float f2 = p_177077_9_.getItemCameraTransforms().getTransform(ItemCameraTransforms.TransformType.GROUND).scale.y; + + GlStateManager.translate((float)p_177077_2_, (float)p_177077_4_ + f1 + 0.25F * f2, (float)p_177077_6_); + } + + if(!Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + if (flag || Minecraft.getMinecraft().getRenderManager().options != null) + { + if(Client.getInstance().getModInstances().getModByClass(AnimationsMod.class).isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "1.7 Throwing").getValBoolean()) { + float f3 = 180F - Minecraft.getMinecraft().getRenderManager().playerViewY; + GlStateManager.rotate(f3, 0.0F, 1.0F, 0.0F); + GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F); + } else { + float f3 = (((float)itemIn.getAge() + p_177077_8_) / 20.0F + itemIn.hoverStart) * (180F / (float)Math.PI); + GlStateManager.rotate(f3, 0.0F, 1.0F, 0.0F); + } + } + } + + if (!flag) + { + float f6 = -0.0F * (float)(i - 1) * 0.5F; + float f4 = -0.0F * (float)(i - 1) * 0.5F; + float f5 = -0.046875F * (float)(i - 1) * 0.5F; + GlStateManager.translate(f6, f4, f5); + } + + if(Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled() && !itemIn.onGround) { + float angle = System.currentTimeMillis() % (360 * 20) / (float) (4.5 - Client.getInstance().getSettingsManager().getSettingByClass(ItemPhysicsMod.class, "Speed").getValDouble()); + GlStateManager.rotate(angle, 1F, 1F, 1F); + } + + if(Client.getInstance().getModInstances().getUhcOverlayMod().isEnabled()) { + float ingotScale = (float) Client.getInstance().getSettingsManager().getSettingByClass(UhcOverlayMod.class, "Gold Ingot Scale").getValDouble(); + float nuggetScale = (float) Client.getInstance().getSettingsManager().getSettingByClass(UhcOverlayMod.class, "Gold Nugget Scale").getValDouble(); + float appleScale = (float) Client.getInstance().getSettingsManager().getSettingByClass(UhcOverlayMod.class, "Gold Ore Scale").getValDouble(); + float oreScale = (float) Client.getInstance().getSettingsManager().getSettingByClass(UhcOverlayMod.class, "Gold Apple Scale").getValDouble(); + float skullScale = (float) Client.getInstance().getSettingsManager().getSettingByClass(UhcOverlayMod.class, "Skull Scale").getValDouble(); + + float f6 = -0.0F * (float)(i - 1) * 0.5F; + float f4 = -0.0F * (float)(i - 1) * 0.5F; + float f5 = -0.046875F * (float)(i - 1) * 0.5F; + + if(item == Items.gold_ingot) { + + if(!Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + GlStateManager.translate(f6, f4 + (ingotScale / 8), f5); + } + + GlStateManager.scale(ingotScale, ingotScale, ingotScale); + } + if(item == Items.gold_nugget) { + if(!Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + GlStateManager.translate(f6, f4 + (nuggetScale / 8), f5); + } + GlStateManager.scale(nuggetScale, nuggetScale, nuggetScale); + } + if(item == Items.golden_apple) { + if(!Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + GlStateManager.translate(f6, f4 + (appleScale / 8), f5); + } + GlStateManager.scale(appleScale, appleScale, appleScale); + } + if(block == Blocks.gold_ore) { + if(!Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + GlStateManager.translate(f6, f4 + (oreScale / 8), f5); + } + GlStateManager.scale(oreScale, oreScale, oreScale); + } + if(item == Items.skull) { + if(!Client.getInstance().getModInstances().getItemPhysicsMod().isEnabled()) { + GlStateManager.translate(f6, f4 + (skullScale / 8), f5); + } + GlStateManager.scale(skullScale, skullScale, skullScale); + } + } + + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + return i; + } + } +} diff --git a/src/main/java/net/silentclient/client/mixin/accessors/GuiChatAccessor.java b/src/main/java/net/silentclient/client/mixin/accessors/GuiChatAccessor.java index a38b9c9..ab1f710 100644 --- a/src/main/java/net/silentclient/client/mixin/accessors/GuiChatAccessor.java +++ b/src/main/java/net/silentclient/client/mixin/accessors/GuiChatAccessor.java @@ -1,12 +1,8 @@ package net.silentclient.client.mixin.accessors; -import net.minecraft.client.gui.GuiChat; -import net.minecraft.client.gui.GuiTextField; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; +import net.silentclient.client.mixin.wrappers.GuiTextFieldWrapper; -@Mixin(GuiChat.class) public interface GuiChatAccessor { - @Accessor - GuiTextField getInputField(); + GuiTextFieldWrapper silent$getInputField(); + void silent$setInputField(GuiTextFieldWrapper a); } diff --git a/src/main/java/net/silentclient/client/mixin/accessors/MinecraftAccessor.java b/src/main/java/net/silentclient/client/mixin/accessors/MinecraftAccessor.java index 86e3ee8..6de4d3d 100644 --- a/src/main/java/net/silentclient/client/mixin/accessors/MinecraftAccessor.java +++ b/src/main/java/net/silentclient/client/mixin/accessors/MinecraftAccessor.java @@ -10,12 +10,6 @@ import java.io.File; @Mixin(Minecraft.class) public interface MinecraftAccessor { - @Accessor - TextureManager getRenderEngine(); - - @Accessor - IMetadataSerializer getMetadataSerializer_(); - @Accessor File getFileAssets(); @@ -24,4 +18,6 @@ public interface MinecraftAccessor { @Accessor int getLeftClickCounter(); + + @Accessor boolean isRunning(); } diff --git a/src/main/java/net/silentclient/client/mixin/ducks/MinecraftExt.java b/src/main/java/net/silentclient/client/mixin/ducks/MinecraftExt.java new file mode 100644 index 0000000..8e65ba4 --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/ducks/MinecraftExt.java @@ -0,0 +1,9 @@ +package net.silentclient.client.mixin.ducks; + +import net.silentclient.client.mixin.wrappers.IMetadataSerializerWrapper; +import net.silentclient.client.mixin.wrappers.TextureManagerWrapper; + +public interface MinecraftExt { + TextureManagerWrapper silent$getRenderEngine(); + IMetadataSerializerWrapper silent$getMetadataSerializer_(); +} diff --git a/src/main/java/net/silentclient/client/mixin/mixins/AbstractClientPlayerMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/AbstractClientPlayerMixin.java index 7091089..2161c15 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/AbstractClientPlayerMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/AbstractClientPlayerMixin.java @@ -1,14 +1,17 @@ package net.silentclient.client.mixin.mixins; import com.mojang.authlib.GameProfile; +import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.util.StringUtils; import net.minecraft.world.World; import net.silentclient.client.Client; +import net.silentclient.client.admin.AdminRender; import net.silentclient.client.cosmetics.*; import net.silentclient.client.cosmetics.dynamiccurved.DynamicCape; import net.silentclient.client.event.impl.EventFovUpdate; import net.silentclient.client.mixin.ducks.AbstractClientPlayerExt; +import net.silentclient.client.mods.render.AnimationsMod; import net.silentclient.client.mods.settings.CosmeticsMod; import net.silentclient.client.utils.Players; import net.silentclient.client.utils.types.PlayerResponse; @@ -62,6 +65,22 @@ public abstract class AbstractClientPlayerMixin implements AbstractClientPlayerE cir.setReturnValue(event.getFov()); } + @Inject(method = "getSkinType", at = @At("HEAD"), cancellable = true) + public void mixinSkinType(CallbackInfoReturnable cir) { + if(Minecraft.getMinecraft().currentScreen instanceof AdminRender) { + cir.setReturnValue("default"); + cir.cancel(); + } + if(Client.getInstance().getModInstances().getModByClass(AnimationsMod.class).isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "1.7 Skins").getValBoolean()) { + cir.setReturnValue("default"); + cir.cancel(); + } + if(this.silent$getNameClear().toLowerCase().equals(Client.getInstance().getAccount().getUsername().toLowerCase()) && Client.getInstance().getAccount().getCustomSkin()) { + cir.setReturnValue(Client.getInstance().getAccount().getSkinType()); + cir.cancel(); + } + } + @Override public String silent$getCapeType() { return silent$capeType; diff --git a/src/main/java/net/silentclient/client/mixin/mixins/EntityRendererMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/EntityRendererMixin.java index 4a1f063..08bdfe2 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/EntityRendererMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/EntityRendererMixin.java @@ -5,19 +5,23 @@ import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.Entity; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; +import net.silentclient.client.Client; import net.silentclient.client.cosmetics.StaticResourceLocation; import net.silentclient.client.event.impl.EventCameraRotation; import net.silentclient.client.event.impl.EventPlayerHeadRotation; import net.silentclient.client.event.impl.EventRender3D; import net.silentclient.client.event.impl.EventZoomFov; import net.silentclient.client.mixin.ducks.EntityRendererExt; +import net.silentclient.client.mods.render.AnimationsMod; +import net.silentclient.client.utils.animations.OldSneaking; import net.silentclient.client.utils.culling.EntityCulling; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -92,6 +96,8 @@ public abstract class EntityRendererMixin implements EntityRendererExt { @Shadow private Minecraft mc; + @Shadow protected abstract void hurtCameraEffect(float partialTicks); + @Override public void silent$loadShader(StaticResourceLocation location) { this.loadShader(location.getLocation()); @@ -114,4 +120,26 @@ public abstract class EntityRendererMixin implements EntityRendererExt { cir.setReturnValue(event.getFov()); } + + @Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/EntityRenderer;hurtCameraEffect(F)V")) + public void cancelWorldRotation(EntityRenderer entityRenderer, float f) { + if(!(Client.getInstance().getModInstances().getOldAnimationsMod().isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "No Shaking").getValBoolean())) { + this.hurtCameraEffect(f); + } + } + + @Inject(method = "renderHand", at = @At("HEAD")) + public void swingProgress(float partialTicks, int xOffset, CallbackInfo ci) { + if(mc.thePlayer != null && Client.getInstance().getModInstances().getOldAnimationsMod().isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "1.7 Punching Animation").getValBoolean() + && mc.objectMouseOver != null + && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK + && mc.thePlayer != null + && mc.gameSettings.keyBindAttack.isKeyDown() && mc.gameSettings.keyBindUseItem.isKeyDown() + && mc.thePlayer.getItemInUseCount() > 0 && (!mc.thePlayer.isSwingInProgress + || mc.thePlayer.swingProgressInt < 0)) { + mc.thePlayer.swingProgressInt = -1; + mc.thePlayer.isSwingInProgress = true; + } + } } diff --git a/src/main/java/net/silentclient/client/mixin/mixins/GuiChatMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/GuiChatMixin.java new file mode 100644 index 0000000..8377dd0 --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/mixins/GuiChatMixin.java @@ -0,0 +1,28 @@ +package net.silentclient.client.mixin.mixins; + +import net.minecraft.client.gui.GuiChat; +import net.minecraft.client.gui.GuiTextField; +import net.silentclient.client.mixin.accessors.GuiChatAccessor; +import net.silentclient.client.mixin.wrappers.GuiTextFieldWrapper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(GuiChat.class) +public class GuiChatMixin implements GuiChatAccessor { + + @Shadow protected GuiTextField inputField; + + @Override + public GuiTextFieldWrapper silent$getInputField() { + return new GuiTextFieldWrapper(this.inputField); + } + + @Override + public void silent$setInputField(GuiTextFieldWrapper a) { + if(a == null) { + this.inputField = null; + return; + } + this.inputField = a.getGuiTextField(); + } +} diff --git a/src/main/java/net/silentclient/client/mixin/mixins/ItemRendererMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/ItemRendererMixin.java index 7013c00..04b2ef9 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/ItemRendererMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/ItemRendererMixin.java @@ -3,6 +3,7 @@ package net.silentclient.client.mixin.mixins; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.item.ItemStack; import net.silentclient.client.event.impl.EventTransformFirstPersonItem; +import net.silentclient.client.utils.animations.AnimationHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -13,9 +14,24 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class ItemRendererMixin { @Shadow private ItemStack itemToRender; + @Shadow private float prevEquippedProgress; + + @Shadow private float equippedProgress; + @Inject(method = "transformFirstPersonItem", at = @At("HEAD")) public void transformFirstPersonItem(float equipProgress, float swingProgress, CallbackInfo ci) { EventTransformFirstPersonItem event = new EventTransformFirstPersonItem(itemToRender, equipProgress, swingProgress); event.call(); } + + @Inject(method = "renderItemInFirstPerson", at = @At("HEAD"), cancellable = true) + public void renderItemInFirstPerson(float partialTicks, CallbackInfo ci) { + if (itemToRender != null) { + ItemRenderer $this = (ItemRenderer) (Object) this; + float equipProgress = prevEquippedProgress + (equippedProgress - prevEquippedProgress) * partialTicks; + if (AnimationHandler.getInstance().renderItemInFirstPerson($this, itemToRender, equipProgress, partialTicks)) { + ci.cancel(); + } + } + } } diff --git a/src/main/java/net/silentclient/client/mixin/mixins/LayerArmorBaseMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/LayerArmorBaseMixin.java new file mode 100644 index 0000000..92001d2 --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/mixins/LayerArmorBaseMixin.java @@ -0,0 +1,19 @@ +package net.silentclient.client.mixin.mixins; + +import net.minecraft.client.renderer.entity.layers.LayerArmorBase; +import net.silentclient.client.Client; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LayerArmorBase.class) +public class LayerArmorBaseMixin { + @Inject(method = "shouldCombineTextures", at = @At("HEAD"), cancellable = true) + private void shouldCombineTextures(CallbackInfoReturnable cir) { + if(Client.getInstance().getModInstances().getOldAnimationsMod().isEnabled()) { + cir.setReturnValue(true); + cir.cancel(); + } + } +} diff --git a/src/main/java/net/silentclient/client/mixin/mixins/LoadingScreenRendererMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/LoadingScreenRendererMixin.java new file mode 100644 index 0000000..22d6f49 --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/mixins/LoadingScreenRendererMixin.java @@ -0,0 +1,86 @@ +package net.silentclient.client.mixin.mixins; + +import net.minecraft.client.LoadingScreenRenderer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.util.MinecraftError; +import net.minecraft.util.ResourceLocation; +import net.silentclient.client.Client; +import net.silentclient.client.gui.font.SilentFontRenderer; +import net.silentclient.client.gui.util.RenderUtil; +import net.silentclient.client.mixin.accessors.MinecraftAccessor; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.awt.*; + +@Mixin(LoadingScreenRenderer.class) +public class LoadingScreenRendererMixin { + @Shadow private boolean loadingSuccess; + + @Shadow private long systemTime; + + @Shadow private Minecraft mc; + + @Shadow private String currentlyDisplayedText; + + /** + * @author kirillsaint + * @reason Custom Loading Screen + */ + @Overwrite + public void setLoadingProgress(int progress) + { + if (progress < 0 && mc.theWorld != null) { + return; + } + if (!((MinecraftAccessor) this.mc).isRunning()) + { + if (!this.loadingSuccess) + { + throw new MinecraftError(); + } + } + else + { + long i = Minecraft.getSystemTime(); + + if (i - this.systemTime >= 100L) + { + this.systemTime = i; + ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + scaledResolution.getScaleFactor(); + + GlStateManager.matrixMode(5889); + GlStateManager.loadIdentity(); + GlStateManager.ortho(0.0D, scaledResolution.getScaledWidth_double(), scaledResolution.getScaledHeight_double(), 0.0D, 100.0D, 300.0D); + GlStateManager.matrixMode(5888); + GlStateManager.loadIdentity(); + GlStateManager.translate(0.0F, 0.0F, -200.0F); + + + Gui.drawRect(0, 0, scaledResolution.getScaledWidth(), scaledResolution.getScaledHeight(), new Color(19, 19, 19).getRGB()); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + RenderUtil.drawCentredImage(new ResourceLocation("silentclient/logos/logo.png"), scaledResolution.getScaledWidth() / 2, scaledResolution.getScaledHeight() / 3, 300, 58); + Client.getInstance().getSilentFontRenderer().drawCenteredString((currentlyDisplayedText != "" ? currentlyDisplayedText : "Loading") + "...", scaledResolution.getScaledWidth() / 2, scaledResolution.getScaledHeight() - 100, 14, SilentFontRenderer.FontType.TITLE); + + this.mc.updateDisplay(); + + try + { + Thread.yield(); + } + catch (Exception var15) + { + + } + } + } + } +} diff --git a/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java index 8e9735c..3a5d401 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java @@ -4,7 +4,10 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.*; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.resources.data.IMetadataSerializer; import net.minecraft.client.shader.Framebuffer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.silentclient.client.Client; import net.silentclient.client.event.impl.ClientTickEvent; @@ -13,11 +16,16 @@ import net.silentclient.client.event.impl.EventDebugFps; import net.silentclient.client.event.impl.EventScrollMouse; import net.silentclient.client.gui.GuiNews; import net.silentclient.client.gui.util.BackgroundPanorama; +import net.silentclient.client.mixin.ducks.MinecraftExt; +import net.silentclient.client.mixin.wrappers.IMetadataSerializerWrapper; +import net.silentclient.client.mixin.wrappers.TextureManagerWrapper; +import net.silentclient.client.mods.render.AnimationsMod; import org.apache.logging.log4j.Logger; import org.lwjgl.LWJGLException; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.GL11; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; @@ -27,7 +35,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) -public abstract class MinecraftMixin { +public abstract class MinecraftMixin implements MinecraftExt { @Inject(method = "startGame", at = @At("HEAD")) public void initClient(CallbackInfo callbackInfo) { Client.getInstance().init(); @@ -51,6 +59,16 @@ public abstract class MinecraftMixin { Client.getInstance().shutdown(); } + @Override + public IMetadataSerializerWrapper silent$getMetadataSerializer_() { + return new IMetadataSerializerWrapper(this.metadataSerializer_); + } + + @Override + public TextureManagerWrapper silent$getRenderEngine() { + return new TextureManagerWrapper(this.renderEngine); + } + @Redirect(method = "createDisplay", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/Display;setTitle(Ljava/lang/String;)V")) public void setWindowTitle(String newTitle) { Display.setTitle("Silent Client " + Client.getInstance().getVersion() + " (1.8.9)"); @@ -70,6 +88,12 @@ public abstract class MinecraftMixin { @Shadow private static int debugFPS; + @Shadow @Final private IMetadataSerializer metadataSerializer_; + + @Shadow public abstract TextureManager getTextureManager(); + + @Shadow private TextureManager renderEngine; + @Inject(method = "displayGuiScreen", at = @At("RETURN"), cancellable = true) public void displayGuiScreenInject(GuiScreen guiScreenIn, CallbackInfo ci) { if(Client.backgroundPanorama == null) { @@ -122,6 +146,13 @@ public abstract class MinecraftMixin { @Inject(method = "rightClickMouse", at = @At("HEAD")) public void rightClickMouse(CallbackInfo ci) { new EventClickMouse(1).call(); + if (Client.getInstance().getModInstances().getOldAnimationsMod().isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "1.7 Punching Animation").getValBoolean() && + Minecraft.getMinecraft().playerController.getIsHittingBlock() && + Minecraft.getMinecraft().thePlayer.getHeldItem() != null && + (Minecraft.getMinecraft().thePlayer.getHeldItem().getItemUseAction() != EnumAction.NONE || + Minecraft.getMinecraft().thePlayer.getHeldItem().getItem() instanceof ItemBlock)) { + Minecraft.getMinecraft().playerController.resetBlockRemoving(); + } } /** diff --git a/src/main/java/net/silentclient/client/mixin/mixins/ModelBipedMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/ModelBipedMixin.java new file mode 100644 index 0000000..cc48746 --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/mixins/ModelBipedMixin.java @@ -0,0 +1,16 @@ +package net.silentclient.client.mixin.mixins; + +import net.minecraft.client.model.ModelBiped; +import net.silentclient.client.Client; +import net.silentclient.client.mods.render.AnimationsMod; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Mixin(ModelBiped.class) +public class ModelBipedMixin { + @ModifyConstant(method = "setRotationAngles", constant = @Constant(floatValue = -0.5235988F)) + private float cancelRotation(float original) { + return Client.getInstance().getModInstances().getOldAnimationsMod().isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "1.7 Block Animation").getValBoolean() ? 0 : original; + } +} diff --git a/src/main/java/net/silentclient/client/mixin/mixins/NetHandlerPlayClientMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/NetHandlerPlayClientMixin.java index f37c1f6..df9d2e9 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/NetHandlerPlayClientMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/NetHandlerPlayClientMixin.java @@ -1,5 +1,6 @@ package net.silentclient.client.mixin.mixins; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.network.play.server.S19PacketEntityStatus; @@ -8,6 +9,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(NetHandlerPlayClient.class) @@ -21,4 +23,12 @@ public class NetHandlerPlayClientMixin { event.call(); } } + + @ModifyArg( + method = {"handleJoinGame", "handleRespawn"}, + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/GuiScreen;)V") + ) + private GuiScreen skipTerrainScreen(GuiScreen original) { + return null; + } } diff --git a/src/main/java/net/silentclient/client/mixin/mixins/RenderEntityItemMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/RenderEntityItemMixin.java index b71290c..7e3c570 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/RenderEntityItemMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/RenderEntityItemMixin.java @@ -1,19 +1,36 @@ package net.silentclient.client.mixin.mixins; import net.minecraft.client.renderer.entity.RenderEntityItem; +import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.silentclient.client.hooks.RenderEntityItemHook; import net.silentclient.client.utils.culling.EntityCulling; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(RenderEntityItem.class) -public class RenderEntityItemMixin { +public abstract class RenderEntityItemMixin { + @Shadow protected abstract int func_177078_a(ItemStack stack); + @Inject(method = "doRender(Lnet/minecraft/entity/item/EntityItem;DDDFF)V", at = @At("HEAD"), cancellable = true) private void checkRenderState(EntityItem entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) { if (EntityCulling.renderItem(entity)) { ci.cancel(); } } + + /** + * @author kirillsaint + * @reason Animations Mod + */ + @Overwrite + private int func_177077_a(EntityItem itemIn, double p_177077_2_, double p_177077_4_, double p_177077_6_, float p_177077_8_, IBakedModel p_177077_9_) + { + return RenderEntityItemHook.func_177077_a(itemIn, p_177077_2_, p_177077_4_, p_177077_6_, p_177077_8_, p_177077_9_, func_177078_a(itemIn.getEntityItem())); + } } diff --git a/src/main/java/net/silentclient/client/mixin/mixins/RenderItemMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/RenderItemMixin.java new file mode 100644 index 0000000..d1bd54a --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/mixins/RenderItemMixin.java @@ -0,0 +1,60 @@ +package net.silentclient.client.mixin.mixins; + +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.resources.model.IBakedModel; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.silentclient.client.Client; +import net.silentclient.client.mods.render.AnimationsMod; +import net.silentclient.client.utils.animations.AnimationHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(RenderItem.class) +public abstract class RenderItemMixin { + @Unique + private EntityLivingBase lastEntityToRenderFor = null; + + @Inject(method = "renderItemModelForEntity", at = @At("HEAD")) + public void renderItemModelForEntity(ItemStack stack, EntityLivingBase entityToRenderFor, + ItemCameraTransforms.TransformType cameraTransformType, CallbackInfo ci) { + lastEntityToRenderFor = entityToRenderFor; + } + + @Shadow protected abstract void renderEffect(IBakedModel model); + + @Redirect(method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/RenderItem;renderEffect(Lnet/minecraft/client/resources/model/IBakedModel;)V")) + public void renderItemEffect(RenderItem instance, IBakedModel model) { + if(Client.getInstance().getModInstances().getModByClass(AnimationsMod.class).isEnabled() && Client.getInstance().getSettingsManager().getSettingByClass(AnimationsMod.class, "1.7 Enchant Glint").getValBoolean()) { + AnimationsMod.renderOldEnchantEffect(instance, model); + } else { + renderEffect(model); + } + } + + @Inject(method = "renderItemModelTransform", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/RenderItem;renderItem(" + + "Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;)V") + ) + public void renderItemModelForEntity_renderItem(ItemStack stack, IBakedModel model, + ItemCameraTransforms.TransformType cameraTransformType, CallbackInfo ci) { + if (cameraTransformType == ItemCameraTransforms.TransformType.THIRD_PERSON && + lastEntityToRenderFor instanceof EntityPlayer) { + EntityPlayer p = (EntityPlayer) lastEntityToRenderFor; + ItemStack heldStack = p.getHeldItem(); + if (heldStack != null && p.getItemInUseCount() > 0 && + heldStack.getItemUseAction() == EnumAction.BLOCK) { + AnimationHandler.getInstance().doSwordBlock3rdPersonTransform(); + } + } + } +} diff --git a/src/main/java/net/silentclient/client/mixin/wrappers/GuiTextFieldWrapper.java b/src/main/java/net/silentclient/client/mixin/wrappers/GuiTextFieldWrapper.java new file mode 100644 index 0000000..0a9c2dc --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/wrappers/GuiTextFieldWrapper.java @@ -0,0 +1,15 @@ +package net.silentclient.client.mixin.wrappers; + +import net.minecraft.client.gui.GuiTextField; + +public class GuiTextFieldWrapper { + private final GuiTextField guiTextField; + + public GuiTextFieldWrapper(GuiTextField guiTextField) { + this.guiTextField = guiTextField; + } + + public GuiTextField getGuiTextField() { + return guiTextField; + } +} diff --git a/src/main/java/net/silentclient/client/mixin/wrappers/IMetadataSerializerWrapper.java b/src/main/java/net/silentclient/client/mixin/wrappers/IMetadataSerializerWrapper.java new file mode 100644 index 0000000..4f6249e --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/wrappers/IMetadataSerializerWrapper.java @@ -0,0 +1,15 @@ +package net.silentclient.client.mixin.wrappers; + +import net.minecraft.client.resources.data.IMetadataSerializer; + +public class IMetadataSerializerWrapper { + private final IMetadataSerializer iMetadataSerializer; + + public IMetadataSerializerWrapper(IMetadataSerializer iMetadataSerializer) { + this.iMetadataSerializer = iMetadataSerializer; + } + + public IMetadataSerializer getiMetadataSerializer() { + return iMetadataSerializer; + } +} diff --git a/src/main/java/net/silentclient/client/mixin/wrappers/TextureManagerWrapper.java b/src/main/java/net/silentclient/client/mixin/wrappers/TextureManagerWrapper.java new file mode 100644 index 0000000..1605b88 --- /dev/null +++ b/src/main/java/net/silentclient/client/mixin/wrappers/TextureManagerWrapper.java @@ -0,0 +1,15 @@ +package net.silentclient.client.mixin.wrappers; + +import net.minecraft.client.renderer.texture.TextureManager; + +public class TextureManagerWrapper { + private final TextureManager textureManager; + + public TextureManagerWrapper(TextureManager textureManager) { + this.textureManager = textureManager; + } + + public TextureManager getTextureManager() { + return textureManager; + } +} diff --git a/src/main/java/net/silentclient/client/mods/render/AnimationsMod.java b/src/main/java/net/silentclient/client/mods/render/AnimationsMod.java index 3f3aa58..b173d7c 100644 --- a/src/main/java/net/silentclient/client/mods/render/AnimationsMod.java +++ b/src/main/java/net/silentclient/client/mods/render/AnimationsMod.java @@ -6,8 +6,7 @@ import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.util.ResourceLocation; -import net.silentclient.client.mixin.accessors.MinecraftAccessor; -import net.silentclient.client.mixin.accessors.RenderItemAccessor; +import net.silentclient.client.mixin.ducks.MinecraftExt; import net.silentclient.client.mods.Mod; import net.silentclient.client.mods.ModCategory; @@ -42,7 +41,7 @@ public class AnimationsMod extends Mod { GlStateManager.depthFunc(514); GlStateManager.disableLighting(); GlStateManager.blendFunc(768, 1); - ((MinecraftAccessor) Minecraft.getMinecraft()).getRenderEngine().bindTexture(RES_ITEM_GLINT); + ((MinecraftExt) Minecraft.getMinecraft()).silent$getRenderEngine().getTextureManager().bindTexture(RES_ITEM_GLINT); GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); @@ -64,7 +63,7 @@ public class AnimationsMod extends Mod { GlStateManager.enableLighting(); GlStateManager.depthFunc(515); GlStateManager.depthMask(true); - ((MinecraftAccessor) Minecraft.getMinecraft()).getRenderEngine().bindTexture(TextureMap.locationBlocksTexture); + ((MinecraftExt) Minecraft.getMinecraft()).silent$getRenderEngine().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); } } } diff --git a/src/main/java/net/silentclient/client/mods/render/ColorSaturationMod.java b/src/main/java/net/silentclient/client/mods/render/ColorSaturationMod.java index 68fc80b..94378a1 100644 --- a/src/main/java/net/silentclient/client/mods/render/ColorSaturationMod.java +++ b/src/main/java/net/silentclient/client/mods/render/ColorSaturationMod.java @@ -1,26 +1,24 @@ package net.silentclient.client.mods.render; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.Map; - import com.google.gson.JsonSyntaxException; - import net.minecraft.client.resources.FallbackResourceManager; -import net.minecraft.client.resources.SimpleReloadableResourceManager; import net.minecraft.client.settings.GameSettings; import net.minecraft.client.shader.ShaderGroup; import net.minecraft.client.util.JsonException; import net.minecraft.util.ResourceLocation; import net.silentclient.client.event.EventTarget; import net.silentclient.client.event.impl.ClientTickEvent; -import net.silentclient.client.mixin.accessors.MinecraftAccessor; import net.silentclient.client.mixin.accessors.SimpleReloadableResourceManagerAccessor; +import net.silentclient.client.mixin.ducks.MinecraftExt; import net.silentclient.client.mods.Mod; import net.silentclient.client.mods.ModCategory; import net.silentclient.client.mods.Setting; import net.silentclient.client.utils.resource.SaturationResourceManager; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.Map; + public class ColorSaturationMod extends Mod { private final Map domainResourceManagers; private Field cachedFastRender; @@ -58,7 +56,7 @@ public class ColorSaturationMod extends Mod { @EventTarget public void tick(ClientTickEvent event) { if (this.domainResourceManagers != null && !this.domainResourceManagers.containsKey("colorsaturation")) { - this.domainResourceManagers.put("colorsaturation", new SaturationResourceManager(((MinecraftAccessor) this.mc).getMetadataSerializer_())); + this.domainResourceManagers.put("colorsaturation", new SaturationResourceManager(((MinecraftExt) this.mc).silent$getMetadataSerializer_().getiMetadataSerializer())); } } @@ -67,7 +65,7 @@ public class ColorSaturationMod extends Mod { this.domainResourceManagers.remove("colorsaturation"); } if (this.domainResourceManagers != null && !this.domainResourceManagers.containsKey("colorsaturation")) { - this.domainResourceManagers.put("colorsaturation", new SaturationResourceManager(((MinecraftAccessor) this.mc).getMetadataSerializer_())); + this.domainResourceManagers.put("colorsaturation", new SaturationResourceManager(((MinecraftExt) this.mc).silent$getMetadataSerializer_().getiMetadataSerializer())); } shader = null; } @@ -84,7 +82,7 @@ public class ColorSaturationMod extends Mod { this.domainResourceManagers.remove("colorsaturation"); } if (this.domainResourceManagers != null && !this.domainResourceManagers.containsKey("colorsaturation")) { - this.domainResourceManagers.put("colorsaturation", new SaturationResourceManager(((MinecraftAccessor) this.mc).getMetadataSerializer_())); + this.domainResourceManagers.put("colorsaturation", new SaturationResourceManager(((MinecraftExt) this.mc).silent$getMetadataSerializer_().getiMetadataSerializer())); } try { this.shader = new ShaderGroup(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), diff --git a/src/main/java/net/silentclient/client/utils/calculator/ChatCalculator.java b/src/main/java/net/silentclient/client/utils/calculator/ChatCalculator.java index 58464c9..8573c0d 100644 --- a/src/main/java/net/silentclient/client/utils/calculator/ChatCalculator.java +++ b/src/main/java/net/silentclient/client/utils/calculator/ChatCalculator.java @@ -18,7 +18,7 @@ public class ChatCalculator { } private static boolean runExprReplace(GuiChat chat) { - GuiTextField field = ((GuiChatAccessor) chat).getInputField(); + GuiTextField field = ((GuiChatAccessor) chat).silent$getInputField().getGuiTextField(); String originalText = field.getText(); int cursor = field.getCursorPosition(); try { @@ -35,7 +35,7 @@ public class ChatCalculator { } private static boolean runExprAdd(GuiChat chat) { - GuiTextField field = ((GuiChatAccessor) chat).getInputField(); + GuiTextField field = ((GuiChatAccessor) chat).silent$getInputField().getGuiTextField(); String originalText = field.getText(); int cursor = field.getCursorPosition(); try { diff --git a/src/main/resources/mixins.SilentClient.json b/src/main/resources/mixins.SilentClient.json index 734b698..f3bc9b4 100644 --- a/src/main/resources/mixins.SilentClient.json +++ b/src/main/resources/mixins.SilentClient.json @@ -8,7 +8,7 @@ "mixins": [ "mixins.MinecraftMixin", "mixins.AbstractClientPlayerMixin", - "accessors.GuiChatAccessor", + "mixins.GuiChatMixin", "accessors.GuiAccessor", "accessors.RenderItemAccessor", "accessors.SimpleReloadableResourceManagerAccessor", @@ -34,6 +34,11 @@ "mixins.NetworkManagerMixin", "mixins.RenderManagerMixin", "mixins.ItemRendererMixin", - "mixins.RenderGlobalMixin" + "mixins.RenderGlobalMixin", + "mixins.LayerArmorBaseMixin", + "mixins.RenderItemMixin", + "mixins.ModelBipedMixin", + "mixins.LoadingScreenRendererMixin", + "accessors.MinecraftAccessor" ] } \ No newline at end of file