From 922e4478dc94739122a4f825a10c1d9e9abacec0 Mon Sep 17 00:00:00 2001 From: Intelli Date: Sun, 1 Aug 2021 16:42:07 -0600 Subject: [PATCH] Improved hopper logging performance when using Paper Disables snapshot creation when getting inventory holders --- .../net/coreprotect/config/ConfigHandler.java | 2 + .../player/InventoryChangeListener.java | 5 +- .../net/coreprotect/paper/PaperAdapter.java | 47 +++++++++++++++++++ .../net/coreprotect/paper/PaperHandler.java | 5 ++ .../net/coreprotect/paper/PaperInterface.java | 10 ++++ .../net/coreprotect/paper/Paper_v1_16.java | 13 +++++ 6 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/main/java/net/coreprotect/paper/PaperAdapter.java create mode 100644 src/main/java/net/coreprotect/paper/PaperHandler.java create mode 100644 src/main/java/net/coreprotect/paper/PaperInterface.java create mode 100644 src/main/java/net/coreprotect/paper/Paper_v1_16.java diff --git a/src/main/java/net/coreprotect/config/ConfigHandler.java b/src/main/java/net/coreprotect/config/ConfigHandler.java index 97b454a..4b24d0b 100644 --- a/src/main/java/net/coreprotect/config/ConfigHandler.java +++ b/src/main/java/net/coreprotect/config/ConfigHandler.java @@ -28,6 +28,7 @@ import net.coreprotect.database.Database; import net.coreprotect.database.statement.UserStatement; import net.coreprotect.language.Phrase; import net.coreprotect.model.BlockGroup; +import net.coreprotect.paper.PaperAdapter; import net.coreprotect.patch.Patch; import net.coreprotect.spigot.SpigotAdapter; import net.coreprotect.utility.Chat; @@ -361,6 +362,7 @@ public class ConfigHandler extends Queue { try { BukkitAdapter.loadAdapter(); SpigotAdapter.loadAdapter(); + PaperAdapter.loadAdapter(); BlockGroup.initialize(); ConfigHandler.loadConfig(); // Load (or create) the configuration file. diff --git a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java index fe69f87..ed87fb5 100644 --- a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java +++ b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java @@ -31,6 +31,7 @@ import net.coreprotect.config.Config; import net.coreprotect.config.ConfigHandler; import net.coreprotect.consumer.Queue; import net.coreprotect.model.BlockGroup; +import net.coreprotect.paper.PaperAdapter; import net.coreprotect.utility.Util; import net.coreprotect.utility.Validate; @@ -315,12 +316,12 @@ public final class InventoryChangeListener extends Queue implements Listener { return; } - InventoryHolder sourceHolder = event.getSource().getHolder(); + InventoryHolder sourceHolder = PaperAdapter.ADAPTER.getHolder(event.getSource(), false); if (sourceHolder == null) { return; } - InventoryHolder destinationHolder = event.getDestination().getHolder(); + InventoryHolder destinationHolder = PaperAdapter.ADAPTER.getHolder(event.getDestination(), false); if (destinationHolder == null) { return; } diff --git a/src/main/java/net/coreprotect/paper/PaperAdapter.java b/src/main/java/net/coreprotect/paper/PaperAdapter.java new file mode 100644 index 0000000..26cf0eb --- /dev/null +++ b/src/main/java/net/coreprotect/paper/PaperAdapter.java @@ -0,0 +1,47 @@ +package net.coreprotect.paper; + +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +import net.coreprotect.bukkit.BukkitAdapter; +import net.coreprotect.config.ConfigHandler; + +public class PaperAdapter implements PaperInterface { + + public static PaperInterface ADAPTER; + public static final int PAPER_UNAVAILABLE = 0; + public static final int PAPER_v1_13 = BukkitAdapter.BUKKIT_v1_13; + public static final int PAPER_v1_14 = BukkitAdapter.BUKKIT_v1_14; + public static final int PAPER_v1_15 = BukkitAdapter.BUKKIT_v1_15; + public static final int PAPER_v1_16 = BukkitAdapter.BUKKIT_v1_16; + public static final int PAPER_v1_17 = BukkitAdapter.BUKKIT_v1_17; + + public static void loadAdapter() { + int PAPER_VERSION = ConfigHandler.SERVER_VERSION; + if (!ConfigHandler.isPaper) { + PAPER_VERSION = PAPER_UNAVAILABLE; + } + + switch (PAPER_VERSION) { + case PAPER_UNAVAILABLE: + PaperAdapter.ADAPTER = new PaperAdapter(); + break; + case PAPER_v1_13: + case PAPER_v1_14: + case PAPER_v1_15: + PaperAdapter.ADAPTER = new PaperHandler(); + break; + case PAPER_v1_16: + case PAPER_v1_17: + default: + PaperAdapter.ADAPTER = new Paper_v1_16(); + break; + } + } + + @Override + public InventoryHolder getHolder(Inventory holder, boolean useSnapshot) { + return holder.getHolder(); + } + +} diff --git a/src/main/java/net/coreprotect/paper/PaperHandler.java b/src/main/java/net/coreprotect/paper/PaperHandler.java new file mode 100644 index 0000000..38b3a17 --- /dev/null +++ b/src/main/java/net/coreprotect/paper/PaperHandler.java @@ -0,0 +1,5 @@ +package net.coreprotect.paper; + +public class PaperHandler extends PaperAdapter implements PaperInterface { + +} diff --git a/src/main/java/net/coreprotect/paper/PaperInterface.java b/src/main/java/net/coreprotect/paper/PaperInterface.java new file mode 100644 index 0000000..821cbf2 --- /dev/null +++ b/src/main/java/net/coreprotect/paper/PaperInterface.java @@ -0,0 +1,10 @@ +package net.coreprotect.paper; + +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +public interface PaperInterface { + + public InventoryHolder getHolder(Inventory holder, boolean useSnapshot); + +} diff --git a/src/main/java/net/coreprotect/paper/Paper_v1_16.java b/src/main/java/net/coreprotect/paper/Paper_v1_16.java new file mode 100644 index 0000000..6bbeed5 --- /dev/null +++ b/src/main/java/net/coreprotect/paper/Paper_v1_16.java @@ -0,0 +1,13 @@ +package net.coreprotect.paper; + +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; + +public class Paper_v1_16 extends PaperHandler implements PaperInterface { + + @Override + public InventoryHolder getHolder(Inventory holder, boolean useSnapshot) { + return holder.getHolder(useSnapshot); + } + +}