From 484b7b9e9bdd95dd48f0c273f323144effdd0b4b Mon Sep 17 00:00:00 2001 From: PeytonPlayz595 <106421860+PeytonPlayz595@users.noreply.github.com> Date: Sun, 13 Oct 2024 01:57:10 -0400 Subject: [PATCH] Performance patch part 1 Changes: - Fix chunks not rendering - Optifine zoom - Minimal entity updates - Fix some of Notch's shit code --- .gitignore | 4 +- desktopRuntime/eclipseProject/.classpath | 1 + .../java/net/PeytonPlayz585/opengl/GL11.java | 4 -- src/main/java/net/minecraft/src/Entity.java | 6 +++ .../java/net/minecraft/src/EntityLiving.java | 44 ++++++++++++++++++- .../net/minecraft/src/EntityRenderer.java | 32 ++++++++++++++ .../java/net/minecraft/src/EntitySorter.java | 4 +- .../java/net/minecraft/src/GameSettings.java | 4 +- .../java/net/minecraft/src/GuiGameOver.java | 2 +- .../java/net/minecraft/src/MouseFilter.java | 19 ++++++++ .../java/net/minecraft/src/RenderList.java | 3 +- .../java/net/minecraft/src/WorldProvider.java | 7 +-- .../java/net/minecraft/src/WorldRenderer.java | 7 +-- 13 files changed, 120 insertions(+), 17 deletions(-) create mode 100644 src/main/java/net/minecraft/src/MouseFilter.java diff --git a/.gitignore b/.gitignore index fd0ec54..03554c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ - -*.class +gradle/ +desktopRuntime/ \ No newline at end of file diff --git a/desktopRuntime/eclipseProject/.classpath b/desktopRuntime/eclipseProject/.classpath index 7a74eb6..350db87 100644 --- a/desktopRuntime/eclipseProject/.classpath +++ b/desktopRuntime/eclipseProject/.classpath @@ -11,5 +11,6 @@ + diff --git a/src/main/java/net/PeytonPlayz585/opengl/GL11.java b/src/main/java/net/PeytonPlayz585/opengl/GL11.java index a8fa83a..e6bfd39 100644 --- a/src/main/java/net/PeytonPlayz585/opengl/GL11.java +++ b/src/main/java/net/PeytonPlayz585/opengl/GL11.java @@ -2,8 +2,4 @@ package net.PeytonPlayz585.opengl; public class GL11 extends EaglerAdapterGL30 { - public static void glPixelStorei(int glUnpackAlignment, int i) { - _wglPixelStorei(glUnpackAlignment, i); - } - } diff --git a/src/main/java/net/minecraft/src/Entity.java b/src/main/java/net/minecraft/src/Entity.java index 5222123..369a90b 100644 --- a/src/main/java/net/minecraft/src/Entity.java +++ b/src/main/java/net/minecraft/src/Entity.java @@ -567,6 +567,12 @@ public abstract class Entity { this.rotationPitch = var8; this.setPosition(this.posX, this.posY, this.posZ); } + + public boolean isInRangeToRenderDist(double var1) { + double var3 = this.boundingBox.getAverageEdgeLength(); + var3 *= 64.0D * this.field_619_ac; + return var1 < var3 * var3; + } public float getDistanceToEntity(Entity var1) { float var2 = (float)(this.posX - var1.posX); diff --git a/src/main/java/net/minecraft/src/EntityLiving.java b/src/main/java/net/minecraft/src/EntityLiving.java index af85145..b04384a 100644 --- a/src/main/java/net/minecraft/src/EntityLiving.java +++ b/src/main/java/net/minecraft/src/EntityLiving.java @@ -193,9 +193,51 @@ public class EntityLiving extends Entity { this.field_9350_ad = (double)var8; this.field_9324_Y = var9; } + + private boolean canSkipUpdate() { + if (this.hurtTime > 0) { + return false; + } else if (this.field_9311_be < 20) { + return false; + } else { + World world = this.worldObj; + + if (world == null) { + return false; + } else if (world.playerEntities.size() != 1) { + return false; + } else { + Entity entity = (Entity)world.playerEntities.get(0); + double d0 = Math.max(Math.abs(this.posX - entity.posX) - 16.0D, 0.0D); + double d1 = Math.max(Math.abs(this.posZ - entity.posZ) - 16.0D, 0.0D); + double d2 = d0 * d0 + d1 * d1; + return !this.isInRangeToRenderDist(d2); + } + } + } + + private void onUpdateMinimal() { + ++this.field_9344_ag; + + if (this instanceof EntityMobs) { + float f = this.getEntityBrightness(1.0F); + + if (f > 0.5F) { + this.field_9344_ag += 2; + } + } + + this.func_418_b_(); + } public void onUpdate() { - super.onUpdate(); + + if(this.canSkipUpdate()) { + this.onUpdateMinimal(); + } else { + super.onUpdate(); + } + this.onLivingUpdate(); double var1 = this.posX - this.prevPosX; double var3 = this.posZ - this.prevPosZ; diff --git a/src/main/java/net/minecraft/src/EntityRenderer.java b/src/main/java/net/minecraft/src/EntityRenderer.java index f70bb11..2b9373c 100644 --- a/src/main/java/net/minecraft/src/EntityRenderer.java +++ b/src/main/java/net/minecraft/src/EntityRenderer.java @@ -12,6 +12,10 @@ import net.PeytonPlayz585.util.glu.GLU; import net.minecraft.client.Minecraft; public class EntityRenderer { + + private MouseFilter mouseFilterXAxis = new MouseFilter(); + private MouseFilter mouseFilterYAxis = new MouseFilter(); + private Minecraft mc; private float field_1387_i = 0.0F; public ItemRenderer field_1395_a; @@ -28,6 +32,8 @@ public class EntityRenderer { private float field_1382_n; private float field_1381_o; + private static boolean zoomMode = false; + private GameOverlayFramebuffer overlayFramebuffer; public EntityRenderer(Minecraft var1) { @@ -111,6 +117,27 @@ public class EntityRenderer { if(var2.isInsideOfMaterial(Material.water)) { var3 = 60.0F; } + + boolean flag = false; + if(this.mc.currentScreen == null) { + flag = Keyboard.isKeyDown(this.mc.gameSettings.keyBindZoom.keyCode); + } + + if(flag) { + if(!zoomMode) { + zoomMode = true; + this.mc.gameSettings.ofZoom = true; + } + + if(zoomMode) { + var3 /= 4.0F; + } + } else if(zoomMode) { + zoomMode = false; + this.mc.gameSettings.ofZoom = false; + this.mouseFilterXAxis = new MouseFilter(); + this.mouseFilterYAxis = new MouseFilter(); + } if(var2.health <= 0) { float var4 = (float)var2.deathTime + var1; @@ -284,6 +311,11 @@ public class EntityRenderer { if(this.mc.gameSettings.invertMouse) { var6 = -1; } + + if(this.mc.gameSettings.ofZoom) { + var4 = this.mouseFilterXAxis.func_22386_a(var4, 0.05F * var3); + var5 = this.mouseFilterYAxis.func_22386_a(var5, 0.05F * var3); + } this.mc.thePlayer.func_346_d(var4, var5 * (float)var6); } diff --git a/src/main/java/net/minecraft/src/EntitySorter.java b/src/main/java/net/minecraft/src/EntitySorter.java index 603143a..b3324b9 100644 --- a/src/main/java/net/minecraft/src/EntitySorter.java +++ b/src/main/java/net/minecraft/src/EntitySorter.java @@ -10,7 +10,9 @@ public class EntitySorter implements Comparator { } public int a(WorldRenderer var1, WorldRenderer var2) { - return var1.func_1202_a(this.field_1594_a) < var2.func_1202_a(this.field_1594_a) ? -1 : 1; + float f = var1.func_1202_a(field_1594_a); + float f1 = var2.func_1202_a(field_1594_a) ; + return f == f1 ? 0 : f >= f1 ? 1 : -1; } public int compare(Object var1, Object var2) { diff --git a/src/main/java/net/minecraft/src/GameSettings.java b/src/main/java/net/minecraft/src/GameSettings.java index 0ff2388..63f71fd 100644 --- a/src/main/java/net/minecraft/src/GameSettings.java +++ b/src/main/java/net/minecraft/src/GameSettings.java @@ -35,13 +35,15 @@ public class GameSettings { public KeyBinding keyBindChat = new KeyBinding("Chat", 20); public KeyBinding keyBindToggleFog = new KeyBinding("Toggle fog", 33); public KeyBinding keyBindSneak = new KeyBinding("Sneak", 42); - public KeyBinding[] keyBindings = new KeyBinding[]{this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindToggleFog}; + public KeyBinding keyBindZoom = new KeyBinding("Zoom", 46); + public KeyBinding[] keyBindings = new KeyBinding[]{this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindToggleFog, this.keyBindZoom}; protected Minecraft mc; public int numberOfOptions = 10; public int difficulty = 2; public boolean thirdPersonView = false; public String field_12259_z = ""; public String username = ""; + public boolean ofZoom = false; public GameSettings(Minecraft var1) { this.mc = var1; diff --git a/src/main/java/net/minecraft/src/GuiGameOver.java b/src/main/java/net/minecraft/src/GuiGameOver.java index c4af486..b979804 100644 --- a/src/main/java/net/minecraft/src/GuiGameOver.java +++ b/src/main/java/net/minecraft/src/GuiGameOver.java @@ -38,7 +38,7 @@ public class GuiGameOver extends GuiScreen { GL11.glScalef(2.0F, 2.0F, 2.0F); this.drawCenteredString(this.fontRenderer, "Game over!", this.width / 2 / 2, 30, 16777215); GL11.glPopMatrix(); - this.drawCenteredString(this.fontRenderer, "Score: &e" + this.mc.thePlayer.func_6417_t(), this.width / 2, 100, 16777215); + this.drawCenteredString(this.fontRenderer, "Score: " + this.mc.thePlayer.func_6417_t(), this.width / 2, 100, 16777215); super.drawScreen(var1, var2, var3); } diff --git a/src/main/java/net/minecraft/src/MouseFilter.java b/src/main/java/net/minecraft/src/MouseFilter.java new file mode 100644 index 0000000..b5eb73b --- /dev/null +++ b/src/main/java/net/minecraft/src/MouseFilter.java @@ -0,0 +1,19 @@ +package net.minecraft.src; + +public class MouseFilter { + private float field_22388_a; + private float field_22387_b; + private float field_22389_c; + + public float func_22386_a(float var1, float var2) { + this.field_22388_a += var1; + var1 = (this.field_22388_a - this.field_22387_b) * var2; + this.field_22389_c += (var1 - this.field_22389_c) * 0.5F; + if(var1 > 0.0F && var1 > this.field_22389_c || var1 < 0.0F && var1 < this.field_22389_c) { + var1 = this.field_22389_c; + } + + this.field_22387_b += var1; + return var1; + } +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/src/RenderList.java b/src/main/java/net/minecraft/src/RenderList.java index db0bc2c..6293808 100644 --- a/src/main/java/net/minecraft/src/RenderList.java +++ b/src/main/java/net/minecraft/src/RenderList.java @@ -47,7 +47,8 @@ public class RenderList { if(this.field_1236_g.remaining() > 0) { GL11.glPushMatrix(); - GL11.glTranslatef((float)this.field_1242_a - this.field_1239_d, (float)this.field_1241_b - this.field_1238_e, (float)this.field_1240_c - this.field_1237_f); + //What the fuck notch??? + GL11.glTranslatef(this.field_1242_a - this.field_1239_d, this.field_1241_b - this.field_1238_e, this.field_1240_c - this.field_1237_f); GL11.glCallLists(this.field_1236_g); GL11.glPopMatrix(); } diff --git a/src/main/java/net/minecraft/src/WorldProvider.java b/src/main/java/net/minecraft/src/WorldProvider.java index c62bf7e..7ddbdf9 100644 --- a/src/main/java/net/minecraft/src/WorldProvider.java +++ b/src/main/java/net/minecraft/src/WorldProvider.java @@ -17,7 +17,7 @@ public class WorldProvider { } protected void generateLightBrightnessTable() { - float var1 = 0.05F; + float var1 = 0.2F; for(int var2 = 0; var2 <= 15; ++var2) { float var3 = 1.0F - (float)var2 / 15.0F; @@ -63,8 +63,9 @@ public class WorldProvider { public float[] func_4097_b(float var1, float var2) { float var3 = 0.4F; float var4 = MathHelper.cos(var1 * (float)Math.PI * 2.0F) - 0.0F; - if(var4 >= -var3 && var4 <= var3) { - float var6 = (var4) / var3 * 0.5F + 0.5F; + float var5 = 0F; + if(var4 >= var5 - var3 && var4 <= var5 + var3) { + float var6 = (var4 - var5) / var3 * 0.5F + 0.5F; float var7 = 1.0F - (1.0F - MathHelper.sin(var6 * (float)Math.PI)) * 0.99F; var7 *= var7; this.field_4217_f[0] = var6 * 0.3F + 0.7F; diff --git a/src/main/java/net/minecraft/src/WorldRenderer.java b/src/main/java/net/minecraft/src/WorldRenderer.java index e24133d..b8a2539 100644 --- a/src/main/java/net/minecraft/src/WorldRenderer.java +++ b/src/main/java/net/minecraft/src/WorldRenderer.java @@ -68,9 +68,9 @@ public class WorldRenderer { this.field_1753_k = var3 - this.field_1750_n; float var4 = 2.0F; this.field_1736_v = AxisAlignedBB.getBoundingBox((double)((float)var1 - var4), (double)((float)var2 - var4), (double)((float)var3 - var4), (double)((float)(var1 + this.field_1758_f) + var4), (double)((float)(var2 + this.field_1757_g) + var4), (double)((float)(var3 + this.field_1756_h) + var4)); - GL11.glNewList(this.field_1744_C + 2, GL11.GL_COMPILE); + //GL11.glNewList(this.field_1744_C + 2, GL11.GL_COMPILE); //RenderItem.renderAABB(AxisAlignedBB.getBoundingBoxFromPool((double)((float)this.field_1752_l - var4), (double)((float)this.field_1751_m - var4), (double)((float)this.field_1750_n - var4), (double)((float)(this.field_1752_l + this.field_1758_f) + var4), (double)((float)(this.field_1751_m + this.field_1757_g) + var4), (double)((float)(this.field_1750_n + this.field_1756_h) + var4))); - GL11.glEndList(); + //GL11.glEndList(); this.MarkDirty(); } } @@ -204,7 +204,8 @@ public class WorldRenderer { } public boolean func_1196_e() { - return !this.field_1739_E ? false : this.field_1748_p[0] && this.field_1748_p[1]; + return !this.field_1739_E ? false : (this.field_1748_p[0] && this.field_1748_p[1] + && !this.needsUpdate); // What the fuck!? } public void MarkDirty() {