Improved hopper logging performance when using Paper

Disables snapshot creation when getting inventory holders
This commit is contained in:
Intelli 2021-08-01 16:42:07 -06:00
parent 2fd366389b
commit 922e4478dc
6 changed files with 80 additions and 2 deletions

View File

@ -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.

View File

@ -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;
}

View File

@ -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();
}
}

View File

@ -0,0 +1,5 @@
package net.coreprotect.paper;
public class PaperHandler extends PaperAdapter implements PaperInterface {
}

View File

@ -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);
}

View File

@ -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);
}
}