Updated Upstream and Sidestream(s) (Tuinity/Purpur)

Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Tuinity Changes:
4a99f3e Updated Upstream (Paper)
f5d537e Merge https://github.com/Spottedleaf/Tuinity into ver/1.16.3
7936e2b Make async usage of IteratorSafeOrderedReferenceSet less dangerous

Purpur Changes:
2cce22a Updated Upstream (Paper & Tuinity)
8d407a9 Despawn rate for llama spit
This commit is contained in:
Ivan Pekov 2020-09-23 18:38:34 +03:00
parent 1af2160432
commit 4c7a91845b
No known key found for this signature in database
GPG Key ID: BC975C392D9CA3A3
9 changed files with 69 additions and 66 deletions

2
Purpur

@ -1 +1 @@
Subproject commit 0743d383bdaffe39fce5260010301d8addf0b017
Subproject commit 2cce22a913961617bc69d2d12dfea8d2cac7a0f3

@ -1 +1 @@
Subproject commit be68938072442a0a66987b9fd3da0e13c97ad1a8
Subproject commit 4a99f3e491e0e0828d5eb5cf2ede65dcbbd857e7

View File

@ -7,7 +7,7 @@ Added per request
diff --git a/src/main/java/net/yatopia/api/event/PlayerAttackEntityEvent.java b/src/main/java/net/yatopia/api/event/PlayerAttackEntityEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..beabe65801d88e4dfc6d21ccc1faf2839a60e41a
index 0000000000000000000000000000000000000000..72e2cfd4c62f02154d8dddaa964249fe5aa64e98
--- /dev/null
+++ b/src/main/java/net/yatopia/api/event/PlayerAttackEntityEvent.java
@@ -0,0 +1,121 @@
@ -25,7 +25,7 @@ index 0000000000000000000000000000000000000000..beabe65801d88e4dfc6d21ccc1faf283
+/**
+ * Called when the {@link Player} attacks a {@link Entity}.
+ * <p>
+ * This event is fired earlier than {@link org.bukkit.event.entity.EntityDamageByEntityEvent} .
+ * This event is fired earlier than {@link org.bukkit.event.entity.EntityDamageByEntityEvent} .
+ */
+public class PlayerAttackEntityEvent extends Event implements Cancellable {
+

View File

@ -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 45e968fd974b6ef174925d7e2ecac9efde9efbe5..1fcdbb8937a74e6e52538ad7b95d306753ed75ed 100644
index 4dde4a9539216273a7d25d5bbda483e09bdba810..084a31f16c925ccdc58d6e4faeeb497f4de7b2ee 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -740,11 +740,11 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -742,11 +742,11 @@ public class ChunkProviderServer extends IChunkProvider {
if (this.a(playerchunk, l)) {
GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler();
@ -500,7 +500,7 @@ index 45e968fd974b6ef174925d7e2ecac9efde9efbe5..1fcdbb8937a74e6e52538ad7b95d3067
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")));
@@ -983,11 +983,11 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -975,11 +975,11 @@ public class ChunkProviderServer extends IChunkProvider {
player.playerNaturallySpawnedEvent = event;
}
// Paper end - optimize isOutisdeRange
@ -514,26 +514,31 @@ index 45e968fd974b6ef174925d7e2ecac9efde9efbe5..1fcdbb8937a74e6e52538ad7b95d3067
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
@@ -1042,15 +1042,15 @@ public class ChunkProviderServer extends IChunkProvider {
iterator.finishedIterating();
}
// Tuinity end - optimise chunk tick iteration
- this.world.getMethodProfiler().enter("customSpawners");
+ //this.world.getMethodProfiler().enter("customSpawners"); // Akarin - remove caller
if (flag1) {
try (co.aikar.timings.Timing ignored = this.world.timings.miscMobSpawning.startTiming()) { // Paper - timings
this.world.doMobSpawning(this.allowMonsters, this.allowAnimals);
} // Paper - timings
}
if (true) { // Tuinity
- this.world.getMethodProfiler().exit();
- this.world.getMethodProfiler().exit();
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
}
// Tuinity start - controlled flush for entity tracker packets
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 44987fc9343ff826dfba14504889d765655f079b..0000000000000000000000000000000000000000
index c2b788bb29fdfec9b4b6768a42e32e5af966f0ae..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej
+++ /dev/null
@@ -1,43 +0,0 @@
@@ -1,48 +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)) {
@ -563,20 +568,25 @@ index 44987fc9343ff826dfba14504889d765655f079b..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
-@@ -1048,15 +1048,15 @@ public class ChunkProviderServer extends IChunkProvider {
- }
- }
- // Tuinity end - optimise chunk tick iteration
-- this.world.getMethodProfiler().enter("customSpawners");
-+ //this.world.getMethodProfiler().enter("customSpawners"); // Akarin - remove caller
- if (flag1) {
- try (co.aikar.timings.Timing ignored = this.world.timings.miscMobSpawning.startTiming()) { // Paper - timings
- this.world.doMobSpawning(this.allowMonsters, this.allowAnimals);
- } // Paper - timings
- }
-
- if (true) { // Tuinity
-- this.world.getMethodProfiler().exit();
-- this.world.getMethodProfiler().exit();
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
- }
-
- // Tuinity start - controlled flush for entity tracker packets
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
@ -2112,10 +2122,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 21d74b79c4f5be946024cd382e1164ecd5fd69c3..0000000000000000000000000000000000000000
index 759862aba781ec6f1ae0c9a76c4ab6352d603a4c..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej
+++ /dev/null
@@ -1,95 +0,0 @@
@@ -1,84 +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;
@ -2200,17 +2210,6 @@ index 21d74b79c4f5be946024cd382e1164ecd5fd69c3..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..97fadc4a1fa7859a07dc5d6c122beb66ca01c97f 100644
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
@ -2501,7 +2500,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 48260cc3cf98e850eff90ae628e9f59854d8e5cd..7ba007f44ffe062234e9277bc949f1d9cbea45fd 100644
index 6c8116a6461a28f5d99124743392736c1c67968f..d00a42ce477aee3127bfd6839dee984dd7ad5c10 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 {
@ -2786,7 +2785,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..5ed0b725575bb300f52b48f95c8dc7dc5b51f670 100644
index 361f7857e461578e90cb71e15027dadaf794cb69..64a036b7f4b8205e10f63d670ce3c5112a65902d 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -1,7 +1,18 @@
@ -2808,7 +2807,7 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..5ed0b725575bb300f52b48f95c8dc7dc
import static net.pl3x.purpur.PurpurConfig.log;
public class PurpurWorldConfig {
@@ -56,4 +67,216 @@ public class PurpurWorldConfig {
@@ -56,4 +67,218 @@ 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));
}
@ -3005,6 +3004,7 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..5ed0b725575bb300f52b48f95c8dc7dc
+ public int fireworkDespawnRate = -1;
+ public int fishingHookDespawnRate = -1;
+ public int largeFireballDespawnRate = -1;
+ public int llamaSpitDespawnRate = -1;
+ public int potionDespawnRate = -1;
+ public int shulkerBulletDespawnRate = -1;
+ public int smallFireballDespawnRate = -1;
@ -3018,6 +3018,7 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..5ed0b725575bb300f52b48f95c8dc7dc
+ 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);
+ llamaSpitDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.llama_spit", llamaSpitDespawnRate);
+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate);
+ shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate);
+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate);
@ -3027,12 +3028,12 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..5ed0b725575bb300f52b48f95c8dc7dc
}
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 f60ccb3a190e1f2e3418952387823e4c6b987758..0000000000000000000000000000000000000000
index eca237481796f9ba6d3c29872cb68c097cb9751b..0000000000000000000000000000000000000000
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej
+++ /dev/null
@@ -1,35 +0,0 @@
@@ -1,37 +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,33 @@ public class PurpurWorldConfig {
-@@ -145,6 +145,35 @@ public class PurpurWorldConfig {
- idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
- }
-
@ -3043,6 +3044,7 @@ index f60ccb3a190e1f2e3418952387823e4c6b987758..00000000000000000000000000000000
-+ public int fireworkDespawnRate = -1;
-+ public int fishingHookDespawnRate = -1;
-+ public int largeFireballDespawnRate = -1;
-+ public int llamaSpitDespawnRate = -1;
-+ public int potionDespawnRate = -1;
-+ public int shulkerBulletDespawnRate = -1;
-+ public int smallFireballDespawnRate = -1;
@ -3056,6 +3058,7 @@ index f60ccb3a190e1f2e3418952387823e4c6b987758..00000000000000000000000000000000
-+ 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);
-+ llamaSpitDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.llama_spit", llamaSpitDespawnRate);
-+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate);
-+ shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate);
-+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate);

