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 6d783cc424b39993638cb2326c0c9dc3ab493f54..565b41d718eb9a772872f0b8163dd4093fe35750 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -961,12 +961,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) { @@ -981,10 +990,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; // CraftBukkit - })) { + if (this.everyoneSleeping && sleepyMatch) { // Yatopia // CraftBukkit start long l = this.worldData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime()); @@ -1154,9 +1162,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 @@ -1919,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 ) @@ -1937,7 +1946,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } } - } ); + } // Yatopia } // Spigot end // Spigot Start