diff --git a/PATCHES.md b/PATCHES.md index da7f5016..d2192f49 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -118,7 +118,6 @@ # Patches | server | Stop squids floating on top of water | William Blake Galbreath | | | server | Stop wasting resources on JsonList#get | Ivan Pekov | | | server | Swaps the predicate order of collision | ㄗㄠˋ ㄑㄧˊ | | -| server | Tic-Tacs Threading Fix | gegy1000 | | | server | Timings stuff | William Blake Galbreath | | | server | Tulips change fox type | William Blake Galbreath | | | server | Use block distance in portal search radius | Patrick Hemmer | | @@ -144,3 +143,4 @@ # Patches | server | lithium enum_values | JellySquid | | | server | lithium-MixinChunkGeneratorAbstract | JellySquid | tr7zw | | server | lithium-MixinDataWatcher | JellySquid | tr7zw | +| server | tic-tacs Threading Fix | gegy1000 | | diff --git a/Tuinity b/Tuinity index fb292c13..8d982c4a 160000 --- a/Tuinity +++ b/Tuinity @@ -1 +1 @@ -Subproject commit fb292c134bd4386e384fd8fc3905b9ff1f1662f9 +Subproject commit 8d982c4a8c7292c57c2ddea2f95561f249a70033 diff --git a/patches/server/0001-Yatopia-Server-Fixes.patch b/patches/server/0001-Yatopia-Server-Fixes.patch index bab7e9fc..aee89b3f 100644 --- a/patches/server/0001-Yatopia-Server-Fixes.patch +++ b/patches/server/0001-Yatopia-Server-Fixes.patch @@ -721,7 +721,7 @@ 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 bab072c9850a2c1f07b8f788871de8d6ebb5c891..45c1cbc84bbd7398c9c3bfd07e974c5e2b3dc549 100644 +index fccac739adfd31c6a4c6a821c377268394b8666f..2058627ae1322b439c0b8513708145112f791d49 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -440,7 +440,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -1899,7 +1899,7 @@ index 74d10212e547adf96762155adb03c0158df00a16..00000000000000000000000000000000 - ran = true; - } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 58616542c1b69290e19d4cd9f4e0e92911d8a1f7..3b7d648fea24bc07d56505123a59c4f8de6bb3dd 100644 +index ad2c60a04d7d239f4621613acfb265db7512d162..4b85fb34051f286b08d23ff25cbd0c7a1c0a2a21 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -999,7 +999,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { return IRegistry.ENTITY_TYPE.getKey(entity.getEntityType()).toString(); }); @@ -2607,24 +2563,17 @@ index 6c8116a6461a28f5d99124743392736c1c67968f..d00a42ce477aee3127bfd6839dee984d } this.chunkCheck(entity); -@@ -1422,7 +1422,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - // Tuinity end - } - -- this.getMethodProfiler().exit(); -+ //this.getMethodProfiler().exit(); // Akarin - remove caller - } - } - diff --git a/src/main/java/net/minecraft/server/WorldServer.java.rej b/src/main/java/net/minecraft/server/WorldServer.java.rej -deleted file mode 100644 -index 82cfbef39662d079a9ffef57c9a768c499b1c8f1..0000000000000000000000000000000000000000 +index 72e1528c1250a4b59abed862c8ccb2507a66c862..d62e4a7c698bd9253914bb31c5e6389b67e589b6 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java.rej -+++ /dev/null -@@ -1,119 +0,0 @@ --diff a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java (rejected hunks) ++++ b/src/main/java/net/minecraft/server/WorldServer.java.rej +@@ -1,70 +1,54 @@ + diff a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java (rejected hunks) -@@ -887,11 +887,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { -- ++@@ -924,7 +924,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++ } ++ // CraftBukkit end */ + - this.N(); - this.b(); -- gameprofilerfiller.exitEnter("chunkSource"); @@ -2639,7 +2588,15 @@ index 82cfbef39662d079a9ffef57c9a768c499b1c8f1..00000000000000000000000000000000 - this.nextTickListBlock.b(); -@@ -900,17 +900,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { - timings.scheduledBlocks.stopTiming(); // Paper -- ++- gameprofilerfiller.enter("checkDespawn"); +++ //gameprofilerfiller.enter("checkDespawn"); // Akarin - remove caller ++ if (!entity.dead) { ++ entity.checkDespawn(); ++ // Tuinity start - optimise notify() ++@@ -936,7 +936,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++ // Tuinity end - optimise notify() ++ } + - // Tuinity - replace logic -- gameprofilerfiller.exitEnter("raid"); -+ //gameprofilerfiller.exitEnter("raid"); // Akarin - remove caller @@ -2656,56 +2613,39 @@ index 82cfbef39662d079a9ffef57c9a768c499b1c8f1..00000000000000000000000000000000 -- gameprofilerfiller.exitEnter("entities"); -+ //gameprofilerfiller.exitEnter("entities"); // Akarin - remove caller - boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -- ++- gameprofilerfiller.exit(); +++ //gameprofilerfiller.exit(); // Akarin - remove caller ++ if (entity1 != null) { ++ if (!entity1.dead && entity1.w(entity)) { ++ continue; ++@@ -945,13 +945,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++ entity.stopRiding(); ++ } + - if (flag3) { --@@ -943,12 +943,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { -- } -- // CraftBukkit end */ -- --- gameprofilerfiller.enter("checkDespawn"); --+ //gameprofilerfiller.enter("checkDespawn"); // Akarin - remove caller -- if (!entity.dead) { -- entity.checkDespawn(); -- } -- --- gameprofilerfiller.exit(); --+ //gameprofilerfiller.exit(); // Akarin - remove caller -- if (entity1 != null) { -- if (!entity1.dead && entity1.w(entity)) { -- continue; --@@ -957,20 +957,20 @@ public class WorldServer extends World implements GeneratorAccessSeed { -- entity.stopRiding(); -- } -- --- gameprofilerfiller.enter("tick"); --+ //gameprofilerfiller.enter("tick"); // Akarin - remove caller -- if (!entity.dead && !(entity instanceof EntityComplexPart)) { -- this.a(this::entityJoinedWorld, entity); -- } -- --- gameprofilerfiller.exit(); --- gameprofilerfiller.enter("remove"); --+ //gameprofilerfiller.exit(); // Akarin - remove caller --+ //gameprofilerfiller.enter("remove"); // Akarin - remove caller -- if (entity.dead) { -- this.removeEntityFromChunk(entity); -- this.entitiesById.remove(entity.getId()); // Tuinity -- this.unregisterEntity(entity); -- } -- --- gameprofilerfiller.exit(); --+ //gameprofilerfiller.exit(); // Akarin - remove caller -- } -- timings.entityTick.stopTiming(); // Spigot -- -@@ -1049,7 +1049,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - int k = chunkcoordintpair.e(); - GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); -- ++- gameprofilerfiller.enter("tick"); +++ //gameprofilerfiller.enter("tick"); // Akarin - remove caller ++ if (!entity.dead && !(entity instanceof EntityComplexPart)) { ++ this.a(this::entityJoinedWorld, entity); ++ } + -- gameprofilerfiller.enter("thunder"); -+ //gameprofilerfiller.enter("thunder"); // Akarin - remove caller - final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change -- ++- gameprofilerfiller.exit(); ++- gameprofilerfiller.enter("remove"); +++ //gameprofilerfiller.exit(); // Akarin - remove caller +++ //gameprofilerfiller.enter("remove"); // Akarin - remove caller ++ if (entity.dead) { ++ this.removeEntityFromChunk(entity); ++ this.entitiesById.remove(entity.getId()); // Tuinity ++@@ -963,7 +963,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++ } ++ // Tuinity end - optimise notify() + - if (!this.paperConfig.disableThunder && flag && this.T() && this.random.nextInt(100000) == 0) { // Paper - Disable thunder -@@ -1284,10 +1284,10 @@ public class WorldServer extends World implements GeneratorAccessSeed { - gameprofilerfiller.a(() -> { @@ -2715,10 +2655,11 @@ index 82cfbef39662d079a9ffef57c9a768c499b1c8f1..00000000000000000000000000000000 -+ //gameprofilerfiller.c("tickNonPassenger"); // Akarin - remove caller - entity.tick(); - entity.postTick(); // CraftBukkit --- gameprofilerfiller.exit(); --+ //gameprofilerfiller.exit(); // Akarin - remove caller -- } -- + - gameprofilerfiller.exit(); + + //gameprofilerfiller.exit(); // Akarin - remove caller + } ++ timings.entityTick.stopTiming(); // Spigot + - this.chunkCheck(entity); -@@ -1325,9 +1325,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { - gameprofilerfiller.a(() -> { @@ -2730,17 +2671,16 @@ index 82cfbef39662d079a9ffef57c9a768c499b1c8f1..00000000000000000000000000000000 -- gameprofilerfiller.exit(); -+ //gameprofilerfiller.exit(); // Akarin - remove caller - } -- ++@@ -1422,7 +1422,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++ // Tuinity end ++ } ++ ++- this.getMethodProfiler().exit(); +++ //this.getMethodProfiler().exit(); // Akarin - remove caller ++ } ++ } + - this.chunkCheck(entity1); --@@ -1377,7 +1377,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { -- } -- } -- --- this.getMethodProfiler().exit(); --+ //this.getMethodProfiler().exit(); // Akarin - remove caller -- } -- } -- diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 4a7285bd8e9ba3b7ad94c67c1880cc216cea5bc9..b7000990cfbf8116e9c3e98ea8e84e6541a989c8 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -3134,7 +3074,7 @@ index 44b67715e6c1b113b4651a965e8006e9a10a05bf..00000000000000000000000000000000 - // Purpur end - } diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 210cb10ea75b99d3b5d7b5bce5cea44e3cc0fc20..62012d2b780d3399bd641ca3ca4a4ac127e3bcb5 100644 +index 16fd48c617ebced744966fd1b4cd155c20774ef4..b3651d69720cd40593d0febb58380203972ca87b 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -154,6 +154,14 @@ public class Main { diff --git a/patches/server/0003-Brandings.patch b/patches/server/0003-Brandings.patch index 206c07b2..613e31c2 100644 --- a/patches/server/0003-Brandings.patch +++ b/patches/server/0003-Brandings.patch @@ -39,7 +39,7 @@ index 74ed02fa9296583977bb721014b10ff8b708b43c..a13c7b2b5bc79ecaea404779149ed02c .completer(new ConsoleCommandCompleter(this.server)) ); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3b7d648fea24bc07d56505123a59c4f8de6bb3dd..323d489b1e690500986bc0cbb4c2c93cc193bf70 100644 +index 4b85fb34051f286b08d23ff25cbd0c7a1c0a2a21..05305007e2118c618f1bd24985cc108d2efb0204 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1519,7 +1519,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 323d489b1e690500986bc0cbb4c2c93cc193bf70..54e54cf4ed710923cc93d4ba77c378547761c8a1 100644 +index 05305007e2118c618f1bd24985cc108d2efb0204..da95d52943550de946d85261bf0e20f9a43ea438 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -928,6 +928,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 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 fbb36229ce936e323619457b618627254cc2ade8..9b7e6d747b366f5967754f1a37ee362aa92e4947 100644 +index c3eb85c71539ebdb1b6c9a386e4de9ba717f030e..9f32a26fdbfaf024cfe5c0996c2253f2dd581d5e 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1351,11 +1351,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1343,11 +1343,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { chunk.setLoaded(true); this.world.a(chunk.getTileEntities().values()); List list = null; @@ -1045,7 +1045,7 @@ index fbb36229ce936e323619457b618627254cc2ade8..9b7e6d747b366f5967754f1a37ee362a Iterator iterator = entityslice.iterator(); while (iterator.hasNext()) { -@@ -1648,7 +1648,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1640,7 +1640,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; @@ -1069,7 +1069,7 @@ index f9a1f5e92a7559a50dfb72d7455a8fc03dbad25f..3094ce00b3fa5b266f5d0ad0875f160e } else if (shape instanceof VoxelShapeArray) { VoxelShapeArray shapeCasted = (VoxelShapeArray)shape; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 6610d2f0f852a2af93ab9a61d69a6862d11f1b19..619509cdb60c6236640fa9b85e9902235fa5aa27 100644 +index 9a60f8e78feaa471fedc284beabad61c71be6462..853d27d0b58df4029c92005fe1f28d2da487522e 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 { @@ -1087,7 +1087,7 @@ index 6610d2f0f852a2af93ab9a61d69a6862d11f1b19..619509cdb60c6236640fa9b85e990223 } @Override -@@ -1772,12 +1778,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1743,12 +1749,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Spigot End this.tileEntityListUnload.addAll(chunk.getTileEntities().values()); 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 86375436..b017b35c 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 619509cdb60c6236640fa9b85e9902235fa5aa27..0d3d1098c570a7b3d5092dd4f25d3a36581706d9 100644 +index 853d27d0b58df4029c92005fe1f28d2da487522e..4dd721de1026482e0007cb25166152ed97151a96 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 76dbbd63..5e84e8a5 100644 --- a/patches/server/0040-Nuke-streams-off-BlockPosition.patch +++ b/patches/server/0040-Nuke-streams-off-BlockPosition.patch @@ -89,7 +89,7 @@ index e6b5a21c523c598f53207d024322301fbae74825..294ef31838b750b45187dcf76b43d067 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 228c17966e51b726768ef7bb6d15e00aa1599b3f..9dfc5649b552a8cb16092fe6b20aa1c181b59d5e 100644 +index eec6dbda1b5a34122a75f11dfa82506f9763779c..ffac4d061cbfb3428317d8f23c9de2efcac460a8 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -802,11 +802,25 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke diff --git a/patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch index ecf9ef28..4ad72636 100644 --- a/patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0045-Fix-LightEngineThreaded-memory-leak.patch @@ -18,10 +18,10 @@ index fd0beefb900c064d3c35a3d2f79f5b7d9c1287bb..4d024a4849b7566c0faba131caab57b4 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 0d3d1098c570a7b3d5092dd4f25d3a36581706d9..4b86411f5e0dd9319deee3296827080ccb7865a5 100644 +index 4dd721de1026482e0007cb25166152ed97151a96..27a25a64bba88a0c97f10b59804825dfa319211d 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 { +@@ -1786,6 +1786,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end diff --git a/patches/server/0050-Optimize-whitelist-command-for-multiple-additions-re.patch b/patches/server/0050-Optimize-whitelist-command-for-multiple-additions-re.patch index d1b682bd..cef4ce9b 100644 --- a/patches/server/0050-Optimize-whitelist-command-for-multiple-additions-re.patch +++ b/patches/server/0050-Optimize-whitelist-command-for-multiple-additions-re.patch @@ -185,7 +185,7 @@ index 596815d70e69fd645bec5b6e8c1ebc7b2fa5345a..121504fc93781c78bc236e05ed91ee35 return (String[]) this.d.keySet().toArray(new String[this.d.size()]); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 54e54cf4ed710923cc93d4ba77c378547761c8a1..0540414af5e2462ac33710b94efde0d78df1eedf 100644 +index da95d52943550de946d85261bf0e20f9a43ea438..54682f927088c8017ab0718df9bfb6c2fa3c844b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1960,6 +1960,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant