diff --git a/src/main/java/com/massivecraft/factions/FPlayer.java b/src/main/java/com/massivecraft/factions/FPlayer.java index ac2305f2..13d862bc 100644 --- a/src/main/java/com/massivecraft/factions/FPlayer.java +++ b/src/main/java/com/massivecraft/factions/FPlayer.java @@ -30,6 +30,17 @@ public interface FPlayer extends EconomyParticipator { boolean hasNotificationsEnabled(); + /** + * Used to determine if a player is in their faction's chest + * @return if player is in their faction's as a boolean + */ + boolean isInFactionsChest(); + + /** + * Set if the player is inside of their faction's chest + */ + void setInFactionsChest(boolean b); + boolean isAlt(); void setAlt(boolean alt); diff --git a/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java b/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java index 0abdccdc..1cc6b77b 100644 --- a/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java +++ b/src/main/java/com/massivecraft/factions/cmd/chest/AntiChestListener.java @@ -19,7 +19,7 @@ public class AntiChestListener implements Listener { 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 (!fPlayer.isInFactionsChest()) return; if (e.isCancelled()) return; @@ -49,7 +49,7 @@ public class AntiChestListener implements Listener { 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 (!fPlayer.isInFactionsChest()) return; if (e.isCancelled()) return; ItemStack dragged = e.getOldCursor(); diff --git a/src/main/java/com/massivecraft/factions/cmd/chest/CmdChest.java b/src/main/java/com/massivecraft/factions/cmd/chest/CmdChest.java index 5c970910..f53e5938 100644 --- a/src/main/java/com/massivecraft/factions/cmd/chest/CmdChest.java +++ b/src/main/java/com/massivecraft/factions/cmd/chest/CmdChest.java @@ -30,6 +30,7 @@ public class CmdChest extends FCommand { return; } // This permission check is way too explicit but it's clean + context.fPlayer.setInFactionsChest(true); context.player.openInventory(context.faction.getChestInventory()); } diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java index 142c32a4..531ee0b8 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java @@ -791,8 +791,8 @@ public class FactionsPlayerListener implements Listener { @EventHandler public void onClose(InventoryCloseEvent e) { FPlayer fme = FPlayers.getInstance().getById(e.getPlayer().getUniqueId().toString()); - if (fme.isInVault()) - fme.setInVault(false); + if (fme.isInVault()) fme.setInVault(false); + if (fme.isInFactionsChest()) fme.setInFactionsChest(false); } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) @@ -1011,6 +1011,11 @@ public class FactionsPlayerListener implements Listener { } } } + @EventHandler + public void onDisconnect(PlayerQuitEvent e) { + FPlayer fPlayer = FPlayers.getInstance().getByPlayer(e.getPlayer()); + if (fPlayer.isInFactionsChest()) fPlayer.setInFactionsChest(false); + } private static class InteractAttemptSpam { private int attempts = 0; diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java index 7724774e..4087f64f 100644 --- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java +++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java @@ -41,6 +41,7 @@ import java.util.*; */ public abstract class MemoryFPlayer implements FPlayer { + public boolean inChest = false; public boolean inVault = false; protected HashMap commandCooldown = new HashMap<>(); protected String factionId; @@ -963,6 +964,12 @@ public abstract class MemoryFPlayer implements FPlayer { isFlying = fly; } + public boolean isInFactionsChest() { + return inChest; + } + public void setInFactionsChest(boolean b) { + inChest = b; + } public boolean isInVault() { return inVault; }