From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrIvanPlays Date: Sun, 9 Aug 2020 16:58:18 -0500 Subject: [PATCH] Optimize some stuff in WorldServer ticking Replaced some streams and some array lists with glue lists diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 4e7700443c4f0725c0d032b620f84fcfadbde7a1..e695cf764cab6d64ea5bb00af03b25f4930946dd 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -885,12 +885,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.server.getPlayerList().sendAll(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.i, this.thunderLevel)); } // */ - for (int idx = 0; idx < this.players.size(); ++idx) { - if (((EntityPlayer) this.players.get(idx)).world == this) { - ((EntityPlayer) this.players.get(idx)).tickWeather(); + // Yatopia start + boolean sleepyMatch = true; + for (EntityPlayer player : players) { + if (player.world == this) { + player.tickWeather(); + if (flag != this.isRaining()) player.setPlayerWeather((!flag ? WeatherType.DOWNFALL : WeatherType.CLEAR), false); + player.updateWeather(this.lastRainLevel, this.rainLevel, this.lastThunderLevel, this.thunderLevel); + } + if (sleepyMatch && !player.isSpectator() && !player.isDeeplySleeping() && !player.fauxSleeping) { + sleepyMatch = false; } + // Yatopia end } + /* // Yatopia start - moved up if (flag != this.isRaining()) { // Only send weather packets to those affected for (int idx = 0; idx < this.players.size(); ++idx) { @@ -905,11 +914,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } // CraftBukkit end + */ // Yatopia end - if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> { - return !entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping && !(purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk()); // CraftBukkit // Purpur - })) { - // CraftBukkit start + if (this.everyoneSleeping && sleepyMatch) { // Yatopia long l = this.worldData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime()); if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { @@ -1115,9 +1122,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } private void wakeupPlayers() { - (this.players.stream().filter(EntityLiving::isSleeping).collect(Collectors.toList())).forEach((entityplayer) -> { // CraftBukkit - decompile error + for (EntityPlayer entityplayer : players) { if (entityplayer.isSleeping()) { // Yatopia entityplayer.wakeup(false, false); - }); + }} // Yatopia } // Paper start - optimise random block ticking @@ -1920,8 +1927,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot start if ( entity instanceof EntityHuman ) { - this.getMinecraftServer().worldServer.values().stream().map( WorldServer::getWorldPersistentData ).forEach( (worldData) -> + for ( WorldServer worldServer : getMinecraftServer().worldServer.values() ) // Yatopia { + WorldPersistentData worldData = worldServer.getWorldPersistentData(); // Yatopia for (Object o : worldData.data.values() ) { if ( o instanceof WorldMap ) @@ -1938,7 +1946,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } } - } ); + } // Yatopia } // Spigot end // Spigot Start