package com.entryrise.afkguard.gui.inputs; import java.util.HashSet; import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.inventory.Inventory; import com.entryrise.afkguard.Main; public abstract class GUIChatInput extends GUIInput { private Inventory inv; private Set ents = new HashSet(); public Inventory getInv() { return inv; } public void setInv(Inventory inv) { this.inv = inv; } @EventHandler(priority = EventPriority.LOW) public void onCommand(PlayerCommandPreprocessEvent e) { if (e.isCancelled()) { return; } Player p = e.getPlayer(); if (!ents.contains(p)) { return; } e.setCancelled(true); p.sendMessage("You can't execute commands while inputting in a GUI."); } @EventHandler(priority = EventPriority.LOW) public void onChat(AsyncPlayerChatEvent e) { if (e.isCancelled()) { return; } Player p = e.getPlayer(); if (!ents.contains(p)) { return; } String chat = e.getMessage(); e.setCancelled(true); for (HumanEntity ent : ents) { ent.openInventory(inv); } HandlerList.unregisterAll(this); onResult(chat); } public GUIChatInput(Inventory inv) { this.setInv(inv); for (HumanEntity ent : inv.getViewers()) { ents.add(ent); ent.closeInventory(); } Bukkit.getPluginManager().registerEvents(this, Main.p); } }