mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-10-05 01:57:28 +02:00
Have on-acquire also check inventory transfers.
Fixes WORLDGUARD-2752.
This commit is contained in:
parent
79612915a7
commit
f516fd5e54
@ -21,14 +21,7 @@
|
|||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.sk89q.worldguard.LocalPlayer;
|
import com.sk89q.worldguard.LocalPlayer;
|
||||||
import com.sk89q.worldguard.blacklist.event.BlockBreakBlacklistEvent;
|
import com.sk89q.worldguard.blacklist.event.*;
|
||||||
import com.sk89q.worldguard.blacklist.event.BlockDispenseBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.blacklist.event.BlockInteractBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.blacklist.event.BlockPlaceBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.blacklist.event.ItemAcquireBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.blacklist.event.ItemDestroyWithBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.blacklist.event.ItemDropBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.blacklist.event.ItemUseBlacklistEvent;
|
|
||||||
import com.sk89q.worldguard.bukkit.ConfigurationManager;
|
import com.sk89q.worldguard.bukkit.ConfigurationManager;
|
||||||
import com.sk89q.worldguard.bukkit.WorldConfiguration;
|
import com.sk89q.worldguard.bukkit.WorldConfiguration;
|
||||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||||
@ -42,11 +35,16 @@
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.block.BlockDispenseEvent;
|
import org.bukkit.event.block.BlockDispenseEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryCreativeEvent;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import static com.sk89q.worldguard.bukkit.BukkitUtil.createTarget;
|
import static com.sk89q.worldguard.bukkit.BukkitUtil.createTarget;
|
||||||
@ -259,4 +257,64 @@ public void onBlockDispense(BlockDispenseEvent event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onInventoryClick(InventoryClickEvent event) {
|
||||||
|
HumanEntity entity = event.getWhoClicked();
|
||||||
|
Inventory inventory = event.getInventory();
|
||||||
|
ItemStack item = event.getCurrentItem();
|
||||||
|
|
||||||
|
if (item != null && entity instanceof Player) {
|
||||||
|
Player player = (Player) entity;
|
||||||
|
ConfigurationManager cfg = getPlugin().getGlobalStateManager();
|
||||||
|
WorldConfiguration wcfg = cfg.get(entity.getWorld());
|
||||||
|
LocalPlayer localPlayer = getPlugin().wrapPlayer(player);
|
||||||
|
|
||||||
|
if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check(
|
||||||
|
new ItemAcquireBlacklistEvent(localPlayer, toVector(entity.getLocation()), createTarget(item)), false, false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
if (inventory.getHolder().equals(player)) {
|
||||||
|
event.setCurrentItem(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onInventoryCreative(InventoryCreativeEvent event) {
|
||||||
|
HumanEntity entity = event.getWhoClicked();
|
||||||
|
ItemStack item = event.getCursor();
|
||||||
|
|
||||||
|
if (item != null && entity instanceof Player) {
|
||||||
|
Player player = (Player) entity;
|
||||||
|
ConfigurationManager cfg = getPlugin().getGlobalStateManager();
|
||||||
|
WorldConfiguration wcfg = cfg.get(entity.getWorld());
|
||||||
|
LocalPlayer localPlayer = getPlugin().wrapPlayer(player);
|
||||||
|
|
||||||
|
if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check(
|
||||||
|
new ItemAcquireBlacklistEvent(localPlayer, toVector(entity.getLocation()), createTarget(item)), false, false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
event.setCursor(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onPlayerItemHeld(PlayerItemHeldEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
Inventory inventory = player.getInventory();
|
||||||
|
ItemStack item = inventory.getItem(event.getNewSlot());
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
ConfigurationManager cfg = getPlugin().getGlobalStateManager();
|
||||||
|
WorldConfiguration wcfg = cfg.get(player.getWorld());
|
||||||
|
LocalPlayer localPlayer = getPlugin().wrapPlayer(player);
|
||||||
|
|
||||||
|
if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check(
|
||||||
|
new ItemAcquireBlacklistEvent(localPlayer, toVector(player.getLocation()), createTarget(item)), false, false)) {
|
||||||
|
inventory.setItem(event.getNewSlot(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user