From ec10b359998eadc2e71dff524b687cb8a01c055b Mon Sep 17 00:00:00 2001 From: Morphan1 Date: Wed, 18 Jul 2018 19:31:02 -0400 Subject: [PATCH] Remove listen command This has been deprecated for a long time --- .../java/net/aufdemrand/denizen/Denizen.java | 27 -- .../denizen/DenizenCommandHandler.java | 88 ---- .../denizen/listeners/AbstractListener.java | 186 --------- .../listeners/AbstractListenerType.java | 66 --- .../denizen/listeners/ListenerRegistry.java | 318 -------------- .../listeners/core/BlockListenerInstance.java | 377 ----------------- .../listeners/core/BlockListenerType.java | 11 - .../core/ItemDropListenerInstance.java | 294 ------------- .../listeners/core/ItemDropListenerType.java | 14 - .../listeners/core/ItemListenerInstance.java | 240 ----------- .../listeners/core/ItemListenerType.java | 11 - .../listeners/core/KillListenerInstance.java | 393 ------------------ .../listeners/core/KillListenerType.java | 11 - .../core/TravelListenerInstance.java | 249 ----------- .../listeners/core/TravelListenerType.java | 11 - .../commands/BukkitCommandRegistry.java | 60 --- .../commands/player/ListenCommand.java | 178 -------- 17 files changed, 2534 deletions(-) delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListener.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListenerType.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerInstance.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerType.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerInstance.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerType.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerType.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerInstance.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerType.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerInstance.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerType.java delete mode 100644 plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/player/ListenCommand.java diff --git a/plugin/src/main/java/net/aufdemrand/denizen/Denizen.java b/plugin/src/main/java/net/aufdemrand/denizen/Denizen.java index aac712c23d..f82b1c5d2b 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/Denizen.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/Denizen.java @@ -11,7 +11,6 @@ import net.aufdemrand.denizen.events.player.*; import net.aufdemrand.denizen.events.world.*; import net.aufdemrand.denizen.flags.FlagManager; -import net.aufdemrand.denizen.listeners.ListenerRegistry; import net.aufdemrand.denizen.nms.NMSHandler; import net.aufdemrand.denizen.nms.NMSVersion; import net.aufdemrand.denizen.nms.interfaces.FakeArrow; @@ -287,7 +286,6 @@ public CommandManager getCommandManager() { private BukkitCommandRegistry commandRegistry = new BukkitCommandRegistry(); private TriggerRegistry triggerRegistry = new TriggerRegistry(); private RequirementRegistry requirementRegistry = new RequirementRegistry(this); - private ListenerRegistry listenerRegistry = new ListenerRegistry(); private dNPCRegistry dNPCRegistry; @@ -299,10 +297,6 @@ public dNPCRegistry getNPCRegistry() { return dNPCRegistry; } - public ListenerRegistry getListenerRegistry() { - return listenerRegistry; - } - public RequirementRegistry getRequirementRegistry() { return requirementRegistry; } @@ -567,7 +561,6 @@ public void onEnable() { getTriggerRegistry().registerCoreMembers(); } getRequirementRegistry().registerCoreMembers(); - getListenerRegistry().registerCoreMembers(); } catch (Exception e) { dB.echoError(e); @@ -1005,26 +998,6 @@ public void onDisable() { // Save offline player inventories InventoryScriptHelper._savePlayerInventories(); - // Deconstruct listeners (server shutdown seems not to be triggering a PlayerQuitEvent) - for (Player player : this.getServer().getOnlinePlayers()) { - getListenerRegistry().deconstructPlayer(dPlayer.mirrorBukkitPlayer(player)); - } - - for (OfflinePlayer player : this.getServer().getOfflinePlayers()) { - try { - getListenerRegistry().deconstructPlayer(dPlayer.mirrorBukkitPlayer(player)); - } - catch (Exception e) { - if (player == null) { - dB.echoError("Tell the Denizen team ASAP about this error! ERR: OPN: " + e.toString()); - } - else { - dB.echoError("'" + player.getName() + "' is having trouble deconstructing! " + - "You might have a corrupt player file!"); - } - } - } - // Unload loaded dExternals for (dExternal external : RuntimeCompiler.loadedExternals) { external.unload(); diff --git a/plugin/src/main/java/net/aufdemrand/denizen/DenizenCommandHandler.java b/plugin/src/main/java/net/aufdemrand/denizen/DenizenCommandHandler.java index 612bdc7ae2..2a93af82a3 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/DenizenCommandHandler.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/DenizenCommandHandler.java @@ -1,7 +1,5 @@ package net.aufdemrand.denizen; - -import net.aufdemrand.denizen.listeners.AbstractListener; import net.aufdemrand.denizen.objects.dLocation; import net.aufdemrand.denizen.objects.dPlayer; import net.aufdemrand.denizen.objects.notable.NotableManager; @@ -26,7 +24,6 @@ import org.bukkit.scheduler.BukkitRunnable; import java.util.ArrayList; -import java.util.Map; import java.util.Set; @@ -307,91 +304,6 @@ public void save(CommandContext args, CommandSender sender) throws CommandExcept } - /* - * DENIZEN LISTENER - */ - @Command( - aliases = {"denizen"}, usage = "listener (--player) --id listener_id --report|cancel|finish", - desc = "Checks/cancels/finishes listeners in progress.", modifiers = {"listener"}, - min = 1, max = 3, permission = "denizen.basic", flags = "s") - public void listener(CommandContext args, CommandSender sender) throws CommandException { - - dPlayer player = null; - if (sender instanceof Player) { - player = dPlayer.mirrorBukkitPlayer((Player) sender); - } - - if (args.hasValueFlag("player")) { - player = dPlayer.valueOf(args.getFlag("player")); - } - - if (player == null) { - throw new CommandException("Specified player not online or not found!"); - } - - Map listeners = denizen.getListenerRegistry().getListenersFor(player); - - if (listeners == null || listeners.isEmpty()) { - Messaging.send(sender, player.getName() + " has no active listeners."); - return; - } - - if (args.hasValueFlag("report")) { - for (AbstractListener quest : denizen.getListenerRegistry().getListenersFor(player).values()) { - if (quest.getListenerId().equalsIgnoreCase(args.getFlag("report"))) { - Messaging.send(sender, quest.report()); - } - } - return; - - } - else if (args.hasValueFlag("cancel")) { - for (AbstractListener quest : denizen.getListenerRegistry().getListenersFor(player).values()) { - if (quest.getListenerId().equalsIgnoreCase(args.getFlag("cancel"))) { - - Messaging.send(sender, "Cancelling '" + quest.getListenerId() + "' for " + player.getName() + "."); - quest.cancel(); - } - } - return; - - } - else if (args.hasValueFlag("finish")) { - for (AbstractListener quest : denizen.getListenerRegistry().getListenersFor(player).values()) { - if (quest.getListenerId().equalsIgnoreCase(args.getFlag("finish"))) { - Messaging.send(sender, "Force-finishing '" + quest.getListenerId() + "' for " + player.getName() + "."); - quest.finish(); - } - } - return; - - } - else if (args.length() > 2 && args.getInteger(1, 0) < 1) { - Messaging.send(sender, ""); - Messaging.send(sender, "Use '--report|cancel|finish id' to modify/view a specific quest listener."); - Messaging.send(sender, "Example: /denizen listener --report \"Journey 1\""); - Messaging.send(sender, ""); - return; - } - - Paginator paginator = new Paginator(); - paginator.header("Active quest listeners for " + player.getName() + ":"); - paginator.addLine("Key: Type ID"); - - if (listeners == null || listeners.isEmpty()) { - paginator.addLine("None."); - } - else { - for (AbstractListener quest : listeners.values()) { - paginator.addLine("" + quest.getListenerType() + " " + quest.getListenerId()); - } - } - - paginator.sendPage(sender, args.getInteger(1, 1)); - - } - - /* * DENIZEN RELOAD */ diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListener.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListener.java deleted file mode 100644 index dd21a63fd8..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListener.java +++ /dev/null @@ -1,186 +0,0 @@ -package net.aufdemrand.denizen.listeners; - -import net.aufdemrand.denizen.Denizen; -import net.aufdemrand.denizen.objects.dNPC; -import net.aufdemrand.denizen.objects.dPlayer; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.objects.aH; -import net.aufdemrand.denizencore.objects.dScript; -import org.bukkit.Bukkit; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -public abstract class AbstractListener { - - protected Denizen denizen; - - protected String type; - public String id; - protected dPlayer player; - protected dScript scriptName; - protected dNPC npc; - - protected Map savable = new HashMap(); - - public AbstractListener() { - this.denizen = (Denizen) Bukkit.getServer().getPluginManager().getPlugin("Denizen"); - } - - public void build(dPlayer player, - String listenerId, - String listenerType, - List args, - dScript finishScript, - dNPC npc) { - - this.player = player; - this.id = listenerId; - this.type = listenerType; - this.scriptName = finishScript; - this.npc = npc; - onBuild(args); - save(); - constructed(); - } - - public void cancel() { - onCancel(); - denizen.getListenerRegistry().cancel(player, id); - deconstructed(); - } - - public abstract void constructed(); - - public abstract void deconstructed(); - - public void finish() { - onFinish(); - denizen.getListenerRegistry().finish(player, npc, id, scriptName); - deconstructed(); - } - - /** - * Gets an Object that was store()d away. - * - * @param key the name (key) of the Object requested - * @return the Object associated with the key - */ - public Object get(String key) { - return denizen.getSaves().get("Listeners." + player.getSaveName() + "." + id + "." + key); - } - - public String getListenerId() { - return id != null ? id : ""; - } - - public String getListenerType() { - return type != null ? type : ""; - } - - public void load(dPlayer player, dNPC npc, String id, String listenerType) { - this.player = player; - this.id = id; - this.type = listenerType; - this.scriptName = dScript.valueOf((String) get("Finish Script")); - this.npc = npc; - try { - onLoad(); - } - catch (Exception e) { - dB.echoError("Problem loading saved listener '" + id + "' for " + player.getName() + "!"); - } - constructed(); - } - - /** - * Method to handle building a new quest listener List of arguments. - * Most likely called from a LISTEN dScript command. The player and id fields - * are non-null at this point. - * - * @param args a list of dScript arguments - */ - public abstract void onBuild(List args); - - public abstract void onCancel(); - - public abstract void onFinish(); - - /** - * Called when a Player logs on if an instance of this quest listener was saved - * with progress. Any variables that were saved with the store(stringKey, object) method - * should be called and restored. - */ - public abstract void onLoad(); - - /** - * When a Player logs off, the quest listener's progress is stored to saves.yml. - * This method should use the store(stringKey, object) method to save the fields needed to - * successfully reload the current state of this quest listener when the onLoad() - * method is called. The fields for player, type, and id are done automatically. - */ - public abstract void onSave(); - - /** - * Sums up the current status of a this AbstractListenerInstance in a way that would be - * useful by itself to a Player or Console administrator. - *

- * Called by the '/denizen listener --report id' bukkit command. - *

- * This should include all applicable variables when reporting. Suggested format would - * follow suit with core Listeners. For example: - *

- * return player.getName() + " currently has quest listener '" + id - * + "' active and must kill " + Arrays.toString(targets.toArray()) - * + " '" + type.name() + "'(s). Current progress '" + currentKills - * + "/" + quantity + "'."; - *

- * Output: - * aufdemrand currently has quest listener 'example_quest' active and must kill - * '[ZOMBIE, SKELETON] ENTITY'(s). Current progress '10/15'. - *

- * Note: This is not intended to be a 'Quest Log' for a Player, rather is used when - * administrators/server operators are checking up on this Listener. Ideally, - * that kind of information should be handled with the use of replaceable tags. - * - * @return a 'formatted' String that contains current progress - */ - public abstract String report(); - - public void save() { - denizen.getSaves().set("Listeners." + player.getSaveName() + "." + id - + ".Listener Type", type); - denizen.getSaves().set("Listeners." + player.getSaveName() + "." + id - + ".Finish Script", scriptName.toString()); - if (npc != null) { - denizen.getSaves().set("Listeners." + player.getSaveName() + "." - + id + ".Linked NPCID", npc.getId()); - } - - onSave(); - - try { - if (!savable.isEmpty()) { - for (Entry entry : savable.entrySet()) { - denizen.getSaves().set("Listeners." + player.getSaveName() + "." + id + "." + entry.getKey(), entry.getValue()); - } - } - } - catch (Exception e) { - dB.echoError("Problem saving listener '" + id + "' for " + player.getSaveName() + "!"); - } - - deconstructed(); - } - - /** - * Stores a field away for retrieving later. Should be used in the onSave() method. - */ - public void store(String key, Object object) { - savable.put(key, object); - } -} - - diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListenerType.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListenerType.java deleted file mode 100644 index df5b729e9f..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/AbstractListenerType.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.aufdemrand.denizen.listeners; - - -import net.aufdemrand.denizen.Denizen; -import net.aufdemrand.denizen.objects.dPlayer; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.interfaces.RegistrationableInstance; -import org.bukkit.Bukkit; - -public abstract class AbstractListenerType implements RegistrationableInstance { - - Denizen denizen; - String name; - Class instanceClass; - - @Override - public AbstractListenerType activate() { - this.denizen = (Denizen) Bukkit.getServer().getPluginManager().getPlugin("Denizen"); - return this; - } - - @Override - public AbstractListenerType as(String type) { - name = type.toUpperCase(); - denizen.getListenerRegistry() - .register(this.name, this); - onEnable(); - return this; - } - - public AbstractListener createInstance(dPlayer player, String listenerId) { - try { - denizen.getListenerRegistry().addListenerFor(player, instanceClass.newInstance(), listenerId); - return denizen.getListenerRegistry().getListenerFor(player, listenerId); - } - catch (InstantiationException e) { - dB.echoError(e); - } - catch (IllegalAccessException e) { - dB.echoError(e); - } - return null; - } - - @Override - public String getName() { - return this.name; - } - - /** - * Part of the Plugin disable sequence. - *

- * Can be '@Override'n by a Listener which requires a method when bukkit sends a - * onDisable() to Denizen. (ie. Server shuts down or restarts) - */ - public void onDisable() { - - } - - public AbstractListenerType withClass(Class listenerInstanceClass) { - this.instanceClass = listenerInstanceClass; - return null; - } -} - - diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java deleted file mode 100644 index 7a5bdcd6fa..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java +++ /dev/null @@ -1,318 +0,0 @@ -package net.aufdemrand.denizen.listeners; - -import net.aufdemrand.denizen.BukkitScriptEntryData; -import net.aufdemrand.denizen.Denizen; -import net.aufdemrand.denizen.events.bukkit.ListenerCancelEvent; -import net.aufdemrand.denizen.events.bukkit.ListenerFinishEvent; -import net.aufdemrand.denizen.listeners.core.*; -import net.aufdemrand.denizen.objects.dNPC; -import net.aufdemrand.denizen.objects.dPlayer; -import net.aufdemrand.denizen.utilities.DenizenAPI; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.interfaces.RegistrationableInstance; -import net.aufdemrand.denizencore.interfaces.dRegistry; -import net.aufdemrand.denizencore.objects.dScript; -import net.aufdemrand.denizencore.scripts.containers.core.TaskScriptContainer; -import net.aufdemrand.denizencore.utilities.CoreUtilities; -import net.citizensnpcs.api.CitizensAPI; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - - -/** - * Keeps track of 'player listener' types and instances for the other various parts - * of the API. Also provides some methods for adding/finishing/removing listeners - * for players. - * - * @author Jeremy Schroeder - * @version 1.0 - */ -public class ListenerRegistry implements dRegistry, Listener { - - - // - // Keeps track of active listeners. Keyed by player name. - // Value contains name of the listener, and the instance - // associated. - // - private Map> - listeners = new ConcurrentHashMap>(); - - - // - // Stores registered listener types. Keyed by type name. Value - // contains the ListenerType instance used to create new - // listener instances. - // - private Map - types = new ConcurrentHashMap(); - - - /** - * Adds a new listener to the 'listeners' hash-map. - * - * @param player the dPlayer - * @param instance the listener instance - * @param id the id of the listener instance - */ - public void addListenerFor(dPlayer player, - AbstractListener instance, - String id) { - if (player == null || id == null) { - return; - } - // Get current instances - Map playerListeners; - if (listeners.containsKey(player.getName())) { - playerListeners = listeners.get(player.getName()); - } - else { - playerListeners = new HashMap(); - } - // Insert instance into hash-map - playerListeners.put(CoreUtilities.toLowerCase(id), instance); - listeners.put(player.getName(), playerListeners); - } - - - /** - * Removes a listener instance from a Player. Cancelling an already-in-progress - * instance? Use cancel() instead. - * - * @param player the dPlayer - * @param id the id of the listener instance - */ - public void removeListenerFor(dPlayer player, String id) { - if (player == null || id == null) { - return; - } - // Get current instances - Map playerListeners; - if (listeners.containsKey(player.getName())) { - playerListeners = listeners.get(player.getName()); - } - else { - return; - } - // Remove instance from hash-map - playerListeners.remove(CoreUtilities.toLowerCase(id)); - listeners.put(player.getName(), playerListeners); - } - - - /** - * Cancels a listener, effectively removing and destroying the instance. - * Listeners in progress that are needing to be 'cancelled' should call - * this method as it fires a bukkit/world script event, as well. - * - * @param player the dPlayer - * @param id id of the listener to cancel - */ - public void cancel(dPlayer player, String id) { - if (player == null || id == null) { - return; - } - // Removes listener - removeListenerFor(player, id); - // Fires bukkit event - Bukkit.getPluginManager() - .callEvent(new ListenerCancelEvent(player, id)); - } - - - /** - * Finishes a listener, effectively removing and destroying the instance, but - * calls the optional finish_script and bukkit/world script events associated. - * - * @param player the dPlayer - * @param npc dNPC attached from the listen command (can be null) - * @param id id of the listener - * @param on_finish dScript to run on finish - */ - public void finish(dPlayer player, - dNPC npc, - String id, - dScript on_finish) { - if (player == null || id == null) { - return; - } - // Remove listener instance from the player - removeListenerFor(player, id); - // Run finish script - if (on_finish != null) { - try { - // TODO: Add context to this - ((TaskScriptContainer) on_finish.getContainer()) - .runTaskScript(new BukkitScriptEntryData(player, npc), null); - } - catch (Exception e) { - // Hm, not a valid task script? - dB.echoError("Tried to run the finish task for: " + id + "/" + player.getName() + "," - + "but it seems not to be valid!"); - } - } - - Bukkit.getPluginManager().callEvent(new ListenerFinishEvent(player, id)); - } - - public AbstractListener getListenerFor(dPlayer player, String listenerId) { - if (listeners.containsKey(player.getName())) { - Map playerListeners = listeners.get(player.getName()); - if (playerListeners.containsKey(CoreUtilities.toLowerCase(listenerId))) { - return playerListeners.get(CoreUtilities.toLowerCase(listenerId)); - } - } - return null; - } - - public Map getListenersFor(dPlayer player) { - if (listeners.containsKey(player.getName())) { - return listeners.get(player.getName()); - } - return null; - } - - - //////////////// - // dRegistry - //////////////// - - - @Override - public boolean register(String registrationName, RegistrationableInstance listenerType) { - // Registers a new ListenerType - types.put(registrationName, (AbstractListenerType) listenerType); - return false; - } - - @Override - public void registerCoreMembers() { - // Registers all core listener types. - new BlockListenerType().activate().as("BLOCK").withClass(BlockListenerInstance.class); - new ItemListenerType().activate().as("ITEM").withClass(ItemListenerInstance.class); - new KillListenerType().activate().as("KILL").withClass(KillListenerInstance.class); - new ItemDropListenerType().activate().as("ITEMDROP").withClass(ItemDropListenerInstance.class); - new TravelListenerType().activate().as("TRAVEL").withClass(TravelListenerInstance.class); - // Registers this class with bukkit's event api - DenizenAPI.getCurrentInstance().getServer().getPluginManager() - .registerEvents(this, DenizenAPI.getCurrentInstance()); - } - - @Override - public void disableCoreMembers() { - // Note: This runs a onDisable() for each AbstractListenerType, NOT each - // AbstractListener, which should be fine considering in-progress - // AbstractListeners deconstruct automatically based on PlayerLogoutEvent - // which is also run on a server disable or restart. - for (RegistrationableInstance member : types.values()) { - try { - member.onDisable(); - } - catch (Exception e) { - dB.echoError("Unable to disable '" + member.getClass().getName() + "'!"); - dB.echoError(e); - } - } - } - - @Override - public T get(Class clazz) { - if (types.containsValue(clazz)) { - for (RegistrationableInstance ri : types.values()) { - if (ri.getClass() == clazz) { - return clazz.cast(ri); - } - } - } - return null; - } - - @Override - public AbstractListenerType get(String listenerType) { - if (types.containsKey(listenerType.toUpperCase())) { - return types.get(listenerType.toUpperCase()); - } - return null; - } - - @Override - public Map list() { - return types; - } - - @EventHandler - public void playerJoin(PlayerJoinEvent event) { - - Denizen denizen = DenizenAPI.getCurrentInstance(); - dPlayer player = new dPlayer(event.getPlayer()); - - // Any saves quest listeners in progress? - if (!denizen.getSaves().contains("Listeners." + player.getSaveName())) { - return; - } - Set inProgress = denizen.getSaves().getConfigurationSection("Listeners." + player.getSaveName()).getKeys(false); - // If empty, no quest listeners to load. - if (inProgress.isEmpty()) { - return; - } - - // TODO: Players.SAVENAME.Listeners? - String path = "Listeners." + player.getSaveName() + "."; - - // If not empty, let's do the loading process for each. - for (String listenerId : inProgress) { - // People tend to worry when they see long-ass stacktraces.. let's catch them. - try { - String type = denizen.getSaves().getString(path + listenerId + ".Listener Type"); - dNPC npc = null; - if (denizen.getSaves().contains(path + listenerId + ".Linked NPCID")) { - npc = DenizenAPI.getDenizenNPC(CitizensAPI.getNPCRegistry().getById(denizen.getSaves().getInt(path + listenerId + ".Linked NPCID"))); - } - if (get(type) == null) { - return; - } - dB.log(event.getPlayer().getName() + " has a LISTENER in progress. Loading '" + listenerId + "'."); - get(type).createInstance(dPlayer.mirrorBukkitPlayer(event.getPlayer()), listenerId).load(dPlayer.mirrorBukkitPlayer(event.getPlayer()), npc, listenerId, type); - } - catch (Exception e) { - dB.log(event.getPlayer() + " has a saved listener named '" + listenerId + "' that may be corrupt. Skipping for now, but perhaps check the contents of your saves.yml for problems?"); - } - } - } - - - public void deconstructPlayer(dPlayer player) { - Denizen denizen = DenizenAPI.getCurrentInstance(); - - // Clear previous MemorySection in saves - denizen.getSaves().set("Listeners." + player.getSaveName(), null); - - // If no quest listeners in progress, nothing else to do. - if (!listeners.containsKey(player.getName())) { - return; - } - - // If there are quest listeners, invoke save() for each of them. - for (Map.Entry entry : getListenersFor(player).entrySet()) { - dB.log(player.getName() + " has a LISTENER in progress. Saving '" + entry.getKey() + "'."); - entry.getValue().save(); - } - - // Remove all listeners from memory for Player - listeners.remove(player); // TODO: this seems invalid - } - - - @EventHandler - public void playerQuit(PlayerQuitEvent event) { - deconstructPlayer(dPlayer.mirrorBukkitPlayer(event.getPlayer())); - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerInstance.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerInstance.java deleted file mode 100644 index 6c1b1ceb61..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerInstance.java +++ /dev/null @@ -1,377 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListener; -import net.aufdemrand.denizen.objects.dCuboid; -import net.aufdemrand.denizen.objects.dMaterial; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.objects.aH; -import net.aufdemrand.denizencore.objects.dList; -import net.aufdemrand.denizencore.tags.ReplaceableTagEvent; -import net.aufdemrand.denizencore.tags.TagManager; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.player.PlayerBucketFillEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class BlockListenerInstance extends AbstractListener implements Listener { - - public static enum BlockType {BUILD, COLLECT, BREAK} - - // - //The type of action - // - BlockType type = null; - - // - //The blocks - // - dList blocks; - - // - //The counters - // - Integer required = 1; - Integer blocks_so_far = 0; - - // - //Modifiers - // - String region = null; - dCuboid cuboid = null; - - - @Override - public void onBuild(List args) { - - for (aH.Argument arg : args) { - - if (arg.matchesEnum(BlockType.values()) && type == null) { - type = BlockType.valueOf(arg.getValue().toUpperCase()); - } - else if (arg.matchesPrefix("qty, q") - && arg.matchesPrimitive(aH.PrimitiveType.Integer)) { - this.required = aH.getIntegerFrom(arg.getValue()); - } - else if (arg.matchesPrefix("region, r")) { - this.region = arg.getValue(); - } - else if (arg.matchesPrefix("cuboid, c") - && arg.matchesArgumentType(dCuboid.class)) { - this.cuboid = arg.asType(dCuboid.class); - } - else if (arg.matchesPrefix("blocks, block, b, name, names")) { - blocks = arg.asType(dList.class); - } - - } - - if (blocks == null) { - blocks = new dList("*"); - } - - if (type == null) { - dB.echoError("Missing TYPE argument! Valid: BUILD, COLLECT, BREAK"); - cancel(); - } - } - - @Override - public void onSave() { - store("Type", type.name()); - store("Blocks", blocks); - store("Quantity", required); - store("Current Blocks", blocks_so_far); - store("Region", region); - if (cuboid != null) { - store("Cuboid", cuboid.identify()); - } - } - - @SuppressWarnings("unchecked") - @Override - public void onLoad() { - type = BlockType.valueOf(((String) get("Type"))); - blocks = new dList((List) get("Blocks")); - required = (Integer) get("Quantity"); - blocks_so_far = (Integer) get("Current Blocks"); - region = (String) get("Region"); - cuboid = dCuboid.valueOf((String) get("Cuboid")); - } - - @Override - public void onFinish() { - } - - @Override - public void onCancel() { - } - - @Override - public String report() { - return player.getName() + " currently has quest listener '" + id - + "' active and must " + type.name() + " " + Arrays.toString(blocks.toArray()) - + "'(s). Current progress '" + blocks_so_far + "/" + required + "'."; - } - - @Override - public void constructed() { - denizen.getServer().getPluginManager().registerEvents(this, denizen); - TagManager.registerTagEvents(this); - } - - @Override - public void deconstructed() { - BlockBreakEvent.getHandlerList().unregister(this); - PlayerPickupItemEvent.getHandlerList().unregister(this); - BlockPlaceEvent.getHandlerList().unregister(this); - TagManager.unregisterTagEvents(this); - } - - public void check() { - if (blocks_so_far >= required) { - finish(); - } - } - - @EventHandler - public void listenBreak(BlockBreakEvent event) { - //Check if event references proper player. - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - - //Check if region is specified, and if so, is the player in it. - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - //Type BREAK - if (type == BlockType.BREAK) { - dB.log("...BREAK listener"); - //if catch-all specified, count it! - if (blocks.contains("*")) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " + player.getName() - + " broke a(n) " + event.getBlock().getType().toString() - + "."); - check(); - return; - } - - //check if block is specified and if so, count it! - for (String item_value : blocks) { - dB.log("...checking value: " + item_value); - dMaterial mat = dMaterial.valueOf(item_value); - - if (event.getBlock().getState().getType() == mat.getMaterial() && - event.getBlock().getState().getData().equals(mat.getMaterialData())) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " + player.getName() - + " broke a(n) " + event.getBlock().getType().toString() - + "."); - check(); - } - } - } - } - - - List itemsCollected = new ArrayList(); - - @EventHandler - public void listenCollect(PlayerPickupItemEvent event) { - //Check if event references proper player. - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - - //Check if region is specified, and if so, is the player in it. - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - //Type COLLECT - if (type == BlockType.COLLECT) { - - //if catch-all specified, count it! - if (blocks.contains("*")) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " + player.getName() - + " collected a(n) " + event.getItem().getItemStack().getType().toString() - + "."); - check(); - return; - } - - //check if block is specified and if so, count it! - for (String item_value : blocks) { - dMaterial mat = dMaterial.valueOf(item_value); - - if (event.getItem().getItemStack().getType() == mat.getMaterial() && - event.getItem().getItemStack().getData().equals(mat.getMaterialData())) { - //If the specific item has been collected before, dont count it - if (itemsCollected.contains(event.getItem().getEntityId())) { - return; - } - else { - itemsCollected.add(event.getItem().getEntityId()); - } - - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " + player.getName() - + " collected a(n) " + event.getItem().getItemStack().getType().toString() - + "."); - check(); - } - } - } - } - - @EventHandler - public void listenBucket(PlayerBucketFillEvent event) { - //Check if event references proper player. - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - - //Check if region is specified, and if so, is the player in it. - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - //Type COLLECT - if (type == BlockType.COLLECT) { - //if catch-all specified, count it! - if (blocks.contains("*")) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " - + player.getName() + " collected a " - + event.getBucket().name() + "."); - check(); - return; - } - - //check if block is specified and if so, count it! - for (String item_value : blocks) { - dMaterial mat = dMaterial.valueOf(item_value); - - if (event.getBucket() == mat.getMaterial()) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " - + player.getName() + " collected a " - + event.getBucket().name() + "."); - - check(); - } - } - } - } - - List blocksPlaced = new ArrayList(); - - @EventHandler - public void listenPlace(BlockPlaceEvent event) { - //Check if event references proper player. - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - - //Check if region is specified, and if so, is the player in it. - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - //Type BUILD - if (type == BlockType.BUILD) { - - //if catch-all specified, count it! - if (blocks.contains("*")) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " + player.getName() - + " placed a(n) " + event.getBlock().getType().toString() - + "."); - check(); - return; - } - - //check if block is specified and if so, count it! - for (String item_value : blocks) { - dMaterial mat = dMaterial.valueOf(item_value); - - if (event.getBlock().getState().getType() == mat.getMaterial() && - event.getBlock().getState().getData().equals(mat.getMaterialData())) { - blocks_so_far++; - dB.log(ChatColor.YELLOW + "// " + player.getName() - + " placed a(n) " + event.getBlock().getType().toString() - + "."); - check(); - } - } - } - } - - @TagManager.TagEvents - public void listenTag(ReplaceableTagEvent event) { - - if (!event.matches("LISTENER")) { - return; - } - if (!event.getType().equalsIgnoreCase(id)) { - return; - } - - if (event.getValue().equalsIgnoreCase("region")) { - event.setReplaced(region); - } - else if (event.getValue().equalsIgnoreCase("required")) { - event.setReplaced(required.toString()); - } - else if (event.getValue().equalsIgnoreCase("blocks_so_far")) { - event.setReplaced(blocks_so_far.toString()); - } - else if (event.getValue().equalsIgnoreCase("blocks")) { - String blockList = ""; - for (String curTar : blocks) { - blockList = blockList + curTar + ", "; - blockList = blockList.substring(0, blockList.length() - 1); - } - event.setReplaced(blockList); - } - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerType.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerType.java deleted file mode 100644 index 92dd77c297..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/BlockListenerType.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListenerType; - -public class BlockListenerType extends AbstractListenerType { - - @Override - public void onEnable() { - //nothing to do here - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerInstance.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerInstance.java deleted file mode 100644 index 822398a895..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerInstance.java +++ /dev/null @@ -1,294 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListener; -import net.aufdemrand.denizen.listeners.core.ItemDropListenerType.ItemDropType; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.objects.aH; -import net.aufdemrand.denizencore.utilities.CoreUtilities; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.EntityType; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.entity.EntityDeathEvent; -import org.bukkit.inventory.ItemStack; - -import java.util.List; - -public class ItemDropListenerInstance extends AbstractListener implements Listener { - - ItemDropType type = null; - - ItemStack item = null; - Location location = null; - Material block = null; - EntityType mob = null; - - String dropper = null; - String region = null; - - Integer radius = 5; - Integer dropRate = 100; - Integer quantity = 1; - Integer qtyDropped = 0; - - @Override - public void constructed() { - denizen.getServer().getPluginManager().registerEvents(this, denizen); - - } - - @Override - public void deconstructed() { - EntityDeathEvent.getHandlerList().unregister(this); - - } - - @Override - public void onBuild(List args) { -// for (String arg : args) { -// if (aH.matchesValueArg("TYPE", arg, ArgumentType.Custom)) { -// try { -// type = ItemDropType.valueOf(aH.getStringFrom(arg).toUpperCase()); -// dB.echoDebug("...type set to: " + type.name()); -// continue; -// } catch (Exception e) { dB.echoDebug("...type " + aH.getStringFrom(arg) + " is not valid."); } -// -// } else if (aH.matchesItem(arg)) { -// item = aH.getItemFrom(arg).getItemStack(); -// dB.echoDebug("...item set to: " + item); -// continue; -// -// } else if (aH.matchesValueArg("REGION", arg, ArgumentType.Custom)) { -// region = aH.getStringFrom(arg); -// dB.echoDebug("...region set to: " + region); -// continue; -// -// } else if (aH.matchesLocation(arg)) { -// location = aH.getLocationFrom(arg); -// dB.echoDebug("...location set to: " + location); -// continue; -// -// } else if (aH.matchesValueArg("RADIUS", arg, ArgumentType.Integer)) { -// radius = aH.getIntegerFrom(arg); -// dB.echoDebug("...radius set to: " + radius); -// continue; -// -// } else if (aH.matchesValueArg("DROPRATE", arg, ArgumentType.Integer)) { -// dropRate = aH.getIntegerFrom(arg); -// dB.echoDebug("...drop rate set to: " + dropRate + "/100"); -// continue; -// -// } else if (aH.matchesValueArg("DROPSFROM", arg, ArgumentType.Custom)) { -// dropper = aH.getStringFrom(arg); -// dB.echoDebug("...dropper set to: " + dropper); -// continue; -// -// } else if (aH.matchesQuantity(arg)) { -// quantity = aH.getIntegerFrom(arg); -// dB.echoDebug("...required set to: " + quantity); -// continue; -// } -// } -// -// if (item == null) { -// dB.echoDebug("...item could not be set"); -// cancel(); -// } -// -// switch (type) { -// -// case BLOCKPLACE: -// -// case BLOCKBREAK: -// try { -// block = Material.valueOf(dropper); -// dB.echoDebug("...DROPSFROM material set"); -// } catch (Exception e) { dB.echoDebug("...DROPSFROM is not a valid material"); } -// break; -// -// case MOBKILL: -// if (aH.matchesEntityType("entity:" + dropper)) { -// mob = EntityType.valueOf(dropper.toUpperCase()); -// dB.echoDebug("...mob selected from DROPSFROM"); -// } else dB.echoDebug("...could not select mob from DROPSFROM"); -// break; -// -// default: -// dB.echoDebug("...error setting type"); -// cancel(); -// break; -// -// } - } - - @Override - public void onCancel() { - // nothing to do here - - } - - @Override - public void onFinish() { - // nothing to do here - - } - - @Override - public void onLoad() { - type = ItemDropType.valueOf((String) get("type")); - item = (ItemStack) get("item"); - location = (Location) get("location"); - block = (Material) get("block"); - mob = (EntityType) get("mob"); - dropper = (String) get("dropper"); - region = (String) get("region"); - radius = (Integer) get("radius"); - dropRate = (Integer) get("dropRate"); - quantity = (Integer) get("required"); - qtyDropped = (Integer) get("qtyDropped"); - //r = (Random) get("r"); - - } - - @Override - public void onSave() { - store("type", type); - store("item", item); - store("lcoation", location); - store("block", block); - store("mob", mob); - store("dropper", dropper); - store("region", region); - store("radius", radius); - store("dropRate", dropRate); - store("required", quantity); - store("qtyDropped", qtyDropped); - //store("r", r); - } - - @Override - public String report() { - switch (type) { - case BLOCKBREAK: - break; - case BLOCKPLACE: - break; - case MOBKILL: - break; - default: - break; - } - return null; - } - - @EventHandler - public void mobKilled(EntityDeathEvent event) { - if (type != ItemDropType.MOBKILL) { - return; - } - dB.log("...checking kill"); - if (event.getEntity().getKiller() != player.getPlayerEntity()) { - return; - } - dB.log("...killed by player"); - if (event.getEntity().getType() != mob) { - return; - } - dB.log("...proper mob"); - if (location != null) { - if (location.distance(player.getPlayerEntity().getLocation()) > radius) { - return; - } - } - dB.log("...within range"); - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - dB.log("...within region (deprecated)"); - - dB.log("...trying to drop item"); - if (CoreUtilities.getRandom().nextInt(101) < dropRate) { - dB.log("...item should drop now"); - event.getEntity().getWorld().dropItem(event.getEntity().getLocation(), item); - qtyDropped++; - dB.log("...item dropped"); - check(); - } - } - - @EventHandler - public void blockMined(BlockBreakEvent event) { - if (type != ItemDropType.BLOCKBREAK) { - return; - } - dB.log("...checking blockbreakevent"); - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - dB.log("...mined by player"); - if (event.getBlock().getType() != block) { - return; - } - dB.log("...proper block mined"); - if (location != null) { - if (location.distance(player.getPlayerEntity().getLocation()) > radius) { - return; - } - } - dB.log("...within range"); - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - dB.log("...within region(deprecated)"); - - if (CoreUtilities.getRandom().nextInt(101) < dropRate) { - event.getBlock().getWorld().dropItem(event.getBlock().getLocation(), item); - qtyDropped++; - dB.log("...item dropped"); - check(); - } - } - - @EventHandler - public void blockPlaced(BlockPlaceEvent event) { - if (type != ItemDropType.BLOCKPLACE) { - return; - } - dB.log("...checking blockplaceevent"); - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - dB.log("...placed by player"); - if (event.getBlock().getType() != block) { - return; - } - dB.log("...proper block placed"); - if (location != null) { - if (location.distance(player.getPlayerEntity().getLocation()) > radius) { - return; - } - } - dB.log("...within range"); - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getPlayerEntity().getLocation(), region)) return; - } - dB.log("...within region(deprecated)"); - - if (CoreUtilities.getRandom().nextInt(101) < dropRate) { - event.getBlock().getWorld().dropItem(event.getBlock().getLocation(), item); - qtyDropped++; - dB.log("...item dropped"); - check(); - } - } - - private void check() { - dB.log(qtyDropped + "/" + quantity + " dropped"); - if (quantity.equals(qtyDropped)) { - finish(); - } - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerType.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerType.java deleted file mode 100644 index 55bcc5a608..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemDropListenerType.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListenerType; - -public class ItemDropListenerType extends AbstractListenerType { - - enum ItemDropType {MOBKILL, BLOCKBREAK, BLOCKPLACE} - - @Override - public void onEnable() { - // TODO Auto-generated method stub - - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java deleted file mode 100644 index cac7ca8cd9..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java +++ /dev/null @@ -1,240 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListener; -import net.aufdemrand.denizen.objects.dCuboid; -import net.aufdemrand.denizen.objects.dInventory; -import net.aufdemrand.denizen.utilities.DenizenAPI; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.objects.aH; -import net.aufdemrand.denizencore.objects.dList; -import net.aufdemrand.denizencore.utilities.CoreUtilities; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.PlayerFishEvent; -import org.bukkit.inventory.ItemStack; - -import java.util.Arrays; -import java.util.List; - -public class ItemListenerInstance extends AbstractListener implements Listener { - - public enum ItemType {CRAFT, SMELT, FISH} - - ItemType type = null; - - dList items; - - int required = 0; - int items_so_far = 0; - - String region = null; - dCuboid cuboid = null; - - @Override - public void onBuild(List args) { - - for (aH.Argument arg : args) { - - if (arg.matchesEnum(ItemType.values()) && type == null) { - this.type = ItemType.valueOf(arg.getValue().toUpperCase()); - } - else if (arg.matchesPrefix("qty, q") - && arg.matchesPrimitive(aH.PrimitiveType.Integer)) { - this.required = aH.getIntegerFrom(arg.getValue()); - } - else if (arg.matchesPrefix("items, item, i, name, names")) { - items = arg.asType(dList.class); - } - else if (arg.matchesPrefix("region, r")) { - this.region = arg.getValue(); - } - else if (arg.matchesPrefix("cuboid, c") - && arg.matchesArgumentType(dCuboid.class)) { - this.cuboid = arg.asType(dCuboid.class); - } - } - - if (items == null) { - items = new dList("*"); - } - - if (type == null) { - dB.echoError("Missing TYPE argument! Valid: CRAFT, SMELT, FISH"); - cancel(); - } - } - - public void increment(String object, int amount) { - items_so_far = items_so_far + amount; - dB.log(ChatColor.YELLOW + "// " + player.getName() + " " + - CoreUtilities.toLowerCase(type.toString()) + "ed " + amount + " " + object + "."); - check(); - } - - @EventHandler - public void listenItem(InventoryClickEvent event) { - - // Proceed if the slot clicked is a RESULT slot and the player is the right one - if (event.getSlotType().toString().equals("RESULT") - && event.getWhoClicked() == player.getPlayerEntity()) { - - // If REGION argument specified, check. If not in region, don't count kill! - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - // Put the type of this inventory in a string and check if it matches the - // listener's type - String inventoryType = event.getInventory().getType().toString(); - if ((type == ItemType.CRAFT && (inventoryType.equals("CRAFTING") || inventoryType.equals("WORKBENCH"))) - || (type == ItemType.SMELT && inventoryType.equals("FURNACE"))) { - - // Get the item in the result slot as an ItemStack - final ItemStack item = new ItemStack(event.getCurrentItem()); - - //if item isn't a required item, then return - // TODO: 1.13 - better method? - if (!items.contains(CoreUtilities.toLowerCase(item.getType().name())) - && !items.contains(String.valueOf(item.getType().getId())) && !items.contains("*")) { - return; - } - - if (event.isShiftClick()) { - // Save the quantity of items of this type that the player had - // before the event took place - final int initialQty = new dInventory(player.getPlayerEntity().getInventory()).count(item, false); - - // Run a task 1 tick later, after the event has occurred, and - // see how many items of this type the player has then in the - // inventory - Bukkit.getScheduler().scheduleSyncDelayedTask(DenizenAPI.getCurrentInstance(), - new Runnable() { - @Override - public void run() { - int newQty = new dInventory(player.getPlayerEntity().getInventory()).count(item, false); - int difference = newQty - initialQty; - - // If any items were obtained (i.e. if shift click was - // used with the player's inventory not being full), - // increase the number of current items - if (difference > 0) { - increment(item.getType().toString(), difference); - } - - } - }, 1); - } - else { - // If shift click was not used, simply increase the current items - // by the quantity of the item in the result slot - increment(item.getType().toString(), item.getAmount()); - } - - } - } - } - - @EventHandler - public void listenFish(PlayerFishEvent event) { - // Only continue if the event is an event for the player that owns this listener. - if (event.getPlayer() != player.getPlayerEntity()) { - return; - } - - // If REGION argument specified, check. If not in region, don't count kill! - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - if (event.getState().toString().equals("CAUGHT_FISH")) { - increment("FISH", 1); - } - } - - @Override - public void onSave() { - try { - store("Type", type.name()); - store("Items", this.items); - store("Quantity Needed", this.required); - store("Quantity Done", this.items_so_far); - store("Region", region); - if (cuboid != null) { - store("Cuboid", cuboid.identify()); - } - } - catch (Exception e) { - dB.echoError("Unable to save ITEM listener for '" + player.getName() + "'!"); - } - } - - @SuppressWarnings("unchecked") - @Override - public void onLoad() { - try { - type = ItemType.valueOf((String) get("Type")); - items = new dList((List) get("Items")); - required = (Integer) get("Quantity Needed"); - items_so_far = (Integer) get("Quantity Done"); - region = (String) get("Region"); - cuboid = dCuboid.valueOf((String) get("Cuboid")); - } - catch (Exception e) { - dB.echoError("Unable to load ITEM listener for '" + player.getName() + "'!"); - cancel(); - } - } - - @Override - public void onFinish() { - - } - - public void check() { - if (items_so_far >= required) { - InventoryClickEvent.getHandlerList().unregister(this); - PlayerFishEvent.getHandlerList().unregister(this); - finish(); - } - } - - @Override - public void onCancel() { - - } - - @Override - public String report() { - return player.getName() + " current has quest listener '" + id - + "' active and must " + type.name() + " " + Arrays.toString(items.toArray()) - + " '(s). Current progress '" + items_so_far + "/" + required + "'."; - } - - @Override - public void constructed() { - denizen.getServer().getPluginManager().registerEvents(this, denizen); - } - - @Override - public void deconstructed() { - InventoryClickEvent.getHandlerList().unregister(this); - PlayerFishEvent.getHandlerList().unregister(this); - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerType.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerType.java deleted file mode 100644 index 970f4ddbe0..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerType.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListenerType; - -public class ItemListenerType extends AbstractListenerType { - - @Override - public void onEnable() { - - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerInstance.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerInstance.java deleted file mode 100644 index 088b60a836..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerInstance.java +++ /dev/null @@ -1,393 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListener; -import net.aufdemrand.denizen.objects.dCuboid; -import net.aufdemrand.denizen.objects.dEntity; -import net.aufdemrand.denizen.objects.dNPC; -import net.aufdemrand.denizen.objects.dPlayer; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizen.utilities.depends.Depends; -import net.aufdemrand.denizencore.objects.aH; -import net.aufdemrand.denizencore.objects.dList; -import net.aufdemrand.denizencore.tags.ReplaceableTagEvent; -import net.aufdemrand.denizencore.tags.TagManager; -import net.aufdemrand.denizencore.utilities.CoreUtilities; -import net.citizensnpcs.api.CitizensAPI; -import org.bukkit.ChatColor; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDeathEvent; - -import java.util.Arrays; -import java.util.List; - - -public class KillListenerInstance extends AbstractListener implements Listener { - - public static enum KillType {NPC, PLAYER, GROUP, ENTITY} - - // - // The type of Kill - // - KillType type = null; - - // - // The targets - // - dList targets; - - // - // The names - // - dList names; - - // - // The counters - // - int required = 1; - int kills_so_far = 0; - - // - // Modifiers - // - String region = null; - dCuboid cuboid = null; - - - @Override - public String report() { - // Called by the '/denizen listener --report id' command, meant to give information - // to server-operators about the current status of this listener. - return player.getName() + " currently has quest listener '" + id - + "' active and must kill " + Arrays.toString(targets.toArray()) - + " '" + type.name() + "'(s) named " + Arrays.toString(names.toArray()) + ". Current progress '" + kills_so_far + "/" + required + "'."; - } - - - @Override - public void onBuild(List args) { - // Build the listener from script arguments. onBuild() is called when a new listener is - // made with the LISTEN command. All arguments except type, id, and script - // are passed through to here. - for (aH.Argument arg : args) { - - if (arg.matchesEnum(KillType.values()) && type == null) { - this.type = KillType.valueOf(arg.getValue().toUpperCase()); - } - else if (arg.matchesPrefix("qty, q") - && arg.matchesPrimitive(aH.PrimitiveType.Integer)) { - this.required = aH.getIntegerFrom(arg.getValue()); - } - else if (arg.matchesPrefix("region, r")) { - this.region = arg.getValue(); - } - else if (arg.matchesPrefix("cuboid, c") - && arg.matchesArgumentType(dCuboid.class)) { - this.cuboid = arg.asType(dCuboid.class); - } - else if (arg.matchesPrefix("targets, target, t, name, names")) { - targets = arg.asType(dList.class); - } - else if (arg.matchesPrefix("mobnames, mn")) { - names = arg.asType(dList.class); - } - - } - - if (targets == null) { - targets = new dList("*"); - } - - if (names == null) { - names = new dList("*"); - } - - if (type == null) { - dB.echoError("Missing TYPE argument! Valid: NPC, ENTITY, PLAYER, GROUP"); - cancel(); - } - else if (type == KillType.NPC && Depends.citizens == null) { - dB.echoError("Invalid TYPE argument 'NPC': Citizens2 is not enabled."); - cancel(); - } - - // At this point, constructed() is called. - } - - - @Override - public void onLoad() { - // Build the listener from saved data. id and type are saved automatically. - // onBuild() will not be called, this should handle everything onBuild() would with the - // saved data from onSave(). - type = KillType.valueOf(((String) get("Type"))); - targets = new dList((List) get("Targets")); - names = new dList((List) get("Names")); - required = (Integer) get("Quantity"); - kills_so_far = (Integer) get("Current Kills"); - region = (String) get("Region"); - cuboid = dCuboid.valueOf((String) get("Cuboid")); - - // At this point, constructed() is called. - } - - - @Override - public void onSave() { - // If the player leaves the game while a listener is in progress, save the information - // so that it can be rebuilt onLoad(). id and type are done automatically. - store("Type", type.name()); - store("Targets", targets); - store("Names", names); - store("Quantity", required); - store("Current Kills", kills_so_far); - store("Region", region); - if (cuboid != null) { - store("Cuboid", cuboid.identify()); - } - - // At this point, deconstructed() is called. - } - - - @Override - public void onFinish() { - // Nothing to do here for now, but this is called when the quest listener is - // finished, after the script is run, and right before deconstructed(). - - // At this point, deconstructed() is called. - } - - - @Override - public void onCancel() { - // Nothing to do here for now, but this is called when the quest listener is - // cancelled, right before deconstructed(). - - // At this point, deconstructed() is called. - } - - - @Override - public void constructed() { - // Called after build and load methods. Perfect place to register - // any bukkit events! - denizen.getServer().getPluginManager().registerEvents(this, denizen); - TagManager.registerTagEvents(this); - - // Report to the console - dB.log(report()); - } - - - @Override - public void deconstructed() { - // Called when the instance is deconstructed due to either it being - // saved, finished, or cancelled. - // This is the perfect place to unregister any bukkit events so it - // can be cleanly removed from memory. - - EntityDeathEvent.getHandlerList().unregister(this); - TagManager.unregisterTagEvents(this); - } - - - @EventHandler - public void listen(EntityDeathEvent event) { - // Only continue if the event is an event for the player that owns this listener. - if (event.getEntity().getKiller() != player.getPlayerEntity()) { - return; - } - - // If REGION argument specified, check. If not in region, don't count kill! - if (region != null) { - //if (!WorldGuardUtilities.inRegion(player.getLocation(), region)) return; - } - - // Same with the CUBOID argument... - if (cuboid != null) { - if (!cuboid.isInsideCuboid(player.getLocation())) { - return; - } - } - - // - // ENTITY type Kill Listener - // - if (type == KillType.ENTITY) { - // Get entity killed - dEntity ent = new dEntity(event.getEntity()); - boolean count_it = false; - // Check targets, if any match entity killed, count_it! - for (String target : targets) { - if (dEntity.valueOf(target) != null) { - if (ent.comparesTo(dEntity.valueOf(target)) == 1) { - count_it = true; - } - } - } - boolean right_name = false; - for (String name : names) { - if (ChatColor.stripColor(ent.getName()).contains(name)) { - right_name = true; - } - } - // If an entity was found, or targets is '*', increment the - // kills_so_far - if (count_it || targets.contains("*")) { - if (right_name || names.contains("*")) { - kills_so_far++; - dB.log(player.getName() + " killed a " - + ent.identify() + ". Current progress '" - + kills_so_far + "/" + required + "'."); - // Check the number of kills so far - check(); - } - } - } - - // - // NPC type Kill Listener - // - else if (type == KillType.NPC) { - // If a NPC wasn't killed, return. - if (!CitizensAPI.getNPCRegistry().isNPC(event.getEntity())) { - return; - } - // Get the NPC killed - dNPC npc = dNPC.mirrorCitizensNPC(CitizensAPI.getNPCRegistry().getNPC(event.getEntity())); - boolean count_it = false; - - // Check targets, if any match entity killed, count_it! - for (String target : targets) { - // Check against a physical NPC object (n@7, n@18, etc.) - if (dNPC.valueOf(target) != null) { - if (dNPC.valueOf(target).getId() == npc.getId()) { - count_it = true; - } - } - // Cannot be 'else if' since dNPC.valueOf will return true for names now, as well as ids. - // Check against name of NPC (n@fullwall, aufdemrand, etc)... object notation is optional. - - if (CoreUtilities.toLowerCase(npc.getName()) - .equals(CoreUtilities.toLowerCase(target).replace("n@", ""))) { - count_it = true; - } - } - // If NPC was matched or targets contains '*', increment - // the kills so far. - if (count_it || targets.contains("*")) { - kills_so_far++; - dB.log(player.getName() + " killed " - + npc.toString() + ". Current progress '" - + kills_so_far + "/" + required + "'."); - // Check the number of kills so far - check(); - } - } - - // - // PLAYER type Kill Listener - // - else if (type == KillType.PLAYER) { - // Check to make sure entity is a Player, and not a NPC - if (event.getEntityType() != EntityType.PLAYER) { - return; - } - if (Depends.citizens != null && CitizensAPI.getNPCRegistry().isNPC(event.getEntity())) { - return; - } - - // Get player killed - dPlayer player = dPlayer.mirrorBukkitPlayer((Player) event.getEntity()); - boolean count_it = false; - // Check targets, if any match entity killed, count_it! - for (String target : targets) { - if (dPlayer.valueOf(target) != null) { - if (dPlayer.valueOf(target).getName().equalsIgnoreCase(player.getName())) { - count_it = true; - } - } - } - // If an entity was found, or targets is '*', increment the - // kills_so_far - if (count_it || targets.contains("*")) { - kills_so_far++; - dB.log(player.getName() + " killed " - + player.getName() + ". Current progress '" - + kills_so_far + "/" + required + "'."); - // Check the number of kills so far - check(); - } - } - - // - // GROUP type Kill Listener - // - else if (type == KillType.GROUP) { - // Require the entity to be a Player - if (event.getEntityType() == EntityType.PLAYER) - // Iterate through groups on the Player - { - for (String group : Depends.permissions.getPlayerGroups((Player) event.getEntity())) - // If a group matches, count it! - { - if (targets.contains(group.toUpperCase())) { - kills_so_far++; - dB.log(player.getName() + " killed " + ((Player) event.getEntity()).getName().toUpperCase() + " of group " + group + "."); - check(); - break; - } - } - } - } - } - - - public void check() { - // Check current kills vs. required kills; finish() if necessary. - if (kills_so_far >= required) { - finish(); - } - } - - - @TagManager.TagEvents - public void listenTag(ReplaceableTagEvent event) { - - if (!event.matches("LISTENER")) { - return; - } - if (!event.getType().equalsIgnoreCase(id)) { - return; - } - - if (event.getValue().equalsIgnoreCase("region")) { - event.setReplaced(region); - } - else if (event.getValue().equalsIgnoreCase("required")) { - event.setReplaced(String.valueOf(required)); - } - else if (event.getValue().equalsIgnoreCase("currentkills")) { - event.setReplaced(String.valueOf(kills_so_far)); - } - else if (event.getValue().equalsIgnoreCase("targets")) { - String targetList = ""; - for (String curTar : targets) { - targetList = targetList + curTar + ", "; - targetList = targetList.substring(0, targetList.length() - 1); - } - event.setReplaced(targetList); - } - else if (event.getValue().equalsIgnoreCase("mobnames")) { - String namesList = ""; - for (String curNam : names) { - namesList = namesList + curNam + ", "; - namesList = namesList.substring(0, namesList.length() - 1); - } - event.setReplaced(namesList); - } - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerType.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerType.java deleted file mode 100644 index b96ca7c13d..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/KillListenerType.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListenerType; - -public class KillListenerType extends AbstractListenerType { - - @Override - public void onEnable() { - // Nothing to do here. - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerInstance.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerInstance.java deleted file mode 100644 index 8825481173..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerInstance.java +++ /dev/null @@ -1,249 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListener; -import net.aufdemrand.denizen.objects.dCuboid; -import net.aufdemrand.denizen.objects.dLocation; -import net.aufdemrand.denizen.objects.dNPC; -import net.aufdemrand.denizen.utilities.Utilities; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.objects.aH; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerMoveEvent; - -import java.util.List; - - -/** - * This is a listener that listens for a player to travel. There are different - * types of "traveling" this can entail: - *

- *

    - *
  1. - * Distance - *
    Number of blocks to travel.
    - *
  2. - *
  3. - * Target - *
    A NPC to travel to.
    - *
  4. - *
  5. - * Location - *
    A location to travel to
    - *
  6. - *
- * - * @author Jeebiss, Jeremy Schroeder - */ -public class TravelListenerInstance extends AbstractListener implements Listener { - - enum TravelType {DISTANCE, TOLOCATION, TONPC, TOCUBOID} - - // - // The type of Travel - // - private TravelType type; - - // - // End point criteria - // - private dNPC target; - private dLocation end_point; - private dCuboid end_cuboid; - private int radius = 2; - - // - // Counters - // - private Integer blocks_walked = 0; - private Integer distance_required = null; - - /** - * This method is called when an instance of the travel listener is created. - * This class will then register with the event handler so we know when the - * player moves so that a determination of whether or not the player has - * reached the goal can be determined. - */ - @Override - public void constructed() { - denizen.getServer().getPluginManager().registerEvents(this, denizen); - } - - /** - * This will be called when this travel listener is destroyed. This allows - * the class to unregister with the event handler so that no more events will - * be received. - */ - @Override - public void deconstructed() { - PlayerMoveEvent.getHandlerList().unregister(this); - } - - @Override - public void onBuild(List args) { - - for (aH.Argument arg : args) { - - if (type == null && arg.matchesEnum(TravelType.values())) { - type = TravelType.valueOf(arg.getValue().toUpperCase()); - } - - // Distance/radius should be first, that way they aren't accidently - // intrepreted as NPCs. - else if (arg.matchesPrefix("d, distance") - && arg.matchesPrimitive(aH.PrimitiveType.Integer)) { - distance_required = aH.getIntegerFrom(arg.getValue()); - } - else if (arg.matchesPrefix("r, radius") - && arg.matchesPrimitive(aH.PrimitiveType.Integer)) { - radius = aH.getIntegerFrom(arg.getValue()); - } - else if (arg.matchesArgumentType(dCuboid.class)) { - end_cuboid = arg.asType(dCuboid.class); - } - else if (arg.matchesArgumentType(dLocation.class)) { - end_point = arg.asType(dLocation.class); - } - else if (arg.matchesArgumentType(dNPC.class)) { - target = arg.asType(dNPC.class); - } - - } - - // - // Check for mandatory arguments. - // - if (type == null) { - dB.echoError("Missing TYPE argument! Valid: DISTANCE, TOLOCATION, TONPC, TOCUBOID"); - cancel(); - } - - if (type == TravelType.DISTANCE && distance_required == null) { - dB.echoError("Missing 'distance' argument!"); - cancel(); - } - - if (type == TravelType.TOCUBOID && end_cuboid == null) { - dB.echoError("Missing 'cuboid' argument!"); - cancel(); - } - - if (type == TravelType.TOLOCATION && end_point == null) { - dB.echoError("Missing 'location' argument!"); - cancel(); - } - - if (type == TravelType.TONPC && target == null) { - dB.echoError("Missing 'npc' argument!"); - cancel(); - } - - - } - - @Override - public void onCancel() { - // nothing to do here - - } - - @Override - public void onFinish() { - // nothing to do here - - } - - @Override - public void onLoad() { - type = TravelType.valueOf((String) get("Type")); - distance_required = (Integer) get("Distance"); - blocks_walked = (Integer) get("Blocks Walked"); - end_cuboid = dCuboid.valueOf((String) get("End Cuboid")); - end_point = dLocation.valueOf((String) get("End Location")); - } - - @Override - public void onSave() { - store("Type", type.name()); - store("Distance", distance_required); - store("Radius", radius); - store("Blocks Walked", blocks_walked); - if (end_point != null) { - store("End Location", end_point.identify()); - } - if (end_cuboid != null) { - store("End Cuboid", end_cuboid.identify()); - } - } - - @Override - public String report() { - if (type == TravelType.DISTANCE) { - return player.getName() + "has traveled " + blocks_walked + " blocks out of " + distance_required; - } - else if (type == TravelType.TOLOCATION) { - return player.getName() + " is traveling to " + end_point; - } - else if (type == TravelType.TONPC) { - return player.getName() + " is traveling to NPC " + target.getId(); - } - return "Failed to create detailed report"; - } - - /** - * This method will be called every time a player moves in the game. It's - * used to determine if a player has satisfied a certain travel goal. - * - * @param event The player movement event. - */ - @EventHandler - public void walking(PlayerMoveEvent event) { - // Only continue if the player moving owns this Listener - if (!event.getPlayer().equals(player.getPlayerEntity())) { - return; - } - // Don't look if the player hasn't moved a block yet... - if (event.getTo().getBlock().equals(event.getFrom().getBlock())) { - return; - } - - //////////// - // DISTANCE type Location Listener - /////// - if (type == TravelType.DISTANCE) { - blocks_walked++; - check(); - } - - //////////// - // TOLOCATION type Location Listener - /////// - else if (type == TravelType.TOLOCATION) { - if (!player.getPlayerEntity().getLocation().getWorld().equals(end_point.getWorld())) { - return; - } - //if (player.getLocation().distance(endPoint) <= radius) { - if (Utilities.checkLocation(player.getPlayerEntity(), end_point, radius)) { - finish(); - } - } - - /////////// - // TONPC type Location Listener - /////// - else if (type == TravelType.TONPC) { - if (Utilities.checkLocation(player.getPlayerEntity(), - target.getLocation(), radius)) { - finish(); - } - } - - } - - private void check() { - - if (blocks_walked >= distance_required) { - finish(); - } - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerType.java b/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerType.java deleted file mode 100644 index 167e6dc9ff..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/listeners/core/TravelListenerType.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.aufdemrand.denizen.listeners.core; - -import net.aufdemrand.denizen.listeners.AbstractListenerType; - -public class TravelListenerType extends AbstractListenerType { - - @Override - public void onEnable() { - // nothing to do here - } -} diff --git a/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java b/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java index 916db5f1a1..37e75ad840 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java @@ -2167,66 +2167,6 @@ public void registerCoreMembers() { "LIGHT", "light [] [<#>/reset] (duration:)", 2); - // <--[command] - // @Name Listen - // @Syntax listen ({new}/cancel/finish) [kill/block/item/itemdrop/travel] [] [script:] (id:) - // @Required 2 - // @Stable unstable - // @Deprecated This command may become unsupported in the future. - // @Short Listens for the player achieving various actions and runs a script when they are completed. - // @Author aufdemrand, Jeebiss - // @Group player - // - // @Description - // This will create a listener object that listens for when the player does specific actions, - // and when the player has done the action enough times, this will run a specified script. Used - // as the meat of quest style scripts, listeners are the foundation for getting information - // about what the player is doing. This command has 4 basic arguments that apply to every listener, - // and then accepts any number of additional arguments for the specific listener type. Once - // created, a listener will remain active until it is finished by the player, finished via - // a script, or canceled via a script. - // - // The currently available listener types are: Kill, Block, Item, Itemdrop, and Travel - // - // Summary: - // Kill - Used to detect when a player kills an NPC, player, entity, or player in a specific permission group. - // Block - Used to detect when a player breaks, places, or collects blocks in the specified list. - // Item - Used to detect when a player crafts, smelts, or fishes an item on the specified list. - // Itemdrop - TODO: Document Command Details - // Travel - Used to detect when a player travels to an npc, to a specific location, into an area, or a specific distance. - // - // Detailed usage information can be found in the specific listener files. - // - // @Tags - // None - // - // @Usage - // Use to listen for when the player kills 10 zombies. - // - listen kill type:entity target:zombie quantity:10 script:ZombiesKilled - // - // @Usage - // Use to listen for when the player kills 3 zombies named "Boss" - // - listen kill type:entity target:zombie quantity:3 mobnames:Boss script:ZombiesKilled - // - // @Usage - // Use to listen for when a player mines 1 iron ore. - // - listen block type:break block:iron_ore quantity:1 script:IronMined - // - // @Usage - // Use to listen for when a player crafts 1 wooden sword. - // - listen item type:craft item:wood_sword quantity:1 script:SwordCrafted - // - // @Usage - // Use to... (TODO: Itemdrop) - // - // @Usage - // Use to listen for when a player walks for 150 blocks. - // - listen travel type:distance distance:150 script:DistanceTraveled - // --> - registerCoreMember(ListenCommand.class, - "LISTEN", "listen ({new}/cancel/finish) [kill/block/item/itemdrop/travel] [] [script:] (id:)", 2); - - // <--[command] // @Name Log // @Syntax log [] (type:{info}/severe/warning/fine/finer/finest/none/clear) [file:] diff --git a/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/player/ListenCommand.java b/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/player/ListenCommand.java deleted file mode 100644 index fd92eb5d25..0000000000 --- a/plugin/src/main/java/net/aufdemrand/denizen/scripts/commands/player/ListenCommand.java +++ /dev/null @@ -1,178 +0,0 @@ -package net.aufdemrand.denizen.scripts.commands.player; - -import net.aufdemrand.denizen.BukkitScriptEntryData; -import net.aufdemrand.denizen.listeners.AbstractListener; -import net.aufdemrand.denizen.utilities.DenizenAPI; -import net.aufdemrand.denizen.utilities.debugging.dB; -import net.aufdemrand.denizencore.exceptions.CommandExecutionException; -import net.aufdemrand.denizencore.exceptions.InvalidArgumentsException; -import net.aufdemrand.denizencore.objects.Element; -import net.aufdemrand.denizencore.objects.aH; -import net.aufdemrand.denizencore.objects.dScript; -import net.aufdemrand.denizencore.scripts.ScriptEntry; -import net.aufdemrand.denizencore.scripts.commands.AbstractCommand; -import net.aufdemrand.denizencore.utilities.CoreUtilities; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class ListenCommand extends AbstractCommand { - - - private enum Action {NEW, CANCEL, FINISH} - - @Override - public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException { - - List arguments = new ArrayList(); - - for (aH.Argument arg : aH.interpret(scriptEntry.getArguments())) { - - // - if (!scriptEntry.hasObject("action") - && arg.matchesEnum(Action.values())) { - scriptEntry.addObject("action", arg.asElement()); - } - - // - else if (!scriptEntry.hasObject("id") - && arg.matchesPrefix("id", "i")) { - scriptEntry.addObject("id", arg.asElement()); - } - - //