From 8151cbcdc270cb343c5ff3c0e0c3bbdac784dac7 Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 14:37:08 -0300 Subject: [PATCH 1/9] Add a call helper to Event --- .../api/0025-Add-a-call-helper-to-Event.patch | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 patches/api/0025-Add-a-call-helper-to-Event.patch diff --git a/patches/api/0025-Add-a-call-helper-to-Event.patch b/patches/api/0025-Add-a-call-helper-to-Event.patch new file mode 100644 index 00000000..5bfdc596 --- /dev/null +++ b/patches/api/0025-Add-a-call-helper-to-Event.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: mechoriet +Date: Fri, 14 Jul 2023 14:30:52 -0300 +Subject: [PATCH] Add a call helper to Event + +Reduces diff in Server patches + +diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java +index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..ab3d19b1fdb410c4c46b3856399daf862befdb34 100644 +--- a/src/main/java/org/bukkit/event/Event.java ++++ b/src/main/java/org/bukkit/event/Event.java +@@ -33,6 +33,22 @@ public abstract class Event { + this.async = isAsync; + } + ++ // PandaSpigot start ++ /** ++ * Calls the event and tests if cancelled. ++ * ++ * @return if event was cancelled, if cancellable. otherwise true. ++ */ ++ public boolean callEvent() { ++ org.bukkit.Bukkit.getPluginManager().callEvent(this); ++ if (this instanceof Cancellable) { ++ return !((Cancellable) this).isCancelled(); ++ } else { ++ return true; ++ } ++ } ++ // PandaSpigot end ++ + /** + * Convenience method for providing a user-friendly identifier. By + * default, it is the event's class's {@linkplain Class#getSimpleName() From 387162f2b772a3b1d79c49be7388913d97ac9f65 Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 14:40:26 -0300 Subject: [PATCH 2/9] Clarify javadoc --- patches/api/0025-Add-a-call-helper-to-Event.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/api/0025-Add-a-call-helper-to-Event.patch b/patches/api/0025-Add-a-call-helper-to-Event.patch index 5bfdc596..384793f4 100644 --- a/patches/api/0025-Add-a-call-helper-to-Event.patch +++ b/patches/api/0025-Add-a-call-helper-to-Event.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add a call helper to Event Reduces diff in Server patches diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java -index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..ab3d19b1fdb410c4c46b3856399daf862befdb34 100644 +index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..bef4acb21059443d89f8d138902f027fed31629b 100644 --- a/src/main/java/org/bukkit/event/Event.java +++ b/src/main/java/org/bukkit/event/Event.java @@ -33,6 +33,22 @@ public abstract class Event { @@ -17,7 +17,7 @@ index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..ab3d19b1fdb410c4c46b3856399daf86 + /** + * Calls the event and tests if cancelled. + * -+ * @return if event was cancelled, if cancellable. otherwise true. ++ * @return false if event was cancelled, if cancellable. otherwise true. + */ + public boolean callEvent() { + org.bukkit.Bukkit.getPluginManager().callEvent(this); From 8985473f3b69e8ed8c4931000d8413f3f82c749b Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 14:49:28 -0300 Subject: [PATCH 3/9] Use helper on handshake event --- .../0005-Backport-PlayerHandshakeEvent-from-Paper.patch | 7 +++---- patches/server/0007-Add-Unix-domain-socket-support.patch | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/patches/server/0005-Backport-PlayerHandshakeEvent-from-Paper.patch b/patches/server/0005-Backport-PlayerHandshakeEvent-from-Paper.patch index 4d16b596..4ac8ca56 100644 --- a/patches/server/0005-Backport-PlayerHandshakeEvent-from-Paper.patch +++ b/patches/server/0005-Backport-PlayerHandshakeEvent-from-Paper.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Backport PlayerHandshakeEvent from Paper This patch was added in Paper 1.9.4, and is used by plugins such as BungeeGuard to listen to and modify handshake packets without requiring a packet listener such as ProtocolLib. diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java -index 215648ece51b9e0316bae17de60abccfd40f8b35..b7615b1472470805e6ee2a49dd8d4cdca4f70806 100644 +index 215648ece51b9e0316bae17de60abccfd40f8b35..e1a86a75524c3e3f3a9a4fbd447e01c7cb4d2b78 100644 --- a/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/src/main/java/net/minecraft/server/HandshakeListener.java -@@ -72,8 +72,36 @@ public class HandshakeListener implements PacketHandshakingInListener { +@@ -72,8 +72,35 @@ public class HandshakeListener implements PacketHandshakingInListener { this.b.close(chatcomponenttext); } else { this.b.a((PacketListener) (new LoginListener(this.a, this.b))); @@ -21,8 +21,7 @@ index 215648ece51b9e0316bae17de60abccfd40f8b35..b7615b1472470805e6ee2a49dd8d4cdc + java.net.SocketAddress socketAddress = this.b.l; + String hostnameOfRemote = socketAddress instanceof java.net.InetSocketAddress ? ((java.net.InetSocketAddress) socketAddress).getHostString() : InetAddress.getLoopbackAddress().getHostAddress(); + com.destroystokyo.paper.event.player.PlayerHandshakeEvent event = new com.destroystokyo.paper.event.player.PlayerHandshakeEvent(packethandshakinginsetprotocol.hostname, hostnameOfRemote, !proxyLogicEnabled); -+ org.bukkit.Bukkit.getPluginManager().callEvent(event); -+ if (!event.isCancelled()) { ++ if (event.callEvent()) { + // If we've failed somehow, let the client know so and go no further. + if (event.isFailed()) { + chatcomponenttext = new ChatComponentText(event.getFailMessage()); diff --git a/patches/server/0007-Add-Unix-domain-socket-support.patch b/patches/server/0007-Add-Unix-domain-socket-support.patch index 0750be5c..506f5c73 100644 --- a/patches/server/0007-Add-Unix-domain-socket-support.patch +++ b/patches/server/0007-Add-Unix-domain-socket-support.patch @@ -10,7 +10,7 @@ This feature can be enabled by setting the "server-ip" field in server.propertie Currently, this feature is only supported on Linux environments with Epoll available. diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 8e8330fbd317807c4e8ad7f8910fd86fff9a43d3..2c9d1944f186b66726fec19d07601d2bb6507380 100644 +index 6434b8613971a228fb0074390d8223bfcefe4e9f..ee6a6b379575b0d0b10b96bac4ae8e1ffa810b8f 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -165,6 +165,28 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -76,7 +76,7 @@ index 8e8330fbd317807c4e8ad7f8910fd86fff9a43d3..2c9d1944f186b66726fec19d07601d2b DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!"); DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()}); diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java -index b7615b1472470805e6ee2a49dd8d4cdca4f70806..578a417bda8dddbd46db77cfe0304d9dc06ce4cf 100644 +index e1a86a75524c3e3f3a9a4fbd447e01c7cb4d2b78..10a8c440f08535d90d8d1204a23c859ba296aa39 100644 --- a/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/src/main/java/net/minecraft/server/HandshakeListener.java @@ -29,6 +29,7 @@ public class HandshakeListener implements PacketHandshakingInListener { @@ -95,7 +95,7 @@ index b7615b1472470805e6ee2a49dd8d4cdca4f70806..578a417bda8dddbd46db77cfe0304d9d } catch (Throwable t) { org.apache.logging.log4j.LogManager.getLogger().debug("Failed to check connection throttle", t); } -@@ -104,8 +106,11 @@ public class HandshakeListener implements PacketHandshakingInListener { +@@ -103,8 +105,11 @@ public class HandshakeListener implements PacketHandshakingInListener { //if (org.spigotmc.SpigotConfig.bungee) { // PandaSpigot - comment out, we check above! String[] split = packethandshakinginsetprotocol.hostname.split("\00"); if ( split.length == 3 || split.length == 4 ) { From 781e50940c09a96981e712aabbf00e80f71e21ac Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 15:02:33 -0300 Subject: [PATCH 4/9] Use helper on entitymove event --- patches/server/0022-EntityMoveEvent.patch | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/patches/server/0022-EntityMoveEvent.patch b/patches/server/0022-EntityMoveEvent.patch index f8e0aa96..abf0535f 100644 --- a/patches/server/0022-EntityMoveEvent.patch +++ b/patches/server/0022-EntityMoveEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] EntityMoveEvent diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 72c7e6fc8bb0a71877d6759af44d39030bcf51f5..cd95aa17291d31e3cebe9f6488a43923a18facba 100644 +index 72c7e6fc8bb0a71877d6759af44d39030bcf51f5..e8a20bc5b66b4777c1d5de1f0a036db85407766b 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -1665,6 +1665,22 @@ public abstract class EntityLiving extends Entity { +@@ -1665,6 +1665,21 @@ public abstract class EntityLiving extends Entity { } this.world.methodProfiler.b(); @@ -18,8 +18,7 @@ index 72c7e6fc8bb0a71877d6759af44d39030bcf51f5..cd95aa17291d31e3cebe9f6488a43923 + org.bukkit.Location from = new org.bukkit.Location(this.world.getWorld(), this.lastX, this.lastY, this.lastZ, this.lastYaw, this.lastPitch); + org.bukkit.Location to = new org.bukkit.Location (this.world.getWorld(), this.locX, this.locY, this.locZ, this.yaw, this.pitch); + io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent((LivingEntity) this.getBukkitEntity(), from, to.clone()); -+ Bukkit.getPluginManager().callEvent(event); -+ if (event.isCancelled()) { ++ if (!event.callEvent()) { + // if cancelled, set back to previous position + this.setLocation(from.getX(), from.getY(), from.getZ(), from.getYaw(), from.getPitch()); + } else if (!to.equals(event.getTo())) { @@ -32,7 +31,7 @@ index 72c7e6fc8bb0a71877d6759af44d39030bcf51f5..cd95aa17291d31e3cebe9f6488a43923 protected void doTick() {} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9e3bb94f11263c4614f18c282ae236d03599619a..f6d1510fc16fc48be221cc7bb5968a132a2b9752 100644 +index b7decb879f530345b82722aeb1294864feecd2c2..66d4c410c2bcc345bf09e07a63de7534064524d2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -926,6 +926,7 @@ public abstract class MinecraftServer extends com.hpfxd.pandaspigot.tickloop.Ree From 4fcfb11520de1bfb9b02b4ff069cb11bd6592a7f Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 15:07:34 -0300 Subject: [PATCH 5/9] use helper on player chunk load/unload events --- patches/server/0023-Player-Chunk-Load-Unload-Events.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patches/server/0023-Player-Chunk-Load-Unload-Events.patch b/patches/server/0023-Player-Chunk-Load-Unload-Events.patch index 0dd1280e..c054155e 100644 --- a/patches/server/0023-Player-Chunk-Load-Unload-Events.patch +++ b/patches/server/0023-Player-Chunk-Load-Unload-Events.patch @@ -5,26 +5,26 @@ Subject: [PATCH] Player Chunk Load/Unload Events diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 0c49a256cc481af1ceb7a873b03763e1d942a362..77068cd022e677fbf284df3d8aff95325089ce4f 100644 +index 0c49a256cc481af1ceb7a873b03763e1d942a362..23524af2dd05a6f14ff3bddbf524c5d4d483290f 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -241,6 +241,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { arraylist.add(chunk); arraylist1.addAll(chunk.tileEntities.values()); // CraftBukkit - Get tile entities directly from the chunk instead of the world iterator1.remove(); -+ Bukkit.getPluginManager().callEvent(new io.papermc.paper.event.packet.PlayerChunkLoadEvent(chunk.bukkitChunk, this.getBukkitEntity())); // PandaSpigot ++ new io.papermc.paper.event.packet.PlayerChunkLoadEvent(chunk.bukkitChunk, this.getBukkitEntity()).callEvent(); // PandaSpigot } } } else { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 38586aad7548b69275f0e5b3f5e8b2c2734076fe..4bf77d3cec9c3a1f0048de7749432b9a6024b242 100644 +index 38586aad7548b69275f0e5b3f5e8b2c2734076fe..696edfe83aa6c75deaaa59cc10818dbf261cc5a9 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -428,6 +428,7 @@ public class PlayerChunkMap { this.players.remove(entityplayer); // CraftBukkit this.b.remove(entityplayer); entityplayer.chunkCoordIntPairQueue.remove(this.location); -+ org.bukkit.Bukkit.getPluginManager().callEvent(new io.papermc.paper.event.packet.PlayerChunkUnloadEvent(chunk.bukkitChunk, entityplayer.getBukkitEntity())); // PandaSpigot ++ new io.papermc.paper.event.packet.PlayerChunkUnloadEvent(chunk.bukkitChunk, entityplayer.getBukkitEntity()).callEvent(); // PandaSpigot if (this.b.isEmpty()) { long i = (long) this.location.x + 2147483647L | (long) this.location.z + 2147483647L << 32; From cebfbc3a934f608d3099b8093df19a3c4126fbac Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 15:20:14 -0300 Subject: [PATCH 6/9] more --- patches/server/0037-Sound-events.patch | 13 +++++-------- ...ompleteEvent-and-AsyncTabCompleteEvent.patch | 17 ++++++++--------- ...void-loading-chunks-in-multiple-places.patch | 4 ++-- ...0078-Fix-MC-117075-TE-Unload-Lag-Spike.patch | 4 ++-- ...-tnt-entity-and-falling-block-movement.patch | 4 ++-- ...81-Optimize-Captured-TileEntity-Lookup.patch | 4 ++-- .../0087-Optimize-Light-Recalculations.patch | 4 ++-- patches/server/0088-Optimize-armor-stands.patch | 4 ++-- 8 files changed, 25 insertions(+), 29 deletions(-) diff --git a/patches/server/0037-Sound-events.patch b/patches/server/0037-Sound-events.patch index cf876366..bd4b5ba2 100644 --- a/patches/server/0037-Sound-events.patch +++ b/patches/server/0037-Sound-events.patch @@ -5,18 +5,17 @@ Subject: [PATCH] Sound events diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 73de7d6d4dc619416363a7d8557b71b850313cfb..3795d7f097c8051e5e80f6920d1b3fd69531c994 100644 +index 73de7d6d4dc619416363a7d8557b71b850313cfb..f2442d75a73c6b6e6ae286f36b11992d11604637 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -944,20 +944,57 @@ public abstract class World implements IBlockAccess { +@@ -944,20 +944,54 @@ public abstract class World implements IBlockAccess { } public void makeSound(Entity entity, String s, float f, float f1) { + // PandaSpigot start - EntitySoundEvent + com.hpfxd.pandaspigot.event.sound.EntitySoundEvent event = new com.hpfxd.pandaspigot.event.sound.EntitySoundEvent( + entity.bukkitEntity, s, f, f1); -+ this.getServer().getPluginManager().callEvent(event); -+ if (event.isCancelled()) return; ++ if (!event.callEvent()) return; + + org.bukkit.Location loc = event.getLocation(); + s = event.getSound(); @@ -34,8 +33,7 @@ index 73de7d6d4dc619416363a7d8557b71b850313cfb..3795d7f097c8051e5e80f6920d1b3fd6 + // PandaSpigot start - PlayerSoundEvent + com.hpfxd.pandaspigot.event.sound.PlayerSoundEvent event = new com.hpfxd.pandaspigot.event.sound.PlayerSoundEvent( + (org.bukkit.entity.Player) entityhuman.bukkitEntity, s, f, f1); -+ this.getServer().getPluginManager().callEvent(event); -+ if (event.isCancelled()) return; ++ if (!event.callEvent()) return; + + org.bukkit.Location loc = event.getLocation(); + s = event.getSound(); @@ -53,8 +51,7 @@ index 73de7d6d4dc619416363a7d8557b71b850313cfb..3795d7f097c8051e5e80f6920d1b3fd6 + // PandaSpigot start - SoundEvent + com.hpfxd.pandaspigot.event.sound.SoundEvent event = new com.hpfxd.pandaspigot.event.sound.SoundEvent( + new org.bukkit.Location(this.world, d0, d1, d2), s, f, f1); -+ this.getServer().getPluginManager().callEvent(event); -+ if (event.isCancelled()) return; ++ if (!event.callEvent()) return; + + org.bukkit.Location loc = event.getLocation(); + d0 = loc.getX(); diff --git a/patches/server/0068-Backport-TabCompleteEvent-and-AsyncTabCompleteEvent.patch b/patches/server/0068-Backport-TabCompleteEvent-and-AsyncTabCompleteEvent.patch index 271fbe8c..668c1c30 100644 --- a/patches/server/0068-Backport-TabCompleteEvent-and-AsyncTabCompleteEvent.patch +++ b/patches/server/0068-Backport-TabCompleteEvent-and-AsyncTabCompleteEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Backport TabCompleteEvent and AsyncTabCompleteEvent diff --git a/src/main/java/com/hpfxd/pandaspigot/console/PandaConsoleCompleter.java b/src/main/java/com/hpfxd/pandaspigot/console/PandaConsoleCompleter.java -index 1aa335eca007be52e9813ce933d271eac9b1fdce..ad68ab6618e3d13b1df59398471b95c955efd026 100644 +index 1aa335eca007be52e9813ce933d271eac9b1fdce..9212f9798707a50860daaff1d3520d52549c2f7a 100644 --- a/src/main/java/com/hpfxd/pandaspigot/console/PandaConsoleCompleter.java +++ b/src/main/java/com/hpfxd/pandaspigot/console/PandaConsoleCompleter.java @@ -3,11 +3,13 @@ package com.hpfxd.pandaspigot.console; @@ -22,7 +22,7 @@ index 1aa335eca007be52e9813ce933d271eac9b1fdce..ad68ab6618e3d13b1df59398471b95c9 import java.util.List; import java.util.concurrent.ExecutionException; import java.util.logging.Level; -@@ -21,6 +23,39 @@ public class PandaConsoleCompleter implements Completer { +@@ -21,6 +23,38 @@ public class PandaConsoleCompleter implements Completer { @Override public void complete(LineReader reader, ParsedLine line, List candidates) { @@ -30,7 +30,7 @@ index 1aa335eca007be52e9813ce933d271eac9b1fdce..ad68ab6618e3d13b1df59398471b95c9 + com.destroystokyo.paper.event.server.AsyncTabCompleteEvent event; + java.util.List completions = new java.util.ArrayList<>(); + event = new com.destroystokyo.paper.event.server.AsyncTabCompleteEvent(server.server.getConsoleSender(), completions, line.line(), true, null); -+ server.server.getPluginManager().callEvent(event); ++ event.callEvent(); + completions = event.isCancelled() ? com.google.common.collect.ImmutableList.of() : event.getCompletions(); + + if (event.isCancelled() || event.isHandled()) { @@ -41,8 +41,7 @@ index 1aa335eca007be52e9813ce933d271eac9b1fdce..ad68ab6618e3d13b1df59398471b95c9 + @Override + protected List evaluate() { + org.bukkit.event.server.TabCompleteEvent syncEvent = new org.bukkit.event.server.TabCompleteEvent(server.server.getConsoleSender(), line.line(), finalCompletions); -+ server.server.getPluginManager().callEvent(event); -+ return !syncEvent.isCancelled() ? syncEvent.getCompletions() : com.google.common.collect.ImmutableList.of(); ++ return syncEvent.callEvent() ? syncEvent.getCompletions() : com.google.common.collect.ImmutableList.of(); + } + }; + server.processQueue.add(syncCompletions); @@ -62,7 +61,7 @@ index 1aa335eca007be52e9813ce933d271eac9b1fdce..ad68ab6618e3d13b1df59398471b95c9 CompletionWaiter waiter = new CompletionWaiter(line.line()); this.server.processQueue.add(waiter); -@@ -49,8 +84,12 @@ public class PandaConsoleCompleter implements Completer { +@@ -49,8 +83,12 @@ public class PandaConsoleCompleter implements Completer { @Override protected List evaluate() { final CraftServer server = PandaConsoleCompleter.this.server.server; @@ -78,7 +77,7 @@ index 1aa335eca007be52e9813ce933d271eac9b1fdce..ad68ab6618e3d13b1df59398471b95c9 } } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index e2499f5f9c4b289e41c0f8fb922ed085047c7099..15f7c315df23eac08e12ce752b1b1bb23fd25aba 100644 +index e2499f5f9c4b289e41c0f8fb922ed085047c7099..977675f6155a1ccb1d9cdfdcb48a9f922805df9a 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -1967,23 +1967,43 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList @@ -106,7 +105,7 @@ index e2499f5f9c4b289e41c0f8fb922ed085047c7099..15f7c315df23eac08e12ce752b1b1bb2 + boolean isCommand = buffer.startsWith("/"); + event = new com.destroystokyo.paper.event.server.AsyncTabCompleteEvent(this.getPlayer(), completions, + buffer, isCommand, blockpos != null ? new Location(player.world.getWorld(), blockpos.getX(), blockpos.getY(), blockpos.getZ()) : null); -+ this.server.getPluginManager().callEvent(event); ++ event.callEvent(); + completions = event.isCancelled() ? com.google.common.collect.ImmutableList.of() : event.getCompletions(); + if (!event.isHandled()) { + // If the event isn't handled, we can assume that we have no completions, and so we'll ask the server @@ -136,7 +135,7 @@ index e2499f5f9c4b289e41c0f8fb922ed085047c7099..15f7c315df23eac08e12ce752b1b1bb2 public void a(PacketPlayInSettings packetplayinsettings) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 15727da153524a13d5b507c11aef69d7571f6e70..6630d6f3c32d1cf46a8e5200b1ec55cd0754309a 100644 +index 22b2dae71a5aa02d678c1d052ed8f4d5e0b8a5b9..cdff7613b406a39d102ab94395c4fb107ae356e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1632,11 +1632,17 @@ public final class CraftServer implements Server { diff --git a/patches/server/0075-Avoid-loading-chunks-in-multiple-places.patch b/patches/server/0075-Avoid-loading-chunks-in-multiple-places.patch index e2bb367f..5ce72625 100644 --- a/patches/server/0075-Avoid-loading-chunks-in-multiple-places.patch +++ b/patches/server/0075-Avoid-loading-chunks-in-multiple-places.patch @@ -192,7 +192,7 @@ index e67aa0423f6a28b286174662f29ffc32a74992d9..22c3ac7a71043ab82e7d3c95c71e02fa } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 56d9a764bbf521f512e959efaa864c445a198917..870e4f920fc336e38f331699eb0d8d91c43112d8 100644 +index a429dc5e950a31557d444d0a50ed71d13f13d555..46ebdb5e22592658cbd8172390b52edac5344e0f 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -874,7 +874,10 @@ public abstract class World implements IBlockAccess { @@ -219,7 +219,7 @@ index 56d9a764bbf521f512e959efaa864c445a198917..870e4f920fc336e38f331699eb0d8d91 Block block1 = iblockdata1.getBlock(); if (!flag1 || block1.a(this, blockposition, iblockdata1) != null) { -@@ -2715,8 +2721,11 @@ public abstract class World implements IBlockAccess { +@@ -2712,8 +2718,11 @@ public abstract class World implements IBlockAccess { for (int i1 = i; i1 <= j; ++i1) { for (int j1 = k; j1 <= l; ++j1) { diff --git a/patches/server/0078-Fix-MC-117075-TE-Unload-Lag-Spike.patch b/patches/server/0078-Fix-MC-117075-TE-Unload-Lag-Spike.patch index 51c42e13..90a04e58 100644 --- a/patches/server/0078-Fix-MC-117075-TE-Unload-Lag-Spike.patch +++ b/patches/server/0078-Fix-MC-117075-TE-Unload-Lag-Spike.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix MC-117075: TE Unload Lag Spike diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index ad5db898164f575b37fdc9c8800660eded6dc45c..e1857066baa97eb4cd50fd9c0337e1ea2e09123e 100644 +index ba185d2ef2b7970f566aa9c5980dad1e6c80e6f0..e7ccc5ef7e288068cc5f08772eb8dd4ee6b6f3f7 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1610,7 +1610,11 @@ public abstract class World implements IBlockAccess { +@@ -1607,7 +1607,11 @@ public abstract class World implements IBlockAccess { this.M = true; // CraftBukkit start - From below, clean up tile entities before ticking them if (!this.c.isEmpty()) { diff --git a/patches/server/0080-Optimize-tnt-entity-and-falling-block-movement.patch b/patches/server/0080-Optimize-tnt-entity-and-falling-block-movement.patch index f2dafcea..14c88b33 100644 --- a/patches/server/0080-Optimize-tnt-entity-and-falling-block-movement.patch +++ b/patches/server/0080-Optimize-tnt-entity-and-falling-block-movement.patch @@ -83,10 +83,10 @@ index b7d410eeb974eee7b26dce8e3b02ff2051e74f93..6671d4920f4b808d61fd458ef3f26f21 this.blocks.addAll(hashset); float f3 = this.size * 2.0F; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index e1857066baa97eb4cd50fd9c0337e1ea2e09123e..95eec062a431a23ace1fa9ffb0a4114ffe60a571 100644 +index e7ccc5ef7e288068cc5f08772eb8dd4ee6b6f3f7..db2d19ca09b3e721ecc291ad7bd887b3786b597c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1353,6 +1353,8 @@ public abstract class World implements IBlockAccess { +@@ -1350,6 +1350,8 @@ public abstract class World implements IBlockAccess { // Spigot end if (entity instanceof EntityItem) return arraylist; // PaperSpigot - Optimize item movement diff --git a/patches/server/0081-Optimize-Captured-TileEntity-Lookup.patch b/patches/server/0081-Optimize-Captured-TileEntity-Lookup.patch index 12a93dbc..4e074c3e 100644 --- a/patches/server/0081-Optimize-Captured-TileEntity-Lookup.patch +++ b/patches/server/0081-Optimize-Captured-TileEntity-Lookup.patch @@ -10,10 +10,10 @@ Optimize to check if the captured list even has values in it, and also to just do a get call since the value can never be null. diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 95eec062a431a23ace1fa9ffb0a4114ffe60a571..30ba682513935524f93f138da6fbcccbbee7afe0 100644 +index db2d19ca09b3e721ecc291ad7bd887b3786b597c..ddbc724da605b26652371f2c51ab2609a7c7ef1e 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -2098,12 +2098,15 @@ public abstract class World implements IBlockAccess { +@@ -2095,12 +2095,15 @@ public abstract class World implements IBlockAccess { return null; } else { // CraftBukkit start diff --git a/patches/server/0087-Optimize-Light-Recalculations.patch b/patches/server/0087-Optimize-Light-Recalculations.patch index 57cc7acf..4a7ac11b 100644 --- a/patches/server/0087-Optimize-Light-Recalculations.patch +++ b/patches/server/0087-Optimize-Light-Recalculations.patch @@ -20,7 +20,7 @@ index 3971e7dfdb9b05f44c8e0735d88e95da72be9f22..9c22cf970288d24a431df836409fc802 this.q = true; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 30ba682513935524f93f138da6fbcccbbee7afe0..625c8078147f200231907a63ab5147b427a9d610 100644 +index ddbc724da605b26652371f2c51ab2609a7c7ef1e..9b939a9e9f0c1d15588c1ebce8ba6e67be212d25 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -527,8 +527,11 @@ public abstract class World implements IBlockAccess { @@ -37,7 +37,7 @@ index 30ba682513935524f93f138da6fbcccbbee7afe0..625c8078147f200231907a63ab5147b4 } } -@@ -2683,9 +2686,15 @@ public abstract class World implements IBlockAccess { +@@ -2680,9 +2683,15 @@ public abstract class World implements IBlockAccess { * PaperSpigot - Asynchronous lighting updates */ public boolean updateLight(final EnumSkyBlock enumskyblock, final BlockPosition position) { diff --git a/patches/server/0088-Optimize-armor-stands.patch b/patches/server/0088-Optimize-armor-stands.patch index 1308d755..aea0a726 100644 --- a/patches/server/0088-Optimize-armor-stands.patch +++ b/patches/server/0088-Optimize-armor-stands.patch @@ -37,10 +37,10 @@ index 2ea4a5fd32629a7931189786f86dce99d1db6d63..f8415dd404e14d85290724e66abc8a1a + // PandaSpigot end } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 625c8078147f200231907a63ab5147b427a9d610..daa1d6a4d6ec5e175f36d9fc87675c68558d5abb 100644 +index 9b939a9e9f0c1d15588c1ebce8ba6e67be212d25..38ebe35f6fa434103b52e86262c7f4cc32d486e3 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1358,6 +1358,7 @@ public abstract class World implements IBlockAccess { +@@ -1355,6 +1355,7 @@ public abstract class World implements IBlockAccess { if (entity instanceof EntityItem) return arraylist; // PaperSpigot - Optimize item movement if (entity instanceof EntityTNTPrimed) return arraylist; // PandaSpigot - Optimize tnt entity movement if (entity instanceof EntityFallingBlock) return arraylist; // PandaSpigot - Optimize falling block movement From d78f501131c12b619ac1d359fe3bf405bd5ca968 Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Fri, 14 Jul 2023 15:24:54 -0300 Subject: [PATCH 7/9] finish --- patches/server/0085-Implement-SpawnerPreSpawnEvent.patch | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/patches/server/0085-Implement-SpawnerPreSpawnEvent.patch b/patches/server/0085-Implement-SpawnerPreSpawnEvent.patch index 3a1c1ec5..7dca928e 100644 --- a/patches/server/0085-Implement-SpawnerPreSpawnEvent.patch +++ b/patches/server/0085-Implement-SpawnerPreSpawnEvent.patch @@ -7,19 +7,17 @@ Added registered listeners check to avoid alloc if no plugins are listening. diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -index e54f7edbd1d834391f6760ea7b82cf6af4ddf994..9607c55cdc98efe103e17a939a20d82ff66a7b02 100644 +index e54f7edbd1d834391f6760ea7b82cf6af4ddf994..c74bd1b944b6628d315a6f5b7b745ccc4133a6be 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -@@ -91,6 +91,17 @@ public abstract class MobSpawnerAbstract { +@@ -91,6 +91,15 @@ public abstract class MobSpawnerAbstract { boolean flag = false; for (int i = 0; i < this.spawnCount; ++i) { + // PandaSpigot start - SpawnerPreSpawnEvent + if (net.techcable.tacospigot.event.entity.SpawnerPreSpawnEvent.getHandlerList().getRegisteredListeners().length > 0) { + net.techcable.tacospigot.event.entity.SpawnerPreSpawnEvent event = new net.techcable.tacospigot.event.entity.SpawnerPreSpawnEvent(new org.bukkit.Location(this.a().getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()), org.bukkit.entity.EntityType.fromName(this.getMobName())); -+ this.a().getServer().getPluginManager().callEvent(event); -+ -+ if (event.isCancelled()) { ++ if (!event.callEvent()) { + flag = true; + break; + } From aab9d7395ba02b26414a19627e6fc2afa6c2d17d Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Sat, 15 Jul 2023 17:31:52 -0300 Subject: [PATCH 8/9] cleanup --- patches/api/0025-Add-a-call-helper-to-Event.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/api/0025-Add-a-call-helper-to-Event.patch b/patches/api/0025-Add-a-call-helper-to-Event.patch index 384793f4..082a3c59 100644 --- a/patches/api/0025-Add-a-call-helper-to-Event.patch +++ b/patches/api/0025-Add-a-call-helper-to-Event.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add a call helper to Event Reduces diff in Server patches diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java -index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..bef4acb21059443d89f8d138902f027fed31629b 100644 +index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..07137e0433e7615edac672b5f470883eeea12362 100644 --- a/src/main/java/org/bukkit/event/Event.java +++ b/src/main/java/org/bukkit/event/Event.java @@ -33,6 +33,22 @@ public abstract class Event { @@ -16,7 +16,7 @@ index 6677e1bd6f5ae4385d3da9fe39caaa75468ee1fa..bef4acb21059443d89f8d138902f027f + // PandaSpigot start + /** + * Calls the event and tests if cancelled. -+ * ++ * + * @return false if event was cancelled, if cancellable. otherwise true. + */ + public boolean callEvent() { From eb6cb6d28fa5a28cba84f4f0bbcab928f5854176 Mon Sep 17 00:00:00 2001 From: uRyanxD Date: Sun, 13 Aug 2023 15:19:00 -0300 Subject: [PATCH 9/9] update author --- patches/api/0025-Add-a-call-helper-to-Event.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/api/0025-Add-a-call-helper-to-Event.patch b/patches/api/0025-Add-a-call-helper-to-Event.patch index 082a3c59..8945e8d2 100644 --- a/patches/api/0025-Add-a-call-helper-to-Event.patch +++ b/patches/api/0025-Add-a-call-helper-to-Event.patch @@ -1,5 +1,5 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: mechoriet +From: Aikar Date: Fri, 14 Jul 2023 14:30:52 -0300 Subject: [PATCH] Add a call helper to Event