diff --git a/src/main/java/net/aufdemrand/denizen/flags/FlagManager.java b/src/main/java/net/aufdemrand/denizen/flags/FlagManager.java index e6fe391e38..b28280d448 100644 --- a/src/main/java/net/aufdemrand/denizen/flags/FlagManager.java +++ b/src/main/java/net/aufdemrand/denizen/flags/FlagManager.java @@ -140,7 +140,7 @@ public boolean contains(String stringValue) { if (val.equalsIgnoreCase(stringValue)) return true; try { if (Double.valueOf(val).equals(Double.valueOf(stringValue))) return true; - } catch (Exception e) { /* Not a valid number, continue. */ } + } catch (NumberFormatException e) { /* Not a valid number, continue. */ } } return false; diff --git a/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java b/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java index 30fdfb275d..5ffef4078f 100644 --- a/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java +++ b/src/main/java/net/aufdemrand/denizen/listeners/ListenerRegistry.java @@ -24,8 +24,8 @@ public class ListenerRegistry implements DenizenRegistry, Listener { - private Map> listeners = new ConcurrentHashMap>(); - private Map types = new ConcurrentHashMap(); + private Map> listeners = new ConcurrentHashMap>(8, 0.9f, 1); + private Map types = new ConcurrentHashMap(8, 0.9f, 1); private Denizen denizen; diff --git a/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java b/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java index d75366ae9c..842425eb7c 100644 --- a/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java +++ b/src/main/java/net/aufdemrand/denizen/listeners/core/ItemListenerInstance.java @@ -100,22 +100,22 @@ public void listenItem(InventoryClickEvent event) if (!WorldGuardUtilities.checkPlayerWGRegion(player, region)) return; // Get the item in the result slot as an ItemStack - ItemStack item = new ItemStack(event.getCurrentItem()); + final ItemStack item = new ItemStack(event.getCurrentItem()); if (event.isShiftClick()) { // Save the quantity of items of this type that the player had // before the event took place - int initialQty = Utilities.countItems(item, player.getInventory()); + final int initialQty = Utilities.countItems(item, player.getInventory()); // 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 Runnable2(item, initialQty) + new Runnable() { @Override - public void run(ItemStack item, Integer initialQty) + public void run() { int newQty = Utilities.countItems(item, player.getInventory()); int difference = newQty - initialQty; diff --git a/src/main/java/net/aufdemrand/denizen/npc/activities/core/TaskActivity.java b/src/main/java/net/aufdemrand/denizen/npc/activities/core/TaskActivity.java index c636bf6882..89d3ab74b9 100644 --- a/src/main/java/net/aufdemrand/denizen/npc/activities/core/TaskActivity.java +++ b/src/main/java/net/aufdemrand/denizen/npc/activities/core/TaskActivity.java @@ -48,12 +48,13 @@ public boolean addGoal(dNPC dNPC, String[] arguments, int priority) { return false; } - List taskGoals = new ArrayList(); - if (taskMap.containsKey(dNPC)) - taskGoals = taskMap.get(dNPC); + List taskGoals = taskMap.get(dNPC); + if (taskGoals == null) { + taskGoals = new ArrayList(); + taskMap.put(dNPC, taskGoals); + } taskGoals.add(0, new TaskGoal(dNPC, delay, duration, script, repeats, this)); - taskMap.put(dNPC, taskGoals); - dNPC.getCitizen().getDefaultGoalController().addGoal(taskMap.get(dNPC).get(0), priority); + dNPC.getCitizen().getDefaultGoalController().addGoal(taskGoals.get(0), priority); return true; } diff --git a/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderActivity.java b/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderActivity.java index adef1b470b..8b4d53942a 100644 --- a/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderActivity.java +++ b/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderActivity.java @@ -81,9 +81,9 @@ else if (aH.matchesLocation(arg)) { } public boolean removeGoal(dNPC npc, boolean verbose) { - if (wanderMap.containsKey(npc.getCitizen())) { - npc.getCitizen().getDefaultGoalController().removeGoal(wanderMap.get(npc.getCitizen())); - wanderMap.remove(npc.getCitizen()); + WanderGoal goal = wanderMap.remove(npc.getCitizen()); + if (goal != null) { + npc.getCitizen().getDefaultGoalController().removeGoal(goal); if (verbose) dB.echoDebug("Removed Wander Activities from NPC."); return true; } diff --git a/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderGoal.java b/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderGoal.java index bb705f07c5..88be549039 100644 --- a/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderGoal.java +++ b/src/main/java/net/aufdemrand/denizen/npc/activities/core/WanderGoal.java @@ -66,17 +66,14 @@ public void run(GoalSelector goalSelecter) { // If not already navigating.. let's find a new block to navigate to. dNPC.getNavigator().getDefaultParameters().speedModifier(speed); wanderLocation = wA.getNewLocation(X, Y, Z, world, radius, depth); - - Location checkLocation = new Location(wanderLocation.getWorld(), wanderLocation.getX(), wanderLocation.getY() + 2, wanderLocation.getZ()); - - if (checkLocation.getBlock().getType() != Material.AIR) { + if (wanderLocation.getWorld().getBlockAt(wanderLocation.getBlockX(), wanderLocation.getBlockY() + 2, wanderLocation.getBlockZ()).getType() != Material.AIR) { wanderLocation = wA.getNewLocation(X, Y, Z, world, radius, depth); goalSelecter.finish(); return; } if (!materials.isEmpty()) { - Boolean move = false; + boolean move = false; for (Material acceptableMaterial : materials) if (wanderLocation.getBlock().getType() == acceptableMaterial) move = true; if (materialIds.contains(Integer.valueOf(wanderLocation.getBlock().getTypeId()))) move = true; diff --git a/src/main/java/net/aufdemrand/denizen/npc/dNPC.java b/src/main/java/net/aufdemrand/denizen/npc/dNPC.java index e782c0af87..b9ad540a34 100644 --- a/src/main/java/net/aufdemrand/denizen/npc/dNPC.java +++ b/src/main/java/net/aufdemrand/denizen/npc/dNPC.java @@ -25,6 +25,7 @@ public class dNPC { private int npcid; + private final org.bukkit.Location locationCache = new org.bukkit.Location(null, 0, 0, 0); public dNPC(NPC citizensNPC) { this.npcid = citizensNPC.getId(); @@ -80,7 +81,7 @@ public InteractScriptContainer getInteractScriptQuietly(Player player, Class denizenNPCs = new ConcurrentHashMap(); + private static Map denizenNPCs = new ConcurrentHashMap(8, 0.9f, 1); public static dNPCRegistry getCurrentInstance() { return DenizenAPI.getCurrentInstance().getNPCRegistry(); diff --git a/src/main/java/net/aufdemrand/denizen/npc/traits/NameplateTrait.java b/src/main/java/net/aufdemrand/denizen/npc/traits/NameplateTrait.java index 1918630bbd..dee5be3c85 100644 --- a/src/main/java/net/aufdemrand/denizen/npc/traits/NameplateTrait.java +++ b/src/main/java/net/aufdemrand/denizen/npc/traits/NameplateTrait.java @@ -42,7 +42,7 @@ public class NameplateTrait extends Trait implements Listener { private String text = null; @Persist(value="colors", collectionType=ConcurrentHashMap.class) - private Map colors = new ConcurrentHashMap(); + private Map colors = new ConcurrentHashMap(8, 0.9f, 1); public NameplateTrait() { super("nameplate"); diff --git a/src/main/java/net/aufdemrand/denizen/npc/traits/TriggerTrait.java b/src/main/java/net/aufdemrand/denizen/npc/traits/TriggerTrait.java index 3c344afbdb..1ad8d7fe4d 100644 --- a/src/main/java/net/aufdemrand/denizen/npc/traits/TriggerTrait.java +++ b/src/main/java/net/aufdemrand/denizen/npc/traits/TriggerTrait.java @@ -21,13 +21,13 @@ public class TriggerTrait extends Trait implements Listener { @Persist(value="enabled", collectionType=ConcurrentHashMap.class) - private Map enabled = new ConcurrentHashMap(); + private Map enabled = new ConcurrentHashMap(8, 0.9f, 1); @Persist(value="duration", collectionType=ConcurrentHashMap.class) - private Map duration = new ConcurrentHashMap(); + private Map duration = new ConcurrentHashMap(8, 0.9f, 1); @Persist(value="cooldowntype", collectionType=ConcurrentHashMap.class) - private Map type = new ConcurrentHashMap(); + private Map type = new ConcurrentHashMap(8, 0.9f, 1); @Persist(value="radius", collectionType=ConcurrentHashMap.class) - private Map radius = new ConcurrentHashMap(); + private Map radius = new ConcurrentHashMap(8, 0.9f, 1); public void report() { dB.echoDebug("enabled: " + enabled.entrySet().toString()); diff --git a/src/main/java/net/aufdemrand/denizen/scripts/ScriptQueue.java b/src/main/java/net/aufdemrand/denizen/scripts/ScriptQueue.java index edd6bba260..4f8c6160ef 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/ScriptQueue.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/ScriptQueue.java @@ -40,7 +40,7 @@ public static String _getNextId() { } // Contains all currently active queues, keyed by a String id. - public static Map _queues = new ConcurrentHashMap(); + public static Map _queues = new ConcurrentHashMap(8, 0.9f, 1); /** @@ -123,7 +123,7 @@ public static boolean _queueExists(String id) { // ScriptQueues can have a bit of context, keyed by a String Id. All that can be accessed by either getContext() // or a dScript replaceable tag - protected Map context = new ConcurrentHashMap(); + protected Map context = new ConcurrentHashMap(8, 0.9f, 1); protected ScriptEntry lastEntryExecuted = null; diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/DetermineCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/DetermineCommand.java index 1958d3be5f..57b3fb526f 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/DetermineCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/DetermineCommand.java @@ -16,7 +16,7 @@ */ public class DetermineCommand extends AbstractCommand { - private static Map outcomes = new ConcurrentHashMap(); + private static Map outcomes = new ConcurrentHashMap(8, 0.9f, 1); public static long uniqueId = 0; diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/NewCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/NewCommand.java index 1ee60880cc..b7b313172b 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/NewCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/NewCommand.java @@ -31,9 +31,9 @@ public void onEnable() { denizen.getServer().getPluginManager().registerEvents(this, denizen); } - private Map itemStacks = new ConcurrentHashMap(); - private Map entities = new ConcurrentHashMap(); - private Map npcs = new ConcurrentHashMap(); + private Map itemStacks = new ConcurrentHashMap(8, 0.9f, 1); + private Map entities = new ConcurrentHashMap(8, 0.9f, 1); + private Map npcs = new ConcurrentHashMap(8, 0.9f, 1); /** * Gets a currently saved ItemStack, created with Denizen's NEW command, given a diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/PauseCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/PauseCommand.java index 82d21c1f13..b5b859b524 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/PauseCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/PauseCommand.java @@ -30,7 +30,7 @@ public class PauseCommand extends AbstractCommand { * */ - private Map durations = new ConcurrentHashMap(); + private Map durations = new ConcurrentHashMap(8, 0.9f, 1); enum PauseType { ACTIVITY, WAYPOINTS, NAVIGATION } int duration; diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ShootCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ShootCommand.java index ba5f22750a..5e9deeee24 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ShootCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ShootCommand.java @@ -24,6 +24,7 @@ import org.bukkit.entity.Firework; import org.bukkit.entity.Projectile; import org.bukkit.inventory.meta.FireworkMeta; +import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; /** @@ -98,27 +99,26 @@ public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException scriptEntry.addObject("fireworks", fireworks); } - @SuppressWarnings("rawtypes") @Override - public void execute(ScriptEntry scriptEntry) throws CommandExecutionException { + public void execute(final ScriptEntry scriptEntry) throws CommandExecutionException { // Get objects - Location location = (Location) scriptEntry.getObject("location"); + final Location location = scriptEntry.hasObject("location") ? (Location) scriptEntry.getObject("location") : (Location) scriptEntry.getNPC().getEyeLocation().getDirection(). + multiply(4).toLocation(scriptEntry.getNPC().getWorld()); EntityType entityType = (EntityType) scriptEntry.getObject("entityType"); Boolean ride = (Boolean) scriptEntry.getObject("ride"); Boolean burn = (Boolean) scriptEntry.getObject("burn"); if (location == null) { - location = (Location) scriptEntry.getNPC().getEyeLocation().getDirection(). - multiply(4).toLocation(scriptEntry.getNPC().getWorld()); + } else { Utilities.faceLocation(scriptEntry.getNPC().getCitizen().getBukkitEntity(), location); } - Entity entity = scriptEntry.getNPC().getWorld().spawnEntity( + final Entity entity = scriptEntry.getNPC().getWorld().spawnEntity( scriptEntry.getNPC().getEyeLocation().add( scriptEntry.getNPC().getEyeLocation().getDirection()) .subtract(0, 0.4, 0), @@ -141,13 +141,13 @@ public void execute(ScriptEntry scriptEntry) throws CommandExecutionException { ((Projectile) entity).setShooter(scriptEntry.getNPC().getCitizen().getBukkitEntity()); } - Runnable3 task = new Runnable3 - (scriptEntry, entity, location) + BukkitRunnable task = new BukkitRunnable() { + int runs = 0; @Override - public void run(ScriptEntry scriptEntry, Entity entity, Location location) { + public void run() { - if (getRuns() < 40 && entity.isValid()) + if (runs < 40 && entity.isValid()) { //dB.echoDebug(entity.getType().name() + " flying time " + getRuns() + " in task " + getId()); @@ -156,18 +156,18 @@ public void run(ScriptEntry scriptEntry, Entity entity, Location location) { Vector v3 = v2.clone().subtract(v1).normalize().multiply(1.5); entity.setVelocity(v3); - addRuns(); + runs++; if (Math.abs(v2.getX() - v1.getX()) < 2 && Math.abs(v2.getY() - v1.getY()) < 2 && Math.abs(v2.getZ() - v1.getZ()) < 2) { - setRuns(40); + runs = 40; } } else { this.cancel(); - clearRuns(); + runs = 0; if (scriptEntry.getObject("script") != null) { @@ -194,7 +194,7 @@ public void run(ScriptEntry scriptEntry, Entity entity, Location location) { } }; - task.setId(Bukkit.getScheduler().scheduleSyncRepeatingTask(denizen, task, 0, 2)); + task.runTaskTimer(denizen, 0, 2); } } \ No newline at end of file diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/SwitchCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/SwitchCommand.java index 9e1d6f11e2..783e48ca02 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/SwitchCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/SwitchCommand.java @@ -47,7 +47,7 @@ public void onEnable() { private enum SwitchState { ON, OFF, TOGGLE } - private Map taskMap = new ConcurrentHashMap(); + private Map taskMap = new ConcurrentHashMap(8, 0.9f, 1); SwitchState switchState; Location interactLocation; diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ZapCommand.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ZapCommand.java index 81371da028..f11220f0a7 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ZapCommand.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/core/ZapCommand.java @@ -80,7 +80,7 @@ public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException } //"PlayerName,ScriptName", TaskID - private static Map durations = new ConcurrentHashMap(); + private static Map durations = new ConcurrentHashMap(8, 0.9f, 1); @Override public void execute(ScriptEntry scriptEntry) throws CommandExecutionException { diff --git a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java index 915a2815e4..4e8edafa48 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java @@ -35,7 +35,7 @@ public class WorldScriptHelper implements Listener { - public static Map world_scripts = new ConcurrentHashMap(); + public static Map world_scripts = new ConcurrentHashMap(8, 0.9f, 1); public WorldScriptHelper() { DenizenAPI.getCurrentInstance().getServer().getPluginManager() diff --git a/src/main/java/net/aufdemrand/denizen/scripts/triggers/TriggerRegistry.java b/src/main/java/net/aufdemrand/denizen/scripts/triggers/TriggerRegistry.java index 5d2c9b515a..7de7658244 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/triggers/TriggerRegistry.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/triggers/TriggerRegistry.java @@ -28,9 +28,9 @@ public enum CooldownType { NPC, PLAYER } private Map instances = new HashMap(); private Map, String> classes = new HashMap, String>(); - Map> npcCooldown = new ConcurrentHashMap>(); + Map> npcCooldown = new ConcurrentHashMap>(8, 0.9f, 1); - Map> playerCooldown = new ConcurrentHashMap>(); + Map> playerCooldown = new ConcurrentHashMap>(8, 0.9f, 1); public TriggerRegistry(Denizen denizen) { this.denizen = denizen; diff --git a/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/LocationTrigger.java b/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/LocationTrigger.java index 60f86f0814..5fd481161c 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/LocationTrigger.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/LocationTrigger.java @@ -41,10 +41,9 @@ public boolean matches(Location location) { } public int getDistance(Player player) { - // TODO: get distance - return 0; + Location loc = player.getLocation(); + return (int) Math.sqrt(Math.pow(loc.getX() - x, 2) + Math.pow(loc.getY() - y, 2) + Math.pow(loc.getZ() - z, 2)); } - } @@ -102,7 +101,7 @@ public InteractContext(NPC npc, String scriptName, String stepName) { // // Stores all the Location Trigger points with context // - private Map locationTriggers = new ConcurrentHashMap(); + private Map locationTriggers = new ConcurrentHashMap(8, 0.9f, 1); // diff --git a/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/ProximityTrigger.java b/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/ProximityTrigger.java index 47b3a09e17..6bb822ccb0 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/ProximityTrigger.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/triggers/core/ProximityTrigger.java @@ -146,7 +146,7 @@ public void proximityTrigger(PlayerMoveEvent event) { // unless the Player hasn't yet triggered an Exit Proximity after Entering // if (!npc.isSpawned() || - (!npc.getLocation().getWorld().equals(event.getPlayer().getWorld()) + (!npc.getWorld().equals(event.getPlayer().getWorld()) && hasExitedProximityOf(event.getPlayer(), npc))) continue; // @@ -220,8 +220,10 @@ public void proximityTrigger(PlayerMoveEvent event) { // If the user was previously within the range and moved, then execute // the "Move" script. // - if (!hasExitedProximityOf(event.getPlayer(), npc) - && (playerChangedWorlds || npc.getLocation().distance(toBlockLocation) >= exitRadius)) { + boolean exitedProximity = hasExitedProximityOf(event.getPlayer(), npc); + double distance = npcLocation.distance(toBlockLocation); + if (!exitedProximity + && (playerChangedWorlds || distance >= exitRadius)) { if (!npc.getTriggerTrait().triggerCooldownOnly(this, event.getPlayer())) continue; // Remember that NPC has exited proximity. @@ -232,8 +234,7 @@ public void proximityTrigger(PlayerMoveEvent event) { // Parse Interact Script parse(npc, player, script, "EXIT"); } - else if (hasExitedProximityOf(event.getPlayer(), npc) - && npc.getLocation().distance(toBlockLocation) <= entryRadius) { + else if (exitedProximity && distance <= entryRadius) { // Cooldown if (!npc.getTriggerTrait().triggerCooldownOnly(this, event.getPlayer())) continue; @@ -244,8 +245,7 @@ else if (hasExitedProximityOf(event.getPlayer(), npc) // Parse Interact Script parse(npc, player, script, "ENTRY"); } - else if (!hasExitedProximityOf(event.getPlayer(), npc) - && npc.getLocation().distance(toBlockLocation) <= moveRadius) { + else if (!exitedProximity && distance <= moveRadius) { // TODO: Remove this? Constantly cooling down on move may make // future entry/exit proximities 'lag' behind. Temporarily removing // cooldown on 'move proximity'. @@ -296,16 +296,17 @@ public void checkMaxProximities(dScriptReloadEvent event) { } } - private static Map> proximityTracker = new ConcurrentHashMap>(); + private static Map> proximityTracker = new ConcurrentHashMap>(8, 0.9f, 1); // // Ensures that a Player who has entered proximity of an NPC also fires Exit Proximity. // private boolean hasExitedProximityOf(Player player, dNPC npc) { // If Player hasn't entered proximity, it's not in the Map. Return true, must be exited. - if (!proximityTracker.containsKey(player)) return true; + Set existing = proximityTracker.get(player); + if (existing == null) return true; // If Player has no entry for this NPC, return true. - if (!proximityTracker.get(player).contains(npc.getId())) return true; + if (!existing.contains(npc.getId())) return true; // Entry is present, NPC has not yet triggered exit proximity. return false; } @@ -318,11 +319,12 @@ private boolean hasExitedProximityOf(Player player, dNPC npc) { * @param npc the NPC */ private void enterProximityOf(Player player, dNPC npc) { - Set npcs = new HashSet(); - if (proximityTracker.containsKey(player)) - npcs = proximityTracker.get(player); + Set npcs = proximityTracker.get(player); + if (npcs == null) { + npcs = new HashSet(); + proximityTracker.put(player, npcs); + } npcs.add(npc.getId()); - proximityTracker.put(player, npcs); } /** @@ -333,12 +335,12 @@ private void enterProximityOf(Player player, dNPC npc) { * @param npc the NPC */ private void exitProximityOf(Player player, dNPC npc) { - Set npcs = new HashSet(); - if (proximityTracker.containsKey(player)) - npcs = proximityTracker.get(player); - if (npcs.contains(npc.getId())) - npcs.remove(npc.getId()); - proximityTracker.put(player, npcs); + Set npcs = proximityTracker.get(player); + if (npcs == null) { + npcs = new HashSet(); + proximityTracker.put(player, npcs); + } + npcs.remove(npc.getId()); } } diff --git a/src/main/java/net/aufdemrand/denizen/tags/core/PlayerTags.java b/src/main/java/net/aufdemrand/denizen/tags/core/PlayerTags.java index 5613039dcc..1f23e46553 100644 --- a/src/main/java/net/aufdemrand/denizen/tags/core/PlayerTags.java +++ b/src/main/java/net/aufdemrand/denizen/tags/core/PlayerTags.java @@ -30,13 +30,13 @@ public PlayerTags(Denizen denizen) { denizen.getServer().getPluginManager().registerEvents(this, denizen); } - public static Map> playerChatHistory = new ConcurrentHashMap>(); + public static Map> playerChatHistory = new ConcurrentHashMap>(8, 0.9f, 2); @EventHandler(priority = EventPriority.MONITOR) public void addMessage(AsyncPlayerChatEvent event) { - List history = new ArrayList(); - if (playerChatHistory.containsKey(event.getPlayer().getName())) { - history = playerChatHistory.get(event.getPlayer().getName()); + List history = playerChatHistory.get(event.getPlayer().getName()); + if (history == null) { + history = new ArrayList(); } if (history.size() > 10) history.remove(9); diff --git a/src/main/java/net/aufdemrand/denizen/tags/core/TextTags.java b/src/main/java/net/aufdemrand/denizen/tags/core/TextTags.java index 873c1c6d35..51bafa0973 100644 --- a/src/main/java/net/aufdemrand/denizen/tags/core/TextTags.java +++ b/src/main/java/net/aufdemrand/denizen/tags/core/TextTags.java @@ -23,7 +23,7 @@ public void textTags(ReplaceableTagEvent event) { if (event.matches(color.name())) event.setReplaced(color.toString()); else if (event.matches("&" + code[i])) - event.setReplaced(ChatColor.getByChar(code[i]) + ""); + event.setReplaced(ChatColor.getByChar(code[i]).toString()); i++; } } diff --git a/src/main/java/net/aufdemrand/denizen/utilities/ScriptRepo.java b/src/main/java/net/aufdemrand/denizen/utilities/ScriptRepo.java index e84e0bf35b..7327edfca7 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/ScriptRepo.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/ScriptRepo.java @@ -68,8 +68,9 @@ public static void load(CommandSender cs, String id) throws JSONException { Denizen plugin = (Denizen) Bukkit.getServer().getPluginManager().getPlugin("Denizen"); File file = new File(plugin.getDataFolder().getAbsolutePath()+File.separator+"scripts"+File.separator+data.getString("name")+".dscript"); if(!file.exists()){ + BufferedWriter bw = null; try { - BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile())); + bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile())); bw.write(yaml); bw.close(); Messaging.send(cs, "Downloaded script from repo. Reloading scripts..."); @@ -78,6 +79,14 @@ public static void load(CommandSender cs, String id) throws JSONException { } catch (IOException e) { Messaging.send(cs, "Looks like something went wrong while writing the file. Check console for details."); e.printStackTrace(); + } finally { + if (bw != null) { + try { + bw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } }else{ Messaging.send(cs, "A script by that name appears to already exist!"); diff --git a/src/main/java/net/aufdemrand/denizen/utilities/Utilities.java b/src/main/java/net/aufdemrand/denizen/utilities/Utilities.java index 2449c6e15b..964d5cf3aa 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/Utilities.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/Utilities.java @@ -320,14 +320,15 @@ public static void faceEntity(Entity entity, Entity target) { public static dNPC getClosestNPC (Location location, int range) { dNPC closestNPC = null; - Double closestDistance = Double.valueOf(range); + double closestDistance = Math.pow(range, 2); Iterator it = DenizenAPI.getSpawnedNPCs().iterator(); - while (it.hasNext ()) { - dNPC npc = it.next (); - if (npc.getLocation().getWorld().equals(location.getWorld()) - && npc.getLocation().distance(location) < closestDistance) { + while (it.hasNext()) { + dNPC npc = it.next(); + Location loc = npc.getLocation(); + if (loc.getWorld().equals(location.getWorld()) + && loc.distanceSquared(location) < closestDistance) { closestNPC = npc; - closestDistance = npc.getLocation().distance(location); + closestDistance = npc.getLocation().distanceSquared(location); } } return closestNPC; @@ -344,13 +345,14 @@ public static dNPC getClosestNPC (Location location, int range) { */ public static Set getClosestNPCs (Location location, int maxRange) { + maxRange = (int) Math.pow(maxRange, 2); Set closestNPCs = new HashSet (); Iterator it = DenizenAPI.getSpawnedNPCs().iterator(); while (it.hasNext ()) { dNPC npc = it.next (); - if (npc.getLocation().getWorld().equals(location.getWorld()) - && npc.getLocation().distance(location) < maxRange) { - closestNPCs.add (npc); + Location loc = npc.getLocation(); + if (loc.getWorld().equals(location.getWorld()) && loc.distanceSquared(location) < maxRange) { + closestNPCs.add(npc); } } return closestNPCs; @@ -500,8 +502,7 @@ else if (337.5 <= yaw && yaw < 360.0) */ public static boolean checkLocation(LivingEntity entity, Location theLocation, int theLeeway) { - - if (!entity.getWorld().getName().equals(theLocation.getWorld().getName())) + if (entity.getWorld() != theLocation.getWorld()) return false; Location entityLocation = entity.getLocation(); diff --git a/src/main/java/net/aufdemrand/denizen/utilities/arguments/Location.java b/src/main/java/net/aufdemrand/denizen/utilities/arguments/Location.java index 6c46354c22..d8d1e58cf6 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/arguments/Location.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/arguments/Location.java @@ -15,7 +15,7 @@ public class Location extends org.bukkit.Location implements dScriptArgument { - public static Map locations = new ConcurrentHashMap(); + public static Map locations = new ConcurrentHashMap(8, 0.9f, 1); /** * Gets a saved location based on an Id. @@ -24,9 +24,7 @@ public class Location extends org.bukkit.Location implements dScriptArgument { * @return the Location associated */ public static Location getSavedLocation(String id) { - if (locations.containsKey(id.toLowerCase())) - return locations.get(id.toLowerCase()); - else return null; + return locations.get(id.toLowerCase()); } public static String isSavedLocation(org.bukkit.Location location) { diff --git a/src/main/java/net/aufdemrand/denizen/utilities/arguments/aH.java b/src/main/java/net/aufdemrand/denizen/utilities/arguments/aH.java index 167d6bb05d..b38358a803 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/arguments/aH.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/arguments/aH.java @@ -42,8 +42,14 @@ public static String debugUniqueObj(String prefix, String id, String value) { final static Pattern doublePtrn = Pattern.compile("(-)?(?:(?:\\d+)|)(?:(?:\\.\\d+)|)"); final static Pattern floatPtrn = Pattern.compile("^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$"); final static Pattern integerPtrn = Pattern.compile("(-)?\\d+"); + final static Pattern locationPattern = Pattern.compile("location:((-)?\\d+(\\.\\d+)?,){3}\\w+", Pattern.CASE_INSENSITIVE); final static Pattern wordPtrn = Pattern.compile("\\w+"); - + final static Pattern matchesDurationPtrn = Pattern.compile("duration:(\\d+.\\d+|.\\d+|\\d+)(t|m|s|h|d|)", Pattern.CASE_INSENSITIVE); + final static Pattern matchesEntityPtrn = + Pattern.compile("(?:.+?|):((ENTITY\\.|PLAYER\\.|NPC\\.).+)|(PLAYER|NPC)", Pattern.CASE_INSENSITIVE); + final static Pattern matchesQuantityPtrn = Pattern.compile("qty:(-)?\\d+", Pattern.CASE_INSENSITIVE); + final static Pattern matchesQueuePtrn = Pattern.compile("queue:(.+)", Pattern.CASE_INSENSITIVE); + /** *

Used to determine if a argument string matches a non-valued custom argument. * If a dScript valued argument (such as PLAYER:NAME) is passed, this method @@ -64,10 +70,11 @@ public static String debugUniqueObj(String prefix, String id, String value) { * */ public static boolean matchesArg(String names, String arg) { - if (names.split(",").length == 1) { + String[] parts = names.split(","); + if (parts.length == 1) { if (arg.toUpperCase().equals(names.toUpperCase())) return true; } else { - for (String string : names.split(",")) + for (String string : parts) if (arg.split(":")[0].equalsIgnoreCase(string.trim())) return true; } return false; @@ -117,40 +124,35 @@ public static boolean matchesArg(String names, String arg) { */ public static boolean matchesValueArg(String names, String arg, ArgumentType type) { if (arg == null) return false; - if (arg.split(":").length == 1) return false; - - if (names.split(",").length == 1) { - if (!arg.split(":")[0].equalsIgnoreCase(names)) return false; + int firstColonIndex = arg.indexOf(':'); + if (firstColonIndex==-1) return false; + String[] commaParts = names.split(","); + if (commaParts.length == 1) { + if (!arg.substring(0,firstColonIndex).equalsIgnoreCase(names)) return false; } else { boolean matched = false; - for (String string : names.split(",")) - if (arg.split(":")[0].equalsIgnoreCase(string.trim())) matched = true; + for (String string : commaParts) + if (arg.substring(0,firstColonIndex).equalsIgnoreCase(string.trim())) matched = true; if (!matched) return false; } arg = arg.split(":", 2)[1]; - Matcher m; - switch (type) { case Word: - m = wordPtrn.matcher(arg); - if (m.matches()) return true; + if (wordPtrn.matcher(arg).matches()) return true; break; case Integer: - m = integerPtrn.matcher(arg); - if (m.matches()) return true; + if (integerPtrn.matcher(arg).matches()) return true; break; case Double: - m = doublePtrn.matcher(arg); - if (m.matches()) return true; + if (doublePtrn.matcher(arg).matches()) return true; break; case Float: - m = floatPtrn.matcher(arg); - if (m.matches()) return true; + if (floatPtrn.matcher(arg).matches()) return true; break; case Boolean: @@ -168,10 +170,7 @@ public static boolean matchesValueArg(String names, String arg, ArgumentType typ return matchesItem("item:" + arg); case LivingEntity: - final Pattern matchesEntityPtrn = - Pattern.compile("(?:.+?|):((ENTITY\\.|PLAYER\\.|NPC\\.).+)|(PLAYER|NPC)", Pattern.CASE_INSENSITIVE); - m = matchesEntityPtrn.matcher(arg); - if (m.matches()) return true; + if (matchesEntityPtrn.matcher(arg).matches()) return true; break; case Duration: @@ -205,9 +204,7 @@ public static boolean matchesValueArg(String names, String arg, ArgumentType typ * */ public static boolean getBooleanFrom(String arg) { - if (arg.split(":").length >= 2) - return Boolean.valueOf(arg.split(":", 2)[1]); - else return Boolean.valueOf(arg); + return Boolean.valueOf(getValuePart(arg)); } /** @@ -230,11 +227,9 @@ public static boolean getBooleanFrom(String arg) { */ public static double getDoubleFrom(String arg) { try { - if (arg.split(":").length >= 2) - return Double.valueOf(arg.split(":", 2)[1]); - else return Double.valueOf(arg); - } catch (Exception e) { - return 0.00; + return Double.valueOf(getValuePart(arg)); + } catch (NumberFormatException e) { + return 0D; } } @@ -259,7 +254,6 @@ public static double getDoubleFrom(String arg) { * */ public static EntityType getEntityFrom(String arg) { - final Pattern matchesEntityPtrn = Pattern.compile("(?:(?:.+?:)|)(.+)", Pattern.CASE_INSENSITIVE); Matcher m = matchesEntityPtrn.matcher(arg); if (m.matches()) { // Match against valid EntityTypes using Bukkit enum @@ -276,27 +270,28 @@ public static EntityType getEntityFrom(String arg) { * */ public static LivingEntity getLivingEntityFrom(String arg) { - final Pattern matchesEntityPtrn = Pattern.compile("(?:(?:.+?:)|)(.+)", Pattern.CASE_INSENSITIVE); Matcher m = matchesEntityPtrn.matcher(arg); if (m.matches()) { - if (m.group(1).toUpperCase().startsWith("ENTITY.")) { + String entityGroup = m.group(1); + String entityGroupUpper =entityGroup.toUpperCase(); + if (entityGroupUpper.startsWith("ENTITY.")) { LivingEntity returnable = ((Denizen) Bukkit.getPluginManager().getPlugin("Denizen")) - .getCommandRegistry().get(NewCommand.class).getEntity(m.group(1).split("\\.")[1]); + .getCommandRegistry().get(NewCommand.class).getEntity(entityGroup.split("\\.")[1]); if (returnable != null) return returnable; - else dB.echoError("Invalid entity! '" + m.group(1) + "' could not be found."); + else dB.echoError("Invalid entity! '" + entityGroup + "' could not be found."); } - else if (m.group(1).toUpperCase().startsWith("NPC.") || - m.group(1).toUpperCase().startsWith("NPCID.")) { - LivingEntity returnable = CitizensAPI.getNPCRegistry().getById(Integer.valueOf(m.group(1).split("\\.")[1])).getBukkitEntity(); + else if (entityGroupUpper.startsWith("NPC.") || + entityGroupUpper.startsWith("NPCID.")) { + LivingEntity returnable = CitizensAPI.getNPCRegistry().getById(Integer.valueOf(entityGroup.split("\\.")[1])).getBukkitEntity(); if (returnable != null) return returnable; - else dB.echoError("Invalid NPC! '" + m.group(1) + "' could not be found."); + else dB.echoError("Invalid NPC! '" + entityGroup + "' could not be found."); } - else if (m.group(1).toUpperCase().startsWith("PLAYER.")) { - LivingEntity returnable = getPlayerFrom(m.group(1).split("\\.")[1]); + else if (entityGroupUpper.startsWith("PLAYER.")) { + LivingEntity returnable = getPlayerFrom(entityGroup.split("\\.")[1]); if (returnable != null) return returnable; - else dB.echoError("Invalid Player! '" + m.group(1) + "' could not be found."); + else dB.echoError("Invalid Player! '" + entityGroup + "' could not be found."); } } @@ -315,10 +310,8 @@ else if (m.group(1).toUpperCase().startsWith("PLAYER.")) { */ public static float getFloatFrom(String arg) { try { - if (arg.split(":").length >= 2) - return Float.valueOf(arg.split(":", 2)[1]); - else return Float.valueOf(arg); - } catch (Exception e) { + return Float.valueOf(getValuePart(arg)); + } catch (NumberFormatException e) { return 0f; } } @@ -343,10 +336,8 @@ public static float getFloatFrom(String arg) { */ public static int getIntegerFrom(String arg) { try { - if (arg.split(":").length >= 2) - return Integer.valueOf(arg.split(":", 2)[1]); - else return Integer.valueOf(arg); - } catch (Exception e) { + return Integer.valueOf(getValuePart(arg)); + } catch (NumberFormatException e) { return 0; } } @@ -377,7 +368,6 @@ public static int getIntegerFrom(String arg) { * */ public static Item getItemFrom(String arg) { - if (arg == null) return null; Item stack = Item.valueOf(arg); if (stack == null) dB.echoError("Invalid item! Failed to find a matching Bukkit ItemStack."); @@ -407,10 +397,8 @@ public static Item getItemFrom(String arg) { * */ public static java.util.List getListFrom(String arg) { - if (arg == null || arg.equals("")) return new ArrayList(); - if (arg.split(":").length >= 2) - return Arrays.asList(arg.split(":", 2)[1].split("\\|")); - else return Arrays.asList(arg.split("\\|")); + if (arg == null || arg.equals("")) return Collections.emptyList(); + else return Arrays.asList(getValuePart(arg).split("\\|")); } /** @@ -470,8 +458,7 @@ public static Script getScriptFrom(String arg) { * @return a Bukkit Player object, or null */ public static Player getPlayerFrom(String arg) { - if (arg.split(":").length >= 2) - arg = arg.split(":", 2)[1]; + arg = getValuePart(arg); // Remove prefix if using PLAYER.playername format if (arg.toUpperCase().contains("PLAYER.")) arg = arg.toUpperCase().replace("PLAYER.", ""); @@ -499,10 +486,9 @@ public static Player getPlayerFrom(String arg) { * @return a Citizens NPC object, or null */ public static NPC getNPCFrom(String arg) { - if (arg.split(":").length >= 2) - arg = arg.split(":", 2)[1]; + arg = getValuePart(arg); for (NPC npc : CitizensAPI.getNPCRegistry()) - if (npc.getId() == Integer.valueOf(arg).intValue()) return npc; + if (npc.getId() == Integer.parseInt(arg)) return npc; dB.echoError("NPC '" + arg + "' is invalid, or has been removed."); return null; } @@ -534,8 +520,7 @@ public static NPC getNPCFrom(String arg) { * */ public static OfflinePlayer getOfflinePlayerFrom(String arg) { - if (arg.split(":").length >= 2) - arg = arg.split(":", 2)[1]; + arg = getValuePart(arg); for (OfflinePlayer player : Bukkit.getOfflinePlayers()) if (player.getName().equalsIgnoreCase(arg)) return player; dB.echoError("OfflinePlayer '" + arg + "' is invalid, or has never logged in to this server."); @@ -552,9 +537,7 @@ public static OfflinePlayer getOfflinePlayerFrom(String arg) { * */ public static ScriptQueue getQueueFrom(String arg) { - if (arg.split(":").length >= 2) - return ScriptQueue._getQueue(arg.split(":")[1].toUpperCase()); - else return ScriptQueue._getQueue(arg.toUpperCase()); + return ScriptQueue._getQueue(getValuePart(arg).toUpperCase()); } /** @@ -578,6 +561,11 @@ public static String getStringFrom(String arg) { else return arg; } + private static String getValuePart(String arg) { + String[] parts = arg.split(":", 2); + return parts.length >=2 ? parts[1] : arg; + } + /** *

Gets a Duration object from the dScript duration value format. Accepts a prefix in the * argument for convenience.

@@ -622,8 +610,7 @@ public static Duration getDurationFrom(String arg) { * */ public static boolean matchesDouble(String arg) { - Matcher m = doublePtrn.matcher(arg); - return m.matches(); + return doublePtrn.matcher(arg).matches(); } /** @@ -651,7 +638,6 @@ public static boolean matchesDouble(String arg) { * */ public static boolean matchesDuration(String arg) { - final Pattern matchesDurationPtrn = Pattern.compile("duration:(\\d+.\\d+|.\\d+|\\d+)(t|m|s|h|d|)", Pattern.CASE_INSENSITIVE); Matcher m = matchesDurationPtrn.matcher(arg); if (m.matches()) return true; else if (arg.toUpperCase().startsWith("DURATION:")) @@ -684,12 +670,10 @@ public static boolean matchesEntityType(String arg) { final Pattern matchesEntityPtrn = Pattern.compile("entity:(.+)", Pattern.CASE_INSENSITIVE); Matcher m = matchesEntityPtrn.matcher(arg); if (m.matches()) { + String group = m.group(1).toUpperCase(); // Check against valid EntityTypes using Bukkit's EntityType enum for (EntityType validEntity : EntityType.values()) - if (m.group(1).equalsIgnoreCase(validEntity.name())) - return true; - for (EntityType validEntity : EntityType.values()) - if (m.group(1).equalsIgnoreCase(validEntity.name())) + if (group.equals(validEntity.name())) return true; } // Check for valid prefix, warn about value. @@ -716,8 +700,7 @@ public static boolean matchesEntityType(String arg) { * */ public static boolean matchesInteger(String arg) { - Matcher m = integerPtrn.matcher(arg); - return m.matches(); + return integerPtrn.matcher(arg).matches(); } /** @@ -741,8 +724,7 @@ public static boolean matchesInteger(String arg) { * */ public static boolean matchesItem(String arg) { - if (arg.toUpperCase().startsWith("ITEM:")) - if (arg.length() > 5) + if (arg.length() > 5 && arg.toUpperCase().startsWith("ITEM:")) return true; // TODO: Other matches____ do some actual checks. return false; @@ -756,9 +738,8 @@ public static boolean matchesContext(String arg) { public static Map getContextFrom(String arg) { Map context = new HashMap(); - java.util.List contexts = aH.getListFrom(arg); int x = 1; - for (String ctxt : contexts) { + for (String ctxt : aH.getListFrom(arg)) { context.put(String.valueOf(x), ctxt.trim()); x++; } @@ -783,7 +764,6 @@ public static Map getContextFrom(String arg) { * */ public static boolean matchesLocation(String arg) { - final Pattern locationPattern = Pattern.compile("location:((-)?\\d+(\\.\\d+)?,){3}\\w+", Pattern.CASE_INSENSITIVE); Matcher m = locationPattern.matcher(arg); if (m.matches()) return true; @@ -817,7 +797,6 @@ else if (arg.toUpperCase().startsWith("location:")) * */ public static boolean matchesQuantity(String arg) { - final Pattern matchesQuantityPtrn = Pattern.compile("qty:(-)?\\d+", Pattern.CASE_INSENSITIVE); Matcher m = matchesQuantityPtrn.matcher(arg); if (m.matches()) return true; else if (arg.toUpperCase().startsWith("qty:")) @@ -848,7 +827,6 @@ else if (arg.toUpperCase().startsWith("qty:")) * */ public static boolean matchesQueue(String arg) { - final Pattern matchesQueuePtrn = Pattern.compile("queue:(.+)", Pattern.CASE_INSENSITIVE); Matcher m = matchesQueuePtrn.matcher(arg); if (m.matches()) return true; @@ -874,8 +852,6 @@ public static boolean matchesQueue(String arg) { * */ public static boolean matchesScript(String arg) { - final Pattern matchesScriptPtrn = Pattern.compile("script:(.+)", Pattern.CASE_INSENSITIVE); - Matcher m = matchesScriptPtrn.matcher(arg); if (m.matches()) { if (ScriptRegistry.containsScript(m.group(1))) @@ -909,7 +885,6 @@ public static boolean matchesScript(String arg) { * */ public static boolean matchesToggle(String arg) { - final Pattern matchesTogglePtrn = Pattern.compile("toggle:(?:(?:true)|(?:false)|(?:toggle))", Pattern.CASE_INSENSITIVE); Matcher m = matchesTogglePtrn.matcher(arg); if (m.matches()) return true; else if (arg.toUpperCase().startsWith("toggle:")) @@ -921,7 +896,9 @@ else if (arg.toUpperCase().startsWith("toggle:")) final private static Pattern regex = Pattern.compile("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'"); - + final static Pattern matchesTogglePtrn = Pattern.compile("toggle:(?:(?:true)|(?:false)|(?:toggle))", Pattern.CASE_INSENSITIVE); + final static Pattern matchesScriptPtrn = Pattern.compile("script:(.+)", Pattern.CASE_INSENSITIVE); + /** * Builds an arguments array, recognizing items in quotes as a single item * @@ -945,10 +922,6 @@ else if (regexMatcher.group(2) != null) if (dB.showScriptBuilder) dB.echoDebug(ChatColor.GRAY + "Args: " + Arrays.toString(matchList.toArray())); - String[] split = new String[matchList.size()]; - matchList.toArray(split); - return split; + return matchList.toArray(new String[matchList.size()]); } - - } diff --git a/src/main/java/net/aufdemrand/denizen/utilities/arguments/dList.java b/src/main/java/net/aufdemrand/denizen/utilities/arguments/dList.java index 4bc4dbce05..5dc14ee850 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/arguments/dList.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/arguments/dList.java @@ -15,9 +15,10 @@ public static dList valueOf(String string) { String prefix = null; // Strip prefix (ie. targets:...) - if (string.split(":").length > 1) { - prefix = string.split(":", 2)[0]; - string = string.split(":", 2)[1]; + String[] parts = string.split(":", 2); + if (parts.length > 1) { + prefix = parts[0]; + string = parts[1]; } return new dList(prefix, string); diff --git a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable1.java b/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable1.java deleted file mode 100644 index 9509b40bae..0000000000 --- a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable1.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.aufdemrand.denizen.utilities.runnables; - -import org.bukkit.Bukkit; - -public abstract class Runnable1 implements Runnable { - - private int id; - private int timesRun; - - public int getRuns() - { return timesRun; } - - public void setRuns(int runs) - { this.timesRun = runs; } - - public void addRuns() - { this.timesRun++; } - - public void clearRuns() - { this.timesRun = 0; } - - public int getId() - { return id; } - - public void setId(int id) - { this.id = id; } - - protected void cancel() - { Bukkit.getScheduler().cancelTask(id); } - - private A a; - - public Runnable1(A a) { - this.a = a; - } - - @Override - public final void run() { - run(a); - } - - public abstract void run(A a); - -} \ No newline at end of file diff --git a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable2.java b/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable2.java deleted file mode 100644 index 09efe2b816..0000000000 --- a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable2.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.aufdemrand.denizen.utilities.runnables; - -import org.bukkit.Bukkit; - -public abstract class Runnable2 implements Runnable { - - private int id; - private int timesRun; - - public int getRuns() - { return timesRun; } - - public void setRuns(int runs) - { this.timesRun = runs; } - - public void addRuns() - { this.timesRun++; } - - public void clearRuns() - { this.timesRun = 0; } - - public int getId() - { return id; } - - public void setId(int id) - { this.id = id; } - - protected void cancel() - { Bukkit.getScheduler().cancelTask(id); } - - private A a; - private B b; - - public Runnable2(A a, B b) { - this.a = a; - this.b = b; - } - - @Override - public final void run() { - run(a, b); - } - - public abstract void run(A a, B b); - -} \ No newline at end of file diff --git a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable3.java b/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable3.java deleted file mode 100644 index 60430dcdf6..0000000000 --- a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable3.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.aufdemrand.denizen.utilities.runnables; - -import org.bukkit.Bukkit; - -public abstract class Runnable3 implements Runnable { - - private int id; - private int timesRun; - - public int getRuns() - { return timesRun; } - - public void setRuns(int runs) - { this.timesRun = runs; } - - public void addRuns() - { this.timesRun++; } - - public void clearRuns() - { this.timesRun = 0; } - - public int getId() - { return id; } - - public void setId(int id) - { this.id = id; } - - protected void cancel() - { Bukkit.getScheduler().cancelTask(id); } - - private A a; - private B b; - private C c; - - public Runnable3(A a, B b, C c) { - this.a = a; - this.b = b; - this.c = c; - } - - @Override - public final void run() { - run(a, b, c); - } - - public abstract void run(A a, B b, C c); - -} \ No newline at end of file diff --git a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable4.java b/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable4.java deleted file mode 100644 index f9be4599c4..0000000000 --- a/src/main/java/net/aufdemrand/denizen/utilities/runnables/Runnable4.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.aufdemrand.denizen.utilities.runnables; - -import org.bukkit.Bukkit; - -public abstract class Runnable4 implements Runnable { - - private int id; - private int timesRun; - - public int getRuns() - { return timesRun; } - - public void setRuns(int runs) - { this.timesRun = runs; } - - public void addRuns() - { this.timesRun++; } - - public void clearRuns() - { this.timesRun = 0; } - - public int getId() - { return id; } - - public void setId(int id) - { this.id = id; } - - protected void cancel() - { Bukkit.getScheduler().cancelTask(id); } - - private A a; - private B b; - private C c; - private D d; - - public Runnable4(A a, B b, C c, D d) { - this.a = a; - this.b = b; - this.c = c; - this.d = d; - } - - @Override - public final void run() { - run(a, b, c, d); - } - - public abstract void run(A a, B b, C c, D d); - -} \ No newline at end of file