Update #40 - FPS boost and fixed IndexOutOfBoundsException

This commit is contained in:
lax1dude
2024-10-19 16:52:27 -07:00
parent 85f4db5ac6
commit bcd575e87e
79 changed files with 1054 additions and 448 deletions

View File

@ -70,4 +70,6 @@
> DELETE 1 @ 1 : 2
> DELETE 1 @ 1 : 8
> EOF

View File

@ -18,7 +18,7 @@
> DELETE 1 @ 1 : 4
> CHANGE 1 : 74 @ 1 : 4
> CHANGE 1 : 73 @ 1 : 4
~
~ import net.lax1dude.eaglercraft.v1_8.ClientUUIDLoadingCache;
@ -34,7 +34,6 @@
~ import net.lax1dude.eaglercraft.v1_8.PointerInputAbstraction;
~ import net.lax1dude.eaglercraft.v1_8.Touch;
~ import net.lax1dude.eaglercraft.v1_8.cookie.ServerCookieDataStore;
~ import net.lax1dude.eaglercraft.v1_8.internal.PlatformInput;
~
~ import org.apache.commons.lang3.Validate;
~
@ -158,7 +157,11 @@
~ public static final boolean isRunningOnMac = false;
> INSERT 10 : 11 @ 10
> CHANGE 5 : 6 @ 5 : 6
~ private boolean enableGLErrorChecking = false;
> INSERT 4 : 5 @ 4
+ public float displayDPI;
@ -174,7 +177,11 @@
> DELETE 1 @ 1 : 3
> CHANGE 10 : 11 @ 10 : 12
> CHANGE 8 : 9 @ 8 : 9
~ long field_181543_z = EagRuntime.nanoTime();
> CHANGE 1 : 2 @ 1 : 3
~ private EaglercraftNetworkManager myNetworkManager;
@ -225,8 +232,9 @@
+ this.displayDPI = 1.0f;
> CHANGE 4 : 9 @ 4 : 8
> CHANGE 4 : 10 @ 4 : 8
~ this.enableGLErrorChecking = EagRuntime.getConfiguration().isCheckGLErrors();
~ String serverToJoin = EagRuntime.getConfiguration().getServerToJoin();
~ if (serverToJoin != null) {
~ ServerAddress addr = AddressResolver.resolveAddressFromURI(serverToJoin);
@ -500,14 +508,14 @@
+ if (SingleplayerServerController.isWorldRunning()) {
+ SingleplayerServerController.shutdownEaglercraftServer();
+ while (SingleplayerServerController.getStatusState() == IntegratedServerState.WORLD_UNLOADING) {
+ EagUtils.sleep(50l);
+ EagUtils.sleep(50);
+ SingleplayerServerController.runTick();
+ }
+ }
+ if (SingleplayerServerController.isIntegratedServerWorkerAlive()
+ && SingleplayerServerController.canKillWorker()) {
+ SingleplayerServerController.killWorker();
+ EagUtils.sleep(50l);
+ EagUtils.sleep(50);
+ }
> CHANGE 1 : 2 @ 1 : 2
@ -520,8 +528,9 @@
> DELETE 3 @ 3 : 5
> CHANGE 4 : 5 @ 4 : 6
> CHANGE 3 : 5 @ 3 : 6
~ long i = EagRuntime.nanoTime();
~ if (Display.isCloseRequested()) {
> INSERT 3 : 6 @ 3
@ -536,31 +545,22 @@
~ Util.func_181617_a((FutureTask) this.scheduledTasks.remove(0), logger);
> DELETE 3 @ 3 : 4
> CHANGE 3 : 4 @ 3 : 6
~ long l = EagRuntime.nanoTime();
> INSERT 3 : 6 @ 3
+ if (j < this.timer.elapsedTicks - 1) {
+ PointerInputAbstraction.runGameLoop();
+ }
> CHANGE 2 : 3 @ 2 : 4
~ long i1 = EagRuntime.nanoTime() - l;
> DELETE 1 @ 1 : 2
> CHANGE 1 : 15 @ 1 : 2
~ if (this.timer.elapsedTicks > 1) {
~ long watchdog = EagRuntime.steadyTimeMillis();
~ for (int j = 0; j < this.timer.elapsedTicks; ++j) {
~ this.runTick();
~ if (j < this.timer.elapsedTicks - 1) {
~ PointerInputAbstraction.runGameLoop();
~ }
~ long millis = EagRuntime.steadyTimeMillis();
~ if (millis - watchdog > 50l) {
~ watchdog = millis;
~ EagRuntime.immediateContinue();
~ }
~ }
~ } else if (this.timer.elapsedTicks == 1) {
> DELETE 3 @ 3 : 4
> DELETE 2 @ 2 : 3
> DELETE 1 @ 1 : 11
> CHANGE 1 : 12 @ 1 : 7
@ -596,9 +596,11 @@
+
> DELETE 1 @ 1 : 3
> CHANGE 1 : 2 @ 1 : 4
> CHANGE 6 : 7 @ 6 : 7
~ long k = EagRuntime.nanoTime();
> CHANGE 5 : 6 @ 5 : 6
~ this.debug = HString.format("%d fps (%d chunk update%s) T: %s%s%s%s",
@ -609,23 +611,28 @@
> DELETE 3 @ 3 : 7
> DELETE 3 @ 3 : 4
> CHANGE 2 : 5 @ 2 : 7
> DELETE 1 @ 1 : 2
~ // if (this.isFramerateLimitBelowMax()) {
~ // Display.sync(this.getLimitFramerate());
~ // }
> CHANGE 2 : 3 @ 2 : 3
> CHANGE 1 : 2 @ 1 : 2
~ Mouse.tickCursorShape();
> CHANGE 3 : 8 @ 3 : 4
> CHANGE 3 : 13 @ 3 : 6
~ if (Display.isVSyncSupported()) {
~ Display.setVSync(this.gameSettings.enableVsync);
~ } else {
~ this.gameSettings.enableVsync = false;
~ }
> DELETE 1 @ 1 : 2
~ if (!this.gameSettings.enableVsync && this.isFramerateLimitBelowMax()) {
~ Display.update(this.getLimitFramerate());
~ } else {
~ Display.update(0);
~ }
> CHANGE 4 : 7 @ 4 : 5
@ -904,7 +911,7 @@
> INSERT 3 : 6 @ 3
+ if (k == 0x1D && (areKeysLocked() || isFullScreen())) {
+ if (k == 0x1D && (Keyboard.areKeysLocked() || isFullScreen())) {
+ KeyBinding.setKeyBindState(gameSettings.keyBindSprint.getKeyCode(), Keyboard.getEventKeyState());
+ }
@ -1387,17 +1394,13 @@
> DELETE 26 @ 26 : 34
> INSERT 7 : 48 @ 7
> INSERT 7 : 44 @ 7
+
+ public static int getGLMaximumTextureSize() {
+ return EaglercraftGPU.glGetInteger(GL_MAX_TEXTURE_SIZE);
+ }
+
+ public boolean areKeysLocked() {
+ return PlatformInput.lockKeys;
+ }
+
+ public ModelManager getModelManager() {
+ return modelManager;
+ }

View File

@ -62,7 +62,7 @@
> CHANGE 2 : 4 @ 2 : 11
~ protected void keyTyped(char parChar1, int parInt1) {
~ if (parInt1 == 1 && (this.mc.gameSettings.keyBindClose.getKeyCode() == 0 || this.mc.areKeysLocked())) {
~ if (parInt1 == 1 && (this.mc.gameSettings.keyBindClose.getKeyCode() == 0 || Keyboard.areKeysLocked())) {
> CHANGE 1 : 5 @ 1 : 10

View File

@ -21,7 +21,7 @@
~ import net.lax1dude.eaglercraft.v1_8.sp.lan.LANServerController;
~ import net.lax1dude.eaglercraft.v1_8.update.GuiUpdateCheckerOverlay;
~ import net.lax1dude.eaglercraft.v1_8.voice.GuiVoiceMenu;
~ import net.lax1dude.eaglercraft.v1_8.webview.GuiScreenPhishingWaring;
~ import net.lax1dude.eaglercraft.v1_8.webview.GuiScreenPhishingWarning;
~ import net.lax1dude.eaglercraft.v1_8.webview.GuiScreenRecieveServerInfo;
~ import net.lax1dude.eaglercraft.v1_8.webview.GuiScreenServerInfo;
~ import net.minecraft.client.Minecraft;
@ -163,8 +163,8 @@
~ if (PauseMenuCustomizeState.serverInfoURL != null) {
~ GuiScreen screen = GuiScreenServerInfo.createForCurrentState(this,
~ PauseMenuCustomizeState.serverInfoURL);
~ if (!this.mc.gameSettings.hasHiddenPhishWarning && !GuiScreenPhishingWaring.hasShownMessage) {
~ screen = new GuiScreenPhishingWaring(screen);
~ if (!this.mc.gameSettings.hasHiddenPhishWarning && !GuiScreenPhishingWarning.hasShownMessage) {
~ screen = new GuiScreenPhishingWarning(screen);
~ }
~ this.mc.displayGuiScreen(screen);
~ }
@ -172,8 +172,8 @@
~ case PauseMenuCustomizeState.SERVER_INFO_MODE_SHOW_EMBED_OVER_WS:
~ if (PauseMenuCustomizeState.serverInfoHash != null) {
~ GuiScreen screen = new GuiScreenRecieveServerInfo(this, PauseMenuCustomizeState.serverInfoHash);
~ if (!this.mc.gameSettings.hasHiddenPhishWarning && !GuiScreenPhishingWaring.hasShownMessage) {
~ screen = new GuiScreenPhishingWaring(screen);
~ if (!this.mc.gameSettings.hasHiddenPhishWarning && !GuiScreenPhishingWarning.hasShownMessage) {
~ screen = new GuiScreenPhishingWarning(screen);
~ }
~ this.mc.displayGuiScreen(screen);
~ }

View File

@ -128,8 +128,8 @@
~ if (!canCloseGui())
~ return;
~ if (((this.mc.theWorld == null || this.mc.thePlayer.getHealth() <= 0.0F) && parInt1 == 1)
~ || parInt1 == this.mc.gameSettings.keyBindClose.getKeyCode()
~ || (parInt1 == 1 && (this.mc.gameSettings.keyBindClose.getKeyCode() == 0 || this.mc.areKeysLocked()))) {
~ || parInt1 == this.mc.gameSettings.keyBindClose.getKeyCode() || (parInt1 == 1
~ && (this.mc.gameSettings.keyBindClose.getKeyCode() == 0 || Keyboard.areKeysLocked()))) {
> INSERT 4 : 6 @ 4

View File

@ -74,8 +74,8 @@
~ protected void keyTyped(char parChar1, int parInt1) {
~ if (parInt1 == this.mc.gameSettings.keyBindClose.getKeyCode()
~ || parInt1 == this.mc.gameSettings.keyBindInventory.getKeyCode()
~ || (parInt1 == 1 && (this.mc.gameSettings.keyBindClose.getKeyCode() == 0 || this.mc.areKeysLocked()))) {
~ || parInt1 == this.mc.gameSettings.keyBindInventory.getKeyCode() || (parInt1 == 1
~ && (this.mc.gameSettings.keyBindClose.getKeyCode() == 0 || Keyboard.areKeysLocked()))) {
> CHANGE 1 : 3 @ 1 : 9

View File

@ -29,7 +29,7 @@
> CHANGE 13 : 16 @ 13 : 14
~ if (parInt1 == getCloseKey() || (parInt1 == 1 && this.mc.areKeysLocked())) {
~ if (parInt1 == getCloseKey() || (parInt1 == 1 && Keyboard.areKeysLocked())) {
~ mc.displayGuiScreen(null);
~ } else if (!this.checkHotbarKeys(parInt1)) {

View File

@ -13,7 +13,7 @@
> CHANGE 3 : 5 @ 3 : 100
~ public static void appMain(String[] astring) {
~ public static void appMain() {
~ System.setProperty("java.net.preferIPv6Addresses", "true");
> CHANGE 1 : 5 @ 1 : 12

View File

@ -244,15 +244,17 @@
> DELETE 2 @ 2 : 3
> DELETE 5 @ 5 : 18
> CHANGE 2 : 3 @ 2 : 3
> CHANGE 1 : 3 @ 1 : 3
~ long j = EagRuntime.nanoTime() - parLong1;
> CHANGE 1 : 18 @ 1 : 10
~ this.renderWorld(parFloat1, EagRuntime.nanoTime() + k);
~ this.renderEndNanoTime = EagRuntime.nanoTime();
~ final boolean b = !this.mc.gameSettings.hideGUI || this.mc.currentScreen != null;
~ if (b) {
> CHANGE 1 : 14 @ 1 : 2
~ GlStateManager.alphaFunc(516, 0.1F);
~ long framebufferAge = this.overlayFramebuffer.getAge();
~ if (framebufferAge == -1l || framebufferAge > (Minecraft.getDebugFPS() < 25 ? 125l : 75l)) {
~ this.overlayFramebuffer.beginRender(mc.displayWidth, mc.displayHeight);
@ -265,9 +267,10 @@
~ }
~ GlStateManager.disableOverlayFramebufferBlending();
~ this.overlayFramebuffer.endRender();
~ }
> CHANGE 1 : 32 @ 1 : 3
> DELETE 1 @ 1 : 3
> CHANGE 1 : 31 @ 1 : 7
~ if (b) {
~ this.setupOverlayRendering();
@ -299,9 +302,14 @@
~ this.mc.ingameGUI.drawEaglerPlayerOverlay(l - 3,
~ 3 + this.mc.ingameGUI.overlayDebug.playerOffset, parFloat1);
~ }
~ }
> INSERT 10 : 12 @ 10
> DELETE 1 @ 1 : 3
> CHANGE 7 : 8 @ 7 : 8
~ this.renderEndNanoTime = EagRuntime.nanoTime();
> INSERT 2 : 4 @ 2
+ this.mc.notifRenderer.renderOverlay(j1, k1);
+

View File

@ -10,19 +10,235 @@
+
+ import java.util.Collection;
> DELETE 1 @ 1 : 3
> CHANGE 1 : 3 @ 1 : 3
~ import java.util.function.Supplier;
~
> CHANGE 101 : 102 @ 101 : 106
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
> DELETE 111 @ 111 : 119
> CHANGE 4 : 5 @ 4 : 5
> CHANGE 28 : 29 @ 28 : 29
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C00Handshake.class, C00Handshake::new);
~ this.directionMaps.put(direction, (BiMap<Integer, Class<? extends Packet>>) object);
> CHANGE 4 : 158 @ 4 : 104
> CHANGE 36 : 39 @ 36 : 37
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S00PacketKeepAlive.class, S00PacketKeepAlive::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S01PacketJoinGame.class, S01PacketJoinGame::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S02PacketChat.class, S02PacketChat::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S03PacketTimeUpdate.class, S03PacketTimeUpdate::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S04PacketEntityEquipment.class,
~ S04PacketEntityEquipment::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S05PacketSpawnPosition.class,
~ S05PacketSpawnPosition::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S06PacketUpdateHealth.class,
~ S06PacketUpdateHealth::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S07PacketRespawn.class, S07PacketRespawn::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S08PacketPlayerPosLook.class,
~ S08PacketPlayerPosLook::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S09PacketHeldItemChange.class,
~ S09PacketHeldItemChange::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S0APacketUseBed.class, S0APacketUseBed::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S0BPacketAnimation.class, S0BPacketAnimation::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S0CPacketSpawnPlayer.class, S0CPacketSpawnPlayer::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S0DPacketCollectItem.class, S0DPacketCollectItem::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S0EPacketSpawnObject.class, S0EPacketSpawnObject::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S0FPacketSpawnMob.class, S0FPacketSpawnMob::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S10PacketSpawnPainting.class,
~ S10PacketSpawnPainting::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S11PacketSpawnExperienceOrb.class,
~ S11PacketSpawnExperienceOrb::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S12PacketEntityVelocity.class,
~ S12PacketEntityVelocity::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S13PacketDestroyEntities.class,
~ S13PacketDestroyEntities::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S14PacketEntity.class, S14PacketEntity::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S14PacketEntity.S15PacketEntityRelMove.class,
~ S14PacketEntity.S15PacketEntityRelMove::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S14PacketEntity.S16PacketEntityLook.class,
~ S14PacketEntity.S16PacketEntityLook::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S14PacketEntity.S17PacketEntityLookMove.class,
~ S14PacketEntity.S17PacketEntityLookMove::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S18PacketEntityTeleport.class,
~ S18PacketEntityTeleport::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S19PacketEntityHeadLook.class,
~ S19PacketEntityHeadLook::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S19PacketEntityStatus.class,
~ S19PacketEntityStatus::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S1BPacketEntityAttach.class,
~ S1BPacketEntityAttach::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S1CPacketEntityMetadata.class,
~ S1CPacketEntityMetadata::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S1DPacketEntityEffect.class,
~ S1DPacketEntityEffect::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S1EPacketRemoveEntityEffect.class,
~ S1EPacketRemoveEntityEffect::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S1FPacketSetExperience.class,
~ S1FPacketSetExperience::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S20PacketEntityProperties.class,
~ S20PacketEntityProperties::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S21PacketChunkData.class, S21PacketChunkData::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S22PacketMultiBlockChange.class,
~ S22PacketMultiBlockChange::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S23PacketBlockChange.class, S23PacketBlockChange::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S24PacketBlockAction.class, S24PacketBlockAction::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S25PacketBlockBreakAnim.class,
~ S25PacketBlockBreakAnim::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S26PacketMapChunkBulk.class,
~ S26PacketMapChunkBulk::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S27PacketExplosion.class, S27PacketExplosion::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S28PacketEffect.class, S28PacketEffect::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S29PacketSoundEffect.class, S29PacketSoundEffect::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S2APacketParticles.class, S2APacketParticles::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S2BPacketChangeGameState.class,
~ S2BPacketChangeGameState::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S2CPacketSpawnGlobalEntity.class,
~ S2CPacketSpawnGlobalEntity::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S2DPacketOpenWindow.class, S2DPacketOpenWindow::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S2EPacketCloseWindow.class, S2EPacketCloseWindow::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S2FPacketSetSlot.class, S2FPacketSetSlot::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S30PacketWindowItems.class, S30PacketWindowItems::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S31PacketWindowProperty.class,
~ S31PacketWindowProperty::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S32PacketConfirmTransaction.class,
~ S32PacketConfirmTransaction::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S33PacketUpdateSign.class, S33PacketUpdateSign::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S34PacketMaps.class, S34PacketMaps::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S35PacketUpdateTileEntity.class,
~ S35PacketUpdateTileEntity::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S36PacketSignEditorOpen.class,
~ S36PacketSignEditorOpen::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S37PacketStatistics.class, S37PacketStatistics::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S38PacketPlayerListItem.class,
~ S38PacketPlayerListItem::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S39PacketPlayerAbilities.class,
~ S39PacketPlayerAbilities::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S3APacketTabComplete.class, S3APacketTabComplete::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S3BPacketScoreboardObjective.class,
~ S3BPacketScoreboardObjective::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S3CPacketUpdateScore.class, S3CPacketUpdateScore::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S3DPacketDisplayScoreboard.class,
~ S3DPacketDisplayScoreboard::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S3EPacketTeams.class, S3EPacketTeams::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S3FPacketCustomPayload.class,
~ S3FPacketCustomPayload::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S40PacketDisconnect.class, S40PacketDisconnect::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S41PacketServerDifficulty.class,
~ S41PacketServerDifficulty::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S42PacketCombatEvent.class, S42PacketCombatEvent::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S43PacketCamera.class, S43PacketCamera::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S44PacketWorldBorder.class, S44PacketWorldBorder::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S45PacketTitle.class, S45PacketTitle::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S46PacketSetCompressionLevel.class,
~ S46PacketSetCompressionLevel::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S47PacketPlayerListHeaderFooter.class,
~ S47PacketPlayerListHeaderFooter::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S48PacketResourcePackSend.class,
~ S48PacketResourcePackSend::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S49PacketUpdateEntityNBT.class,
~ S49PacketUpdateEntityNBT::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C00PacketKeepAlive.class, C00PacketKeepAlive::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C01PacketChatMessage.class, C01PacketChatMessage::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C02PacketUseEntity.class, C02PacketUseEntity::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C03PacketPlayer.class, C03PacketPlayer::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C03PacketPlayer.C04PacketPlayerPosition.class,
~ C03PacketPlayer.C04PacketPlayerPosition::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C03PacketPlayer.C05PacketPlayerLook.class,
~ C03PacketPlayer.C05PacketPlayerLook::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C03PacketPlayer.C06PacketPlayerPosLook.class,
~ C03PacketPlayer.C06PacketPlayerPosLook::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C07PacketPlayerDigging.class,
~ C07PacketPlayerDigging::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C08PacketPlayerBlockPlacement.class,
~ C08PacketPlayerBlockPlacement::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C09PacketHeldItemChange.class,
~ C09PacketHeldItemChange::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C0APacketAnimation.class, C0APacketAnimation::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C0BPacketEntityAction.class,
~ C0BPacketEntityAction::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C0CPacketInput.class, C0CPacketInput::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C0DPacketCloseWindow.class, C0DPacketCloseWindow::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C0EPacketClickWindow.class, C0EPacketClickWindow::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C0FPacketConfirmTransaction.class,
~ C0FPacketConfirmTransaction::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C10PacketCreativeInventoryAction.class,
~ C10PacketCreativeInventoryAction::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C11PacketEnchantItem.class, C11PacketEnchantItem::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C12PacketUpdateSign.class, C12PacketUpdateSign::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C13PacketPlayerAbilities.class,
~ C13PacketPlayerAbilities::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C14PacketTabComplete.class, C14PacketTabComplete::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C15PacketClientSettings.class,
~ C15PacketClientSettings::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C16PacketClientStatus.class,
~ C16PacketClientStatus::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C17PacketCustomPayload.class,
~ C17PacketCustomPayload::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C18PacketSpectate.class, C18PacketSpectate::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C19PacketResourcePackStatus.class,
~ C19PacketResourcePackStatus::new);
> DELETE 2 @ 2 : 10
> CHANGE 2 : 12 @ 2 : 8
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S00PacketDisconnect.class, S00PacketDisconnect::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S01PacketEncryptionRequest.class,
~ S01PacketEncryptionRequest::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S02PacketLoginSuccess.class,
~ S02PacketLoginSuccess::new);
~ this.registerPacket(EnumPacketDirection.CLIENTBOUND, S03PacketEnableCompression.class,
~ S03PacketEnableCompression::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C00PacketLoginStart.class, C00PacketLoginStart::new);
~ this.registerPacket(EnumPacketDirection.SERVERBOUND, C01PacketEncryptionResponse.class,
~ C01PacketEncryptionResponse::new);
> INSERT 10 : 11 @ 10
+ private final Map<EnumPacketDirection, Map<Integer, Supplier<Packet<?>>>> directionCtors;
> INSERT 3 : 4 @ 3
+ this.directionCtors = Maps.newEnumMap(EnumPacketDirection.class);
> CHANGE 3 : 7 @ 3 : 5
~ protected EnumConnectionState registerPacket(EnumPacketDirection direction, Class<? extends Packet> packetClass,
~ Supplier<Packet<?>> packetCtor) {
~ BiMap<Integer, Class<? extends Packet>> object = this.directionMaps.get(direction);
~ Map<Integer, Supplier<Packet<?>>> object2;
> INSERT 2 : 3 @ 2
+ object2 = Maps.newHashMap();
> INSERT 1 : 4 @ 1
+ this.directionCtors.put(direction, object2);
+ } else {
+ object2 = this.directionCtors.get(direction);
> CHANGE 2 : 3 @ 2 : 3
~ if (object.containsValue(packetClass)) {
> CHANGE 1 : 2 @ 1 : 2
~ + object.inverse().get(packetClass);
> CHANGE 3 : 5 @ 3 : 4
~ object.put(Integer.valueOf(object.size()), packetClass);
~ object2.put(Integer.valueOf(object2.size()), packetCtor);
> CHANGE 10 : 12 @ 10 : 12
~ Supplier<Packet<?>> oclass = this.directionCtors.get(direction).get(Integer.valueOf(packetId));
~ return oclass == null ? null : oclass.get();
> CHANGE 15 : 18 @ 15 : 16
~ EnumConnectionState[] states = values();
~ for (int j = 0; j < states.length; ++j) {
@ -33,4 +249,6 @@
~ for (Class oclass : (Collection<Class>) ((BiMap) enumconnectionstate.directionMaps
~ .get(enumpacketdirection)).values()) {
> DELETE 5 @ 5 : 11
> EOF

View File

@ -20,10 +20,11 @@
> DELETE 2 @ 2 : 4
> CHANGE 1 : 7 @ 1 : 4
> CHANGE 1 : 8 @ 1 : 4
~
~ import net.lax1dude.eaglercraft.v1_8.EagRuntime;
~ import net.lax1dude.eaglercraft.v1_8.EagUtils;
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftUUID;
~ import net.lax1dude.eaglercraft.v1_8.futures.FutureTask;
@ -215,7 +216,11 @@
> DELETE 17 @ 17 : 21
> DELETE 45 @ 45 : 53
> CHANGE 29 : 30 @ 29 : 30
~ EagUtils.sleep(Math.max(1L, 50L - i));
> DELETE 15 @ 15 : 23
> DELETE 15 @ 15 : 40

View File

@ -5,6 +5,17 @@
# Version: 1.0
# Author: lax1dude
> DELETE 5 @ 5 : 8
> INSERT 2 : 4 @ 2
+ import java.util.function.Supplier;
+
> DELETE 3 @ 3 : 6
> CHANGE 76 : 79 @ 76 : 78
~ public Achievement func_150953_b(Class<? extends IJsonSerializable> parClass1,
~ Supplier<? extends IJsonSerializable> ctor) {
~ return (Achievement) super.func_150953_b(parClass1, ctor);
> EOF

View File

@ -53,7 +53,7 @@
~ public static Achievement exploreAllBiomes;
~ public static Achievement overpowered;
> INSERT 2 : 65 @ 2
> INSERT 2 : 66 @ 2
+ achievementList = Lists.newArrayList();
+ openInventory = (new Achievement("achievement.openInventory", "openInventory", 0, 0, Items.book,
@ -115,7 +115,8 @@
+ fullBeacon = (new Achievement("achievement.fullBeacon", "fullBeacon", 7, 8, Blocks.beacon, killWither))
+ .setSpecial().registerStat();
+ exploreAllBiomes = (new Achievement("achievement.exploreAllBiomes", "exploreAllBiomes", 4, 8,
+ Items.diamond_boots, theEnd)).func_150953_b(JsonSerializableSet.class).setSpecial().registerStat();
+ Items.diamond_boots, theEnd)).func_150953_b(JsonSerializableSet.class, JsonSerializableSet::new)
+ .setSpecial().registerStat();
+ overpowered = (new Achievement("achievement.overpowered", "overpowered", 6, 4,
+ new ItemStack(Items.golden_apple, 1, 1), buildBetterPickaxe)).setSpecial().registerStat();

View File

@ -5,10 +5,28 @@
# Version: 1.0
# Author: lax1dude
> INSERT 5 : 6 @ 5
> INSERT 5 : 7 @ 5
+ import java.util.function.Supplier;
+
> DELETE 2 @ 2 : 5
> INSERT 12 : 13 @ 12
+ private Supplier<? extends IJsonSerializable> field_150956_d_ctor;
> CHANGE 114 : 120 @ 114 : 115
~ public Supplier<? extends IJsonSerializable> func_150954_l_ctor() {
~ return this.field_150956_d_ctor;
~ }
~
~ public StatBase func_150953_b(Class<? extends IJsonSerializable> oclass,
~ Supplier<? extends IJsonSerializable> octor) {
> INSERT 1 : 2 @ 1
+ this.field_150956_d_ctor = octor;
> EOF

View File

@ -67,11 +67,12 @@
~ if (value != null && (value instanceof Integer)) {
~ tupleintjsonserializable.setIntegerValue(jsonobject1.getInt("value"));
> CHANGE 4 : 5 @ 4 : 5
> CHANGE 4 : 6 @ 4 : 7
~ Constructor constructor = statbase.func_150954_l().getConstructor();
~ IJsonSerializable ijsonserializable = (IJsonSerializable) statbase.func_150954_l_ctor()
~ .get();
> CHANGE 22 : 23 @ 22 : 23
> CHANGE 20 : 21 @ 20 : 21
~ JSONObject jsonobject = new JSONObject();

View File

@ -7,8 +7,9 @@
> DELETE 2 @ 2 : 3
> INSERT 2 : 8 @ 2
> INSERT 2 : 9 @ 2
+ import java.util.function.Supplier;
+
+ import com.google.common.collect.Maps;
+
@ -20,7 +21,27 @@
> DELETE 2 @ 2 : 4
> CHANGE 58 : 59 @ 58 : 59
> INSERT 4 : 5 @ 4
+ private static Map<String, Supplier<? extends TileEntity>> nameToCtorMap = Maps.newHashMap();
> CHANGE 7 : 8 @ 7 : 8
~ private static void addMapping(Class<? extends TileEntity> cl, Supplier<? extends TileEntity> ct, String id) {
> INSERT 4 : 5 @ 4
+ nameToCtorMap.put(id, ct);
> CHANGE 37 : 38 @ 37 : 38
~ Supplier<? extends TileEntity> oclass = nameToCtorMap.get(nbt.getString("id"));
> CHANGE 1 : 2 @ 1 : 2
~ tileentity = (TileEntity) oclass.get();
> CHANGE 2 : 3 @ 2 : 3
~ logger.error("Could not create TileEntity", exception);
@ -41,4 +62,28 @@
~ String s = HString.format("%4s", new Object[] { Integer.toBinaryString(i) }).replace(" ", "0");
~ return HString.format("%1$d / 0x%1$X / 0b%2$s", new Object[] { Integer.valueOf(i), s });
> CHANGE 15 : 36 @ 15 : 36
~ addMapping(TileEntityFurnace.class, TileEntityFurnace::new, "Furnace");
~ addMapping(TileEntityChest.class, TileEntityChest::new, "Chest");
~ addMapping(TileEntityEnderChest.class, TileEntityEnderChest::new, "EnderChest");
~ addMapping(BlockJukebox.TileEntityJukebox.class, BlockJukebox.TileEntityJukebox::new, "RecordPlayer");
~ addMapping(TileEntityDispenser.class, TileEntityDispenser::new, "Trap");
~ addMapping(TileEntityDropper.class, TileEntityDropper::new, "Dropper");
~ addMapping(TileEntitySign.class, TileEntitySign::new, "Sign");
~ addMapping(TileEntityMobSpawner.class, TileEntityMobSpawner::new, "MobSpawner");
~ addMapping(TileEntityNote.class, TileEntityNote::new, "Music");
~ addMapping(TileEntityPiston.class, TileEntityPiston::new, "Piston");
~ addMapping(TileEntityBrewingStand.class, TileEntityBrewingStand::new, "Cauldron");
~ addMapping(TileEntityEnchantmentTable.class, TileEntityEnchantmentTable::new, "EnchantTable");
~ addMapping(TileEntityEndPortal.class, TileEntityEndPortal::new, "Airportal");
~ addMapping(TileEntityCommandBlock.class, TileEntityCommandBlock::new, "Control");
~ addMapping(TileEntityBeacon.class, TileEntityBeacon::new, "Beacon");
~ addMapping(TileEntitySkull.class, TileEntitySkull::new, "Skull");
~ addMapping(TileEntityDaylightDetector.class, TileEntityDaylightDetector::new, "DLDetector");
~ addMapping(TileEntityHopper.class, TileEntityHopper::new, "Hopper");
~ addMapping(TileEntityComparator.class, TileEntityComparator::new, "Comparator");
~ addMapping(TileEntityFlowerPot.class, TileEntityFlowerPot::new, "FlowerPot");
~ addMapping(TileEntityBanner.class, TileEntityBanner::new, "Banner");
> EOF

View File

@ -11,7 +11,16 @@
> DELETE 18 @ 18 : 21
> CHANGE 25 : 26 @ 25 : 26
> CHANGE 3 : 9 @ 3 : 6
~ MapGenStructureIO.registerStructureComponent(ComponentScatteredFeaturePieces.DesertPyramid.class,
~ ComponentScatteredFeaturePieces.DesertPyramid::new, "TeDP");
~ MapGenStructureIO.registerStructureComponent(ComponentScatteredFeaturePieces.JunglePyramid.class,
~ ComponentScatteredFeaturePieces.JunglePyramid::new, "TeJP");
~ MapGenStructureIO.registerStructureComponent(ComponentScatteredFeaturePieces.SwampHut.class,
~ ComponentScatteredFeaturePieces.SwampHut::new, "TeSH");
> CHANGE 19 : 20 @ 19 : 20
~ public DesertPyramid(EaglercraftRandom parRandom, int parInt1, int parInt2) {

View File

@ -5,17 +5,74 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 6 : 8 @ 6 : 22
> INSERT 4 : 6 @ 4
+ import java.util.function.Supplier;
+
> CHANGE 2 : 4 @ 2 : 18
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
~ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
> CHANGE 36 : 37 @ 36 : 37
> INSERT 4 : 5 @ 4
+ private static Map<String, Supplier<? extends StructureStart>> startNameToSupplierMap = Maps.newHashMap();
> INSERT 2 : 3 @ 2
+ private static Map<String, Supplier<? extends StructureComponent>> componentNameToSupplierMap = Maps.newHashMap();
> CHANGE 2 : 4 @ 2 : 3
~ private static void registerStructure(Class<? extends StructureStart> startClass,
~ Supplier<? extends StructureStart> startSupplier, String structureName) {
> INSERT 1 : 2 @ 1
+ startNameToSupplierMap.put(structureName, startSupplier);
> CHANGE 3 : 5 @ 3 : 4
~ static void registerStructureComponent(Class<? extends StructureComponent> componentClass,
~ Supplier<? extends StructureComponent> startSupplier, String componentName) {
> INSERT 1 : 2 @ 1
+ componentNameToSupplierMap.put(componentName, startSupplier);
> CHANGE 15 : 16 @ 15 : 16
~ Supplier<? extends StructureStart> oclass = startNameToSupplierMap.get(tagCompound.getString("id"));
> CHANGE 1 : 2 @ 1 : 2
~ structurestart = oclass.get();
> CHANGE 3 : 4 @ 3 : 4
~ logger.warn(exception);
> CHANGE 21 : 22 @ 21 : 22
> CHANGE 15 : 16 @ 15 : 16
~ Supplier<? extends StructureComponent> oclass = componentNameToSupplierMap.get(tagCompound.getString("id"));
> CHANGE 1 : 2 @ 1 : 2
~ structurecomponent = oclass.get();
> CHANGE 3 : 4 @ 3 : 4
~ logger.warn(exception);
> CHANGE 12 : 19 @ 12 : 18
~ registerStructure(StructureMineshaftStart.class, StructureMineshaftStart::new, "Mineshaft");
~ registerStructure(MapGenVillage.Start.class, MapGenVillage.Start::new, "Village");
~ registerStructure(MapGenNetherBridge.Start.class, MapGenNetherBridge.Start::new, "Fortress");
~ registerStructure(MapGenStronghold.Start.class, MapGenStronghold.Start::new, "Stronghold");
~ registerStructure(MapGenScatteredFeature.Start.class, MapGenScatteredFeature.Start::new, "Temple");
~ registerStructure(StructureOceanMonument.StartMonument.class, StructureOceanMonument.StartMonument::new,
~ "Monument");
> EOF

View File

@ -11,7 +11,18 @@
> DELETE 15 @ 15 : 18
> CHANGE 24 : 26 @ 24 : 26
> CHANGE 18 : 26 @ 18 : 22
~ MapGenStructureIO.registerStructureComponent(StructureMineshaftPieces.Corridor.class,
~ StructureMineshaftPieces.Corridor::new, "MSCorridor");
~ MapGenStructureIO.registerStructureComponent(StructureMineshaftPieces.Cross.class,
~ StructureMineshaftPieces.Cross::new, "MSCrossing");
~ MapGenStructureIO.registerStructureComponent(StructureMineshaftPieces.Room.class,
~ StructureMineshaftPieces.Room::new, "MSRoom");
~ MapGenStructureIO.registerStructureComponent(StructureMineshaftPieces.Stairs.class,
~ StructureMineshaftPieces.Stairs::new, "MSStairs");
> CHANGE 2 : 4 @ 2 : 4
~ private static StructureComponent func_175892_a(List<StructureComponent> listIn, EaglercraftRandom rand, int x,
~ int y, int z, EnumFacing facing, int type) {

View File

@ -11,7 +11,40 @@
> DELETE 10 @ 10 : 13
> CHANGE 37 : 39 @ 37 : 39
> CHANGE 19 : 49 @ 19 : 34
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Crossing3.class,
~ StructureNetherBridgePieces.Crossing3::new, "NeBCr");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.End.class,
~ StructureNetherBridgePieces.End::new, "NeBEF");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Straight.class,
~ StructureNetherBridgePieces.Straight::new, "NeBS");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Corridor3.class,
~ StructureNetherBridgePieces.Corridor3::new, "NeCCS");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Corridor4.class,
~ StructureNetherBridgePieces.Corridor4::new, "NeCTB");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Entrance.class,
~ StructureNetherBridgePieces.Entrance::new, "NeCE");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Crossing2.class,
~ StructureNetherBridgePieces.Crossing2::new, "NeSCSC");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Corridor.class,
~ StructureNetherBridgePieces.Corridor::new, "NeSCLT");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Corridor5.class,
~ StructureNetherBridgePieces.Corridor5::new, "NeSC");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Corridor2.class,
~ StructureNetherBridgePieces.Corridor2::new, "NeSCRT");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.NetherStalkRoom.class,
~ StructureNetherBridgePieces.NetherStalkRoom::new, "NeCSR");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Throne.class,
~ StructureNetherBridgePieces.Throne::new, "NeMT");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Crossing.class,
~ StructureNetherBridgePieces.Crossing::new, "NeRC");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Stairs.class,
~ StructureNetherBridgePieces.Stairs::new, "NeSR");
~ MapGenStructureIO.registerStructureComponent(StructureNetherBridgePieces.Start.class,
~ StructureNetherBridgePieces.Start::new, "NeStart");
> CHANGE 3 : 5 @ 3 : 5
~ StructureNetherBridgePieces.PieceWeight parPieceWeight, List<StructureComponent> parList,
~ EaglercraftRandom parRandom, int parInt1, int parInt2, int parInt3, EnumFacing parEnumFacing, int parInt4) {

View File

@ -15,7 +15,32 @@
> DELETE 10 @ 10 : 13
> CHANGE 21 : 22 @ 21 : 22
> CHANGE 3 : 25 @ 3 : 14
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.MonumentBuilding.class,
~ StructureOceanMonumentPieces.MonumentBuilding::new, "OMB");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.MonumentCoreRoom.class,
~ StructureOceanMonumentPieces.MonumentCoreRoom::new, "OMCR");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.DoubleXRoom.class,
~ StructureOceanMonumentPieces.DoubleXRoom::new, "OMDXR");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.DoubleXYRoom.class,
~ StructureOceanMonumentPieces.DoubleXYRoom::new, "OMDXYR");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.DoubleYRoom.class,
~ StructureOceanMonumentPieces.DoubleYRoom::new, "OMDYR");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.DoubleYZRoom.class,
~ StructureOceanMonumentPieces.DoubleYZRoom::new, "OMDYZR");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.DoubleZRoom.class,
~ StructureOceanMonumentPieces.DoubleZRoom::new, "OMDZR");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.EntryRoom.class,
~ StructureOceanMonumentPieces.EntryRoom::new, "OMEntry");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.Penthouse.class,
~ StructureOceanMonumentPieces.Penthouse::new, "OMPenthouse");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.SimpleRoom.class,
~ StructureOceanMonumentPieces.SimpleRoom::new, "OMSimple");
~ MapGenStructureIO.registerStructureComponent(StructureOceanMonumentPieces.SimpleTopRoom.class,
~ StructureOceanMonumentPieces.SimpleTopRoom::new, "OMSimpleT");
> CHANGE 7 : 8 @ 7 : 8
~ EaglercraftRandom parRandom) {

View File

@ -11,7 +11,36 @@
> DELETE 13 @ 13 : 16
> CHANGE 71 : 72 @ 71 : 72
> CHANGE 27 : 53 @ 27 : 40
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.ChestCorridor.class,
~ StructureStrongholdPieces.ChestCorridor::new, "SHCC");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Corridor.class,
~ StructureStrongholdPieces.Corridor::new, "SHFC");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Crossing.class,
~ StructureStrongholdPieces.Crossing::new, "SH5C");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.LeftTurn.class,
~ StructureStrongholdPieces.LeftTurn::new, "SHLT");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Library.class,
~ StructureStrongholdPieces.Library::new, "SHLi");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.PortalRoom.class,
~ StructureStrongholdPieces.PortalRoom::new, "SHPR");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Prison.class,
~ StructureStrongholdPieces.Prison::new, "SHPH");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.RightTurn.class,
~ StructureStrongholdPieces.RightTurn::new, "SHRT");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.RoomCrossing.class,
~ StructureStrongholdPieces.RoomCrossing::new, "SHRC");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Stairs.class,
~ StructureStrongholdPieces.Stairs::new, "SHSD");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Stairs2.class,
~ StructureStrongholdPieces.Stairs2::new, "SHStart");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.Straight.class,
~ StructureStrongholdPieces.Straight::new, "SHS");
~ MapGenStructureIO.registerStructureComponent(StructureStrongholdPieces.StairsStraight.class,
~ StructureStrongholdPieces.StairsStraight::new, "SHSSD");
> CHANGE 31 : 32 @ 31 : 32
~ EaglercraftRandom parRandom, int parInt1, int parInt2, int parInt3, EnumFacing parEnumFacing, int parInt4) {

View File

@ -11,7 +11,36 @@
> DELETE 20 @ 20 : 24
> CHANGE 18 : 20 @ 18 : 20
> CHANGE 3 : 29 @ 3 : 16
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.House1.class,
~ StructureVillagePieces.House1::new, "ViBH");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Field1.class,
~ StructureVillagePieces.Field1::new, "ViDF");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Field2.class,
~ StructureVillagePieces.Field2::new, "ViF");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Torch.class,
~ StructureVillagePieces.Torch::new, "ViL");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Hall.class,
~ StructureVillagePieces.Hall::new, "ViPH");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.House4Garden.class,
~ StructureVillagePieces.House4Garden::new, "ViSH");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.WoodHut.class,
~ StructureVillagePieces.WoodHut::new, "ViSmH");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Church.class,
~ StructureVillagePieces.Church::new, "ViST");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.House2.class,
~ StructureVillagePieces.House2::new, "ViS");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Start.class,
~ StructureVillagePieces.Start::new, "ViStart");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Path.class,
~ StructureVillagePieces.Path::new, "ViSR");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.House3.class,
~ StructureVillagePieces.House3::new, "ViTRH");
~ MapGenStructureIO.registerStructureComponent(StructureVillagePieces.Well.class,
~ StructureVillagePieces.Well::new, "ViW");
> CHANGE 2 : 4 @ 2 : 4
~ public static List<StructureVillagePieces.PieceWeight> getStructureVillageWeightedPieceList(
~ EaglercraftRandom random, int parInt1) {

View File

@ -18,8 +18,9 @@
+ import net.lax1dude.eaglercraft.v1_8.sp.server.EaglerIntegratedServerWorker;
+ import net.lax1dude.eaglercraft.v1_8.sp.server.WorldsDB;
> CHANGE 1 : 4 @ 1 : 8
> CHANGE 1 : 5 @ 1 : 8
~ import net.lax1dude.eaglercraft.v1_8.EagUtils;
~ import net.lax1dude.eaglercraft.v1_8.internal.vfs2.VFile2;
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
~ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
@ -103,24 +104,19 @@
~ VFile2 file1 = WorldsDB.newVFile(this.savesDirectory, parString1);
~ logger.info("Deleting level " + parString1);
> CHANGE 1 : 6 @ 1 : 6
> CHANGE 1 : 5 @ 1 : 15
~ for (int i = 1; i <= 5; ++i) {
~ logger.info("Attempt " + i + "...");
~ if (deleteFiles(file1.listFiles(true), "singleplayer.busy.deleting")) {
~ return true;
~ }
> CHANGE 1 : 7 @ 1 : 8
> CHANGE 2 : 6 @ 2 : 3
~ logger.warn("Unsuccessful in deleting contents.");
~ if (i < 5) {
~ try {
~ Thread.sleep(500L);
~ } catch (InterruptedException var5) {
~ ;
> DELETE 2 @ 2 : 4
~ EagUtils.sleep(500);
~ }
> INSERT 1 : 3 @ 1