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

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