Update #50 - Bug fixes and shader improvements

This commit is contained in:
lax1dude
2025-02-22 16:52:35 -08:00
parent b0a2739fe1
commit 7e772e2502
133 changed files with 3064 additions and 2299 deletions

View File

@ -1204,14 +1204,11 @@
~
~ this.renderGlobal.setDisplayListEntitiesDirty();
> INSERT 2 : 20 @ 2
> INSERT 2 : 17 @ 2
+ public void launchIntegratedServer(String folderName, String worldName, WorldSettings worldSettingsIn) {
+ this.loadWorld((WorldClient) null);
+ renderManager.setEnableFNAWSkins(this.gameSettings.enableFNAWSkins);
+ session.reset();
+ EaglerProfile.clearServerSkinOverride();
+ PauseMenuCustomizeState.reset();
+ SingleplayerServerController.launchEaglercraftServer(folderName, gameSettings.difficulty.getDifficultyId(),
+ Math.max(gameSettings.renderDistanceChunks, 2), worldSettingsIn);
+ EagRuntime.setMCServerWindowGlobal("singleplayer");
@ -1225,12 +1222,13 @@
+ }
+
> INSERT 10 : 15 @ 10
> INSERT 10 : 16 @ 10
+ session.reset();
+ EaglerProfile.clearServerSkinOverride();
+ PauseMenuCustomizeState.reset();
+ ClientUUIDLoadingCache.flushRequestCache();
+ ClientUUIDLoadingCache.resetFlags();
+ WebViewOverlayController.setPacketSendCallback(null);
> DELETE 1 @ 1 : 7

View File

