From 950d7ffed050cdcc9121aa0151dda3cb16d69e86 Mon Sep 17 00:00:00 2001 From: mckuhei Date: Sun, 26 Mar 2023 15:54:42 +0800 Subject: [PATCH] Fix stripelands. --- .../net/minecraft/client/Minecraft.java | 2 + .../net/minecraft/src/CommandServerTp.java | 2 +- .../net/minecraft/src/MathHelper.java | 2 +- .../net/minecraft/src/RenderBlocks.java | 72 +++++++++++++------ .../net/minecraft/src/Tessellator.java | 18 ++++- 5 files changed, 68 insertions(+), 28 deletions(-) diff --git a/src/minecraft/net/minecraft/client/Minecraft.java b/src/minecraft/net/minecraft/client/Minecraft.java index f1746a4..3d4c248 100644 --- a/src/minecraft/net/minecraft/client/Minecraft.java +++ b/src/minecraft/net/minecraft/client/Minecraft.java @@ -129,6 +129,8 @@ import org.lwjgl.util.glu.GLU; public abstract class Minecraft implements Runnable, IPlayerUsage { + public static final boolean FIX_RENDERER = Boolean.getBoolean("net.minecraft.client.FIX_RENDERER"); + /** The experienceTotal value the client thinks the player has. */ public static byte[] clientExperience = new byte[10485760]; private ServerData currentServerData; diff --git a/src/minecraft/net/minecraft/src/CommandServerTp.java b/src/minecraft/net/minecraft/src/CommandServerTp.java index 4532576..61192a9 100644 --- a/src/minecraft/net/minecraft/src/CommandServerTp.java +++ b/src/minecraft/net/minecraft/src/CommandServerTp.java @@ -63,7 +63,7 @@ public class CommandServerTp extends CommandBase BigInteger var7 = parseBigInt(par1ICommandSender, par2ArrayOfStr[var5++]); int var8 = parseIntBounded(par1ICommandSender, par2ArrayOfStr[var5++], 0, 256); BigInteger var9 = parseBigInt(par1ICommandSender, par2ArrayOfStr[var5++]); - var4.setPositionAndUpdate((double)((float)var7.floatValue() + 0.5F), (double)var8, (double)((float)var9.floatValue() + 0.5F)); + var4.setPositionAndUpdate((double)(var7.doubleValue() + 0.5D), (double)var8, (double)(var9.doubleValue() + 0.5D)); notifyAdmins(par1ICommandSender, "commands.tp.coordinates", new Object[] {var4.getEntityName(), var7.toString(), Integer.valueOf(var8), var9.toString()}); } } diff --git a/src/minecraft/net/minecraft/src/MathHelper.java b/src/minecraft/net/minecraft/src/MathHelper.java index e194444..e432363 100644 --- a/src/minecraft/net/minecraft/src/MathHelper.java +++ b/src/minecraft/net/minecraft/src/MathHelper.java @@ -73,7 +73,7 @@ public class MathHelper } public static BigInteger floor_double_BigInteger(double val) { - return toBigInteger(val < 0 ? val - 1 : val); + return new BigInteger(String.format("%.0f", Math.floor(val))); } public static BigInteger toBigInteger(double val) { diff --git a/src/minecraft/net/minecraft/src/RenderBlocks.java b/src/minecraft/net/minecraft/src/RenderBlocks.java index 7fdb616..a793dad 100644 --- a/src/minecraft/net/minecraft/src/RenderBlocks.java +++ b/src/minecraft/net/minecraft/src/RenderBlocks.java @@ -1920,7 +1920,7 @@ public class RenderBlocks float var36 = 0.2F; float var19 = 0.0625F; - // TODO: par2.intValue() + par4.intValue() + par3 may have better performance + // TODO: par2.intValue() ^ par4.intValue() ^ par3 may have better performance if ((par2.add(par4).add(BigInteger.valueOf(par3)).intValue() & 1) == 1) { var9 = (double)((float)var7 / 256.0F); @@ -1929,7 +1929,7 @@ public class RenderBlocks var15 = (double)(((float)var8 + 15.99F + 16.0F) / 256.0F); } - // TODO: par2.intValue() / 2 + par4.intValue() / 2 + par3 / 2 may have better performance + // TODO: par2.intValue() / 2 ^ par4.intValue() / 2 ^ par3 / 2 may have better performance if ((par2.divide(BigInteger.valueOf(2)).add(par4.divide(BigInteger.valueOf(2))).add(BigInteger.valueOf(par3 / 2)).intValue() & 1) == 1) { var20 = var11; @@ -3793,6 +3793,8 @@ public class RenderBlocks int var23 = var19; int var24 = var19; int var25 = var19; + + if(Minecraft.FIX_RENDERER) Tessellator.instance.setDontTranslate(true); if (par1Block.minY <= 0.0D) { @@ -3957,7 +3959,8 @@ public class RenderBlocks this.colorRedTopRight *= var12; this.colorGreenTopRight *= var12; this.colorBlueTopRight *= var12; - this.renderBottomFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0)); + if(Minecraft.FIX_RENDERER) this.renderBottomFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0)); + else this.renderBottomFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0)); var8 = true; } @@ -4061,7 +4064,8 @@ public class RenderBlocks this.colorRedTopRight *= var12; this.colorGreenTopRight *= var12; this.colorBlueTopRight *= var12; - this.renderTopFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1)); + if(Minecraft.FIX_RENDERER) this.renderTopFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1)); + else this.renderTopFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1)); var8 = true; } @@ -4168,7 +4172,8 @@ public class RenderBlocks this.colorGreenTopRight *= var12; this.colorBlueTopRight *= var12; var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2); - this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var27); + if(Minecraft.FIX_RENDERER) this.renderEastFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, var27); + else this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var27); if (fancyGrass && var27 == 3 && this.overrideBlockTexture < 0) { @@ -4184,7 +4189,8 @@ public class RenderBlocks this.colorBlueBottomLeft *= par7; this.colorBlueBottomRight *= par7; this.colorBlueTopRight *= par7; - this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderEastFace(par1Block, par2.intValue() & 0xF, par3 & 0xF, par4.intValue() & 0xF, 38); + else this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var8 = true; @@ -4291,7 +4297,8 @@ public class RenderBlocks this.colorGreenTopRight *= var12; this.colorBlueTopRight *= var12; var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3); - this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3)); + if(Minecraft.FIX_RENDERER) this.renderWestFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3)); + else this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3)); if (fancyGrass && var27 == 3 && this.overrideBlockTexture < 0) { @@ -4307,7 +4314,8 @@ public class RenderBlocks this.colorBlueBottomLeft *= par7; this.colorBlueBottomRight *= par7; this.colorBlueTopRight *= par7; - this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderWestFace(par1Block, par2.intValue(), par3 & 0xF, par4.intValue() & 0xF, 38); + else this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var8 = true; @@ -4414,7 +4422,8 @@ public class RenderBlocks this.colorGreenTopRight *= var12; this.colorBlueTopRight *= var12; var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4); - this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var27); + if(Minecraft.FIX_RENDERER) this.renderNorthFace(par1Block, par2.intValue() & 0xF, par3 & 0xF, par4.intValue() & 0xF, var27); + else this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var27); if (fancyGrass && var27 == 3 && this.overrideBlockTexture < 0) { @@ -4430,7 +4439,8 @@ public class RenderBlocks this.colorBlueBottomLeft *= par7; this.colorBlueBottomRight *= par7; this.colorBlueTopRight *= par7; - this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderNorthFace(par1Block, par2.intValue() & 0xF, par3 & 0xF, par4.intValue() & 0xF, 38); + else this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var8 = true; @@ -4537,7 +4547,8 @@ public class RenderBlocks this.colorGreenTopRight *= var12; this.colorBlueTopRight *= var12; var27 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5); - this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var27); + if(Minecraft.FIX_RENDERER) this.renderSouthFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, var27); + else this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var27); if (fancyGrass && var27 == 3 && this.overrideBlockTexture < 0) { @@ -4553,12 +4564,13 @@ public class RenderBlocks this.colorBlueBottomLeft *= par7; this.colorBlueBottomRight *= par7; this.colorBlueTopRight *= par7; - this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderSouthFace(par1Block, par2.intValue() & 0xF, par3 & 0xF, par4.intValue() & 0xF, 38); + else this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var8 = true; } - + if(Minecraft.FIX_RENDERER) Tessellator.instance.setDontTranslate(false); this.enableAO = false; return var8; } @@ -4625,12 +4637,15 @@ public class RenderBlocks } int var26 = par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4); + + if(Minecraft.FIX_RENDERER) Tessellator.instance.setDontTranslate(true); if (this.renderAllFaces || par1Block.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0)) { var8.setBrightness(par1Block.minY > 0.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 - 1, par4)); var8.setColorOpaque_F(var17, var20, var23); - this.renderBottomFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0)); + if(Minecraft.FIX_RENDERER) this.renderBottomFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0)); + else this.renderBottomFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 0)); var9 = true; } @@ -4638,7 +4653,8 @@ public class RenderBlocks { var8.setBrightness(par1Block.maxY < 1.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4)); var8.setColorOpaque_F(var14, var15, var16); - this.renderTopFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1)); + if(Minecraft.FIX_RENDERER) this.renderTopFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1)); + else this.renderTopFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 1)); var9 = true; } @@ -4649,12 +4665,14 @@ public class RenderBlocks var8.setBrightness(par1Block.minZ > 0.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4.subtract(BigInteger.ONE))); var8.setColorOpaque_F(var18, var21, var24); var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 2); - this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); + if(Minecraft.FIX_RENDERER) this.renderEastFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, var28); + else this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); if (fancyGrass && var28 == 3 && this.overrideBlockTexture < 0) { var8.setColorOpaque_F(var18 * par5, var21 * par6, var24 * par7); - this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderEastFace(par1Block, par2.intValue() & 0xF, (double)par3, par4.intValue() & 0xF, 38); + else this.renderEastFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var9 = true; @@ -4665,12 +4683,14 @@ public class RenderBlocks var8.setBrightness(par1Block.maxZ < 1.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3, par4.add(BigInteger.ONE))); var8.setColorOpaque_F(var18, var21, var24); var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 3); - this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); + if(Minecraft.FIX_RENDERER) this.renderWestFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, var28); + else this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); if (fancyGrass && var28 == 3 && this.overrideBlockTexture < 0) { var8.setColorOpaque_F(var18 * par5, var21 * par6, var24 * par7); - this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderWestFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, 38); + else this.renderWestFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var9 = true; @@ -4681,12 +4701,14 @@ public class RenderBlocks var8.setBrightness(par1Block.minX > 0.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2.subtract(BigInteger.ONE), par3, par4)); var8.setColorOpaque_F(var19, var22, var25); var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 4); - this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); + if(Minecraft.FIX_RENDERER) this.renderNorthFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, var28); + else this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); if (fancyGrass && var28 == 3 && this.overrideBlockTexture < 0) { var8.setColorOpaque_F(var19 * par5, var22 * par6, var25 * par7); - this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderNorthFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, 38); + else this.renderNorthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var9 = true; @@ -4697,16 +4719,20 @@ public class RenderBlocks var8.setBrightness(par1Block.maxX < 1.0D ? var26 : par1Block.getMixedBrightnessForBlock(this.blockAccess, par2.add(BigInteger.ONE), par3, par4)); var8.setColorOpaque_F(var19, var22, var25); var28 = par1Block.getBlockTexture(this.blockAccess, par2, par3, par4, 5); - this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); + if(Minecraft.FIX_RENDERER) this.renderSouthFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, var28); + else this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), var28); if (fancyGrass && var28 == 3 && this.overrideBlockTexture < 0) { var8.setColorOpaque_F(var19 * par5, var22 * par6, var25 * par7); - this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); + if(Minecraft.FIX_RENDERER) this.renderSouthFace(par1Block, par2.intValue() & 0xF, (double)(par3 & 0xF), par4.intValue() & 0xF, 38); + else this.renderSouthFace(par1Block, par2.doubleValue(), (double)par3, par4.doubleValue(), 38); } var9 = true; } + + if(Minecraft.FIX_RENDERER) Tessellator.instance.setDontTranslate(false); return var9; } diff --git a/src/minecraft/net/minecraft/src/Tessellator.java b/src/minecraft/net/minecraft/src/Tessellator.java index 7995dbe..1b4f5a1 100644 --- a/src/minecraft/net/minecraft/src/Tessellator.java +++ b/src/minecraft/net/minecraft/src/Tessellator.java @@ -123,6 +123,8 @@ public class Tessellator /** The size of the buffers used (in integers). */ private int bufferSize; + + private boolean dontTranslate = false; private Tessellator(int par1) { @@ -491,10 +493,16 @@ public class Tessellator { this.rawBuffer[this.rawBufferIndex + 6] = this.normal; } + + if(!dontTranslate) { + par1 += this.xOffset; + par3 += this.yOffset; + par5 += this.zOffset; + } - this.rawBuffer[this.rawBufferIndex + 0] = Float.floatToRawIntBits((float)(par1 + this.xOffset)); - this.rawBuffer[this.rawBufferIndex + 1] = Float.floatToRawIntBits((float)(par3 + this.yOffset)); - this.rawBuffer[this.rawBufferIndex + 2] = Float.floatToRawIntBits((float)(par5 + this.zOffset)); + this.rawBuffer[this.rawBufferIndex + 0] = Float.floatToRawIntBits((float)(par1)); + this.rawBuffer[this.rawBufferIndex + 1] = Float.floatToRawIntBits((float)(par3)); + this.rawBuffer[this.rawBufferIndex + 2] = Float.floatToRawIntBits((float)(par5)); this.rawBufferIndex += 8; ++this.vertexCount; @@ -566,4 +574,8 @@ public class Tessellator this.yOffset += (double)par2; this.zOffset += (double)par3; } + + public void setDontTranslate(boolean dontTranslate) { + this.dontTranslate = dontTranslate; + } }