More inventory holder snapshot use.

This commit is contained in:
wizjany 2020-06-21 16:57:58 -04:00
parent c1ec708050
commit 36d95ad090
3 changed files with 16 additions and 5 deletions

View File

@ -151,6 +151,7 @@ public void loadConfiguration() {
allowAllInteract = getTargetMatchers("event-handling.interaction-whitelist");
blockUseAtFeet = getTargetMatchers("event-handling.emit-block-use-at-feet");
ignoreHopperMoveEvents = getBoolean("event-handling.ignore-hopper-item-move-events", false);
ignoreHopperMoveEvents = getBoolean("event-handling.break-hoppers-on-denied-move", true);
usePaperEntityOrigin = getBoolean("regions.use-paper-entity-origin", false);

View File

@ -938,19 +938,28 @@ public void onInventoryMoveItem(InventoryMoveItemEvent event) {
causeHolder = event.getInitiator().getHolder();
}
WorldConfiguration wcfg = null;
if (causeHolder instanceof Hopper
&& getWorldConfig(BukkitAdapter.adapt((((Hopper) causeHolder).getWorld()))).ignoreHopperMoveEvents) {
&& (wcfg = getWorldConfig(BukkitAdapter.adapt((((Hopper) causeHolder).getWorld())))).ignoreHopperMoveEvents) {
return;
} else if (causeHolder instanceof HopperMinecart
&& getWorldConfig(BukkitAdapter.adapt((((HopperMinecart) causeHolder).getWorld()))).ignoreHopperMoveEvents) {
&& (wcfg = getWorldConfig(BukkitAdapter.adapt((((HopperMinecart) causeHolder).getWorld())))).ignoreHopperMoveEvents) {
return;
}
Entry entry;
if ((entry = moveItemDebounce.tryDebounce(event)) != null) {
InventoryHolder sourceHolder = event.getSource().getHolder();
InventoryHolder targetHolder = event.getDestination().getHolder();
InventoryHolder sourceHolder;
InventoryHolder targetHolder;
if (HAS_SNAPSHOT_INVHOLDER) {
sourceHolder = event.getSource().getHolder(false);
targetHolder = event.getDestination().getHolder(false);
} else {
sourceHolder = event.getSource().getHolder();
targetHolder = event.getDestination().getHolder();
}
Cause cause;
if (causeHolder instanceof Entity) {
@ -967,7 +976,7 @@ && getWorldConfig(BukkitAdapter.adapt((((HopperMinecart) causeHolder).getWorld()
handleInventoryHolderUse(event, cause, targetHolder);
if (event.isCancelled() && causeHolder instanceof Hopper) {
if (event.isCancelled() && causeHolder instanceof Hopper && wcfg.breakDeniedHoppers) {
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(),
() -> ((Hopper) causeHolder).getBlock().breakNaturally());
} else {

View File

@ -170,6 +170,7 @@ public abstract class WorldConfiguration {
public boolean disableObsidianGenerators;
public boolean strictEntitySpawn;
public boolean ignoreHopperMoveEvents;
public boolean breakDeniedHoppers;
protected Map<String, Integer> maxRegionCounts;
/**