diff --git a/PATCHES.md b/PATCHES.md index 7c578177..5ea8a430 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -57,7 +57,6 @@ # Patches | server | Fix the dead lagging the server | William Blake Galbreath | | | server | Fix villager dupe | Ivan Pekov | | | server | Giants AI settings | William Blake Galbreath | | -| server | Give them items motion | Ivan Pekov | | | server | Global Eula file | tr7zw | | | server | Heavily optimize furnance fuel and recipe lookups | tr7zw | | | server | Highly optimize VillagePlace filtering | Ivan Pekov | | @@ -65,6 +64,7 @@ # Patches | server | Implement bed explosion options | William Blake Galbreath | | | server | Implement respawn anchor explosion options | William Blake Galbreath | | | server | Improve Hopper Performance | Aikar | | +| server | Improve task performance | ishland | | | server | Item stuck sleep config | tr7zw | | | api | Kill AnnotationTest | tr7zw | | | server | Lagging threshold | William Blake Galbreath | | @@ -75,7 +75,6 @@ # Patches | api | Modify POM | tr7zw | | | server | Modify POM | tr7zw | | | server | Modify default configs | tr7zw | | -| server | Nuke Bootstrap thread pool | foss-mc | Ivan Pekov | | server | Nuke streams off BlockPosition | Ivan Pekov | | | server | Nuke streams off SectionPosition | Ivan Pekov | | | server | Optimize BehaviorController | MrIvanPlays | | @@ -103,6 +102,7 @@ # Patches | server | Remove vanilla profiler callers | Sotr | | | server | Respect PlayerKickEvent leaveMessage | Ivan Pekov | | | server | Send more packets immediately | MrIvanPlays | | +| server | Shutdown Bootstrap thread pool | foss-mc | | | server | Skip events if there's no listeners | William Blake Galbreath | | | server | Snowman drop and put back pumpkin | William Blake Galbreath | | | server | Squid EAR immunity | William Blake Galbreath | | diff --git a/Purpur b/Purpur index 242deeef..0743d383 160000 --- a/Purpur +++ b/Purpur @@ -1 +1 @@ -Subproject commit 242deeef8271d2ee02429eed461aec76f8af7a56 +Subproject commit 0743d383bdaffe39fce5260010301d8addf0b017 diff --git a/Rainforest b/Rainforest index c66f7d36..5a187d61 160000 --- a/Rainforest +++ b/Rainforest @@ -1 +1 @@ -Subproject commit c66f7d367f672ee5337fa7f505d9f6a685282d94 +Subproject commit 5a187d6192913e3f228aac1399744b75c9fef8c9 diff --git a/Tuinity b/Tuinity index d39cda09..76777f06 160000 --- a/Tuinity +++ b/Tuinity @@ -1 +1 @@ -Subproject commit d39cda09e5f32f4831a381c401fea0e6099c396f +Subproject commit 76777f06de65b8d24199e0c5f44fce687b3a1753 diff --git a/patches/server/0001-Yatopia-Server-Fixes.patch b/patches/server/0001-Yatopia-Server-Fixes.patch index b8092dbe..cceeb5f2 100644 --- a/patches/server/0001-Yatopia-Server-Fixes.patch +++ b/patches/server/0001-Yatopia-Server-Fixes.patch @@ -483,10 +483,10 @@ index 2291135eaef64c403183724cb6e413cd7e472672..6fcc7ed7c129e6a33386d65b37cbba4a public static long a(long i, EnumDirection enumdirection) { return a(i, enumdirection.getAdjacentX(), enumdirection.getAdjacentY(), enumdirection.getAdjacentZ()); diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index dde38e0222e658b5a841a32af3fc5153ecb02392..5af513cb052382c34e157110265f80a1a2efef15 100644 +index 3234d85aef03657a7bb4a037ee983d787d2930e8..e11b0495c31768919d4929766e740ffbc63005bb 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -739,11 +739,11 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -740,11 +740,11 @@ public class ChunkProviderServer extends IChunkProvider { if (this.a(playerchunk, l)) { GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler(); @@ -500,7 +500,7 @@ index dde38e0222e658b5a841a32af3fc5153ecb02392..5af513cb052382c34e157110265f80a1 if (this.a(playerchunk, l)) { this.chunkMapDistance.removeTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("No chunk holder after ticket has been added"))); -@@ -981,11 +981,11 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -983,11 +983,11 @@ public class ChunkProviderServer extends IChunkProvider { player.playerNaturallySpawnedEvent = event; } // Paper end - optimize isOutisdeRange @@ -514,12 +514,26 @@ index dde38e0222e658b5a841a32af3fc5153ecb02392..5af513cb052382c34e157110265f80a1 this.world.timings.countNaturalMobs.startTiming(); // Paper - timings int l = this.chunkMapDistance.b(); // Paper start - per player mob spawning +@@ -1019,11 +1019,11 @@ public class ChunkProviderServer extends IChunkProvider { + PlayerChunk playerchunk = chunk.playerChunk; + if (playerchunk != null) { // make sure load event has been called along with the load logic we put here + // Tuinity end - optimise chunk tick iteration +- this.world.getMethodProfiler().enter("broadcast"); ++ //this.world.getMethodProfiler().enter("broadcast"); // Akarin - remove caller + this.world.timings.broadcastChunkUpdates.startTiming(); // Paper - timings + playerchunk.a(chunk); // Tuinity + this.world.timings.broadcastChunkUpdates.stopTiming(); // Paper - timings +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + // Tuinity + + if (true) { // Tuinity diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej b/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej deleted file mode 100644 -index 7dd44fa8dc734862bf87691f1d7f4a5dae53b152..0000000000000000000000000000000000000000 +index 44987fc9343ff826dfba14504889d765655f079b..0000000000000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej +++ /dev/null -@@ -1,29 +0,0 @@ +@@ -1,43 +0,0 @@ -diff a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java (rejected hunks) -@@ -732,11 +732,11 @@ public class ChunkProviderServer extends IChunkProvider { - if (this.a(playerchunk, l)) { @@ -549,6 +563,20 @@ index 7dd44fa8dc734862bf87691f1d7f4a5dae53b152..00000000000000000000000000000000 - this.world.timings.countNaturalMobs.startTiming(); // Paper - timings - int l = this.chunkMapDistance.b(); - // Paper start - per player mob spawning +-@@ -1007,11 +1007,11 @@ public class ChunkProviderServer extends IChunkProvider { +- PlayerChunk playerchunk = chunk.playerChunk; +- if (playerchunk != null) { // make sure load event has been called along with the load logic we put there +- // Tuinity end - optimise chunk tick iteration +-- this.world.getMethodProfiler().enter("broadcast"); +-+ //this.world.getMethodProfiler().enter("broadcast"); // Akarin - remove caller +- this.world.timings.broadcastChunkUpdates.startTiming(); // Paper - timings +- playerchunk.a(chunk); // Tuinity +- this.world.timings.broadcastChunkUpdates.stopTiming(); // Paper - timings +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- // Tuinity +- +- if (true) { // Tuinity diff --git a/src/main/java/net/minecraft/server/ContainerSmithing.java b/src/main/java/net/minecraft/server/ContainerSmithing.java index 61ef3adcfb021e222042de62ad06a2e7d808f5b5..f53ff805c5edf6398498aad396144d0fc964c74f 100644 --- a/src/main/java/net/minecraft/server/ContainerSmithing.java @@ -683,10 +711,10 @@ index 8347faf8a7ee62d27cf5eb9f285695fddadfa624..00000000000000000000000000000000 - - AttributeDefaults.a(); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c509370279207 100644 +index bab072c9850a2c1f07b8f788871de8d6ebb5c891..45c1cbc84bbd7398c9c3bfd07e974c5e2b3dc549 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -438,7 +438,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -440,7 +440,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public void setPosition(double d0, double d1, double d2) { this.setPositionRaw(d0, d1, d2); //this.a(this.size.a(d0, d1, d2)); // Paper - move into setPositionRaw @@ -695,7 +723,7 @@ index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c5093 } protected void ae() { -@@ -521,7 +521,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -523,7 +523,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } this.justCreated = false; @@ -704,7 +732,7 @@ index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c5093 } public void resetPortalCooldown() { -@@ -2373,7 +2373,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2389,7 +2389,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke WorldServer worldserver1 = minecraftserver.getWorldServer(resourcekey); if (true && !this.isPassenger() && this.portalTicks++ >= i) { // CraftBukkit @@ -713,7 +741,7 @@ index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c5093 this.portalTicks = i; this.resetPortalCooldown(); // CraftBukkit start -@@ -2383,7 +2383,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2399,7 +2399,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.b(worldserver1); } // CraftBukkit end @@ -722,7 +750,7 @@ index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c5093 } this.inPortal = false; -@@ -2766,14 +2766,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2786,14 +2786,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } // Paper end if (this.world instanceof WorldServer && !this.dead) { @@ -739,7 +767,7 @@ index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c5093 ShapeDetectorShape shapedetectorshape = (location == null) ? this.a(worldserver) : new ShapeDetectorShape(new Vec3D(location.getX(), location.getY(), location.getZ()), Vec3D.ORIGIN, this.yaw, this.pitch, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -2806,10 +2806,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2826,10 +2826,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } this.bM(); @@ -752,7 +780,7 @@ index e8da5e4f6d7668fa2dc0361f7246b21933669206..26306687857100173e762578eb2c5093 return entity; } } else { -@@ -3044,7 +3044,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -3064,7 +3064,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke entity.a(entity1, Entity::teleportAndSync); } @@ -1784,7 +1812,7 @@ index 98a910fa6bfc9542b1d1cb56b6621809acd6b279..00000000000000000000000000000000 - TileEntity tileentity = block.isTileEntity() ? this.world.getTileEntity(blockposition) : null; - LootTableInfo.Builder loottableinfo_builder = (new LootTableInfo.Builder((WorldServer) this.world)).a(this.world.random).set(LootContextParameters.POSITION, blockposition).set(LootContextParameters.TOOL, ItemStack.b).setOptional(LootContextParameters.BLOCK_ENTITY, tileentity).setOptional(LootContextParameters.THIS_ENTITY, this.source); diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java -index 0bac6b0506dc35c5117f13db0e9c67b1a0d3154e..8ebc3b133a37538d82af92046c3ab40473afcf3f 100644 +index 567c1bb19020a76b3ce03d8b79b8982d51238dde..97267c4a5040617a24f8131739cc5ee4ac14f34f 100644 --- a/src/main/java/net/minecraft/server/IProjectile.java +++ b/src/main/java/net/minecraft/server/IProjectile.java @@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity { @@ -1795,7 +1823,7 @@ index 0bac6b0506dc35c5117f13db0e9c67b1a0d3154e..8ebc3b133a37538d82af92046c3ab404 IProjectile(EntityTypes entitytypes, World world) { super(entitytypes, world); -@@ -79,8 +80,29 @@ public abstract class IProjectile extends Entity { +@@ -90,6 +91,12 @@ public abstract class IProjectile extends Entity { } super.tick(); @@ -1805,32 +1833,15 @@ index 0bac6b0506dc35c5117f13db0e9c67b1a0d3154e..8ebc3b133a37538d82af92046c3ab404 + if (ticksLived > 200) this.tickDespawnCounter(); // Paper - tick despawnCounter regardless after 10 seconds + } + // Purpur end -+ } -+ -+ // Purpur start -+ protected void tickDespawnCounter() { // Purpur - modified from EntityArrow -+ if (getPurpurDespawnRate() != -1) { -+ ++this.despawnCounter; -+ if (this.despawnCounter >= getPurpurDespawnRate()) { -+ this.die(); -+ } -+ } } -+ protected int getPurpurDespawnRate() { -+ return -1; -+ } -+ // Purpur end -+ private boolean h() { - Entity entity = this.getShooter(); - diff --git a/src/main/java/net/minecraft/server/IProjectile.java.rej b/src/main/java/net/minecraft/server/IProjectile.java.rej deleted file mode 100644 -index c535c0f1c4c13b0ac0de806992778f602ea02675..0000000000000000000000000000000000000000 +index 963c90c065a9e362c8c3030bb36ac6bf0c14a8e2..0000000000000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/IProjectile.java.rej +++ /dev/null -@@ -1,39 +0,0 @@ +@@ -1,22 +0,0 @@ -diff a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java (rejected hunks) -@@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity { - private UUID shooter; @@ -1840,36 +1851,19 @@ index c535c0f1c4c13b0ac0de806992778f602ea02675..00000000000000000000000000000000 - - IProjectile(EntityTypes entitytypes, World world) { - super(entitytypes, world); --@@ -79,8 +80,29 @@ public abstract class IProjectile extends Entity { +-@@ -79,6 +91,12 @@ public abstract class IProjectile extends Entity { - } - - super.tick(); -+ -+ // Purpur start --+ if (!(this instanceof EntityArrow)) { --+ if (ticksLived > 200) this.tickDespawnCounter(); // Paper - tick despawnCounter regardless after 10 seconds +-+ if (!(this instanceof EntityArrow)) { // EntityArrow handles its own despawn counter +-+ this.tickDespawnCounter(); -+ } -+ // Purpur end --+ } --+ --+ // Purpur start --+ protected void tickDespawnCounter() { // Purpur - modified from EntityArrow --+ if (this.getPurpurDespawnRate() != -1) { --+ ++this.despawnCounter; --+ if (this.despawnCounter >= this.getPurpurDespawnRate()) { --+ this.die(); --+ } --+ } - } - --+ protected int getPurpurDespawnRate() { --+ return -1; --+ } --+ // Purpur end --+ - public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER -- private boolean h() { -- Entity entity = this.getShooter(); diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej b/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej deleted file mode 100644 index 74d10212e547adf96762155adb03c0158df00a16..0000000000000000000000000000000000000000 @@ -2118,10 +2112,10 @@ index fce02f5fcef5179e63997c0b06277601c911ecb7..00000000000000000000000000000000 - this.oldTicketLevel = this.ticketLevel; diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej b/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej deleted file mode 100644 -index 759862aba781ec6f1ae0c9a76c4ab6352d603a4c..0000000000000000000000000000000000000000 +index 21d74b79c4f5be946024cd382e1164ecd5fd69c3..0000000000000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej +++ /dev/null -@@ -1,84 +0,0 @@ +@@ -1,95 +0,0 @@ -diff a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java (rejected hunks) -@@ -480,53 +471,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - double playerChunkZ = MathHelper.floor(player.locZ()) >> 4; @@ -2206,6 +2200,17 @@ index 759862aba781ec6f1ae0c9a76c4ab6352d603a4c..00000000000000000000000000000000 - // Paper end - - if (chunkHolder.protoChunk != null) {try (Timing ignored2 = this.world.timings.chunkLoadLevelTimer.startTimingIfSync()) { // Paper start - timings // Paper - chunk is created async +-@@ -1317,7 +1328,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +- } +- +- if (list != null) { +-- list.forEach(chunk::b); +-+ for (Entity entity : list) { +-+ chunk.b(entity); +-+ } +- } +- } +- diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java index 9273fc22df2c9618efb09a8f95fd7e7f08652f88..67018d2abcca8f9dd71fc3a6bfff19c85e8bcef0 100644 --- a/src/main/java/net/minecraft/server/PortalTravelAgent.java @@ -2363,7 +2368,7 @@ index bada470cba41cce9beb9eb04227b42c1d489d731..00000000000000000000000000000000 - private int c; - private TileEntityShulkerBox.AnimationPhase i; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 00ef418aa0825dd147fedd91a552aa2437c7348f..702588cbab8aa2ced1a8f4b75d65552dd616efda 100644 +index ce2f69c2c0c67bc113ffdecd5d4f69865f631523..9c17b1feca7642d19df06c0cfc12ee926f0c8c86 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -96,6 +96,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -2382,7 +2387,7 @@ index 00ef418aa0825dd147fedd91a552aa2437c7348f..702588cbab8aa2ced1a8f4b75d65552d this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); -@@ -421,9 +423,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -412,9 +414,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { IBlockData iblockdata2 = this.getType(blockposition); if ((i & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.b((IBlockAccess) this, blockposition) != iblockdata1.b((IBlockAccess) this, blockposition) || iblockdata2.f() != iblockdata1.f() || iblockdata2.e() || iblockdata1.e())) { @@ -2483,7 +2488,7 @@ index 3a35169eaf680c45fe42922eb5f0014fa422c31c..00000000000000000000000000000000 - } - // Spigot Start diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index d70ce418a81de3a863c79e3f70737e80216bc95d..41e218f31d5d384d836fe03c474121e7a8e70e82 100644 +index 48260cc3cf98e850eff90ae628e9f59854d8e5cd..7ba007f44ffe062234e9277bc949f1d9cbea45fd 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -869,11 +869,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -2768,7 +2773,7 @@ index ff05ff6aef1e0f61eb4437253020632745ee2bd2..00000000000000000000000000000000 -+ } - } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 361f7857e461578e90cb71e15027dadaf794cb69..b3c31431afc34b249f88e5b3117b203c0e29a959 100644 +index 361f7857e461578e90cb71e15027dadaf794cb69..5ed0b725575bb300f52b48f95c8dc7dc5b51f670 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1,7 +1,18 @@ @@ -2790,7 +2795,7 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..b3c31431afc34b249f88e5b3117b203c import static net.pl3x.purpur.PurpurConfig.log; public class PurpurWorldConfig { -@@ -56,4 +67,214 @@ public class PurpurWorldConfig { +@@ -56,4 +67,216 @@ public class PurpurWorldConfig { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path)); } @@ -2980,65 +2985,69 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..b3c31431afc34b249f88e5b3117b203c + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); + } + -+ public int witherSkullDespawnRate = -1; + public int dragonFireballDespawnRate = -1; -+ public int largeFireballDespawnRate = -1; -+ public int smallFireballDespawnRate = -1; + public int eggDespawnRate = -1; + public int enderPearlDespawnRate = -1; -+ public int fireworksDespawnRate = -1; ++ public int expBottleDespawnRate = -1; ++ public int fireworkDespawnRate = -1; + public int fishingHookDespawnRate = -1; ++ public int largeFireballDespawnRate = -1; + public int potionDespawnRate = -1; + public int shulkerBulletDespawnRate = -1; -+ public int expBottleDespawnRate = -1; ++ public int smallFireballDespawnRate = -1; ++ public int snowballDespawnRate = -1; ++ public int witherSkullDespawnRate = -1; + private void projectileDespawnRateSettings() { -+ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); + dragonFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.dragon_fireball", dragonFireballDespawnRate); -+ largeFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireball", largeFireballDespawnRate); -+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate); + eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate); + enderPearlDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.ender_pearl", enderPearlDespawnRate); -+ fireworksDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireworks_rocket", fireworksDespawnRate); ++ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate); ++ fireworkDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.firework_rocket", fireworkDespawnRate); + fishingHookDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fishing_bobber", fishingHookDespawnRate); ++ largeFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireball", largeFireballDespawnRate); + potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate); + shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate); -+ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate); ++ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate); ++ snowballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.snowball", snowballDespawnRate); ++ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); + } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej deleted file mode 100644 -index a3f632f03a8a32d4975e0c8179f17baa27c28766..0000000000000000000000000000000000000000 +index f60ccb3a190e1f2e3418952387823e4c6b987758..0000000000000000000000000000000000000000 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej +++ /dev/null -@@ -1,33 +0,0 @@ +@@ -1,35 +0,0 @@ -diff a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java (rejected hunks) --@@ -145,6 +145,31 @@ public class PurpurWorldConfig { +-@@ -145,6 +145,33 @@ public class PurpurWorldConfig { - idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); - } - --+ public int witherSkullDespawnRate = -1; -+ public int dragonFireballDespawnRate = -1; --+ public int largeFireballDespawnRate = -1; --+ public int smallFireballDespawnRate = -1; -+ public int eggDespawnRate = -1; -+ public int enderPearlDespawnRate = -1; --+ public int fireworksDespawnRate = -1; +-+ public int expBottleDespawnRate = -1; +-+ public int fireworkDespawnRate = -1; -+ public int fishingHookDespawnRate = -1; +-+ public int largeFireballDespawnRate = -1; -+ public int potionDespawnRate = -1; -+ public int shulkerBulletDespawnRate = -1; --+ public int expBottleDespawnRate = -1; +-+ public int smallFireballDespawnRate = -1; +-+ public int snowballDespawnRate = -1; +-+ public int witherSkullDespawnRate = -1; -+ private void projectileDespawnRateSettings() { --+ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); -+ dragonFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.dragon_fireball", dragonFireballDespawnRate); --+ largeFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireball", largeFireballDespawnRate); --+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate); -+ eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate); -+ enderPearlDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.ender_pearl", enderPearlDespawnRate); --+ fireworksDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireworks_rocket", fireworksDespawnRate); +-+ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate); +-+ fireworkDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.firework_rocket", fireworkDespawnRate); -+ fishingHookDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fishing_bobber", fishingHookDespawnRate); +-+ largeFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireball", largeFireballDespawnRate); -+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate); -+ shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate); --+ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate); +-+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate); +-+ snowballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.snowball", snowballDespawnRate); +-+ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); -+ } -+ - public boolean useBetterMending = false; diff --git a/patches/server/0021-Optimize-TileEntity-load-unload.patch b/patches/server/0021-Optimize-TileEntity-load-unload.patch index d14e4e2d..b76ac8da 100644 --- a/patches/server/0021-Optimize-TileEntity-load-unload.patch +++ b/patches/server/0021-Optimize-TileEntity-load-unload.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize TileEntity load/unload diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 702588cbab8aa2ced1a8f4b75d65552dd616efda..1025237084d46cce2044b17458797282923aa3c7 100644 +index 9c17b1feca7642d19df06c0cfc12ee926f0c8c86..bb93c4c6d2be415efda602678a57bf3a509ab730 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -42,9 +42,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/server/0027-Fix-lead-fall-dmg-config.patch b/patches/server/0027-Fix-lead-fall-dmg-config.patch index e651f51d..2c63b7c2 100644 --- a/patches/server/0027-Fix-lead-fall-dmg-config.patch +++ b/patches/server/0027-Fix-lead-fall-dmg-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix lead fall dmg config diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 26306687857100173e762578eb2c509370279207..c6bbc620e163acea757b610e95169e8f0cf9fd1d 100644 +index 45c1cbc84bbd7398c9c3bfd07e974c5e2b3dc549..decad96e5affe07078624c2ef95dd1f5e79601b2 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1262,6 +1262,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1264,6 +1264,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.fallDistance = 0.0F; } else if (d0 < 0.0D) { this.fallDistance = (float) ((double) this.fallDistance - d0); diff --git a/patches/server/0028-Optimize-player-loops-around-weather.patch b/patches/server/0028-Optimize-player-loops-around-weather.patch index c1ec11db..efdb73c3 100644 --- a/patches/server/0028-Optimize-player-loops-around-weather.patch +++ b/patches/server/0028-Optimize-player-loops-around-weather.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize player loops around weather diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 41e218f31d5d384d836fe03c474121e7a8e70e82..4a31b93fcfefb44904fde0720953dcf995f6e5fb 100644 +index 7ba007f44ffe062234e9277bc949f1d9cbea45fd..0dd86a72b538ff140d8a7268cf1fe4e18ede33b5 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -814,12 +814,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/server/0031-Add-timings-for-Pathfinder.patch b/patches/server/0031-Add-timings-for-Pathfinder.patch index ca0955c5..c88a9483 100644 --- a/patches/server/0031-Add-timings-for-Pathfinder.patch +++ b/patches/server/0031-Add-timings-for-Pathfinder.patch @@ -18,7 +18,7 @@ index 68ab5ccb2fcfe1de0503c9336572f28e11832b2d..4d4c25cb328b0ca2e16d3c823214aca5 * Gets a timer associated with a plugins tasks. * @param bukkitTask diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java -index d26f8499460c7a26b4e26a39cf52c0d8d2510a80..888744131fd4b51d035be51aa0c9e3fb7e3997b4 100644 +index 0fd68e787a0d7dd558c8de62239b0b5e3960756b..9a5a6a2276bb08a9b7bb88f498a0d0fe031f5265 100644 --- a/src/main/java/net/minecraft/server/NavigationAbstract.java +++ b/src/main/java/net/minecraft/server/NavigationAbstract.java @@ -29,6 +29,7 @@ public abstract class NavigationAbstract { diff --git a/patches/server/0034-lithium-collision-optimizations.patch b/patches/server/0034-lithium-collision-optimizations.patch index 9e5f05e6..a099f524 100644 --- a/patches/server/0034-lithium-collision-optimizations.patch +++ b/patches/server/0034-lithium-collision-optimizations.patch @@ -758,7 +758,7 @@ index 0000000000000000000000000000000000000000..493103d755c222f2c6031ffb8f5c0b7a + Collection getAllOfGroupType(EntityClassGroup type); +} diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index ac6e5e3309affc830d4db07fd9b8d809c3085033..37a3b26cdeb02acb8051f0a99313de7923ebae3b 100644 +index e852fd5b4a70397e2b3a5e6cc35e192deb1a8196..40b174cf0ca8d106c1546dfb0323aa4c99f9a0aa 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -36,7 +36,7 @@ public class Chunk implements IChunkAccess { @@ -799,7 +799,7 @@ index ac6e5e3309affc830d4db07fd9b8d809c3085033..37a3b26cdeb02acb8051f0a99313de79 if (nextSlice == currentSlice) { if (World.DEBUG_ENTITIES) MinecraftServer.LOGGER.warn("Entity was already in this chunk!" + entity, new Throwable()); return; // ??? silly plugins -@@ -930,12 +930,12 @@ public class Chunk implements IChunkAccess { +@@ -936,12 +936,12 @@ public class Chunk implements IChunkAccess { j = MathHelper.clamp(j, 0, this.entitySlices.length - 1); for (int k = i; k <= j; ++k) { @@ -816,7 +816,7 @@ index ac6e5e3309affc830d4db07fd9b8d809c3085033..37a3b26cdeb02acb8051f0a99313de79 if (entity1.shouldBeRemoved) continue; // Paper if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) { -@@ -1066,7 +1066,7 @@ public class Chunk implements IChunkAccess { +@@ -1072,7 +1072,7 @@ public class Chunk implements IChunkAccess { return this.tileEntities; } @@ -826,10 +826,10 @@ index ac6e5e3309affc830d4db07fd9b8d809c3085033..37a3b26cdeb02acb8051f0a99313de79 } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index c6bbc620e163acea757b610e95169e8f0cf9fd1d..388be69fb55c6b1cfd5ccc7635b54aa648728768 100644 +index decad96e5affe07078624c2ef95dd1f5e79601b2..228c17966e51b726768ef7bb6d15e00aa1599b3f 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -72,7 +72,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -73,7 +73,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } } }; @@ -996,10 +996,10 @@ index 882b82d8952d34f6e3c639404d1a1521dedf1bb0..ccf1416000354b78ccef78b072062ce0 default EntityHuman findNearbyPlayer(Entity entity, double d0, @Nullable Predicate predicate) { return this.findNearbyPlayer(entity.locX(), entity.locY(), entity.locZ(), d0, predicate); } // Paper diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 8fd74f076713fa3ec289ee69d4d9a78f10139f8e..15df27eabfee965e6fd63ad74e5be9a991f0d4da 100644 +index 9dd8abcf643ef066b79e87a11a9316b070d3df6e..11a3d358024dbee71aa6a03a641f4c8252b461a9 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1341,11 +1341,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1367,11 +1367,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { chunk.setLoaded(true); this.world.a(chunk.getTileEntities().values()); List list = null; @@ -1013,7 +1013,7 @@ index 8fd74f076713fa3ec289ee69d4d9a78f10139f8e..15df27eabfee965e6fd63ad74e5be9a9 Iterator iterator = entityslice.iterator(); while (iterator.hasNext()) { -@@ -1638,7 +1638,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1666,7 +1666,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // CraftBukkit - decompile error csvwriter.a(chunkcoordintpair.x, chunkcoordintpair.z, playerchunk.getTicketLevel(), optional.isPresent(), optional.map(IChunkAccess::getChunkStatus).orElse(null), optional1.map(Chunk::getState).orElse(null), a(playerchunk.c()), a(playerchunk.a()), a(playerchunk.b()), this.chunkDistanceManager.c(entry.getLongKey()), !this.isOutsideOfRange(chunkcoordintpair), optional1.map((chunk) -> { int sum = 0; @@ -1023,7 +1023,7 @@ index 8fd74f076713fa3ec289ee69d4d9a78f10139f8e..15df27eabfee965e6fd63ad74e5be9a9 sum += size; } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 4a31b93fcfefb44904fde0720953dcf995f6e5fb..2ff11785fec05b7049d9bd76f54628f362beb35c 100644 +index 0dd86a72b538ff140d8a7268cf1fe4e18ede33b5..87fbc28847a3a6232861d36f3fa2f038c4664239 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -649,8 +649,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/server/0038-Load-also-the-chunk-that-you-re-teleporting-to.patch b/patches/server/0038-Load-also-the-chunk-that-you-re-teleporting-to.patch index 93dcf971..d10bfa77 100644 --- a/patches/server/0038-Load-also-the-chunk-that-you-re-teleporting-to.patch +++ b/patches/server/0038-Load-also-the-chunk-that-you-re-teleporting-to.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Load also the chunk that you're teleporting to Fixes Tuinity-178 diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 2ff11785fec05b7049d9bd76f54628f362beb35c..56d97496807373b00d8f213a1aa0f96f14dc4058 100644 +index 87fbc28847a3a6232861d36f3fa2f038c4664239..a21322ffd0bbb0c24b45cac9e2992c44d9c2977a 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -225,7 +225,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/server/0040-Nuke-streams-off-BlockPosition.patch b/patches/server/0040-Nuke-streams-off-BlockPosition.patch index 34bdbb04..1ba8c846 100644 --- a/patches/server/0040-Nuke-streams-off-BlockPosition.patch +++ b/patches/server/0040-Nuke-streams-off-BlockPosition.patch @@ -89,10 +89,10 @@ index e6b5a21c523c598f53207d024322301fbae74825..5e0aa6e35b1d4e23fdf42add15420665 return a(MathHelper.floor(axisalignedbb.minX), MathHelper.floor(axisalignedbb.minY), MathHelper.floor(axisalignedbb.minZ), MathHelper.floor(axisalignedbb.maxX), MathHelper.floor(axisalignedbb.maxY), MathHelper.floor(axisalignedbb.maxZ)); } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 388be69fb55c6b1cfd5ccc7635b54aa648728768..71210cfb2079e92392323e9df945975fed0ac9d4 100644 +index 228c17966e51b726768ef7bb6d15e00aa1599b3f..9dfc5649b552a8cb16092fe6b20aa1c181b59d5e 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -800,11 +800,25 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -802,11 +802,25 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke float f2 = this.getBlockSpeedFactor(); this.setMot(this.getMot().d((double) f2, 1.0D, (double) f2)); diff --git a/patches/server/0046-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch similarity index 83% rename from patches/server/0046-Fix-LightEngineThreaded-memory-leak.patch rename to patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch index b7e3c56d..c1fb6d30 100644 --- a/patches/server/0046-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix LightEngineThreaded memory leak diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index ceaa92400678aef3bf436279dd807e4b38609dda..d9bbac17c5767df638fc4464e9795d5c842c3056 100644 +index fd0beefb900c064d3c35a3d2f79f5b7d9c1287bb..4d024a4849b7566c0faba131caab57b4ddf35e29 100644 --- a/src/main/java/net/minecraft/server/LightEngineThreaded.java +++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java -@@ -114,6 +114,8 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { +@@ -104,6 +104,8 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { } } @@ -18,7 +18,7 @@ index ceaa92400678aef3bf436279dd807e4b38609dda..d9bbac17c5767df638fc4464e9795d5c return this.size == 0 && this.pendingTasks.isEmpty(); } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 56d97496807373b00d8f213a1aa0f96f14dc4058..61aaa916b1a0e0ce9898b26381f4f22669730f57 100644 +index a21322ffd0bbb0c24b45cac9e2992c44d9c2977a..d53a9aa95c00b1ca7cf98fc88f49e3debff691a8 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1815,6 +1815,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/server/0045-Give-them-items-motion.patch b/patches/server/0045-Give-them-items-motion.patch deleted file mode 100644 index e9621e1b..00000000 --- a/patches/server/0045-Give-them-items-motion.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ivan Pekov -Date: Thu, 10 Sep 2020 20:55:13 +0300 -Subject: [PATCH] Give them items motion - - -diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 71210cfb2079e92392323e9df945975fed0ac9d4..7981875bb6b56d3a0d085ee924f1e61269e111c6 100644 ---- a/src/main/java/net/minecraft/server/Entity.java -+++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1547,7 +1547,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke - } - - public void setPositionRotation(double d0, double d1, double d2, float f, float f1) { -- this.mot = new Vec3D(0, 0, 0); // Paper - cancel entity velocity if teleported -+ if (this instanceof EntityPlayer) { this.mot = Vec3D.ORIGIN; } // Paper - cancel entity velocity if teleported // Yatopia - fix PaperMC-4292 - this.g(d0, d1, d2); - this.yaw = f; - this.pitch = f1; diff --git a/patches/server/0047-Respect-PlayerKickEvent-leaveMessage.patch b/patches/server/0046-Respect-PlayerKickEvent-leaveMessage.patch similarity index 100% rename from patches/server/0047-Respect-PlayerKickEvent-leaveMessage.patch rename to patches/server/0046-Respect-PlayerKickEvent-leaveMessage.patch diff --git a/patches/server/0048-Nuke-Bootstrap-thread-pool.patch b/patches/server/0047-Shutdown-Bootstrap-thread-pool.patch similarity index 66% rename from patches/server/0048-Nuke-Bootstrap-thread-pool.patch rename to patches/server/0047-Shutdown-Bootstrap-thread-pool.patch index 170e64f5..eadda11d 100644 --- a/patches/server/0048-Nuke-Bootstrap-thread-pool.patch +++ b/patches/server/0047-Shutdown-Bootstrap-thread-pool.patch @@ -1,15 +1,14 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: foss-mc <69294560+foss-mc@users.noreply.github.com> Date: Sat, 12 Sep 2020 11:12:23 +0800 -Subject: [PATCH] Nuke Bootstrap thread pool +Subject: [PATCH] Shutdown Bootstrap thread pool -Co-authored-by: Ivan Pekov diff --git a/src/main/java/net/minecraft/server/DataConverterRegistry.java b/src/main/java/net/minecraft/server/DataConverterRegistry.java -index 48e31e9142ffeb2725af6b1f483de67410e25694..1b5b06cad7771a7d351aca0a009d902f23f07d9d 100644 +index 48e31e9142ffeb2725af6b1f483de67410e25694..b149e32aac86ce2f7521958fa7394e4f5b852174 100644 --- a/src/main/java/net/minecraft/server/DataConverterRegistry.java +++ b/src/main/java/net/minecraft/server/DataConverterRegistry.java -@@ -15,14 +15,15 @@ public class DataConverterRegistry { +@@ -15,14 +15,16 @@ public class DataConverterRegistry { private static final BiFunction a = Schema::new; private static final BiFunction b = DataConverterSchemaNamed::new; @@ -23,14 +22,15 @@ index 48e31e9142ffeb2725af6b1f483de67410e25694..1b5b06cad7771a7d351aca0a009d902f a(datafixerbuilder); - return datafixerbuilder.build(SystemUtils.e()); -+ c = datafixerbuilder.build(SystemUtils.getMainExecutor()); ++ c = datafixerbuilder.build(SystemUtils.d); ++ SystemUtils.d.shutdown(); } + // Yatopia end public static DataFixer getDataFixer() { return a(); } // Paper - OBFHELPER public static DataFixer a() { diff --git a/src/main/java/net/minecraft/server/SystemUtils.java b/src/main/java/net/minecraft/server/SystemUtils.java -index 869dcf1545601358a273a5cfb47afa88fa13a11c..cbb5bcbeaac5487c99b6f2171a5ba28ea7fe171a 100644 +index 869dcf1545601358a273a5cfb47afa88fa13a11c..94fadd3d7ea7cdea07cb3fdc9e9bb1f92da0afcd 100644 --- a/src/main/java/net/minecraft/server/SystemUtils.java +++ b/src/main/java/net/minecraft/server/SystemUtils.java @@ -48,7 +48,7 @@ import org.apache.logging.log4j.Logger; @@ -38,21 +38,7 @@ index 869dcf1545601358a273a5cfb47afa88fa13a11c..cbb5bcbeaac5487c99b6f2171a5ba28e private static final AtomicInteger c = new AtomicInteger(1); - private static final ExecutorService d = a("Bootstrap", -2); // Paper - add -2 priority -+ //private static final ExecutorService d = a("Bootstrap", -2); // Paper - add -2 priority // Yatopia - nuke this shit ++ public static final ExecutorService d = a("Bootstrap", -2); // Paper - add -2 priority // Yatopia - private -> public private static final ExecutorService e = a("Main", -1); // Paper - add -1 priority private static final ExecutorService f = n(); public static LongSupplier a = System::nanoTime; -@@ -111,10 +111,13 @@ public class SystemUtils { - return (ExecutorService) object; - } - -+ /* // Yatopia start - ditch this - public static Executor e() { - return SystemUtils.d; - } -+ */ // Yatopia end - -+ public static Executor getMainExecutor() { return f(); } // Yatopia - OBFHELPER - public static Executor f() { - return SystemUtils.e; - } diff --git a/patches/server/0049-Optimize-Villagers.patch b/patches/server/0048-Optimize-Villagers.patch similarity index 100% rename from patches/server/0049-Optimize-Villagers.patch rename to patches/server/0048-Optimize-Villagers.patch diff --git a/patches/server/0050-Fix-villager-dupe.patch b/patches/server/0049-Fix-villager-dupe.patch similarity index 100% rename from patches/server/0050-Fix-villager-dupe.patch rename to patches/server/0049-Fix-villager-dupe.patch