aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/dulkirfabric/mixin/render
diff options
context:
space:
mode:
authoringlettronald <inglettronald@gmail.com>2023-07-17 11:24:50 -0500
committeringlettronald <inglettronald@gmail.com>2023-07-17 11:24:50 -0500
commitd68c8bb34fe41d47777c4771364d2b94b4fdbdf1 (patch)
tree8b28111d93a1b5db2a7f98764f26b7ba8a15943a /src/main/java/com/dulkirfabric/mixin/render
parentd21dad73e37c1aaba1933a52b094534865594dc7 (diff)
downloadDulkirMod-Fabric-d68c8bb34fe41d47777c4771364d2b94b4fdbdf1.tar.gz
DulkirMod-Fabric-d68c8bb34fe41d47777c4771364d2b94b4fdbdf1.tar.bz2
DulkirMod-Fabric-d68c8bb34fe41d47777c4771364d2b94b4fdbdf1.zip
I'm all over the place today
Diffstat (limited to 'src/main/java/com/dulkirfabric/mixin/render')
-rw-r--r--src/main/java/com/dulkirfabric/mixin/render/HeldItemRendererMixin.java41
-rw-r--r--src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java12
-rw-r--r--src/main/java/com/dulkirfabric/mixin/render/LivingEntityMixin.java8
-rw-r--r--src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java50
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);
}
}
}