From 817ae42686f3e0fa0e3d9b7779876c9e04b6bb24 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Fri, 9 Sep 2022 11:36:16 +0200 Subject: [PATCH] fixDebugBoundingBox being offset up for the player (#104) * fixDebugBoundingBox * forgot Side.CLIENT --- .../hodgepodge/core/LoadingConfig.java | 4 ++ .../mitchej123/hodgepodge/mixins/Mixins.java | 10 ++++- .../mixins/minecraft/MixinRenderManager.java | 40 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinRenderManager.java diff --git a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java index 5d3197af..aad38a1a 100644 --- a/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java +++ b/src/main/java/com/mitchej123/hodgepodge/core/LoadingConfig.java @@ -36,6 +36,7 @@ public class LoadingConfig { public boolean fixPotionRenderOffset; public boolean fixPotionLimit; public boolean fixPerspectiveCamera; + public boolean fixDebugBoundingBox; public boolean fixHopperVoidingItems; public boolean fixHugeChatKick; public boolean logHugeChat; @@ -170,6 +171,9 @@ public LoadingConfig(File file) { true, "Prevent tall grass and such to affect the perspective camera") .getBoolean(); + fixDebugBoundingBox = config.get( + "fixes", "fixDebugBoundingBox", true, "Fixes the debug hitbox of the player beeing offset") + .getBoolean(); fixGlStateBugs = config.get( "fixes", "fixGlStateBugs", diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java index 4448232d..68793813 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java @@ -10,7 +10,15 @@ public enum Mixins { // Vanilla Fixes FIX_PERSPECTIVE_CAMERA( - "minecraft.MixinEntityRenderer", () -> Hodgepodge.config.fixPerspectiveCamera, TargetedMod.VANILLA), + "minecraft.MixinEntityRenderer", + Side.CLIENT, + () -> Hodgepodge.config.fixPerspectiveCamera, + TargetedMod.VANILLA), + FIX_DEBUG_BOUNDING_BOX( + "minecraft.MixinRenderManager", + Side.CLIENT, + () -> Hodgepodge.config.fixDebugBoundingBox, + TargetedMod.VANILLA), FENCE_CONNECTIONS_FIX( "minecraft.MixinBlockFence", () -> Hodgepodge.config.fixFenceConnections, TargetedMod.VANILLA), FIX_INVENTORY_OFFSET_WITH_POTIONS( diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinRenderManager.java b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinRenderManager.java new file mode 100644 index 00000000..92a8b51f --- /dev/null +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/minecraft/MixinRenderManager.java @@ -0,0 +1,40 @@ +package com.mitchej123.hodgepodge.mixins.minecraft; + +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.util.AxisAlignedBB; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(RenderManager.class) +public class MixinRenderManager { + + @Redirect( + method = "renderDebugBoundingBox", + at = + @At( + value = "INVOKE", + target = + "Lnet/minecraft/util/AxisAlignedBB;getBoundingBox(DDDDDD)Lnet/minecraft/util/AxisAlignedBB;")) + public AxisAlignedBB hodgepodge$fixDebugBoundingBox( + double minX, + double minY, + double minZ, + double maxX, + double maxY, + double maxZ, + Entity entity, + double p_85094_2_, + double p_85094_4_, + double p_85094_6_, + float p_85094_8_, + float p_85094_9_) { + if (entity instanceof EntityPlayerSP) { + final float offset = -1.62F + (entity.isSneaking() ? 0.08F : 0); + return AxisAlignedBB.getBoundingBox(minX, minY + offset, minZ, maxX, maxY + offset, maxZ); + } + return AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ); + } +}