F3+B hitbox/fishing rod line thickness (width) varies depending on whether F3 is open
The thickness of the lines on the hitbox display F3+B varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3+G for chunk borders, also change the thickness. Sometimes, the width resets after the F3 menu is closed, and sometimes it stays at the smaller width.
This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }
The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }
And the code that renders the bounding box is here. Note the lack of any code setting the line width:
/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }
This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
- Fixed
[Mod] Les3awe- 10
- 8
- Confirmed
- UI
- f3 hitbox
1.8.8 - 19w34a
1.8.8 15w46a 15w47a 15w47b 15w47c 15w49a 15w49b 1.8.9 15w50a 15w51a 15w51b 16w02a 16w03a 16w04a 16w05a 16w05b 16w06a 16w07a 16w07b 1.9-pre1 1.9-pre2 1.9-pre3 1.9-pre4 1.9 1.9.1-pre1 1.9.1-pre2 1.9.1-pre3 1.9.1 1.9.2 16w14a 16w15a 16w15b 1.9.3-pre1 1.9.3-pre2 1.9.3-pre3 1.9.3 1.9.4 16w20a 16w21a 16w21b 1.10-pre1 1.10-pre2 1.10 1.10.1 1.10.2 16w32a 16w32b 16w33a 16w35a 16w36a 16w38a 16w39a 16w39b 16w39c 16w40a 16w41a 16w42a 16w43a 16w44a 1.11-pre1 1.11 16w50a 1.11.2 17w06a 17w13a 17w13b 17w14a 17w15a 17w16a 17w16b 17w17a 17w17b 17w18a 17w18b 1.12-pre1 1.12-pre2 1.12-pre3 1.12-pre4 1.12-pre5 1.12-pre6 1.12-pre7 1.12 17w31a 1.12.1-pre1 1.12.1 1.12.2-pre1 1.12.2-pre2 1.12.2 17w43a 17w43b 17w45a 17w45b 17w46a 17w47a 17w47b 17w48a 17w49a 17w49b 17w50a 18w01a 18w02a 18w03b 18w05a 18w06a 18w07a 18w07b 18w07c 18w08a 18w08b 18w09a 18w10a 18w10b 18w10c 18w10d 18w11a 18w14b 18w15a 1.13-pre1 1.13-pre3 1.13-pre6 1.13-pre10 1.13 18w30b 18w31a 18w32a 18w33a 1.13.1-pre1 1.13.1-pre2 1.13.1 1.13.2-pre1 1.13.2-pre2 1.13.2 18w43a 18w43b 18w43c 18w44a 18w48a 18w48b 18w49a 18w50a 19w12b 19w13b 19w14a 19w14b 1.14.3 1.14.4 19w34a- 19w39a
Created Issue:
Sometimes hitbox line too thick
Sometimes hitbox line too thick.
Can use the open and then close F3 to restore.Environment
OS : Windows 10 64-bit
Java 8 version : 1.8.0_66-b18 64-bit
CPU : Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz
GPU : NVIDIA GeForce GTX 650
Drivers : GeForce 359.00
Sometimes hitbox line too thick.
Can use the open and then close F3 to restore.
Sometimes hitbox line too thick.
Can use the open and then close F3 to restore.Hitbox line too thick.
Can use the open and then close F3 to restore.
Sometimes hitbox line too thickHitbox line too thick
Hitbox line too thick.
Can use the open and then close F3 to restore.(Third-person is invalid.)
Hitbox line too thick.
Can use the open and then close F3 to restore.(Third-person is invalid.)The thickness of the lines on the hitbox display (F3 + B) varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3 + G for chunk borders, also change the thickness. Sometimes, the width resets after the F3 menu is closed, and sometimes it stays at the smaller width.
This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
net.minecraft.client.gui.GuiIngame.renderAttackIndicator(float, ScaledResolution) (bdm.a(float, bdp), lines 347-356)if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
net.minecraft.client.renderer.OpenGlHelper.renderDirections(int) (caf.m(int), lines 787-809)public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }And the code that renders the bounding box is here. Note the lack of any code setting the line width:
net.minecraft.client.renderer.entity.RenderManager.renderDebugBoundingBox(Entity, double, double, double, float, float) (bsh.a(rw, double, double, double, float, float), lines 404-450)/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
Hitbox line too thickF3+B hitbox line thickness (width) varies depending on whether F3 is open
F3+B hitbox/fishing rod line thickness (width) varies depending on whether F3 is open
The thickness of the lines on the hitbox display (F3 + B) varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3 + G for chunk borders, also change the thickness. Sometimes, the width resets after the
F3 menu is closed, and sometimes it stays at the smaller width.This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
net.minecraft.client.gui.GuiIngame.renderAttackIndicator(float, ScaledResolution) (bdm.a(float, bdp), lines 347-356)if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
net.minecraft.client.renderer.OpenGlHelper.renderDirections(int) (caf.m(int), lines 787-809)public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }And the code that renders the bounding box is here. Note the lack of any code setting the line width:
net.minecraft.client.renderer.entity.RenderManager.renderDebugBoundingBox(Entity, double, double, double, float, float) (bsh.a(rw, double, double, double, float, float), lines 404-450)/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
The thickness of the lines on the hitbox display (F3B) varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3G for chunk borders, also change the thickness. Sometimes, the width resets after the F3 menu is closed, and sometimes it stays at the smaller width.
This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
net.minecraft.client.gui.GuiIngame.renderAttackIndicator(float, ScaledResolution) (bdm.a(float, bdp), lines 347-356)if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
net.minecraft.client.renderer.OpenGlHelper.renderDirections(int) (caf.m(int), lines 787-809)public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }And the code that renders the bounding box is here. Note the lack of any code setting the line width:
net.minecraft.client.renderer.entity.RenderManager.renderDebugBoundingBox(Entity, double, double, double, float, float) (bsh.a(rw, double, double, double, float, float), lines 404-450)/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
The thickness of the lines on the hitbox display
(F3B)varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3G for chunk borders, also change the thickness.Sometimes, the width resets after the F3 menu is closed, and sometimes it stays at the smaller width.This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
net.minecraft.client.gui.GuiIngame.renderAttackIndicator(float, ScaledResolution) (bdm.a(float, bdp), lines 347-356)if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
net.minecraft.client.renderer.OpenGlHelper.renderDirections(int) (caf.m(int), lines 787-809)public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }And the code that renders the bounding box is here. Note the lack of any code setting the line width:
net.minecraft.client.renderer.entity.RenderManager.renderDebugBoundingBox(Entity, double, double, double, float, float) (bsh.a(rw, double, double, double, float, float), lines 404-450)/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
The thickness of the lines on the hitbox display F3B varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3G for chunk borders, also change the thickness. Sometimes, the width resets after the F3 menu is closed, and sometimes it stays at the smaller width.
This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
net.minecraft.client.gui.GuiIngame.renderAttackIndicator(float, ScaledResolution) (bdm.a(float, bdp), lines 347-356)if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
net.minecraft.client.renderer.OpenGlHelper.renderDirections(int) (caf.m(int), lines 787-809)public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }And the code that renders the bounding box is here. Note the lack of any code setting the line width:
net.minecraft.client.renderer.entity.RenderManager.renderDebugBoundingBox(Entity, double, double, double, float, float) (bsh.a(rw, double, double, double, float, float), lines 404-450)/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
The thickness of the lines on the hitbox display F3+B varies depending on whether the F3 menu is open. When F3 is closed, the lines are noticeably thicker than when it is open. Other debug-related renderers, such as F3+G for chunk borders, also change the thickness. Sometimes, the width resets after the F3 menu is closed, and sometimes it stays at the smaller width.
This happens because the line thickness is not set when drawing the hitboxes; instead, the current thickness is used, which is smaller if F3 is open due to drawing the crosshair.
The specific code spots where this occurs are as follows (using MCP with 1.10.2 and 1.10.2 obfuscation):
The crosshair is rendered here:
net.minecraft.client.gui.GuiIngame.renderAttackIndicator(float, ScaledResolution) (bdm.a(float, bdp), lines 347-356)if (gamesettings.showDebugInfo && !gamesettings.hideGUI && !this.mc.thePlayer.hasReducedDebug() && !gamesettings.reducedDebugInfo) { GlStateManager.pushMatrix(); GlStateManager.translate((float)(l / 2), (float)(i1 / 2), this.zLevel); Entity entity = this.mc.getRenderViewEntity(); GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * p_184045_1_, -1.0F, 0.0F, 0.0F); GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * p_184045_1_, 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); OpenGlHelper.renderDirections(10); GlStateManager.popMatrix(); }The specific rendering of the directions is here. Note the call to GL11.glLineWidth(1) at the end:
net.minecraft.client.renderer.OpenGlHelper.renderDirections(int) (caf.m(int), lines 787-809)public static void renderDirections(int p_188785_0_) { GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); GL11.glLineWidth(4.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(0, 0, 0, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(2.0F); vertexbuffer.begin(1, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos((double)p_188785_0_, 0.0D, 0.0D).color(255, 0, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, (double)p_188785_0_, 0.0D).color(0, 255, 0, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, 0.0D).color(127, 127, 255, 255).endVertex(); vertexbuffer.pos(0.0D, 0.0D, (double)p_188785_0_).color(127, 127, 255, 255).endVertex(); tessellator.draw(); GL11.glLineWidth(1.0F); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); }And the code that renders the bounding box is here. Note the lack of any code setting the line width:
net.minecraft.client.renderer.entity.RenderManager.renderDebugBoundingBox(Entity, double, double, double, float, float) (bsh.a(rw, double, double, double, float, float), lines 404-450)/** * Renders the bounding box around an entity when F3+B is pressed */ private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { GlStateManager.depthMask(false); GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.disableCull(); GlStateManager.disableBlend(); float f = entityIn.width / 2.0F; AxisAlignedBB axisalignedbb = entityIn.getEntityBoundingBox(); RenderGlobal.func_189694_a(axisalignedbb.minX - entityIn.posX + x, axisalignedbb.minY - entityIn.posY + y, axisalignedbb.minZ - entityIn.posZ + z, axisalignedbb.maxX - entityIn.posX + x, axisalignedbb.maxY - entityIn.posY + y, axisalignedbb.maxZ - entityIn.posZ + z, 1.0F, 1.0F, 1.0F, 1.0F); if (entityIn instanceof EntityLivingBase) { float f1 = 0.01F; RenderGlobal.func_189694_a(x - (double)f, y + (double)entityIn.getEyeHeight() - 0.009999999776482582D, z - (double)f, x + (double)f, y + (double)entityIn.getEyeHeight() + 0.009999999776482582D, z + (double)f, 1.0F, 0.0F, 0.0F, 1.0F); } Tessellator tessellator = Tessellator.getInstance(); VertexBuffer vertexbuffer = tessellator.getBuffer(); Vec3d vec3d = entityIn.getLook(partialTicks); vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR); vertexbuffer.pos(x, y + (double)entityIn.getEyeHeight(), z).color(0, 0, 255, 255).endVertex(); vertexbuffer.pos(x + vec3d.xCoord * 2.0D, y + (double)entityIn.getEyeHeight() + vec3d.yCoord * 2.0D, z + vec3d.zCoord * 2.0D).color(0, 0, 255, 255).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); GlStateManager.enableCull(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); }This can be fixed by adding a call to GlStateManager.glLineWidth(1) (bob.d(1) - for thin lines) or GlStateManager.glLineWidth(2) (bob.d(2) - for thick lines) to renderDebugBoundingBox.
The thickness change does not happen when in third person (F5).
OS : Windows 10 64-bit
Java 8 version : 1.8.0_66-b18 64-bit
CPU : Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz
GPU : NVIDIA GeForce GTX 650
Drivers : GeForce 359.00












Confirmed for
Description updated to include code analysis and a more thorough explanation, plus increased searchability.
Affects fishing rod line as well