From 798ea6ab892b769b5ba354bc1c1170ad934080bc Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Tue, 13 Aug 2019 20:38:28 +1000 Subject: [PATCH] Add async catcher to World#save --- .../0007-Async-Operation-Catching.patch | 32 ++++++++++++------- CraftBukkit-Patches/0008-View-Distance.patch | 6 ++-- ...-Implement-Silenceable-Lightning-API.patch | 6 ++-- ...s-ocelots-when-plugins-spawn-ocelots.patch | 6 ++-- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/CraftBukkit-Patches/0007-Async-Operation-Catching.patch b/CraftBukkit-Patches/0007-Async-Operation-Catching.patch index 71cdcd30..d131948c 100644 --- a/CraftBukkit-Patches/0007-Async-Operation-Catching.patch +++ b/CraftBukkit-Patches/0007-Async-Operation-Catching.patch @@ -1,4 +1,4 @@ -From 5ac497a6eb2ba973f8ebe2d52954b987f23b3b44 Mon Sep 17 00:00:00 2001 +From c9bc57620066ba8433fbca3aaa20bc4afbef54cf Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 25 Mar 2014 16:10:01 +1100 Subject: [PATCH] Async Operation Catching @@ -6,7 +6,7 @@ Subject: [PATCH] Async Operation Catching Catch and throw an exception when a potentially unsafe operation occurs on a thread other than the main server thread. diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index f13a0be05..abba434da 100644 +index f13a0be0..abba434d 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -376,10 +376,13 @@ public class Block implements IMaterial { @@ -25,7 +25,7 @@ index f13a0be05..abba434da 100644 world.removeTileEntity(blockposition); } diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java -index 29a79be72..d0b4bf8b7 100644 +index 29a79be7..d0b4bf8b 100644 --- a/src/main/java/net/minecraft/server/CraftingManager.java +++ b/src/main/java/net/minecraft/server/CraftingManager.java @@ -65,6 +65,7 @@ public class CraftingManager extends ResourceDataJson { @@ -37,7 +37,7 @@ index 29a79be72..d0b4bf8b7 100644 if (map.containsKey(irecipe.getKey())) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 944826219..eb2f274a7 100644 +index a6bf7239..3bc4dd9d 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -821,6 +821,7 @@ public abstract class EntityLiving extends Entity { @@ -49,7 +49,7 @@ index 944826219..eb2f274a7 100644 effectsToProcess.add(new ProcessableEffect(mobeffect, cause)); return true; diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 2765f37dd..6cc87c423 100644 +index 2765f37d..6cc87c42 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -954,6 +954,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -85,7 +85,7 @@ index 2765f37dd..6cc87c423 100644 Vec3D vec3d = (new Vec3D(entityplayer.locX, entityplayer.locY, entityplayer.locZ)).d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113 int i = Math.min(this.trackingDistance, (PlayerChunkMap.this.viewDistance - 1) * 16); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 232b07895..a749179f7 100644 +index 232b0789..a749179f 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -902,6 +902,7 @@ public class WorldServer extends World { @@ -113,7 +113,7 @@ index 232b07895..a749179f7 100644 this.entitiesToAdd.add(entity); } else { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e4e1f7b69..421ed454e 100644 +index 580fce0f..fb1127d0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -685,6 +685,7 @@ public final class CraftServer implements Server { @@ -125,7 +125,7 @@ index e4e1f7b69..421ed454e 100644 if (commandMap.dispatch(sender, commandLine)) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 2f3941db6..a4630c421 100644 +index 254cc6d5..b1055e1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -376,6 +376,7 @@ public class CraftWorld implements World { @@ -160,8 +160,16 @@ index 2f3941db6..a4630c421 100644 IChunkAccess chunk = world.getChunkProvider().getChunkAt(x, z, generate ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // If generate = false, but the chunk already exists, we will get this back. +@@ -1158,6 +1162,7 @@ public class CraftWorld implements World { + + @Override + public void save() { ++ org.spigotmc.AsyncCatcher.catchOp("world save"); // Spigot + this.server.checkSaveState(); + try { + boolean oldSave = world.savingDisabled; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ed4e0b280..26fd6984a 100644 +index ed4e0b28..26fd6984 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -300,6 +300,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -173,7 +181,7 @@ index ed4e0b280..26fd6984a 100644 getHandle().playerConnection.disconnect(message == null ? "" : message); diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index fd9949e1e..ca2be3060 100644 +index fd9949e1..ca2be306 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -41,6 +41,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { @@ -185,7 +193,7 @@ index fd9949e1e..ca2be3060 100644 scoreboards.add(scoreboard); return scoreboard; diff --git a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java -index 2e057fd4c..ddef523ea 100644 +index 2e057fd4..ddef523e 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java +++ b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java @@ -12,6 +12,7 @@ public class ServerShutdownThread extends Thread { @@ -198,7 +206,7 @@ index 2e057fd4c..ddef523ea 100644 try { diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java new file mode 100644 -index 000000000..aeed76972 +index 00000000..aeed7697 --- /dev/null +++ b/src/main/java/org/spigotmc/AsyncCatcher.java @@ -0,0 +1,17 @@ diff --git a/CraftBukkit-Patches/0008-View-Distance.patch b/CraftBukkit-Patches/0008-View-Distance.patch index 7d150770..4a10b1f8 100644 --- a/CraftBukkit-Patches/0008-View-Distance.patch +++ b/CraftBukkit-Patches/0008-View-Distance.patch @@ -1,4 +1,4 @@ -From 00d48f35f3814f7acdcaa58df1a375c3f51e4bee Mon Sep 17 00:00:00 2001 +From 432ea7c02b77293e6920b7864a8f7bab9a4bac31 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Mar 2013 09:52:41 +1100 Subject: [PATCH] View Distance @@ -41,10 +41,10 @@ index a749179f7..742d5e8eb 100644 }); // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index a4630c421..6133b11f3 100644 +index b1055e1f4..388f6043a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2150,6 +2150,13 @@ public class CraftWorld implements World { +@@ -2151,6 +2151,13 @@ public class CraftWorld implements World { return (nearest == null) ? null : new Location(this, nearest.getX(), nearest.getY(), nearest.getZ()); } diff --git a/CraftBukkit-Patches/0053-Implement-Silenceable-Lightning-API.patch b/CraftBukkit-Patches/0053-Implement-Silenceable-Lightning-API.patch index 56f1c48a..cc2d3cfc 100644 --- a/CraftBukkit-Patches/0053-Implement-Silenceable-Lightning-API.patch +++ b/CraftBukkit-Patches/0053-Implement-Silenceable-Lightning-API.patch @@ -1,4 +1,4 @@ -From 6f8227bfbdf0cf021081120ca4e834c88661f607 Mon Sep 17 00:00:00 2001 +From 5b50e5649af4a8564267730e49f0bec5750b52ae Mon Sep 17 00:00:00 2001 From: drXor Date: Sun, 23 Feb 2014 16:16:59 -0400 Subject: [PATCH] Implement Silenceable Lightning API @@ -41,10 +41,10 @@ index aeb0b4650..2ceee79cf 100644 // this.world.playSound((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_LIGHTNING_BOLT_THUNDER, SoundCategory.WEATHER, 10000.0F, 0.8F + this.random.nextFloat() * 0.2F); float pitch = 0.8F + this.random.nextFloat() * 0.2F; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 6133b11f3..432b79b77 100644 +index 388f6043a..ca528b121 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2160,6 +2160,22 @@ public class CraftWorld implements World { +@@ -2161,6 +2161,22 @@ public class CraftWorld implements World { // Spigot start private final Spigot spigot = new Spigot() { diff --git a/CraftBukkit-Patches/0079-Don-t-spawn-bonus-ocelots-when-plugins-spawn-ocelots.patch b/CraftBukkit-Patches/0079-Don-t-spawn-bonus-ocelots-when-plugins-spawn-ocelots.patch index a44dc679..5eaf2759 100644 --- a/CraftBukkit-Patches/0079-Don-t-spawn-bonus-ocelots-when-plugins-spawn-ocelots.patch +++ b/CraftBukkit-Patches/0079-Don-t-spawn-bonus-ocelots-when-plugins-spawn-ocelots.patch @@ -1,4 +1,4 @@ -From b35644695b1508df532acde41af7f9e94b850394 Mon Sep 17 00:00:00 2001 +From 29f604cb3c8b5c9dbf6767191760294642e9b5c7 Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Sat, 19 Jul 2014 12:49:48 +0100 Subject: [PATCH] Don't spawn bonus ocelots when plugins spawn ocelots @@ -26,10 +26,10 @@ index 3b84f60a7..a6b15efd5 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 430175530..9d8f9eff9 100644 +index ca528b121..bdd085b88 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -1680,6 +1680,12 @@ public class CraftWorld implements World { +@@ -1681,6 +1681,12 @@ public class CraftWorld implements World { } if (entity != null) {