View File

@ -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 7ba007f44ffe062234e9277bc949f1d9cbea45fd..0dd86a72b538ff140d8a7268cf1fe4e18ede33b5 100644
index d00a42ce477aee3127bfd6839dee984dd7ad5c10..6610d2f0f852a2af93ab9a61d69a6862d11f1b19 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 {

View File

@ -775,7 +775,7 @@ index 0000000000000000000000000000000000000000..493103d755c222f2c6031ffb8f5c0b7a
+ Collection<T> getAllOfGroupType(EntityClassGroup type);
+}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index f1a382c3d3f918419a2d72bdb41914b95b7aeaa8..458b232285ca65ca5e0c686688f1c5f32211b592 100644
index ac6e5e3309affc830d4db07fd9b8d809c3085033..37a3b26cdeb02acb8051f0a99313de7923ebae3b 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 {
@ -816,7 +816,7 @@ index f1a382c3d3f918419a2d72bdb41914b95b7aeaa8..458b232285ca65ca5e0c686688f1c5f3
if (nextSlice == currentSlice) {
if (World.DEBUG_ENTITIES) MinecraftServer.LOGGER.warn("Entity was already in this chunk!" + entity, new Throwable());
return; // ??? silly plugins
@@ -938,12 +938,12 @@ public class Chunk implements IChunkAccess {
@@ -930,12 +930,12 @@ public class Chunk implements IChunkAccess {
j = MathHelper.clamp(j, 0, this.entitySlices.length - 1);
for (int k = i; k <= j; ++k) {
@ -833,7 +833,7 @@ index f1a382c3d3f918419a2d72bdb41914b95b7aeaa8..458b232285ca65ca5e0c686688f1c5f3
if (entity1.shouldBeRemoved) continue; // Paper
if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) {
@@ -1074,7 +1074,7 @@ public class Chunk implements IChunkAccess {
@@ -1066,7 +1066,7 @@ public class Chunk implements IChunkAccess {
return this.tileEntities;
}
@ -1013,10 +1013,10 @@ index 882b82d8952d34f6e3c639404d1a1521dedf1bb0..ccf1416000354b78ccef78b072062ce0
default EntityHuman findNearbyPlayer(Entity entity, double d0, @Nullable Predicate<Entity> 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 0e5614773d9d89996a9dfbc1a379cb24725f51af..0525fc5772abfc142106470ce6a8cee5cf898207 100644
index fbb36229ce936e323619457b618627254cc2ade8..727aecff6987b9194617bcb4e5e59d923a8dd858 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -1370,11 +1370,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -1351,11 +1351,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
chunk.setLoaded(true);
this.world.a(chunk.getTileEntities().values());
List<Entity> list = null;
@ -1030,7 +1030,7 @@ index 0e5614773d9d89996a9dfbc1a379cb24725f51af..0525fc5772abfc142106470ce6a8cee5
Iterator iterator = entityslice.iterator();
while (iterator.hasNext()) {
@@ -1669,7 +1669,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -1648,7 +1648,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;
@ -1040,7 +1040,7 @@ index 0e5614773d9d89996a9dfbc1a379cb24725f51af..0525fc5772abfc142106470ce6a8cee5
sum += size;
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 0dd86a72b538ff140d8a7268cf1fe4e18ede33b5..87fbc28847a3a6232861d36f3fa2f038c4664239 100644
index 6610d2f0f852a2af93ab9a61d69a6862d11f1b19..17760dce57dd2e85f98c6fc63e2b49d838f7190e 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 {

View File

@ -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 87fbc28847a3a6232861d36f3fa2f038c4664239..a21322ffd0bbb0c24b45cac9e2992c44d9c2977a 100644
index 17760dce57dd2e85f98c6fc63e2b49d838f7190e..54a5a36a53af0f4e3f1a7c88d39d2e590e15ee04 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 {

View File

@ -18,7 +18,7 @@ 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 a21322ffd0bbb0c24b45cac9e2992c44d9c2977a..d53a9aa95c00b1ca7cf98fc88f49e3debff691a8 100644
index 54a5a36a53af0f4e3f1a7c88d39d2e590e15ee04..ede319e08a4d0356d8488172e497defd7982fcc2 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 {

View File

@ -5,14 +5,14 @@ Subject: [PATCH] Fix watchdog termination hanging indefinitely
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8e4cdad1b76c24f4e459077c5a2b4b08e0a7134f..ac159f71acc1a0fa612399b4fb77c2d1612b16b2 100644
index 8e4cdad1b76c24f4e459077c5a2b4b08e0a7134f..825cb882de70aa48f4a1a51b9cf426819d716b75 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -820,6 +820,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
MCUtil.asyncExecutor.shutdown(); // Paper
try { MCUtil.asyncExecutor.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS); // Paper
} catch (java.lang.InterruptedException ignored) {} // Paper
+ // Yatopia start - fix watchdog hanging indefinitely
+ // Yatopia start - fix watchdog hanging indefinitely
+ MCUtil.cleanerExecutor.shutdown();
+ try { MCUtil.cleanerExecutor.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS);
+ } catch (InterruptedException ignored) {}