From f358e6d75b72e40e95a67d56dfb5344cab92fbf3 Mon Sep 17 00:00:00 2001 From: Driftay Date: Tue, 24 Sep 2019 06:39:43 -0400 Subject: [PATCH] Added Anti-FChest-Items (Ability to deny storing items in factions chest) --- .../massivecraft/factions/FactionsPlugin.java | 3 + .../factions/cmd/chest/AntiChestListener.java | 67 +++++++++++++++++++ .../massivecraft/factions/zcore/util/TL.java | 2 + src/main/resources/config.yml | 3 + 4 files changed, 75 insertions(+) create mode 100644 src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java diff --git a/src/main/java/com/massivecraft/factions/FactionsPlugin.java b/src/main/java/com/massivecraft/factions/FactionsPlugin.java index bce174a6..a4551b47 100755 --- a/src/main/java/com/massivecraft/factions/FactionsPlugin.java +++ b/src/main/java/com/massivecraft/factions/FactionsPlugin.java @@ -10,6 +10,7 @@ import com.massivecraft.factions.cmd.FCmdRoot; import com.massivecraft.factions.cmd.FCommand; import com.massivecraft.factions.cmd.check.CheckTask; import com.massivecraft.factions.cmd.check.WeeWooTask; +import com.massivecraft.factions.cmd.chest.AntiChestListener; import com.massivecraft.factions.cmd.chest.ChestLogsHandler; import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.integration.Worldguard; @@ -86,6 +87,7 @@ public class FactionsPlugin extends MPlugin { private ClipPlaceholderAPIManager clipPlaceholderAPIManager; private boolean mvdwPlaceholderAPIManager = false; private Listener[] eventsListener; + public List itemList = getConfig().getStringList("fchest.Items-Not-Allowed"); public FactionsPlugin() { @@ -268,6 +270,7 @@ public class FactionsPlugin extends MPlugin { new FUpgradesGUI(), new UpgradesListener(), new MissionHandler(this), + new AntiChestListener(), new ChestLogsHandler() }; diff --git a/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java b/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java new file mode 100644 index 00000000..0abdccdc --- /dev/null +++ b/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java @@ -0,0 +1,67 @@ +package com.massivecraft.factions.cmd.chest; + +import com.massivecraft.factions.FPlayer; +import com.massivecraft.factions.FPlayers; +import com.massivecraft.factions.FactionsPlugin; +import com.massivecraft.factions.zcore.util.TL; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +public class AntiChestListener implements Listener { + + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + Player player = (Player) e.getWhoClicked(); + FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player); + if (!e.getView().getTopInventory().getTitle().equalsIgnoreCase(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fchest.Inventory-Title")))) return; + + if (e.isCancelled()) return; + + Inventory clicked = e.getClickedInventory(); + + if (e.getClick().isShiftClick()) { + if (clicked == e.getWhoClicked().getInventory()) { + ItemStack clickedOn = e.getCurrentItem(); + if (clickedOn != null && FactionsPlugin.getInstance().itemList.contains(clickedOn.getType().toString())) { + fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, clickedOn.getType().toString()); + e.setCancelled(true); + } + } + } + + if (clicked != e.getWhoClicked().getInventory()) { + ItemStack onCursor = e.getCursor(); + if (onCursor != null && FactionsPlugin.getInstance().itemList.contains(onCursor.getType().toString())) { + fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, onCursor.getType().toString()); + e.setCancelled(true); + } + } + } + + @EventHandler + public void onInventoryDrag(InventoryDragEvent e) { + Player p = (Player) e.getWhoClicked(); + FPlayer fPlayer = FPlayers.getInstance().getByPlayer(p); + + if (!e.getView().getTopInventory().getTitle().equalsIgnoreCase(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fchest.Inventory-Title")))) return; + if (e.isCancelled()) return; + + ItemStack dragged = e.getOldCursor(); + if (FactionsPlugin.getInstance().itemList.contains(dragged.getType().toString())) { + int inventorySize = e.getInventory().getSize(); + for (int i : e.getRawSlots()) { + if (i < inventorySize) { + fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, dragged.getType().toString()); + e.setCancelled(true); + break; + } + } + } + } +} diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TL.java b/src/main/java/com/massivecraft/factions/zcore/util/TL.java index bf3a56b9..b0df2168 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TL.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TL.java @@ -239,6 +239,8 @@ public enum TL { COMMAND_CLAIMLINE_ABOVEMAX("&c&l[!]&7 The &cmaximum&7 limit for claim line is &c%s&7."), COMMAND_CLAIMLINE_NOTVALID("&c&l[!]&7 &c%s&7 is not a &ccardinal &7direction. You may use &cnorth&7, &ceast&7, &csouth &7or &cwest&7."), + CHEST_ITEM_DENIED_TRANSFER("&c&l[!] &7You may not transfer &b%1$s &7into your factions chest!"), + COMMAND_CONFIG_NOEXIST("&c&l[!]&7 No configuration setting \"&c%1$s&7\" exists."), COMMAND_CONFIG_SET_TRUE("\" option set to true (enabled)."), COMMAND_CONFIG_SET_FALSE("\" option set to false (disabled)."), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ae63e0a1..e9a30032 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -857,6 +857,9 @@ fvault: fchest: Enabled: true Inventory-Title: '&2&lFaction Chest' + Items-Not-Allowed: + - 'MOB_SPAWNER' + - 'COOKIE' # Chest size upgrades can be configured in the upgrades section of config ############################################################