diff --git a/gradle.properties b/gradle.properties index 0a3378efa..23874dc9a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 9c126fd2a976c1557d418f4ccce532f8ad62042b +paperCommit = e284bb12156fad92767ceadf3d5e57cbc71e5b21 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index e199655a3..8d9415867 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 26618ddf85952694ae2c78f41a19e4b9a324f059..a20880e771091f6ab9cb7f8e03b7cf97fc8db9df 100644 +index f1ade7432ae6fae1bceb90f975448ab43543942f..6b2cbb566dfdc2bc751a0870594b1499df7ea797 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -32,8 +32,8 @@ index 26618ddf85952694ae2c78f41a19e4b9a324f059..a20880e771091f6ab9cb7f8e03b7cf97 + implementation("dev.omega24:upnp4j:1.0") // Purpur + testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test - testImplementation("junit:junit:4.13.2") - testImplementation("org.hamcrest:hamcrest-library:1.3") + testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") + testImplementation("org.hamcrest:hamcrest:2.2") @@ -72,7 +80,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -175,10 +175,10 @@ index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae283 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8f0769d248c7f3cce753130147223403c7923304..34ece9ef681db6ebd0081e676e5eb9a0747442c4 100644 +index 97745f0bab8d82d397c6c2a5775aed92bca0a034..707a02804db563d94360b65d156c40be3aa30aeb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -905,7 +905,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator) { // Paper +@@ -213,6 +214,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper + this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -103,7 +103,7 @@ index ce422c31385d9518e798c7a3456fad747b09ea61..5101c5d3b2dc4b9ae72d2c9bc8bbe83a this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4bd1410ab694a85d828da59615cfbc4fa0b4d237..1225adadac3b4dd0e371b77efd8f30e99b71c4b9 100644 +index 00997982aa478aba822b288f4f18779d8dbcf3cc..c4c4d18b333479062f27841ed21d827e4c2096cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1039,6 +1039,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index 00e3eff75..d522533ba 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 6a11b262a6f1cd5eba96471666098c82978027ff..8a6d072bf5bb00a7c2a0460b85ba93b549825374 100644 +index d4aec99cac3f83d764e21946cc904c00e084704e..9f3e932d9e1ff6986962244e95528a7dba7e90ea 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -274,6 +274,7 @@ public class ServerPlayer extends Player { +@@ -273,6 +273,7 @@ public class ServerPlayer extends Player { public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event @@ -17,7 +17,7 @@ index 6a11b262a6f1cd5eba96471666098c82978027ff..8a6d072bf5bb00a7c2a0460b85ba93b5 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 2a1cf4ff3d0cc062b593f5c58ee80b00395b097e..566a9449cf8a10fff9266a4384cfeb9492f4666e 100644 +index ff01c0e7f1d84a4a6e2684446ef1172754ddc570..cee15bbd2fd38a76d879f18f540eb357ddeeec92 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -56,6 +56,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index 05961594c..7640d3541 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 8a6d072bf5bb00a7c2a0460b85ba93b549825374..c30c707fc08493b9ee0c8d48652df80e55b8764f 100644 +index 9f3e932d9e1ff6986962244e95528a7dba7e90ea..3e8527b526d3cd06c28a6ee94463b09bac95cb0e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1782,6 +1782,26 @@ public class ServerPlayer extends Player { +@@ -1783,6 +1783,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -36,7 +36,7 @@ index 8a6d072bf5bb00a7c2a0460b85ba93b549825374..c30c707fc08493b9ee0c8d48652df80e public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index ba415d400c706c0483c0dc8da959b5ff39de1f4d..2fcf7f80be5f6a96c4ed45459fef3ced1f9e3813 100644 +index 48d1444fbad1c57738807d0128b94160a5a17a4d..09b111dd0189b8764569e24fb6de862b1bb3bc89 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1039,6 +1039,20 @@ public abstract class PlayerList { diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 3abe20c9c..922d54b2a 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -22,10 +22,10 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6 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 34ece9ef681db6ebd0081e676e5eb9a0747442c4..8c4bc2d32fa1c6d372edd8169207de17f41b3c19 100644 +index 707a02804db563d94360b65d156c40be3aa30aeb..5534a881d0c716fd4280017c0c21cb7c5a95d269 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1525,6 +1525,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -34,7 +34,7 @@ index 34ece9ef681db6ebd0081e676e5eb9a0747442c4..8c4bc2d32fa1c6d372edd8169207de17 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8cb1299d9110adc8f11e9be984ed8a4326a330cf..d060a6a45c614c92dd45e96bc1bf39ace3347fbb 100644 +index f502b01b564bd33c449cbe621966ef4076a38cca..8768ad8207ded2dfca532c69238dbd3cf68e2b97 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,10 +46,10 @@ index 8cb1299d9110adc8f11e9be984ed8a4326a330cf..d060a6a45c614c92dd45e96bc1bf39ac final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c30c707fc08493b9ee0c8d48652df80e55b8764f..efaac631df6fb44979045c79162b9f9c580c3440 100644 +index 3e8527b526d3cd06c28a6ee94463b09bac95cb0e..c2927df8ebb8977d3d43928fe91c977b0c29d854 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -754,6 +754,15 @@ public class ServerPlayer extends Player { +@@ -755,6 +755,15 @@ public class ServerPlayer extends Player { this.trackStartFallingPosition(); this.trackEnteredOrExitedLavaOnVehicle(); this.advancements.flushDirty(this); @@ -191,7 +191,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 641d4bb568784087426a5e28f96e16858ccb1074..e6b83abce3bbd2f5e89d02415bcc6b1a1b0b5da9 100644 +index c039c77d0dd6ec1d336948ca6b5351d6fae1d8bb..49fb2604e5227c454026d5c060130c52de2070c8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -219,9 +219,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -6674,10 +6674,10 @@ index 0000000000000000000000000000000000000000..18a95e043cbffa65eeaaf65ff7695e5d + } +} diff --git a/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java -index b2d510459bcf90a3611f3d91dae4ccc3d29b4079..7a052f6deaa30f8a177a2aaf172f9da6c308a22b 100644 +index 654ed436e99dd56f1fe7c1d4f38da34d95ce9349..6453b1d4182a47367e89500ed4180ce75556b47d 100644 --- a/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java +++ b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java -@@ -37,7 +37,7 @@ public class VanillaMobGoalTest { +@@ -36,7 +36,7 @@ public class VanillaMobGoalTest { } List> classes; diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index bfda34206..d45574182 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 efaac631df6fb44979045c79162b9f9c580c3440..03edb4c297285e472ca2a384fd3a95410cc5d8ee 100644 +index c2927df8ebb8977d3d43928fe91c977b0c29d854..2b2d1fd4457bfac57565659d1133058eee3a34f0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2127,8 +2127,68 @@ public class ServerPlayer extends Player { +@@ -2128,8 +2128,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -177,7 +177,7 @@ index 3ff999734d14e2b6e7828e117f5ee32a60c26bc1..cfa9607241c3e69777ffc317206996c2 private EntitySelector() {} // Paper start diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..db988d263b470e597d6df362da43d76005444572 100644 +index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..631b6f26c96e7de65c8ab5377f1b82c7f56df96c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -210,7 +210,7 @@ index ea475f6fff35e346ca153a385d6b20f90b5f4283..535fe476ebe5b791cae7a4013c4a498b public CraftHumanEntity getBukkitEntity() { return (CraftHumanEntity) super.getBukkitEntity(); diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java -index b3293a722fb5c5262a777402140c764c03367800..67ebddfdcc298198f1a79a0b4875ec8258244ffd 100644 +index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb038b1cdbe 100644 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java +++ b/src/main/java/net/minecraft/world/level/EntityGetter.java @@ -191,7 +191,7 @@ public interface EntityGetter { diff --git a/patches/server/0012-Configurable-server-mod-name.patch b/patches/server/0012-Configurable-server-mod-name.patch index 0b8d71fb7..62e4666c0 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 8c4bc2d32fa1c6d372edd8169207de17f41b3c19..64aeb6c3e99801e8683d09575b579d3032a152b6 100644 +index 5534a881d0c716fd4280017c0c21cb7c5a95d269..d0f0b17f4071ca716a3f3361bf1080b9607e4e04 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1694,7 +1694,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -- this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE); -+ this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Purpur - TODO: Paper - } - } else { - if (elapsedTime >= 15000L) { // 15 seconds diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 34afed28faeb56352b48faf8078a5fb07912eb5e..ad239ba9259c5a63b40261ebc44224893496b47d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0023-Zombie-horse-naturally-spawn.patch b/patches/server/0023-Zombie-horse-naturally-spawn.patch index 1264def3b..43119ee83 100644 --- a/patches/server/0023-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0023-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index d060a6a45c614c92dd45e96bc1bf39ace3347fbb..b0064cda4b0283d46dad53675ec70ff10c4d2015 100644 +index 8768ad8207ded2dfca532c69238dbd3cf68e2b97..83616ffe1c2698418a79bbcc34995ac80becc02e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -864,10 +864,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -984,10 +984,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0038-Minecart-settings-and-WASD-controls.patch b/patches/server/0038-Minecart-settings-and-WASD-controls.patch index 6381aac14..4654c4c15 100644 --- a/patches/server/0038-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0038-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 03edb4c297285e472ca2a384fd3a95410cc5d8ee..35cb194e15aacdd8022f5d29104e0cfaba9d49e3 100644 +index 2b2d1fd4457bfac57565659d1133058eee3a34f0..7f88a4beb6c67f493365097314243c2c5d7fff81 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1107,6 +1107,7 @@ public class ServerPlayer extends Player { +@@ -1108,6 +1108,7 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { diff --git a/patches/server/0044-Configurable-TPS-Catchup.patch b/patches/server/0044-Configurable-TPS-Catchup.patch index 25a8d64ec..5b17d091e 100644 --- a/patches/server/0044-Configurable-TPS-Catchup.patch +++ b/patches/server/0044-Configurable-TPS-Catchup.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e302593cd3cdba2128355be65ce3f2e40df9f660..09dca4c159e47432c6f2a463320456a1e7f1bae5 100644 +index b064e88913e932d070f36dd3f4832f63ac5843ad..0e04be813e7e0b11de4de08004c166d1fe74bedd 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1155,7 +1155,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -560,6 +561,7 @@ public class ServerPlayer extends Player { +@@ -561,6 +562,7 @@ public class ServerPlayer extends Player { } } @@ -60,7 +60,7 @@ index 255811157c36ac8018652cb031490221f998414b..51bad65820a89ddd5f5266ce855da2dd } @Override -@@ -626,6 +628,7 @@ public class ServerPlayer extends Player { +@@ -627,6 +629,7 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -68,7 +68,7 @@ index 255811157c36ac8018652cb031490221f998414b..51bad65820a89ddd5f5266ce855da2dd } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2767,5 +2770,13 @@ public class ServerPlayer extends Player { +@@ -2768,5 +2771,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } @@ -83,7 +83,7 @@ index 255811157c36ac8018652cb031490221f998414b..51bad65820a89ddd5f5266ce855da2dd // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index c6adced2551977dff3000dce8f6c0b35c295e85e..d711decc32169f662818d8db60d3dd8182efbc00 100644 +index 1eafc1854d47002d683f625f4c164290eee59181..265889514d2959731440ec180f6e47b19bb83cfb 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -467,6 +467,7 @@ public abstract class PlayerList { diff --git a/patches/server/0125-Fix-stuck-in-portals.patch b/patches/server/0125-Fix-stuck-in-portals.patch index f3ebd9e86..f7ebb5ed0 100644 --- a/patches/server/0125-Fix-stuck-in-portals.patch +++ b/patches/server/0125-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 51bad65820a89ddd5f5266ce855da2dd788d559d..6d1bb046bad2a3d28ee64a06f69c3c377109fd10 100644 +index 0a1daa97fc54fbe565de9754594a1fd68ff6652c..5fdd6e2dd19e239ac864f0273f6a2b921c297306 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1266,6 +1266,7 @@ public class ServerPlayer extends Player { +@@ -1267,6 +1267,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); diff --git a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch index 9ae9e1cc5..7a302afd2 100644 --- a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6d1bb046bad2a3d28ee64a06f69c3c377109fd10..6b61c985be3c19221b229542f0d0e902d085a772 100644 +index 5fdd6e2dd19e239ac864f0273f6a2b921c297306..ff02dc1687ca079b1798bf8f21ee6af425c42ef4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1423,7 +1423,7 @@ public class ServerPlayer extends Player { +@@ -1424,7 +1424,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); diff --git a/patches/server/0141-Sneak-to-bulk-process-composter.patch b/patches/server/0141-Sneak-to-bulk-process-composter.patch index bea43bc91..8a7577076 100644 --- a/patches/server/0141-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0141-Sneak-to-bulk-process-composter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Sneak to bulk process composter diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 1b0302df0ed420fd7f9d6803d796abf7d3192ceb..51a74d7ba4006523dfaffba40ffcbe117a6df406 100644 +index b2c2bd5ec0afd479973f7237a5c610f21231c505..f65eb045e518cdba91ace4483e385805b0e1171f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -576,7 +576,7 @@ public class ServerPlayerGameMode { +@@ -578,7 +578,7 @@ public class ServerPlayerGameMode { boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemstack1 = stack.copy(); diff --git a/patches/server/0142-Config-for-skipping-night.patch b/patches/server/0142-Config-for-skipping-night.patch index 5f98f1fbb..12c528bd7 100644 --- a/patches/server/0142-Config-for-skipping-night.patch +++ b/patches/server/0142-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3d890b71e4b5f44cd822fb0036d87bc5a6014d4e..5e832faa8b1ff45b0d4e01ab197cadfb2c480452 100644 +index 3c50b83608d5f714b97aa7e7ca5f893c7d13053c..cf14ddbe97dd16972dc2830a722f7ac23b1badd0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -713,7 +713,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -833,7 +833,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; diff --git a/patches/server/0146-Break-individual-slabs-when-sneaking.patch b/patches/server/0146-Break-individual-slabs-when-sneaking.patch index 319923922..d7208c51b 100644 --- a/patches/server/0146-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0146-Break-individual-slabs-when-sneaking.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 51a74d7ba4006523dfaffba40ffcbe117a6df406..dbb08ce85ad38b325f02700e879f92c06d897268 100644 +index f65eb045e518cdba91ace4483e385805b0e1171f..2c9deba9da45feb81ed5801c33aa64e38f8d6a79 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -396,6 +396,7 @@ public class ServerPlayerGameMode { +@@ -398,6 +398,7 @@ public class ServerPlayerGameMode { } else {capturedBlockEntity = true;} // Paper end return false; } diff --git a/patches/server/0159-Configurable-broadcast-settings.patch b/patches/server/0159-Configurable-broadcast-settings.patch index d99b1a593..4a4ababf4 100644 --- a/patches/server/0159-Configurable-broadcast-settings.patch +++ b/patches/server/0159-Configurable-broadcast-settings.patch @@ -17,10 +17,10 @@ index 0b3a06027f2c600960cd88159803be187c4d0317..533a348acb53c8e7590f3d81c19e53a6 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6b61c985be3c19221b229542f0d0e902d085a772..e2627f8bb71375eccaff4706b74285263e28f2b1 100644 +index ff02dc1687ca079b1798bf8f21ee6af425c42ef4..8f01bc6a58c35cc8be77413174b055a8d707290d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1004,6 +1004,7 @@ public class ServerPlayer extends Player { +@@ -1005,6 +1005,7 @@ public class ServerPlayer extends Player { })); Team scoreboardteambase = this.getTeam(); diff --git a/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch index f3aaa1682..704e05f48 100644 --- a/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch @@ -9,10 +9,10 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for creative players) instead of routing it through the LootableBuilder. diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index dbb08ce85ad38b325f02700e879f92c06d897268..0488fe39acf7191754707b7c8f424e6a3e32c152 100644 +index 2c9deba9da45feb81ed5801c33aa64e38f8d6a79..0838b3c612c832276afa1edc090ef7771e8bf2fc 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -427,7 +427,7 @@ public class ServerPlayerGameMode { +@@ -429,7 +429,7 @@ public class ServerPlayerGameMode { ItemStack mainHandStack = null; // Paper boolean isCorrectTool = false; // Paper diff --git a/patches/server/0177-Make-lightning-rod-range-configurable.patch b/patches/server/0177-Make-lightning-rod-range-configurable.patch index 12559dc29..a4c2b8fc9 100644 --- a/patches/server/0177-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0177-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5e832faa8b1ff45b0d4e01ab197cadfb2c480452..e759e4c772f5bd296554950ac4251ffcb3e78548 100644 +index cf14ddbe97dd16972dc2830a722f7ac23b1badd0..f377eff47cc12e7e7b0b237860b330dd28b6603d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1033,7 +1033,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1153,7 +1153,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0190-Customizable-sleeping-actionbar-messages.patch b/patches/server/0190-Customizable-sleeping-actionbar-messages.patch index d690e7e12..5f4eee5ae 100644 --- a/patches/server/0190-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0190-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 e759e4c772f5bd296554950ac4251ffcb3e78548..bbb3052a3b2704e25696457d53d0940664fa263a 100644 +index f377eff47cc12e7e7b0b237860b330dd28b6603d..d0806e5bd4db7a1c0f70aeb8b694d641c64be766 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1082,11 +1082,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1202,11 +1202,27 @@ public class ServerLevel extends Level implements WorldGenLevel { 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 e759e4c772f5bd296554950ac4251ffcb3e78548..bbb3052a3b2704e25696457d53d09406 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e2627f8bb71375eccaff4706b74285263e28f2b1..1bc77fccc2cc1bb0f532e476156f952fdf9e3897 100644 +index 8f01bc6a58c35cc8be77413174b055a8d707290d..0e176fbe456681be0ca3f6b6747bb60178c1f864 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1464,7 +1464,19 @@ public class ServerPlayer extends Player { +@@ -1465,7 +1465,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0195-Add-compass-command.patch b/patches/server/0195-Add-compass-command.patch index fcfda38b8..c3fb26bf2 100644 --- a/patches/server/0195-Add-compass-command.patch +++ b/patches/server/0195-Add-compass-command.patch @@ -17,10 +17,10 @@ index e254f7c498c5a1608afe130b2dd4d3d037069f25..af712f089e7919fa0bd3946866fd3486 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 1bc77fccc2cc1bb0f532e476156f952fdf9e3897..3e08dcd1a46adc6ef769f2cfc85970ad9cbbdd10 100644 +index 0e176fbe456681be0ca3f6b6747bb60178c1f864..0ea215df4ef613646fe48db36d4151b24f478484 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -276,6 +276,7 @@ public class ServerPlayer extends Player { +@@ -275,6 +275,7 @@ public class ServerPlayer extends Player { public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - 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 1bc77fccc2cc1bb0f532e476156f952fdf9e3897..3e08dcd1a46adc6ef769f2cfc85970ad // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -562,6 +563,7 @@ public class ServerPlayer extends Player { +@@ -563,6 +564,7 @@ public class ServerPlayer extends Player { } if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur @@ -36,7 +36,7 @@ index 1bc77fccc2cc1bb0f532e476156f952fdf9e3897..3e08dcd1a46adc6ef769f2cfc85970ad } @Override -@@ -629,6 +631,7 @@ public class ServerPlayer extends Player { +@@ -630,6 +632,7 @@ public class ServerPlayer extends Player { this.getBukkitEntity().setExtraData(nbt); // CraftBukkit nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur @@ -44,7 +44,7 @@ index 1bc77fccc2cc1bb0f532e476156f952fdf9e3897..3e08dcd1a46adc6ef769f2cfc85970ad } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2792,5 +2795,13 @@ public class ServerPlayer extends Player { +@@ -2793,5 +2796,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index e294e377e..edbf19e82 100644 --- a/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0209-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 bbb3052a3b2704e25696457d53d0940664fa263a..cb35bac1923fe40f172a521ce5892e0dcfd7e305 100644 +index d0806e5bd4db7a1c0f70aeb8b694d641c64be766..eed1384d006ff167826684d59d36bafa1f617867 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1241,6 +1241,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1361,6 +1361,7 @@ public class ServerLevel extends Level implements WorldGenLevel { private void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index bbb3052a3b2704e25696457d53d0940664fa263a..cb35bac1923fe40f172a521ce5892e0d this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // 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.... -@@ -1248,6 +1249,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1368,6 +1369,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch index e4512b2a1..9b18c0a34 100644 --- a/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 0488fe39acf7191754707b7c8f424e6a3e32c152..bcce65e453bec778739e8b2f9d89356f41dbbd20 100644 +index 0838b3c612c832276afa1edc090ef7771e8bf2fc..3250c21eded7872336d349a7a93c2c17160db723 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -516,6 +516,7 @@ public class ServerPlayerGameMode { +@@ -518,6 +518,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ index 0488fe39acf7191754707b7c8f424e6a3e32c152..bcce65e453bec778739e8b2f9d89356f BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); InteractionResult enuminteractionresult = InteractionResult.PASS; -@@ -618,4 +619,18 @@ public class ServerPlayerGameMode { +@@ -620,4 +621,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } diff --git a/patches/server/0217-UPnP-Port-Forwarding.patch b/patches/server/0217-UPnP-Port-Forwarding.patch index 406d513c4..42c313ca5 100644 --- a/patches/server/0217-UPnP-Port-Forwarding.patch +++ b/patches/server/0217-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index caaa154082fef69c6bf3ff6101242de5b037c583..5018f85fd87fe167389706bda04327bbe7d2c17a 100644 +index ca5a3c0e7b8aa1c419b63f5f38126f2377272299..e51df1613f2c379694a0a3a73fd9603ae063a621 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -111,7 +111,7 @@ index e7e2c8115b1f25039965f390c927b004e8b3f630..d4aad1e62e2473c48c35b2e4238c4f57 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1507,21 +1507,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -281,7 +281,7 @@ index dcf12bea1759d851d663896938ea101303ab63a5..3f0799cf3d9c5b9bfe3f29b1bf6cbdc9 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1117,17 +1117,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1115,17 +1115,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -303,7 +303,7 @@ index dcf12bea1759d851d663896938ea101303ab63a5..3f0799cf3d9c5b9bfe3f29b1bf6cbdc9 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 2ab16e10323982e193e647246bd116e31f17bad2..ead4d70df7f33ff984d288d14d774a4156abb4fd 100644 +index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf662288260 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -295,10 +295,10 @@ public class ServerChunkCache extends ChunkSource { @@ -380,7 +380,7 @@ index 2ab16e10323982e193e647246bd116e31f17bad2..ead4d70df7f33ff984d288d14d774a41 // Paper start - per player mob spawning NaturalSpawner.SpawnState spawnercreature_d; // moved down @@ -549,13 +549,13 @@ public class ServerChunkCache extends ChunkSource { - spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, this.chunkMap.playerMobDistanceMap == null ? new LocalMobCapCalculator(this.chunkMap) : null, false); + spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); } // Paper end - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings @@ -388,17 +388,17 @@ index 2ab16e10323982e193e647246bd116e31f17bad2..ead4d70df7f33ff984d288d14d774a41 this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("filteringLoadedChunks"); - List list = Lists.newArrayListWithCapacity(l); - Iterator iterator = this.chunkMap.getChunks().iterator(); + // Paper - optimise chunk tick iteration + // Paper - optimise chunk tick iteration - this.level.timings.chunkTicks.startTiming(); // Paper + //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - while (iterator.hasNext()) { - ChunkHolder playerchunk = (ChunkHolder) iterator.next(); -@@ -599,19 +599,19 @@ public class ServerChunkCache extends ChunkSource { - } + // Paper - optimise chunk tick iteration + +@@ -661,17 +661,17 @@ public class ServerChunkCache extends ChunkSource { } } + // Paper end - optimise chunk tick iteration - this.level.timings.chunkTicks.stopTiming(); // Paper + //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur gameprofilerfiller.popPush("customSpawners"); @@ -411,20 +411,26 @@ index 2ab16e10323982e193e647246bd116e31f17bad2..ead4d70df7f33ff984d288d14d774a41 } gameprofilerfiller.popPush("broadcast"); - list.forEach((chunkproviderserver_a1) -> { + // Paper - optimise chunk tick iteration - this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing + //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); + // Paper start - optimise chunk tick iteration + if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { + it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); +@@ -685,7 +685,7 @@ public class ServerChunkCache extends ChunkSource { + } + } + // Paper end - optimise chunk tick iteration - this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing + //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur - }); + // Paper - optimise chunk tick iteration 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 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe 100644 +index ff9adf5d04ad08342eeca166bd582774bf6f2cdd..1688fdea27342783f91b5cd0a09343ddac77dc6d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -736,7 +736,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -856,7 +856,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); gameprofilerfiller.popPush("tickPending"); @@ -433,7 +439,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 if (!this.isDebug()) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -745,20 +745,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -865,20 +865,20 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -461,7 +467,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 this.handlingTick = false; gameprofilerfiller.pop(); boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -769,7 +769,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -889,7 +889,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -470,7 +476,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 if (this.dragonFight != null) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -777,7 +777,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -479,7 +485,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 this.entityTickList.forEach((entity) -> { if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed -@@ -804,8 +804,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -924,8 +924,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -490,7 +496,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -946,7 +946,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1066,7 +1066,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper start - optimise random block ticking gameprofilerfiller.popPush("tickBlocks"); @@ -499,7 +505,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); final int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -979,7 +979,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1099,7 +1099,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking @@ -508,7 +514,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 gameprofilerfiller.pop(); } -@@ -1317,8 +1317,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1437,8 +1437,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -519,7 +525,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1334,7 +1334,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1454,7 +1454,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -528,7 +534,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1357,8 +1357,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1477,8 +1477,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -539,7 +545,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1388,7 +1388,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1508,7 +1508,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -548,7 +554,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 } } else { passenger.stopRiding(); -@@ -1408,14 +1408,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1528,14 +1528,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -566,7 +572,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1427,7 +1427,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1547,7 +1547,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -575,7 +581,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 } // Paper end -@@ -1441,7 +1441,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1561,7 +1561,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit @@ -584,7 +590,7 @@ index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1451,11 +1451,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1571,11 +1571,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -631,7 +637,7 @@ index 87e064670d336f1c3a86cdc524e2686c7ee5af72..9fa25455dd264ea0b58d5e1825fd8847 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index ad4f678de4aeeb7bb3d624f44dacc2c1d5200b1e..9942ab57f883f79719dff20f666912face27d5c4 100644 +index cf721106b861a8c166244efc2114e22d038aa3a7..5c38df8170033dbfee267520991a3cc3285d219e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1249,7 +1249,7 @@ public abstract class PlayerList { @@ -702,10 +708,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 282ec5085a8076790d2a24e7979b36c06a9bcba0..f9db7dde74ce1277a792497d078ed272e8b23d10 100644 +index 7773f9ce65a45388ee5fb2c472de784be00b1899..10276a6b2b311f9cf45b030e4dbb46e44faa04a5 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1299,15 +1299,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1302,15 +1302,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -724,7 +730,7 @@ index 282ec5085a8076790d2a24e7979b36c06a9bcba0..f9db7dde74ce1277a792497d078ed272 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; -@@ -1340,7 +1340,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1343,7 +1343,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -734,7 +740,7 @@ index 282ec5085a8076790d2a24e7979b36c06a9bcba0..f9db7dde74ce1277a792497d078ed272 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 64656c384863a6430e933e506d965ee628f08669..93af6e1a041a514e9b7198e0e510fa88b043439d 100644 +index 3cdddda9c0618e95288b81b975d499c8dd30c05f..6a5dddfd120760b3334d8a4c4ebde84744083392 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -133,7 +133,7 @@ public final class NaturalSpawner { @@ -746,7 +752,7 @@ index 64656c384863a6430e933e506d965ee628f08669..93af6e1a041a514e9b7198e0e510fa88 MobCategory[] aenumcreaturetype = NaturalSpawner.SPAWNING_CATEGORIES; int i = aenumcreaturetype.length; -@@ -188,7 +188,7 @@ public final class NaturalSpawner { +@@ -186,7 +186,7 @@ public final class NaturalSpawner { } } @@ -756,10 +762,10 @@ index 64656c384863a6430e933e506d965ee628f08669..93af6e1a041a514e9b7198e0e510fa88 } 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 7fccb874ca2de82cc652a440bd250d0d1295397d..b27e2e187f9edebdf53cfad3d410154c0751ac86 100644 +index 4abec88caab4116cfa318f7b66c6b1a8346a7401..7d60f8a4e3fa15d81628bba0f6b3c1fc9040535b 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -789,7 +789,7 @@ public class LevelChunk extends ChunkAccess { +@@ -790,7 +790,7 @@ public class LevelChunk extends ChunkAccess { this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -768,7 +774,7 @@ index 7fccb874ca2de82cc652a440bd250d0d1295397d..b27e2e187f9edebdf53cfad3d410154c this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -809,7 +809,7 @@ public class LevelChunk extends ChunkAccess { +@@ -810,7 +810,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -777,7 +783,7 @@ index 7fccb874ca2de82cc652a440bd250d0d1295397d..b27e2e187f9edebdf53cfad3d410154c } } } -@@ -1167,7 +1167,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1168,7 +1168,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -786,7 +792,7 @@ index 7fccb874ca2de82cc652a440bd250d0d1295397d..b27e2e187f9edebdf53cfad3d410154c BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1189,7 +1189,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1190,7 +1190,7 @@ public class LevelChunk extends ChunkAccess { // Paper end // Spigot start } finally { @@ -851,7 +857,7 @@ index 3f45bab0e9f7b3697e6d9d1092a1e6e579f7066f..4f1cf281c4bf68c37982d390da8779de long getCreatedAt() { diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index 628951be16da8f19f0e1a974a0b4efa86e873b99..af1717fe7be06e4828febc0d5737f086b9c08e08 100644 +index 7a2f46579352870cfbb32c343d7c68919758ffe3..60b8331a4327cc276b88420254495455babbe3b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -115,7 +115,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { diff --git a/patches/server/0266-Remove-Mojang-Profiler.patch b/patches/server/0266-Remove-Mojang-Profiler.patch index 23dde7309..f8fc13d8c 100644 --- a/patches/server/0266-Remove-Mojang-Profiler.patch +++ b/patches/server/0266-Remove-Mojang-Profiler.patch @@ -39,10 +39,10 @@ index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7 return b0; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d4aad1e62e2473c48c35b2e4238c4f5709b2352a..94b9a2f72dbdf85a95a9b99c45a66e7044f69f2a 100644 +index 66b528364bbd5baea08511eb8d10fbd37bd1cef7..189c904a3b0ac2d2b889e118bfd7c75e6ec5da3e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -333,13 +333,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1424,7 +1424,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur @@ -192,7 +192,7 @@ index d4aad1e62e2473c48c35b2e4238c4f5709b2352a..94b9a2f72dbdf85a95a9b99c45a66e70 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1589,17 +1589,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2543,40 +2544,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayListWithCapacity(l); - Iterator iterator = this.chunkMap.getChunks().iterator(); + // Paper - optimise chunk tick iteration + // Paper - optimise chunk tick iteration //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur -@@ -566,7 +566,7 @@ public class ServerChunkCache extends ChunkSource { - } - } + + // Paper - optimise chunk tick iteration - gameprofilerfiller.popPush("spawnAndTick"); + //gameprofilerfiller.popPush("spawnAndTick"); // Purpur boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - Collections.shuffle(list); -@@ -600,21 +600,21 @@ public class ServerChunkCache extends ChunkSource { - } + // Paper start - optimise chunk tick iteration +@@ -662,14 +662,14 @@ public class ServerChunkCache extends ChunkSource { } + // Paper end - optimise chunk tick iteration //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur - gameprofilerfiller.popPush("customSpawners"); + //gameprofilerfiller.popPush("customSpawners"); // Purpur @@ -541,11 +540,13 @@ index ead4d70df7f33ff984d288d14d774a4156abb4fd..d082b45777426b3737cb928f03936446 - gameprofilerfiller.popPush("broadcast"); + //gameprofilerfiller.popPush("broadcast"); // Purpur - list.forEach((chunkproviderserver_a1) -> { + // Paper - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); + // Paper start - optimise chunk tick iteration +@@ -687,8 +687,8 @@ public class ServerChunkCache extends ChunkSource { + // Paper end - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur - }); + // Paper - optimise chunk tick iteration - gameprofilerfiller.pop(); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur @@ -553,7 +554,7 @@ index ead4d70df7f33ff984d288d14d774a4156abb4fd..d082b45777426b3737cb928f03936446 this.chunkMap.tick(); } } -@@ -787,7 +787,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -861,7 +861,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -563,10 +564,10 @@ index ead4d70df7f33ff984d288d14d774a4156abb4fd..d082b45777426b3737cb928f03936446 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c3bb64ffe 100644 +index 1688fdea27342783f91b5cd0a09343ddac77dc6d..ac85cbd677a3833924d3eb393a0c0f5e51ed524e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -703,12 +703,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -823,12 +823,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void tick(BooleanSupplier shouldKeepTicking) { @@ -582,7 +583,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c this.advanceWeatherCycle(); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; -@@ -735,32 +735,32 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -855,32 +855,32 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); @@ -623,7 +624,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag) { -@@ -768,12 +768,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -888,12 +888,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag || this.emptyTime++ < 300) { @@ -639,7 +640,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -783,9 +783,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -903,9 +903,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else { @@ -651,7 +652,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -797,22 +797,21 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -917,22 +917,21 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -678,7 +679,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c } @Override -@@ -892,9 +891,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1012,9 +1011,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -690,7 +691,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder -@@ -933,7 +932,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1053,7 +1052,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -699,7 +700,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c if (!this.paperConfig().environment.disableIceAndSnow) { // Paper for (int l = 0; l < randomTickSpeed; ++l) { -@@ -945,7 +944,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1065,7 +1064,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper // Paper start - optimise random block ticking @@ -708,7 +709,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); -@@ -980,7 +979,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1100,7 +1099,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -717,7 +718,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c } private void tickIceAndSnow(boolean raining, BlockPos.MutableBlockPos blockposition1, final LevelChunk chunk) { // Paper - optimise chunk ticking -@@ -1321,19 +1320,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1441,19 +1440,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -742,7 +743,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1362,12 +1361,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1482,12 +1481,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -759,7 +760,7 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1379,7 +1378,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1499,7 +1498,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -769,10 +770,10 @@ index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c 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 4f9796dfb1243befb6fa41b4fd633951a4bf0fc6..3c44249e782d0e98689a58c719030dea2f007644 100644 +index 7aeaccaa6649a1c93567d07f6b955b9259d3a902..5722265ed3c1b411d2c7bf44d7d42b6420f6381a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1235,7 +1235,7 @@ public class ServerPlayer extends Player { +@@ -1236,7 +1236,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -781,7 +782,7 @@ index 4f9796dfb1243befb6fa41b4fd633951a4bf0fc6..3c44249e782d0e98689a58c719030dea worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1258,8 +1258,8 @@ public class ServerPlayer extends Player { +@@ -1259,8 +1259,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -792,7 +793,7 @@ index 4f9796dfb1243befb6fa41b4fd633951a4bf0fc6..3c44249e782d0e98689a58c719030dea if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1277,7 +1277,7 @@ public class ServerPlayer extends Player { +@@ -1278,7 +1278,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -802,7 +803,7 @@ index 4f9796dfb1243befb6fa41b4fd633951a4bf0fc6..3c44249e782d0e98689a58c719030dea this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 9bc03cd18bf30bc71f79a6c11f3f30664cf6b822..c0d9e65b8c52afc761c7ca7ec19501141a28aa3a 100644 +index edf3b0baa5a23dd957e2747677595cd5f5f7d55c..274b4cb9d008868d49c9578e15d2fecc50f8af8c 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -212,7 +212,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -1154,7 +1155,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9e07866c6597b62eb02985770c1fcffe6fb3f601..7bace36fb2c447cc2c7d07777a910c5867bbfe99 100644 +index 9ca3a8df8d4e0cd733c489c930b563888fb01ffa..a9b87083623050cf9b0a5311f0f687e0ada73137 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -411,7 +411,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1732,10 +1733,10 @@ index 45243249a561440512ef2a620c60b02e159c80e2..b26cea981a876fd42c9ab91923d507b3 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254b0070d57 100644 +index 10276a6b2b311f9cf45b030e4dbb46e44faa04a5..4e8738531ea388733c41dbb408eb43c1e3c88fad 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1296,9 +1296,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1299,9 +1299,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1747,7 +1748,7 @@ index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254 //timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1343,7 +1343,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1346,7 +1346,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1756,7 +1757,7 @@ index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254 spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1546,7 +1546,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1549,7 +1549,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1765,7 +1766,7 @@ index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1565,7 +1565,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1568,7 +1568,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1774,7 +1775,7 @@ index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1822,6 +1822,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1825,6 +1825,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { @@ -1783,7 +1784,7 @@ index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254 } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 93af6e1a041a514e9b7198e0e510fa88b043439d..ec95678e5fb3f36a35cd0e03c65184a8ee4c8609 100644 +index 6a5dddfd120760b3334d8a4c4ebde84744083392..f3ff965e641f561dbc1b5194353e75dc17e9a0ba 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -132,7 +132,7 @@ public final class NaturalSpawner { @@ -1795,7 +1796,7 @@ index 93af6e1a041a514e9b7198e0e510fa88b043439d..ec95678e5fb3f36a35cd0e03c65184a8 //world.timings.mobSpawn.startTiming(); // Spigot // Purpur MobCategory[] aenumcreaturetype = NaturalSpawner.SPAWNING_CATEGORIES; int i = aenumcreaturetype.length; -@@ -189,7 +189,7 @@ public final class NaturalSpawner { +@@ -187,7 +187,7 @@ public final class NaturalSpawner { } //world.timings.mobSpawn.stopTiming(); // Spigot // Purpur @@ -1805,10 +1806,10 @@ index 93af6e1a041a514e9b7198e0e510fa88b043439d..ec95678e5fb3f36a35cd0e03c65184a8 // Paper start 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 b27e2e187f9edebdf53cfad3d410154c0751ac86..5ba88bf9109ae1b6cf782b378a08ac7fd135f289 100644 +index 7d60f8a4e3fa15d81628bba0f6b3c1fc9040535b..8d385708df97d47881929d4352f1b90286aad1a2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -446,11 +446,11 @@ public class LevelChunk extends ChunkAccess { +@@ -447,11 +447,11 @@ public class LevelChunk extends ChunkAccess { if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1823,7 +1824,7 @@ index b27e2e187f9edebdf53cfad3d410154c0751ac86..5ba88bf9109ae1b6cf782b378a08ac7f } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1164,9 +1164,9 @@ public class LevelChunk extends ChunkAccess { +@@ -1165,9 +1165,9 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1835,7 +1836,7 @@ index b27e2e187f9edebdf53cfad3d410154c0751ac86..5ba88bf9109ae1b6cf782b378a08ac7f //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1178,7 +1178,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1179,7 +1179,7 @@ public class LevelChunk extends ChunkAccess { LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata}); } diff --git a/patches/server/0269-Debug-Marker-API.patch b/patches/server/0269-Debug-Marker-API.patch index 847a6867b..29a706b20 100644 --- a/patches/server/0269-Debug-Marker-API.patch +++ b/patches/server/0269-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index cb912efba182aff9e8f080aa473f78115eae8a47..8632e9cab6563b9ea0a01c2e5248ad658129d5ce 100644 +index 12b25d353990b6bcca3772c07ebe6472944b3166..c600c3579747281a7e463ea4dcb9335d8936f2e3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1543,6 +1543,42 @@ public final class CraftServer implements Server { @@ -52,10 +52,10 @@ index cb912efba182aff9e8f080aa473f78115eae8a47..8632e9cab6563b9ea0a01c2e5248ad65 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index e55438768a030cdcef433782e55f0fafc4f51db1..2b87e25c1b6627d4ccfb11f4c20c1796c897867f 100644 +index 791e69b2c963cd034d6d35561448cdb20b1b1cde..52b48e40c3ee5f483c6cb04409459cf25abc3f0d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2288,6 +2288,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2293,6 +2293,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } diff --git a/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch index 22f371302..567d4d6b6 100644 --- a/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch @@ -5,16 +5,15 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index ec95678e5fb3f36a35cd0e03c65184a8ee4c8609..a32ac7796c8cba94b02d854d47395cc1a513f770 100644 +index f3ff965e641f561dbc1b5194353e75dc17e9a0ba..51a4d0b212278a20363fd0d3cb253f0e3047e961 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -260,7 +260,8 @@ public final class NaturalSpawner { +@@ -258,7 +258,7 @@ public final class NaturalSpawner { blockposition_mutableblockposition.set(l, i, i1); double d0 = (double) l + 0.5D; double d1 = (double) i1 + 0.5D; - Player entityhuman = world.getNearestPlayer(d0, (double) i, d1, -1.0D, false); -+ Player entityhuman = world.getNearestPlayer(d0, (double) i, d1, -1.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers); // Purpur - diff on change -+ //Player entityhuman = (chunk instanceof LevelChunk) ? ((LevelChunk)chunk).findNearestPlayer(d0, i, d1, 576.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers ? net.minecraft.world.entity.EntitySelector.NO_CREATIVE_OR_SPECTATOR : net.minecraft.world.entity.EntitySelector.NO_SPECTATORS) : world.getNearestPlayer(d0, (double) i, d1, -1.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers); // Paper - use chunk's player cache to optimize search in range // Purpur // Purpur - TODO: Paper ++ Player entityhuman = world.getNearestPlayer(d0, (double) i, d1, -1.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers); // Purpur if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/patches/server/0274-Implement-ram-and-rambar-commands.patch b/patches/server/0274-Implement-ram-and-rambar-commands.patch index 2de035a73..f7303ac46 100644 --- a/patches/server/0274-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0274-Implement-ram-and-rambar-commands.patch @@ -18,10 +18,10 @@ index 9caab6541a224dc8f729a7d720eccda7bd83ed53..2fd376789bb24b14101e289733631a9a 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 3c44249e782d0e98689a58c719030dea2f007644..1b8325dfa185cf35bcb02e5e2485a78ef6f8c014 100644 +index 5722265ed3c1b411d2c7bf44d7d42b6420f6381a..99cf8ce63316e127a5ee84cdd96df80d440dc0c3 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -277,6 +277,7 @@ public class ServerPlayer extends Player { +@@ -276,6 +276,7 @@ public class ServerPlayer extends Player { public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur @@ -29,7 +29,7 @@ index 3c44249e782d0e98689a58c719030dea2f007644..1b8325dfa185cf35bcb02e5e2485a78e // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -562,6 +563,7 @@ public class ServerPlayer extends Player { +@@ -563,6 +564,7 @@ public class ServerPlayer extends Player { } } @@ -37,7 +37,7 @@ index 3c44249e782d0e98689a58c719030dea2f007644..1b8325dfa185cf35bcb02e5e2485a78e if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur } -@@ -630,6 +632,7 @@ public class ServerPlayer extends Player { +@@ -631,6 +633,7 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -45,7 +45,7 @@ index 3c44249e782d0e98689a58c719030dea2f007644..1b8325dfa185cf35bcb02e5e2485a78e nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2804,5 +2807,13 @@ public class ServerPlayer extends Player { +@@ -2805,5 +2808,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch index 592cc1964..80b9f46c1 100644 --- a/patches/server/0275-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -36,10 +36,10 @@ index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e2285 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 94b9a2f72dbdf85a95a9b99c45a66e7044f69f2a..d20aea388a568657f233d9e8b34b208d0d2ab01e 100644 +index 189c904a3b0ac2d2b889e118bfd7c75e6ec5da3e..9c4cec7cf323f6768a89358fa1a11b53ce335cd4 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1544,6 +1544,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop