mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2025-02-28 10:12:15 +01:00
Add additional holder snapshot bypasses for performance (#1978)
* Add additional holder snapshot bypasses for performance * Extra optimisation - cuts lookups of block data in the world by half
This commit is contained in:
parent
46dfb69fb1
commit
1729e5e3d6
@ -20,6 +20,7 @@
|
|||||||
package com.sk89q.worldguard.bukkit.listener.debounce.legacy;
|
package com.sk89q.worldguard.bukkit.listener.debounce.legacy;
|
||||||
|
|
||||||
import com.sk89q.worldguard.bukkit.listener.debounce.legacy.InventoryMoveItemEventDebounce.Key;
|
import com.sk89q.worldguard.bukkit.listener.debounce.legacy.InventoryMoveItemEventDebounce.Key;
|
||||||
|
import io.papermc.lib.PaperLib;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -44,18 +45,18 @@ protected static class Key {
|
|||||||
private final Object target;
|
private final Object target;
|
||||||
|
|
||||||
public Key(InventoryMoveItemEvent event) {
|
public Key(InventoryMoveItemEvent event) {
|
||||||
cause = transform(event.getInitiator().getHolder());
|
cause = transform(PaperLib.getHolder(event.getInitiator(), false).getHolder());
|
||||||
source = transform(event.getSource().getHolder());
|
source = transform(PaperLib.getHolder(event.getSource(), false).getHolder());
|
||||||
target = transform(event.getDestination().getHolder());
|
target = transform(PaperLib.getHolder(event.getDestination(), false).getHolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object transform(InventoryHolder holder) {
|
private Object transform(InventoryHolder holder) {
|
||||||
if (holder instanceof BlockState) {
|
if (holder instanceof BlockState blockState) {
|
||||||
return new BlockMaterialKey(((BlockState) holder).getBlock());
|
return new BlockMaterialKey(blockState);
|
||||||
} else if (holder instanceof DoubleChest) {
|
} else if (holder instanceof DoubleChest doubleChest) {
|
||||||
InventoryHolder left = ((DoubleChest) holder).getLeftSide();
|
InventoryHolder left = doubleChest.getLeftSide();
|
||||||
if (left instanceof Chest) {
|
if (left instanceof Chest chest) {
|
||||||
return new BlockMaterialKey(((Chest) left).getBlock());
|
return new BlockMaterialKey(chest);
|
||||||
} else {
|
} else {
|
||||||
return holder;
|
return holder;
|
||||||
}
|
}
|
||||||
@ -94,8 +95,8 @@ private static class BlockMaterialKey {
|
|||||||
private final Block block;
|
private final Block block;
|
||||||
private final Material material;
|
private final Material material;
|
||||||
|
|
||||||
private BlockMaterialKey(Block block) {
|
private BlockMaterialKey(BlockState block) {
|
||||||
this.block = block;
|
this.block = block.getBlock();
|
||||||
material = block.getType();
|
material = block.getType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user