diff options
Diffstat (limited to 'src/main/java/com/dulkirfabric/mixin/render')
4 files changed, 96 insertions, 15 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/render/HeldItemRendererMixin.java b/src/main/java/com/dulkirfabric/mixin/render/HeldItemRendererMixin.java new file mode 100644 index 0000000..664af0d --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/render/HeldItemRendererMixin.java @@ -0,0 +1,41 @@ +package com.dulkirfabric.mixin.render; + +import com.dulkirfabric.config.DulkirConfig; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.item.HeldItemRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Hand; +import net.minecraft.util.math.RotationAxis; +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.CallbackInfo; + + +// SOURCE FOR A LOT OF THIS: https://github.com/cosrnic/smallviewmodel/blob/main/src/main/java/uk/cosrnic/smallviewmodel/mixin/MixinHeldItemRenderer.java +@Mixin(HeldItemRenderer.class) +public class HeldItemRendererMixin { + @Inject(method = "renderFirstPersonItem(Lnet/minecraft/client/network/AbstractClientPlayerEntity;FFLnet/minecraft/util/Hand;FLnet/minecraft/item/ItemStack;FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V")) + public void onRenderHeldItem(AbstractClientPlayerEntity player, float tickDelta, float pitch, Hand hand, float swingProgress, ItemStack item, float equipProgress, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci) { + if (hand == Hand.MAIN_HAND) { + float rotX = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemRotX(); + float rotY = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemRotY(); + float rotZ = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemRotZ(); + + float posX = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemPosX() / 1000f; + float posY = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemPosY() / 1000f; + float posZ = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemPosZ() / 1000f; + + float scale = DulkirConfig.ConfigVars.getConfigOptions().getHeldItemScale(); + + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(rotX)); + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(rotY)); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(rotZ)); + matrices.scale(scale, scale, scale); + matrices.translate(posX, posY, posZ); + } + } +} diff --git a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java index e192c59..c50f132 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java @@ -1,6 +1,9 @@ package com.dulkirfabric.mixin.render; import com.dulkirfabric.config.DulkirConfig; +import com.dulkirfabric.util.ScoreBoardUtils; +import com.dulkirfabric.util.Utils; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; @@ -26,4 +29,13 @@ public class InGameHudMixin { public int renderScoreBoardSidebar(DrawContext instance, TextRenderer textRenderer, String text, int x, int y, int color, boolean shadow) { return 0; } + + @ModifyExpressionValue(method = "renderStatusBars(Lnet/minecraft/client/gui/DrawContext;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getArmor()I")) + public int onGrabArmorAmount(int original) { + if (DulkirConfig.ConfigVars.getConfigOptions().getHideArmorOverlay() && Utils.INSTANCE.isInSkyblock()) { + return 0; + } + return original; + } } diff --git a/src/main/java/com/dulkirfabric/mixin/render/LivingEntityMixin.java b/src/main/java/com/dulkirfabric/mixin/render/LivingEntityMixin.java index 1b86f5c..badac4c 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/LivingEntityMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/LivingEntityMixin.java @@ -6,6 +6,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; 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.callback.CallbackInfoReturnable; import java.awt.*; @@ -41,4 +44,9 @@ public class LivingEntityMixin implements GlowingEntityInterface { public boolean shouldDulkirEntityESP() { return shouldESP_DulkirMod; } + + @Inject(method = "getHandSwingDuration()I", at = @At("HEAD"), cancellable = true) + public void getHandSwingDuration(CallbackInfoReturnable<Integer> cir) { + cir.setReturnValue(50); + } } diff --git a/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java b/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java index bb1a9be..db235df 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java @@ -3,32 +3,42 @@ package com.dulkirfabric.mixin.render; import com.dulkirfabric.util.GlowingEntityInterface; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gl.Framebuffer; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.LightmapTextureManager; -import net.minecraft.client.render.WorldRenderer; +import net.minecraft.client.gl.SimpleFramebuffer; +import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Final; 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.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import static com.dulkirfabric.DulkirModFabric.mc; @Mixin(WorldRenderer.class) public class WorldRendererMixin { - @Shadow private @Nullable Framebuffer entityOutlinesFramebuffer; + @Shadow + private @Nullable Framebuffer entityOutlinesFramebuffer; + @Shadow + @Final + public BufferBuilderStorage bufferBuilders; + @Shadow @Final private MinecraftClient client; @Unique - Framebuffer temp = this.entityOutlinesFramebuffer; + boolean shouldRenderOutlinesDirect = false; + + @Unique + Framebuffer defaultEntityOutlineBuffer; + @ModifyExpressionValue(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getTeamColorValue()I")) + at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getTeamColorValue()I")) public int getGlowColor(int existing, @Local Entity entity) { if (entity instanceof GlowingEntityInterface dEntity) { if (dEntity.getDulkirEntityGlowColor() != null) { @@ -38,24 +48,34 @@ public class WorldRendererMixin { return existing; } + @Inject(method = "onResized", at = @At("HEAD")) + public void onResized(int width, int height, CallbackInfo ci) { + if (defaultEntityOutlineBuffer == null) { + defaultEntityOutlineBuffer = new SimpleFramebuffer(width, height, true, false); + defaultEntityOutlineBuffer.setClearColor(0, 0, 0, 0); + } else { + defaultEntityOutlineBuffer.resize(width, height, false); + } + } + @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/BufferBuilderStorage;getEntityVertexConsumers()Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;", shift = At.Shift.AFTER)) public void saveDefaultBufferESP(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci) { - temp = this.entityOutlinesFramebuffer; + if (defaultEntityOutlineBuffer != null) { + defaultEntityOutlineBuffer.copyDepthFrom(this.entityOutlinesFramebuffer); + } } @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;shouldRender(Lnet/minecraft/entity/Entity;Lnet/minecraft/client/render/Frustum;DDD)Z")) + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;shouldRender(Lnet/minecraft/entity/Entity;Lnet/minecraft/client/render/Frustum;DDD)Z")) public void setOutlineESP(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci, @Local Entity entity) { - if (entity instanceof GlowingEntityInterface dEntity) { - if (dEntity.shouldDulkirEntityGlow() && !dEntity.shouldDulkirEntityESP()) { - if (this.entityOutlinesFramebuffer != null) - this.entityOutlinesFramebuffer.copyDepthFrom(mc.getFramebuffer()); - } + if (entity instanceof GlowingEntityInterface dEntity && dEntity.shouldDulkirEntityGlow() && !dEntity.shouldDulkirEntityESP()) { + if (this.entityOutlinesFramebuffer != null) + this.entityOutlinesFramebuffer.copyDepthFrom(mc.getFramebuffer()); } else { // give esp back here if (this.entityOutlinesFramebuffer != null) - this.entityOutlinesFramebuffer.copyDepthFrom(temp); + this.entityOutlinesFramebuffer.copyDepthFrom(defaultEntityOutlineBuffer); } } } |