diff --git a/gradle.properties b/gradle.properties index b5a63e1e0..f0edf7492 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = ceeb8c14eeceb09079615aceb29929fb953970e4 +paperCommit = 44c3dd0d4c83cbfb8b41270c8d4ef0d1571e3925 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 0bf620047..6068c317d 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -280,10 +280,10 @@ index 774556a62eb240da42e84db4502e2ed43495be17..99597258e8e88cd9e2c901c4ac3ff7fa if (stream != null) { diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 5e583d7226ce60d965ce9f019900793d45742d30..08230ef6a705904440a677fba4c65386a3f540ed 100644 +index f7a4fee9bb25ff256dc2e5ea26bfbceca6a49167..f51cc3de3ca935ef90f7f0e9dd0506b856fc55f3 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -96,7 +96,7 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - +@@ -96,7 +96,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre private WatchdogThread(long timeoutTime, boolean restart) { @@ -292,7 +292,7 @@ index 5e583d7226ce60d965ce9f019900793d45742d30..08230ef6a705904440a677fba4c65386 this.timeoutTime = timeoutTime; this.restart = restart; earlyWarningEvery = Math.min(io.papermc.paper.configuration.GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper -@@ -155,14 +155,14 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - +@@ -155,14 +155,14 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre if (isLongTimeout) { // Paper end log.log( Level.SEVERE, "------------------------------" ); @@ -310,7 +310,7 @@ index 5e583d7226ce60d965ce9f019900793d45742d30..08230ef6a705904440a677fba4c65386 // if ( net.minecraft.world.level.Level.lastPhysicsProblem != null ) { -@@ -184,12 +184,12 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - +@@ -184,12 +184,12 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre // Paper end } else { @@ -325,7 +325,7 @@ index 5e583d7226ce60d965ce9f019900793d45742d30..08230ef6a705904440a677fba4c65386 ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - rewrite chunk system this.dumpTickingInfo(); // Paper - log detailed tick information WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log ); -@@ -205,7 +205,7 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - +@@ -205,7 +205,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre WatchdogThread.dumpThread( thread, log ); } } else { diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index c50dd1209..f73b2200d 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 71882332ee61023d656a6de3955ca34fcef1f536..bc39f3193da9ce70d4266f96d53d3e158602f09a 100644 +index 0b6ce3b157c8822c39c492161571c0887ab26262..5ac7bb764d7260c84c28142a50a36e941234e2d1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -302,6 +302,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -301,6 +301,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event @@ -43,7 +43,7 @@ index b43f87ff4b9853b5d4bbea5ff9686d64d9d0d26b..b66d4047b5e529f5f737efb0ff1edda8 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d01b45a48d412e3cb591acee101730704574448a..fcbed2db7a1bfa8e99fa5138a82a4deb3e7fcce9 100644 +index 992437a6e838f653f32d33b5b3f702c484640a97..c2e0baa40e556fd8bb2ae406b321da01f1d05079 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3554,4 +3554,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index 2fccf1130..475110ee2 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index bc39f3193da9ce70d4266f96d53d3e158602f09a..0b22219521ec0ecdcf7ed31eaf36ed541939e7fa 100644 +index 5ac7bb764d7260c84c28142a50a36e941234e2d1..7ac04a535678f6e2e4f6a91194ee98cba019e94d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2007,6 +2007,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2004,6 +2004,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -81,7 +81,7 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index be9976a994dd04cf53048567576dd3484facf625..ad4b0c257267beed2554385ca0a3e0f82845ccc8 100644 +index f0eb2fcbaadb5796cb48050d2f9f88a6100bdb4a..9c436812fce09a00ec7b2c010bb601923403977e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4176,6 +4176,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index b39192eec..1388575f5 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -22,10 +22,10 @@ index 2767d6f97e8b314d23a8e62f22dfd396f5660d31..a64e5997b94cc8173f0512d1e282355f super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index aeae4f8d4ead24db315631c3d2c0b930d0d51e02..31a8b1f07b7b479cd998e492406dcaae536ef6d9 100644 +index 86f890280bfabac3b14b771ae67d28653ab2e3e8..7d552a3239a62428293a7c00124899f2b25b0b16 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1780,6 +1780,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation @@ -34,7 +34,7 @@ index aeae4f8d4ead24db315631c3d2c0b930d0d51e02..31a8b1f07b7b479cd998e492406dcaae this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b3ca52c0a1c4c9c2f4d86b83ad2d6308e3ba9e7c..a36cf62aaa419dc79880798bec22b83b804aceb7 100644 +index 2766ec28f028c0bd672009928bf64c1a6e5d07d6..1d0f9fa24e8ead7710249575795951dad97ea51f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -46,10 +46,10 @@ index b3ca52c0a1c4c9c2f4d86b83ad2d6308e3ba9e7c..a36cf62aaa419dc79880798bec22b83b public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0b22219521ec0ecdcf7ed31eaf36ed541939e7fa..371130f96703b854af1cf42ac693c7ae6d3a9cf4 100644 +index 7ac04a535678f6e2e4f6a91194ee98cba019e94d..2dc4314b37be3f938baf5406338a040f56b05e73 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -807,6 +807,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -804,6 +804,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this); @@ -79,7 +79,7 @@ index 7796e191747be545e744564a2b0b65790f69114d..82f60de72bc0f9b01eb97dbc0e296e80 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ad4b0c257267beed2554385ca0a3e0f82845ccc8..9fd500a438a96feadd51f35751061f7eec28d45c 100644 +index 9c436812fce09a00ec7b2c010bb601923403977e..fc4a941bfce0cc0da2db48fc3d21904a6e91dcf0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -384,7 +384,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 6b7690da1..e0a8141fd 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 371130f96703b854af1cf42ac693c7ae6d3a9cf4..aabf6a05d433eb441fc2230a26186a3c5f187f80 100644 +index 2dc4314b37be3f938baf5406338a040f56b05e73..50e811273201abed6b856cd825a6a73a606114f5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2370,8 +2370,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2367,8 +2367,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -223,7 +223,7 @@ index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4f if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index fcbed2db7a1bfa8e99fa5138a82a4deb3e7fcce9..e59d4ef4b3b2e3eaa2d592bb8e9d33259a8a9276 100644 +index c2e0baa40e556fd8bb2ae406b321da01f1d05079..1faf1c4b777333030d164e277ee3552900f10cd3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -576,10 +576,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0012-Configurable-server-mod-name.patch b/patches/server/0012-Configurable-server-mod-name.patch index b64991b04..0decdb4e1 100644 --- a/patches/server/0012-Configurable-server-mod-name.patch +++ b/patches/server/0012-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 31a8b1f07b7b479cd998e492406dcaae536ef6d9..f57a3ae11fdffb5fcd13a1caaf65a480c934eca1 100644 +index 7d552a3239a62428293a7c00124899f2b25b0b16..bb573e6aac01410c3e5972705aa260329ebe6ed5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1938,7 +1938,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0181-Customizable-sleeping-actionbar-messages.patch b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch index 54734c8b0..747b04632 100644 --- a/patches/server/0181-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 15df133593a4cd5cfb3da05e743e54689933cbf7..ab7e7df685d650c1e995c25f44a45a87771fc9a7 100644 +index e144c56fc79cc5f257ae840c0460d23b931a14d7..5422949d30e01070da58fbdfe480c61830eea6ab 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1080,11 +1080,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1099,11 +1099,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -38,10 +38,10 @@ index 15df133593a4cd5cfb3da05e743e54689933cbf7..ab7e7df685d650c1e995c25f44a45a87 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0ec864027caf87976d6bd1a2043fa10ce958bde6..f0fbad78cb0796b29f352cad19cd2341a2cfcd03 100644 +index b2e171b892d0ad5f262c58186af5df64720f9eee..f8f0cde8f3f9d1a4b3370a38893d4e38fd398e0b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1573,7 +1573,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1570,7 +1570,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0186-Add-compass-command.patch b/patches/server/0186-Add-compass-command.patch index b8cf16add..84b25079b 100644 --- a/patches/server/0186-Add-compass-command.patch +++ b/patches/server/0186-Add-compass-command.patch @@ -17,10 +17,10 @@ index 9f86a0397c0b64cb31dad245e2dc84d0fadd42d7..a66e2d78722847dec4e9d4aba8e6968e if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f0fbad78cb0796b29f352cad19cd2341a2cfcd03..df157516c516140428d2014d392b596969cb0820 100644 +index f8f0cde8f3f9d1a4b3370a38893d4e38fd398e0b..b6a0553a23f0ba155656b51fe2efb48e1602a4a5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -304,6 +304,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -303,6 +303,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur @@ -28,7 +28,7 @@ index f0fbad78cb0796b29f352cad19cd2341a2cfcd03..df157516c516140428d2014d392b5969 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -604,6 +605,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -601,6 +602,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple } if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur @@ -36,7 +36,7 @@ index f0fbad78cb0796b29f352cad19cd2341a2cfcd03..df157516c516140428d2014d392b5969 } @Override -@@ -681,6 +683,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -678,6 +680,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple } nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur @@ -44,7 +44,7 @@ index f0fbad78cb0796b29f352cad19cd2341a2cfcd03..df157516c516140428d2014d392b5969 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -3091,5 +3094,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3088,5 +3091,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index bab1e8c16..b454c89e5 100644 --- a/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ab7e7df685d650c1e995c25f44a45a87771fc9a7..3972d26911f1f06eb2e73ecfd8d2a80cd6b521fe 100644 +index 5422949d30e01070da58fbdfe480c61830eea6ab..12efa265ec4369279b844253273c58e7d7082a61 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1240,6 +1240,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1259,6 +1259,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index ab7e7df685d650c1e995c25f44a45a87771fc9a7..3972d26911f1f06eb2e73ecfd8d2a80c this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1247,6 +1248,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1266,6 +1267,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/server/0213-Signs-allow-color-codes.patch b/patches/server/0213-Signs-allow-color-codes.patch index 5b1d8e6a8..d6cf86778 100644 --- a/patches/server/0213-Signs-allow-color-codes.patch +++ b/patches/server/0213-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index df157516c516140428d2014d392b596969cb0820..2021e6db4864b5e20a6483605e6372de2efaba4d 100644 +index b6a0553a23f0ba155656b51fe2efb48e1602a4a5..69b57105a7c8dccf46fe7a09c204fcf490e2fda9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1710,6 +1710,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1707,6 +1707,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @Override public void openTextEdit(SignBlockEntity sign, boolean front) { diff --git a/patches/server/0226-Allow-void-trading.patch b/patches/server/0226-Allow-void-trading.patch index 4147fd0cc..fd0399a1a 100644 --- a/patches/server/0226-Allow-void-trading.patch +++ b/patches/server/0226-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3972d26911f1f06eb2e73ecfd8d2a80cd6b521fe..ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac 100644 +index 12efa265ec4369279b844253273c58e7d7082a61..ca9f42837b0ef21795dfb76b6a9ead07810b483a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2689,7 +2689,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -2708,7 +2708,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start - Fix merchant inventory not closing on entity removal diff --git a/patches/server/0250-Remove-Timings.patch b/patches/server/0250-Remove-Timings.patch index 698ad942d..fce019eed 100644 --- a/patches/server/0250-Remove-Timings.patch +++ b/patches/server/0250-Remove-Timings.patch @@ -42,7 +42,7 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..01efbc507b3d58f13f78ee286f93df40 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6ab6858dcaaadb87493597598af905a9c180d211..a7554d272d13747bed32ce4190b58151b106f7e4 100644 +index a9e7f5d8f2e2605878c35863e933f93d8b05c166..20d6d433925312a5894d9d6628ec3c39483ef4d2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1601,15 +1601,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -97,7 +97,7 @@ index 6ab6858dcaaadb87493597598af905a9c180d211..a7554d272d13747bed32ce4190b58151 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1761,21 +1761,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -211,7 +211,7 @@ index 6df79aab2f0a75bbe347dc92e9ed5d62ceec7983..5d52df83c643845ffbeeba3bb640c9de ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1017,17 +1017,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -984,17 +984,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -233,10 +233,10 @@ index 6df79aab2f0a75bbe347dc92e9ed5d62ceec7983..5d52df83c643845ffbeeba3bb640c9de } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3575fe6f57457ab865a29d20836512f6f5a98115..bb7e02af46ecd313debcfb778d3390ad5f2c3991 100644 +index 8a0b00d645e4cf2ca96ec7e8ebc6ef726a0ab8b0..84a66167e0e8e933c2c0051aae4c68d698b57738 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -357,9 +357,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -356,9 +356,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon public void save(boolean flush) { // Paper - rewrite chunk system @@ -248,7 +248,7 @@ index 3575fe6f57457ab865a29d20836512f6f5a98115..bb7e02af46ecd313debcfb778d3390ad } @Override -@@ -394,26 +394,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -393,26 +393,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); @@ -281,16 +281,14 @@ index 3575fe6f57457ab865a29d20836512f6f5a98115..bb7e02af46ecd313debcfb778d3390ad this.level.getProfiler().pop(); this.clearCache(); } -@@ -431,7 +430,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - gameprofilerfiller.push("filteringLoadedChunks"); - List list = Lists.newArrayListWithCapacity(this.chunkMap.size()); - Iterator iterator = this.chunkMap.getChunks().iterator(); +@@ -448,13 +447,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + } + // Paper end - chunk tick iteration optimisations + Iterator iterator = null; // Paper - chunk tick iteration optimisations - if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper + //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - while (iterator.hasNext()) { - ChunkHolder playerchunk = (ChunkHolder) iterator.next(); -@@ -444,7 +443,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + // Paper - chunk tick iteration optimisations if (this.level.tickRateManager().runsNormally()) { gameprofilerfiller.popPush("naturalSpawnCount"); @@ -299,7 +297,7 @@ index 3575fe6f57457ab865a29d20836512f6f5a98115..bb7e02af46ecd313debcfb778d3390ad int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns int naturalSpawnChunkCount = k; -@@ -469,7 +468,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -479,7 +478,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); } // Paper end - Optional per player mob spawns @@ -308,7 +306,7 @@ index 3575fe6f57457ab865a29d20836512f6f5a98115..bb7e02af46ecd313debcfb778d3390ad this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("spawnAndTick"); -@@ -510,21 +509,21 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -520,19 +519,19 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } } } @@ -326,20 +324,26 @@ index 3575fe6f57457ab865a29d20836512f6f5a98115..bb7e02af46ecd313debcfb778d3390ad } gameprofilerfiller.popPush("broadcast"); - list.forEach((chunkproviderserver_a1) -> { -- this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing -+ //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); -- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing -+ //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur - }); + // Paper start - chunk tick iteration optimisations +- this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing ++ //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur + { + final it.unimi.dsi.fastutil.objects.ObjectArrayList chunks = (it.unimi.dsi.fastutil.objects.ObjectArrayList)list; + final ServerChunkCache.ChunkAndHolder[] raw = chunks.elements(); +@@ -546,7 +545,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + holder.holder().broadcastChanges(holder.chunk()); + } + } +- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing ++ //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur + // Paper end - chunk tick iteration optimisations gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8f1da00c2 100644 +index ca9f42837b0ef21795dfb76b6a9ead07810b483a..270986af40f1f91448cb6d1ab1560d2efc0b3e99 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -711,7 +711,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -730,7 +730,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } gameprofilerfiller.popPush("tickPending"); @@ -348,7 +352,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 if (!this.isDebug() && flag) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -720,24 +720,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -739,24 +739,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks gameprofilerfiller.pop(); } @@ -380,7 +384,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 } this.handlingTick = false; -@@ -750,7 +750,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -769,7 +769,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (flag1 || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -389,7 +393,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 if (this.dragonFight != null && flag) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -758,7 +758,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -777,7 +777,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -398,7 +402,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 this.entityTickList.forEach((entity) -> { if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed -@@ -785,8 +785,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -804,8 +804,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } }); @@ -409,7 +413,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -976,12 +976,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -995,12 +995,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } // Paper - Option to disable ice and snow gameprofilerfiller.popPush("tickBlocks"); @@ -424,7 +428,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 gameprofilerfiller.pop(); } -@@ -1324,8 +1324,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1343,8 +1343,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -435,7 +439,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1341,7 +1341,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1360,7 +1360,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -444,7 +448,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1364,8 +1364,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1383,8 +1383,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -455,7 +459,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1395,7 +1395,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1414,7 +1414,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickPassenger(passenger, entity2); } @@ -464,7 +468,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 } } else { passenger.stopRiding(); -@@ -1415,7 +1415,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1434,7 +1434,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -473,7 +477,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 if (doFull) { this.saveLevelData(true); } -@@ -1432,7 +1432,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1451,7 +1451,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -482,7 +486,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 } // Paper end - Incremental chunk and player saving -@@ -1446,7 +1446,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1465,7 +1465,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -491,7 +495,7 @@ index ff47ff94c84d05161cee5761d8a6ed0d8d32a3ac..17022327262157ad1520fb7d4fc187c8 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1456,10 +1456,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1475,10 +1475,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -577,7 +581,7 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 32cc7311559b2613269e347c73a1e000ff40f686..342c8a114b9063b2fa959aae22cdd2c0d412c50d 100644 +index 10df967d7694c5806453bb4abbb14deab16e116d..9dd8378099b1ece5657adf1677f988ca331899b1 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1415,15 +1415,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -609,7 +613,7 @@ index 32cc7311559b2613269e347c73a1e000ff40f686..342c8a114b9063b2fa959aae22cdd2c0 co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index ed8032495af9ce9c23419224814b8d27e4a97c17..2812505185df691e8f08932aa0bba162a7d9db86 100644 +index e524b27d185da3e88668f8ef107517272860bd66..735f39fed209e086a52185565f8bd6873c0b8d6e 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -128,7 +128,7 @@ public final class NaturalSpawner { @@ -631,10 +635,10 @@ index ed8032495af9ce9c23419224814b8d27e4a97c17..2812505185df691e8f08932aa0bba162 } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index db55e9cc3d42ba01f75f6697924baaeccb564b90..8d48dbd43f29c6ccf268ae2f52f2b75a559c108d 100644 +index 5453b7051337908ac1c8201827c1b5eec9e1608b..c68a3ab2129d4eba7f7c08b811fe3461d86ebd97 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -650,7 +650,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -661,7 +661,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -643,7 +647,7 @@ index db55e9cc3d42ba01f75f6697924baaeccb564b90..8d48dbd43f29c6ccf268ae2f52f2b75a this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -670,7 +670,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -681,7 +681,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -652,7 +656,7 @@ index db55e9cc3d42ba01f75f6697924baaeccb564b90..8d48dbd43f29c6ccf268ae2f52f2b75a } } } -@@ -1010,7 +1010,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1021,7 +1021,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -661,7 +665,7 @@ index db55e9cc3d42ba01f75f6697924baaeccb564b90..8d48dbd43f29c6ccf268ae2f52f2b75a BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1037,7 +1037,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1048,7 +1048,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Prevent block entity and entity crashes // Spigot start } finally { diff --git a/patches/server/0251-Remove-Mojang-Profiler.patch b/patches/server/0251-Remove-Mojang-Profiler.patch index 3b6119601..646b2c036 100644 --- a/patches/server/0251-Remove-Mojang-Profiler.patch +++ b/patches/server/0251-Remove-Mojang-Profiler.patch @@ -83,7 +83,7 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a7554d272d13747bed32ce4190b58151b106f7e4..0852e14cbb194bd524147ec443eb2791e9ecf3a6 100644 +index 20d6d433925312a5894d9d6628ec3c39483ef4d2..a4c6b7342c0cc2d8017561645d25f94571167765 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -422,13 +422,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -246,7 +246,7 @@ index a7554d272d13747bed32ce4190b58151b106f7e4..0852e14cbb194bd524147ec443eb2791 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1833,17 +1833,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2854,40 +2855,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayListWithCapacity(this.chunkMap.size()); - Iterator iterator = this.chunkMap.getChunks().iterator(); - //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur -@@ -442,7 +442,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - } + // Paper start - chunk tick iteration optimisations + List list; + { +@@ -452,7 +452,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + // Paper - chunk tick iteration optimisations if (this.level.tickRateManager().runsNormally()) { - gameprofilerfiller.popPush("naturalSpawnCount"); @@ -545,7 +545,7 @@ index bb7e02af46ecd313debcfb778d3390ad5f2c3991..01683897aa15cd280f28a26057237e82 //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns -@@ -471,7 +471,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -481,7 +481,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur this.lastSpawnState = spawnercreature_d; @@ -553,8 +553,8 @@ index bb7e02af46ecd313debcfb778d3390ad5f2c3991..01683897aa15cd280f28a26057237e82 + //gameprofilerfiller.popPush("spawnAndTick"); // Purpur boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - Util.shuffle(list, this.level.random); -@@ -511,7 +511,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + if (!this.level.paperConfig().entities.spawning.perPlayerMobSpawns) Util.shuffle(list, this.level.random); // Paper - per player mob spawns - do not need this when per-player is enabled +@@ -521,7 +521,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur @@ -563,17 +563,19 @@ index bb7e02af46ecd313debcfb778d3390ad5f2c3991..01683897aa15cd280f28a26057237e82 if (flag) { //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -519,14 +519,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -529,7 +529,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } } - gameprofilerfiller.popPush("broadcast"); + //gameprofilerfiller.popPush("broadcast"); // Purpur - list.forEach((chunkproviderserver_a1) -> { - //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); - //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur - }); + // Paper start - chunk tick iteration optimisations + //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur + { +@@ -547,8 +547,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + } + //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur + // Paper end - chunk tick iteration optimisations - gameprofilerfiller.pop(); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur @@ -581,7 +583,7 @@ index bb7e02af46ecd313debcfb778d3390ad5f2c3991..01683897aa15cd280f28a26057237e82 } } -@@ -707,7 +707,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -729,7 +729,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @Override protected void doRunTask(Runnable task) { @@ -591,10 +593,10 @@ index bb7e02af46ecd313debcfb778d3390ad5f2c3991..01683897aa15cd280f28a26057237e82 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845b7a8189d 100644 +index 270986af40f1f91448cb6d1ab1560d2efc0b3e99..a4ea3eca166510e05bc53504d2f1040e3bead39a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -669,16 +669,16 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -688,16 +688,16 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } public void tick(BooleanSupplier shouldKeepTicking) { @@ -614,7 +616,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 this.advanceWeatherCycle(); } -@@ -710,30 +710,30 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -729,30 +729,30 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickTime(); } @@ -652,7 +654,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 if (flag) { // this.timings.doSounds.startTiming(); // Spigot // Purpur this.runBlockEvents(); -@@ -741,7 +741,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -760,7 +760,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } this.handlingTick = false; @@ -661,7 +663,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this if (flag1) { -@@ -749,12 +749,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -768,12 +768,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } if (flag1 || this.emptyTime++ < 300) { @@ -677,7 +679,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -764,9 +764,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -783,9 +783,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { @@ -689,7 +691,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - rewrite chunk system Entity entity1 = entity.getVehicle(); -@@ -778,22 +778,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -797,22 +797,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.stopRiding(); } @@ -717,7 +719,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 } @Override -@@ -926,9 +926,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -945,9 +945,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -729,7 +731,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); -@@ -965,7 +965,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -984,7 +984,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -738,7 +740,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { -@@ -975,14 +975,14 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -994,14 +994,14 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } // Paper - Option to disable ice and snow @@ -755,7 +757,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 } @VisibleForTesting -@@ -1328,19 +1328,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1347,19 +1347,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -780,7 +782,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1369,12 +1369,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1388,12 +1388,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -797,7 +799,7 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1386,7 +1386,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1405,7 +1405,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -807,10 +809,10 @@ index 17022327262157ad1520fb7d4fc187c8f1da00c2..665d45ba1129a72a1fb393d524bfa845 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2021e6db4864b5e20a6483605e6372de2efaba4d..7c7124f6b5911d4fa63af03f018323b6032a06a4 100644 +index 69b57105a7c8dccf46fe7a09c204fcf490e2fda9..7d586111996a4f7ad9437cb45c41c5e01aa7c7d0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1401,7 +1401,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1398,7 +1398,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.unsetRemoved(); */ // CraftBukkit end @@ -819,7 +821,7 @@ index 2021e6db4864b5e20a6483605e6372de2efaba4d..7c7124f6b5911d4fa63af03f018323b6 if (worldserver != null && resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit - empty to fall through to null to event this.enteredNetherPosition = this.position(); } -@@ -1417,8 +1417,8 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1414,8 +1414,8 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -830,7 +832,7 @@ index 2021e6db4864b5e20a6483605e6372de2efaba4d..7c7124f6b5911d4fa63af03f018323b6 // CraftBukkit start this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds LevelData worlddata = worldserver.getLevelData(); -@@ -1436,7 +1436,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1433,7 +1433,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringTeleport(this); @@ -1066,7 +1068,7 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9c294bb8ae3cb9ec18ed633821c64c38bad50e95..42ff02305e9eedb0a7c4a3b25106eb98776696a4 100644 +index bf4cfa2269769cbaf1fdd2189a877fd3558c8372..cc880364db02e0e648880b4d235572779c10cbf3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -880,7 +880,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -1386,7 +1388,7 @@ index 6dfb13eef96ff43d368cd8163ae5883571cec604..a07cadcbd73f7058a5cf8535fb317ac0 } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 74d4f653d5c7f1923c59019effd78337402f7025..b4e4670536f6dcea109c029d75d9710cb386f1d0 100644 +index 9bdbf3e9453bc3ce96d52d04b8cde0d05f7356d8..ff8fc5f0202b6176afef51e5b591fa6b7e4faee5 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java @@ -87,8 +87,8 @@ public class GoalSelector { @@ -1794,7 +1796,7 @@ index a248d859cbce48f4a34c4771a7acffc17d7edc84..4ce32603dcd691e018a3e1962311d2ac if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 342c8a114b9063b2fa959aae22cdd2c0d412c50d..ba2254ef7688177eff2ed8115726b7b551620560 100644 +index 9dd8378099b1ece5657adf1677f988ca331899b1..ed313b0424b2e1e1335ee3e3bd4d9cfd15f24b39 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -269,7 +269,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1863,7 +1865,7 @@ index 342c8a114b9063b2fa959aae22cdd2c0d412c50d..ba2254ef7688177eff2ed8115726b7b5 } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 2812505185df691e8f08932aa0bba162a7d9db86..35e94c06361795d032f995e8282f8b35c075dae7 100644 +index 735f39fed209e086a52185565f8bd6873c0b8d6e..4dc060bc677984d91a30a88155c576d5e187aa1b 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -127,7 +127,7 @@ public final class NaturalSpawner { @@ -1885,10 +1887,10 @@ index 2812505185df691e8f08932aa0bba162a7d9db86..35e94c06361795d032f995e8282f8b35 // Paper start - Add mobcaps commands diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 8d48dbd43f29c6ccf268ae2f52f2b75a559c108d..7411e3d132dddde4599c182384f317679de1f2bf 100644 +index c68a3ab2129d4eba7f7c08b811fe3461d86ebd97..3ec4ba40f6ff44365eaa4b33ac447c191670f259 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -372,11 +372,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -383,11 +383,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1903,7 +1905,7 @@ index 8d48dbd43f29c6ccf268ae2f52f2b75a559c108d..7411e3d132dddde4599c182384f31767 } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1007,9 +1007,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1018,9 +1018,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1915,7 +1917,7 @@ index 8d48dbd43f29c6ccf268ae2f52f2b75a559c108d..7411e3d132dddde4599c182384f31767 //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1026,7 +1026,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1037,7 +1037,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Remove the Block Entity if it's invalid } diff --git a/patches/server/0258-Implement-ram-and-rambar-commands.patch b/patches/server/0258-Implement-ram-and-rambar-commands.patch index b25e3d269..f64a8f673 100644 --- a/patches/server/0258-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0258-Implement-ram-and-rambar-commands.patch @@ -18,10 +18,10 @@ index 24cb04cd33cfe578286c85a892b20bbf3fc843e6..8468452ff61f226b65be1dad21b627f2 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 7c7124f6b5911d4fa63af03f018323b6032a06a4..4b5d0ccd37534bd987d997338033e363a7a56b76 100644 +index 7d586111996a4f7ad9437cb45c41c5e01aa7c7d0..c43656cfe83132a5bda5a1a573f73cfe6be7160e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -305,6 +305,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -304,6 +304,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur @@ -29,7 +29,7 @@ index 7c7124f6b5911d4fa63af03f018323b6032a06a4..4b5d0ccd37534bd987d997338033e363 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -606,6 +607,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -603,6 +604,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur @@ -37,7 +37,7 @@ index 7c7124f6b5911d4fa63af03f018323b6032a06a4..4b5d0ccd37534bd987d997338033e363 } @Override -@@ -682,6 +684,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -679,6 +681,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple }); } @@ -45,7 +45,7 @@ index 7c7124f6b5911d4fa63af03f018323b6032a06a4..4b5d0ccd37534bd987d997338033e363 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3103,5 +3106,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3100,5 +3103,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void compassBar(boolean compassBar) { this.compassBar = compassBar; }