Skip to content

Commit 1729e5e

Browse files
authored
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
1 parent 46dfb69 commit 1729e5e

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/debounce/legacy/InventoryMoveItemEventDebounce.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.sk89q.worldguard.bukkit.listener.debounce.legacy;
2121

2222
import com.sk89q.worldguard.bukkit.listener.debounce.legacy.InventoryMoveItemEventDebounce.Key;
23+
import io.papermc.lib.PaperLib;
2324
import org.bukkit.Material;
2425
import org.bukkit.block.Block;
2526
import org.bukkit.block.BlockState;
@@ -44,18 +45,18 @@ protected static class Key {
4445
private final Object target;
4546

4647
public Key(InventoryMoveItemEvent event) {
47-
cause = transform(event.getInitiator().getHolder());
48-
source = transform(event.getSource().getHolder());
49-
target = transform(event.getDestination().getHolder());
48+
cause = transform(PaperLib.getHolder(event.getInitiator(), false).getHolder());
49+
source = transform(PaperLib.getHolder(event.getSource(), false).getHolder());
50+
target = transform(PaperLib.getHolder(event.getDestination(), false).getHolder());
5051
}
5152

5253
private Object transform(InventoryHolder holder) {
53-
if (holder instanceof BlockState) {
54-
return new BlockMaterialKey(((BlockState) holder).getBlock());
55-
} else if (holder instanceof DoubleChest) {
56-
InventoryHolder left = ((DoubleChest) holder).getLeftSide();
57-
if (left instanceof Chest) {
58-
return new BlockMaterialKey(((Chest) left).getBlock());
54+
if (holder instanceof BlockState blockState) {
55+
return new BlockMaterialKey(blockState);
56+
} else if (holder instanceof DoubleChest doubleChest) {
57+
InventoryHolder left = doubleChest.getLeftSide();
58+
if (left instanceof Chest chest) {
59+
return new BlockMaterialKey(chest);
5960
} else {
6061
return holder;
6162
}
@@ -94,8 +95,8 @@ private static class BlockMaterialKey {
9495
private final Block block;
9596
private final Material material;
9697

97-
private BlockMaterialKey(Block block) {
98-
this.block = block;
98+
private BlockMaterialKey(BlockState block) {
99+
this.block = block.getBlock();
99100
material = block.getType();
100101
}
101102

0 commit comments

Comments
 (0)