@ -5,7 +5,10 @@
# Version: 1.0
# Author: lax1dude
> DELETE 2 @ 2 : 3
> CHANGE 2 : 4 @ 2 : 3
~ import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*;
~
> CHANGE 3 : 4 @ 3 : 4
@ -15,7 +18,7 @@
+ import java.util.Arrays;
> CHANGE 2 : 29 @ 2 : 4
> CHANGE 2 : 30 @ 2 : 4
~
~ import net.lax1dude.eaglercraft.v1_8.EagRuntime;
@ -32,6 +35,7 @@
~ import net.lax1dude.eaglercraft.v1_8.internal.EnumCursorType;
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
~ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
~ import net.lax1dude.eaglercraft.v1_8.minecraft.MainMenuSkyboxTexture;
~ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
@ -49,9 +53,9 @@
~ import net.minecraft.client.audio.PositionedSoundRecord;
> DELETE 1 @ 1 : 2
> DELETE 1 @ 1 : 3
> DELETE 3 @ 3 : 5
> DELETE 2 @ 2 : 4
> DELETE 2 @ 2 : 3
@ -70,9 +74,10 @@
+ private static final byte[] sha1def = new byte[] { -107, 77, 108, 49, 11, -100, -8, -119, -1, -100, -85, -55, 18,
+ -69, -107, 113, -93, -101, -79, 32 };
> CHANGE 3 : 4 @ 3 : 4
> CHANGE 3 : 5 @ 3 : 4
~ private static DynamicTexture viewportTexture = null;
~ private static MainMenuSkyboxTexture viewportTexture = null;
~ private static MainMenuSkyboxTexture viewportTexture2 = null;
> DELETE 1 @ 1 : 2
@ -86,9 +91,10 @@
> DELETE 7 @ 7 : 9
> CHANGE 6 : 11 @ 6 : 8
> CHANGE 6 : 12 @ 6 : 8
~ private static ResourceLocation backgroundTexture = null;
~ private static ResourceLocation backgroundTexture2 = null;
~ private GuiUpdateCheckerOverlay updateCheckerOverlay;
~ private GuiButton downloadOfflineButton;
~ private boolean enableBlur = true;
@ -182,11 +188,13 @@
~ protected void keyTyped(char parChar1, int parInt1) {
> CHANGE 3 : 8 @ 3 : 6
> CHANGE 3 : 10 @ 3 : 6
~ if (viewportTexture == null) {
~ viewportTexture = new DynamicTexture(256, 256);
~ viewportTexture = new MainMenuSkyboxTexture(256, 256);
~ backgroundTexture = this.mc.getTextureManager().getDynamicTextureLocation("background", viewportTexture);
~ viewportTexture2 = new MainMenuSkyboxTexture(256, 256);
~ backgroundTexture2 = this.mc.getTextureManager().getDynamicTextureLocation("background", viewportTexture2);
~ }
~ this.updateCheckerOverlay.setResolution(mc, width, height);
@ -318,18 +326,68 @@
> CHANGE 5 : 6 @ 5 : 6
~ byte b0 = enableBlur ? (byte) 8 : (byte) 1;
~ byte b0 = enableBlur ? (byte) 4 : (byte) 1;
> CHANGE 61 : 65 @ 61 : 65
> CHANGE 61 : 64 @ 61 : 65
~ this.mc.getTextureManager().bindTexture(backgroundTexture);
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
~ EaglercraftGPU.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 256, 256);
~ // EaglercraftGPU.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 256, 256);
> DELETE 30 @ 30 : 31
> CHANGE 30 : 31 @ 30 : 31
> DELETE 9 @ 9 : 10
~ viewportTexture.bindFramebuffer();
> INSERT 1 : 3 @ 1
+ GlStateManager.clearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ GlStateManager.clear(16384);
> INSERT 1 : 5 @ 1
+ viewportTexture2.bindFramebuffer();
+ GlStateManager.clearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ GlStateManager.clear(16384);
+ this.mc.getTextureManager().bindTexture(backgroundTexture);
> INSERT 1 : 3 @ 1
+ viewportTexture.bindFramebuffer();
+ this.mc.getTextureManager().bindTexture(backgroundTexture2);
> INSERT 1 : 3 @ 1
+ viewportTexture2.bindFramebuffer();
+ this.mc.getTextureManager().bindTexture(backgroundTexture);
> INSERT 1 : 3 @ 1
+ viewportTexture.bindFramebuffer();
+ this.mc.getTextureManager().bindTexture(backgroundTexture2);
> INSERT 1 : 3 @ 1
+ viewportTexture2.bindFramebuffer();
+ this.mc.getTextureManager().bindTexture(backgroundTexture);
> INSERT 1 : 3 @ 1
+ viewportTexture.bindFramebuffer();
+ this.mc.getTextureManager().bindTexture(backgroundTexture2);
> CHANGE 1 : 12 @ 1 : 3
~
~ // Notch fucked up, the last iteration is not necessary, in the vanilla renderer
~ // it is unintentionally discarded and the previous iteration is used
~
~ // viewportTexture2.bindFramebuffer();
~ // this.mc.getTextureManager().bindTexture(backgroundTexture);
~ // this.rotateAndBlurSkybox(parFloat1);
~
~ _wglBindFramebuffer(0x8D40, null);
~
~ this.mc.getTextureManager().bindTexture(backgroundTexture);
> CHANGE 22 : 27 @ 22 : 23

View File

@ -283,8 +283,4 @@
+ }
+
> CHANGE 5 : 6 @ 5 : 6
~ return parInt1 < this.savedServerList.countServers();
> EOF

View File

@ -5,23 +5,20 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 6 @ 2 : 5
> CHANGE 2 : 3 @ 2 : 5
~ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> INSERT 154 : 155 @ 154
+ boolean flag = DeferredStateManager.isEnableShadowRender();
+ // boolean flag = DeferredStateManager.isEnableShadowRender();
> CHANGE 18 : 19 @ 18 : 19
> INSERT 18 : 19 @ 18
~ GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
+ // GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> CHANGE 4 : 5 @ 4 : 5
> INSERT 5 : 6 @ 5
~ GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
+ // GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF

View File

@ -155,7 +155,7 @@
~ new ChatComponentText("Could not open WebSocket to \"" + currentAddress + "\"!")));
~ }
> CHANGE 1 : 79 @ 1 : 2
> CHANGE 1 : 81 @ 1 : 2
~ if (webSocket.getState() == EnumEaglerConnectionState.CONNECTED) {
~ if (!hasOpened) {
@ -172,6 +172,8 @@
~ if (ConnectionHandshake.attemptHandshake(this.mc, webSocket, this, previousGuiScreen,
~ currentPassword, allowPlaintext, allowCookies, cookieData)) {
~ logger.info("Handshake Success");
~ webSocket.setEnableStringFrames(false);
~ webSocket.clearStringFrames();
~ this.networkManager = new WebSocketNetworkManager(webSocket);
~ this.networkManager.setPluginInfo(ConnectionHandshake.pluginBrand,
~ ConnectionHandshake.pluginVersion);

View File

@ -690,7 +690,7 @@
> CHANGE 17 : 18 @ 17 : 21
~ EaglercraftGPU.glFogi('\u855a', '\u855b');
~ // EaglercraftGPU.glFogi('\u855a', '\u855b');
> INSERT 14 : 17 @ 14
@ -702,11 +702,9 @@
+ GlStateManager.setFogDensity(0.001F);
> CHANGE 10 : 11 @ 10 : 13
> DELETE 10 @ 10 : 14
~ EaglercraftGPU.glFogi('\u855a', '\u855b');
> DELETE 9 @ 9 : 10
> DELETE 8 @ 8 : 9
> INSERT 12 : 953 @ 12

View File

@ -65,7 +65,14 @@
~ import net.optifine.CustomSky;
> DELETE 20 @ 20 : 24
> INSERT 17 : 21 @ 17
+ private int glSunList = -1;
+ private int moonPhase = -1;
+ private int glMoonList = -1;
+ private int glHorizonList = -1;
> DELETE 3 @ 3 : 7
> CHANGE 3 : 4 @ 3 : 6
@ -86,26 +93,128 @@
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
> CHANGE 2 : 6 @ 2 : 14
> CHANGE 2 : 8 @ 2 : 14
~ this.vboEnabled = false;
~ this.renderContainer = new RenderList();
~ this.renderChunkFactory = new ListChunkFactory();
~ this.cloudRenderer = new EaglerCloudRenderer(mcIn);
~ this.generateSun();
~ this.generateHorizon();
> DELETE 19 @ 19 : 23
> DELETE 1 @ 1 : 22
> CHANGE 1 : 2 @ 1 : 2
> DELETE 3 @ 3 : 9
~ }
> CHANGE 4 : 5 @ 4 : 6
> CHANGE 1 : 2 @ 1 : 19
~ public void renderEntityOutlineFramebuffer() {
> CHANGE 3 : 14 @ 3 : 9
~ protected boolean isRenderEntityOutlines() {
~ return false;
~ }
~
~ private void generateSun() {
~ Tessellator tessellator = Tessellator.getInstance();
~ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
~
~ if (this.glSunList >= 0) {
~ GLAllocation.deleteDisplayLists(this.glSunList);
~ this.glSunList = -1;
> DELETE 5 @ 5 : 8
> INSERT 2 : 12 @ 2
> CHANGE 6 : 11 @ 6 : 19
+ this.glSunList = GLAllocation.generateDisplayLists();
+ EaglercraftGPU.glNewList(this.glSunList, GL_COMPILE);
+ float f17 = 30.0F;
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX);
+ worldrenderer.pos((double) (-f17), 100.0D, (double) (-f17)).tex(0.0D, 0.0D).endVertex();
+ worldrenderer.pos((double) f17, 100.0D, (double) (-f17)).tex(1.0D, 0.0D).endVertex();
+ worldrenderer.pos((double) f17, 100.0D, (double) f17).tex(1.0D, 1.0D).endVertex();
+ worldrenderer.pos((double) (-f17), 100.0D, (double) f17).tex(0.0D, 1.0D).endVertex();
+ tessellator.draw();
+ EaglercraftGPU.glEndList();
> CHANGE 2 : 29 @ 2 : 5
~ private int getMoonList(int phase) {
~ if (phase != moonPhase) {
~ Tessellator tessellator = Tessellator.getInstance();
~ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
~
~ if (glMoonList == -1) {
~ glMoonList = GLAllocation.generateDisplayLists();
~ }
~
~ EaglercraftGPU.glNewList(this.glMoonList, GL_COMPILE);
~ float f17 = 20.0F;
~ int j = phase % 4;
~ int l = phase / 4 % 2;
~ float f22 = (float) (j + 0) / 4.0F;
~ float f23 = (float) (l + 0) / 2.0F;
~ float f24 = (float) (j + 1) / 4.0F;
~ float f14 = (float) (l + 1) / 2.0F;
~ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX);
~ worldrenderer.pos((double) (-f17), -100.0D, (double) f17).tex((double) f24, (double) f14).endVertex();
~ worldrenderer.pos((double) f17, -100.0D, (double) f17).tex((double) f22, (double) f14).endVertex();
~ worldrenderer.pos((double) f17, -100.0D, (double) (-f17)).tex((double) f22, (double) f23).endVertex();
~ worldrenderer.pos((double) (-f17), -100.0D, (double) (-f17)).tex((double) f24, (double) f23).endVertex();
~ tessellator.draw();
~ EaglercraftGPU.glEndList();
~ moonPhase = phase;
~ }
~ return glMoonList;
> CHANGE 2 : 3 @ 2 : 3
~ private void generateHorizon() {
> CHANGE 2 : 6 @ 2 : 4
~
~ if (this.glHorizonList >= 0) {
~ GLAllocation.deleteDisplayLists(this.glHorizonList);
~ this.glHorizonList = -1;
> INSERT 2 : 33 @ 2
+ this.glHorizonList = GLAllocation.generateDisplayLists();
+ EaglercraftGPU.glNewList(this.glHorizonList, GL_COMPILE);
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
+ worldrenderer.pos(-1.0D, 0.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, 0.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, -1.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, -1.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, -1.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, -1.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, 0.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, 0.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, -1.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, -1.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, 0.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, 0.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, 0.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, 0.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, -1.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, -1.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, -1.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(-1.0D, -1.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, -1.0D, 1.0D).color(0, 0, 0, 255).endVertex();
+ worldrenderer.pos(1.0D, -1.0D, -1.0D).color(0, 0, 0, 255).endVertex();
+ tessellator.draw();
+ EaglercraftGPU.glEndList();
+ }
+
+ private void generateSky2() {
+ Tessellator tessellator = Tessellator.getInstance();
+ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
+
> CHANGE 5 : 10 @ 5 : 18
~ this.glSkyList2 = GLAllocation.generateDisplayLists();
~ EaglercraftGPU.glNewList(this.glSkyList2, GL_COMPILE);
@ -164,7 +273,7 @@
+ this.renderDistanceChunks = this.mc.gameSettings.renderDistanceChunks;
+
> INSERT 19 : 85 @ 19
> INSERT 19 : 88 @ 19
+
+ if (mc.gameSettings.shaders) {
@ -173,6 +282,7 @@
+ if (theWorld.provider.getHasNoSky()) {
+ dfc.is_rendering_shadowsSun_clamped = 0;
+ dfc.is_rendering_lightShafts = false;
+ dfc.is_rendering_subsurfaceScattering = false;
+ } else {
+ int maxDist = renderDistanceChunks << 4;
+ int ss = dfc.is_rendering_shadowsSun;
@ -180,7 +290,9 @@
+ --ss;
+ }
+ dfc.is_rendering_shadowsSun_clamped = ss;
+ dfc.is_rendering_lightShafts = dfc.lightShafts;
+ dfc.is_rendering_lightShafts = ss > 0 && dfc.lightShafts && dfc.shaderPackInfo.LIGHT_SHAFTS;
+ dfc.is_rendering_subsurfaceScattering = ss > 0 && dfc.subsurfaceScattering
+ && dfc.shaderPackInfo.SUBSURFACE_SCATTERING;
+ }
+ boolean flag = false;
+ if (EaglerDeferredPipeline.instance == null) {
@ -654,7 +766,17 @@
+ CustomSky.renderSky(this.theWorld, this.renderEngine, partialTicks);
> CHANGE 26 : 28 @ 26 : 27
> DELETE 1 @ 1 : 2
> CHANGE 1 : 2 @ 1 : 8
~ GlStateManager.callList(glSunList);
> CHANGE 1 : 2 @ 1 : 14
~ GlStateManager.callList(getMoonList(this.theWorld.getMoonPhase()));
> CHANGE 2 : 4 @ 2 : 3
~ boolean b = !CustomSky.hasSkyLayers(this.theWorld);
~ if (f15 > 0.0F && b) {
@ -671,7 +793,18 @@
~ GlStateManager.callList(this.glSkyList2);
> CHANGE 35 : 42 @ 35 : 39
> DELETE 2 @ 2 : 3
> CHANGE 1 : 7 @ 1 : 24
~
~ GlStateManager.pushMatrix();
~ GlStateManager.translate(0.0F, f19, 0.0F);
~ GlStateManager.scale(1.0f, 1.0f - f19, 1.0f);
~ GlStateManager.callList(this.glHorizonList);
~ GlStateManager.popMatrix();
> CHANGE 8 : 15 @ 8 : 12
~ if (b) {
~ GlStateManager.pushMatrix();

View File

@ -27,4 +27,12 @@
~ WorldVertexBufferUploader.func_181679_a(this.worldRenderer);
> INSERT 2 : 7 @ 2
+ public void uploadDisplayList(int displayList) {
+ this.worldRenderer.finishDrawing();
+ WorldVertexBufferUploader.uploadDisplayList(displayList, this.worldRenderer);
+ }
+
> EOF

View File

@ -163,14 +163,14 @@
> INSERT 15 : 16 @ 15
+ boolean flag = DeferredStateManager.isEnableShadowRender();
+ // boolean flag = DeferredStateManager.isEnableShadowRender();
> CHANGE 1 : 2 @ 1 : 2
> INSERT 1 : 2 @ 1
~ GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
+ // GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> CHANGE 3 : 4 @ 3 : 4
> INSERT 4 : 5 @ 4
~ GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
+ // GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF

View File

@ -5,24 +5,21 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 6 @ 2
> INSERT 2 : 3 @ 2
+ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 3 @ 3 : 4
> DELETE 1 @ 1 : 2
> CHANGE 17 : 19 @ 17 : 18
> INSERT 17 : 19 @ 17
~ boolean flag = DeferredStateManager.isEnableShadowRender();
~ GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
+ // boolean flag = DeferredStateManager.isEnableShadowRender();
+ // GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> CHANGE 23 : 24 @ 23 : 24
> INSERT 24 : 25 @ 24
~ GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
+ // GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF

View File

@ -94,7 +94,7 @@
> INSERT 1 : 3 @ 1
+ public ResourceLocation getDynamicTextureLocation(String name, DynamicTexture texture) {
+ public ResourceLocation getDynamicTextureLocation(String name, ITextureObject texture) {
+ int integer = this.mapTextureCounters.getOrDefault(name, 0) + 1;
> CHANGE 2 : 3 @ 2 : 3

View File

@ -824,7 +824,7 @@
> CHANGE 22 : 23 @ 22 : 23
~ Math.max(this.renderDistanceChunks, 2), this.chatVisibility, this.chatColours, i));
~ Math.max(this.renderDistanceChunks, 3), this.chatVisibility, this.chatColours, i));
> INSERT 36 : 60 @ 36

View File

@ -26,7 +26,11 @@
> DELETE 6 @ 6 : 9
> CHANGE 74 : 75 @ 74 : 75
> CHANGE 31 : 32 @ 31 : 32
~ private static int nextEntityID = 1;
> CHANGE 42 : 43 @ 42 : 43
~ protected EaglercraftRandom rand;
@ -185,7 +189,15 @@
> DELETE 2 @ 2 : 3
> CHANGE 63 : 64 @ 63 : 64
> CHANGE 40 : 41 @ 40 : 41
~ category.addCrashSection("Entity\'s Exact location", HString.format("%.2f, %.2f, %.2f",
> CHANGE 4 : 5 @ 4 : 5
~ category.addCrashSection("Entity\'s Momentum", HString.format("%.2f, %.2f, %.2f", new Object[] {
> CHANGE 17 : 18 @ 17 : 18
~ public EaglercraftUUID getUniqueID() {

View File

@ -60,7 +60,11 @@
+ return true;
+ }
> CHANGE 757 : 759 @ 757 : 759
> CHANGE 502 : 503 @ 502 : 503
~ .get(EntityList.getEntityID(entitylivingbase));
> CHANGE 254 : 256 @ 254 : 256
~ public static EaglercraftUUID getUUID(GameProfile profile) {
~ EaglercraftUUID uuid = profile.getId();

View File

@ -97,7 +97,11 @@
~ this.getServerForPlayer().getEntityTracker().func_85172_a(this, c);
~ this.loadedChunks.removeAll(c.getChunkCoordLong());
> CHANGE 518 : 521 @ 518 : 519
> CHANGE 140 : 141 @ 140 : 141
~ .get(EntityList.getEntityID(entitylivingbase));
> CHANGE 377 : 380 @ 377 : 378
~ for (IntCursor cur : ((EntityPlayerMP) oldPlayer).destroyedItemsNetCache) {
~ destroyedItemsNetCache.addLast(cur.value);

View File

@ -5,17 +5,28 @@
# Version: 1.0
# Author: lax1dude
> INSERT 3 : 6 @ 3
> INSERT 3 : 8 @ 3
+
+ import com.carrotsearch.hppc.IntObjectHashMap;
+ import com.carrotsearch.hppc.SortedIterationIntObjectHashMap;
+ import com.carrotsearch.hppc.cursors.ObjectCursor;
+
> DELETE 11 @ 11 : 13
> CHANGE 147 : 149 @ 147 : 149
> CHANGE 29 : 30 @ 29 : 30
~ for (ObjectCursor<EntityList.EntityEggInfo> entitylist$entityegginfo : EntityList.entityEggs.values()) {
~ .get(itemstack.getMetadata());
> CHANGE 92 : 93 @ 92 : 93
~ if (!EntityList.entityEggs.containsKey(entityID)) {
> CHANGE 24 : 27 @ 24 : 26
~ for (ObjectCursor<EntityList.EntityEggInfo> entitylist$entityegginfo : new SortedIterationIntObjectHashMap<>(
~ (IntObjectHashMap<EntityList.EntityEggInfo>) EntityList.entityEggs, (a, b) -> a - b).values()) {
~ list.add(new ItemStack(item, 1, entitylist$entityegginfo.value.spawnedID));
> EOF

View File

@ -7,17 +7,16 @@
> DELETE 2 @ 2 : 5
> DELETE 1 @ 1 : 2
> INSERT 1 : 2 @ 1
> INSERT 3 : 13 @ 3
+ import java.util.HashMap;
> INSERT 4 : 11 @ 4
+ import java.util.Set;
+
+ import com.carrotsearch.hppc.IntObjectHashMap;
+ import com.carrotsearch.hppc.IntObjectMap;
+ import com.carrotsearch.hppc.ObjectIntHashMap;
+ import com.carrotsearch.hppc.ObjectIntMap;
+ import com.carrotsearch.hppc.cursors.IntCursor;
+ import com.google.common.collect.HashMultimap;
+ import com.google.common.collect.Lists;
+
@ -27,7 +26,7 @@
> CHANGE 11 : 13 @ 11 : 13
~ private IntObjectMap<List<PotionEffect>> effectCache = new IntObjectHashMap<>();
~ private static final ObjectIntMap<List<PotionEffect>> SUB_ITEMS_CACHE = new ObjectIntHashMap<>();
~ private static final Map<List<PotionEffect>, Integer> SUB_ITEMS_CACHE = new HashMap<>();
> CHANGE 23 : 24 @ 23 : 24
@ -80,13 +79,4 @@
~ for (Entry entry1 : (Set<Entry<Object, Object>>) hashmultimap.entries()) {
> CHANGE 56 : 57 @ 56 : 57
~ SUB_ITEMS_CACHE.put(list, i1);
> CHANGE 6 : 8 @ 6 : 11
~ for (IntCursor cur : SUB_ITEMS_CACHE.values()) {
~ subItems.add(new ItemStack(itemIn, 1, cur.value));
> EOF