From bb838c3369fc38c4d8b73a64fd9762695422af40 Mon Sep 17 00:00:00 2001 From: ementalo Date: Wed, 24 Oct 2012 14:36:49 +0100 Subject: Fix metrics NPE --- Essentials/src/net/ess3/settings/General.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/net/ess3/settings/General.java b/Essentials/src/net/ess3/settings/General.java index ff3b46a85..a34b5f5cc 100644 --- a/Essentials/src/net/ess3/settings/General.java +++ b/Essentials/src/net/ess3/settings/General.java @@ -77,7 +77,7 @@ public class General implements StorageObject { return loginAttackDelay * 1000; } - public Boolean metricsEnabled = null; + private Boolean metricsEnabled = null; @Comment("The join message when players join the server") private String joinMessage = "&e{PLAYER} has joined the game"; -- cgit v1.2.3 From 96d76f46fc365aadfe896e9b39cb264409f3b3bb Mon Sep 17 00:00:00 2001 From: ementalo Date: Wed, 24 Oct 2012 14:48:12 +0100 Subject: Null handling in AntiBuild --- .../src/net/ess3/settings/antibuild/Alert.java | 57 +++++++++++--------- .../src/net/ess3/settings/antibuild/BlackList.java | 62 ++++++++++++---------- .../antibuild/EssentialsAntiBuildListener.java | 16 +++--- 3 files changed, 74 insertions(+), 61 deletions(-) diff --git a/Essentials/src/net/ess3/settings/antibuild/Alert.java b/Essentials/src/net/ess3/settings/antibuild/Alert.java index ec4aac252..d13ea4530 100644 --- a/Essentials/src/net/ess3/settings/antibuild/Alert.java +++ b/Essentials/src/net/ess3/settings/antibuild/Alert.java @@ -22,53 +22,62 @@ public class Alert implements StorageObject @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set alertOnPlacement = null; - @Comment("For which block types would you like to be alerted when used?") + private Set alertOnPlacement = new HashSet(); + ; + @Comment("For which block types would you like to be alerted when used?") @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set alertOnUse = null; + private Set alertOnUse = new HashSet(); + ; @Comment("For which block types would you like to be alerted when broken?") @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set alertOnBreak = null; + private Set alertOnBreak = new HashSet(); + + ; public Alert() { - if (alertOnPlacement == null) + if (alertOnPlacement.isEmpty()) { Material[] mat = { Material.LAVA, Material.STATIONARY_LAVA, Material.TNT, Material.LAVA_BUCKET }; - alertOnPlacement = new HashSet(); alertOnPlacement.addAll(Arrays.asList(mat)); } - - if (alertOnUse == null) - { - alertOnUse = new HashSet(); - alertOnUse.add(Material.LAVA_BUCKET); - } - - if (alertOnBreak == null) + + if (alertOnUse.isEmpty()) { - alertOnBreak = new HashSet(); + alertOnUse.add(Material.LAVA_BUCKET); } } - - public Set getAlertOnPlacement() + + public boolean getAlertOnPlacement(Material mat) { - return alertOnPlacement; + if (alertOnPlacement == null) + { + return false; + } + return alertOnPlacement.contains(mat); } - - public Set getAlertOnUse() + + public boolean getAlertOnUse(Material mat) { - return alertOnUse; + if (alertOnUse == null) + { + return false; + } + return alertOnUse.contains(mat); } - - public Set getAlertOnBreak() + + public boolean getAlertOnBreak(Material mat) { - return alertOnBreak; + if (alertOnBreak == null) + { + return false; + } + return alertOnBreak.contains(mat); } } \ No newline at end of file diff --git a/Essentials/src/net/ess3/settings/antibuild/BlackList.java b/Essentials/src/net/ess3/settings/antibuild/BlackList.java index 1d91af2ae..395314a12 100644 --- a/Essentials/src/net/ess3/settings/antibuild/BlackList.java +++ b/Essentials/src/net/ess3/settings/antibuild/BlackList.java @@ -25,7 +25,7 @@ public class BlackList implements StorageObject @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set placement; + private Set placement = new HashSet(); @Comment( { "Which items should people be prevented from using" @@ -33,7 +33,7 @@ public class BlackList implements StorageObject @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set usage; + private Set usage = new HashSet(); @Comment( { "Which blocks should people be prevented from breaking" @@ -41,7 +41,7 @@ public class BlackList implements StorageObject @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set breaking; + private Set breaking = new HashSet(); @Comment( { "Which blocks should not be pushed by pistons" @@ -49,56 +49,60 @@ public class BlackList implements StorageObject @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private Set piston; + private Set piston = new HashSet(); public BlackList() { - if (placement == null) + if(placement.isEmpty()) { Material[] mat = { Material.LAVA, Material.STATIONARY_LAVA, Material.TNT, Material.LAVA_BUCKET }; - placement = new HashSet(); + placement.addAll(Arrays.asList(mat)); } - if (usage == null) - { - usage = new HashSet(); - usage.add(Material.LAVA_BUCKET); - } - if (breaking == null) + if (usage.isEmpty()) { - breaking = new HashSet(); - } - - if (piston == null) - { - piston = new HashSet(); - } - - + usage.add(Material.LAVA_BUCKET); + } } - public Set getPlacement() + public boolean getPlacement(Material mat) { - return placement; + if(placement == null) + { + return false; + } + return placement.contains(mat); } - public Set getUsage() + public boolean getUsage(Material mat) { - return usage; + if(usage == null) + { + return false; + } + return usage.contains(mat); } - public Set getBreaking() + public boolean getBreaking(Material mat) { - return breaking; + if(breaking == null) + { + return false; + } + return breaking.contains(mat); } - public Set getPiston() + public boolean getPiston(Material mat) { - return piston; + if(piston == null) + { + return false; + } + return piston.contains(mat); } } diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java index ad6c0a5d0..e07fa9616 100644 --- a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java +++ b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java @@ -51,7 +51,7 @@ public class EssentialsAntiBuildListener implements Listener return; } - if (antib.getSettings().getData().getBlacklist().getPlacement().contains(type) && !Permissions.BLACKLIST_ALLOWPLACEMENT.isAuthorized(user)) + if (antib.getSettings().getData().getBlacklist().getPlacement(type) && !Permissions.BLACKLIST_ALLOWPLACEMENT.isAuthorized(user)) { if (antib.getSettings().getData().isWarnOnBuildDisallow()) { @@ -61,7 +61,7 @@ public class EssentialsAntiBuildListener implements Listener return; } - if (antib.getSettings().getData().getAlert().getAlertOnPlacement().contains(type) + if (antib.getSettings().getData().getAlert().getAlertOnPlacement(type) && !Permissions.ALERTS_NOTRIGGER.isAuthorized(user)) { antib.getEssentialsConnect().alert(user, type.toString(), _("alertPlaced")); @@ -88,7 +88,7 @@ public class EssentialsAntiBuildListener implements Listener return; } - if (antib.getSettings().getData().getBlacklist().getBreaking().contains(type) && !Permissions.BLACKLIST_ALLOWBREAK.isAuthorized(user)) + if (antib.getSettings().getData().getBlacklist().getBreaking(type) && !Permissions.BLACKLIST_ALLOWBREAK.isAuthorized(user)) { if (antib.getSettings().getData().isWarnOnBuildDisallow()) { @@ -98,7 +98,7 @@ public class EssentialsAntiBuildListener implements Listener return; } - if (antib.getSettings().getData().getAlert().getAlertOnBreak().contains(type) + if (antib.getSettings().getData().getAlert().getAlertOnBreak(type) && !Permissions.ALERTS_NOTRIGGER.isAuthorized(user)) { antib.getEssentialsConnect().alert(user, type.toString(), _("alertBroke")); @@ -130,7 +130,7 @@ public class EssentialsAntiBuildListener implements Listener { for (Block block : event.getBlocks()) { - if (antib.getSettings().getData().getBlacklist().getPiston().contains(block.getType())) + if (antib.getSettings().getData().getBlacklist().getPiston(block.getType())) { event.setCancelled(true); return; @@ -146,7 +146,7 @@ public class EssentialsAntiBuildListener implements Listener return; } final Block block = event.getRetractLocation().getBlock(); - if (antib.getSettings().getData().getBlacklist().getPiston().contains(block.getType())) + if (antib.getSettings().getData().getBlacklist().getPiston(block.getType())) { event.setCancelled(true); } @@ -160,7 +160,7 @@ public class EssentialsAntiBuildListener implements Listener final ItemStack item = event.getItem(); if (item != null - && antib.getSettings().getData().getBlacklist().getUsage().contains(item.getType()) + && antib.getSettings().getData().getBlacklist().getUsage(item.getType()) && !Permissions.BLACKLIST_ALLOWUSAGE.isAuthorized(user)) { if (antib.getSettings().getData().isWarnOnBuildDisallow()) @@ -172,7 +172,7 @@ public class EssentialsAntiBuildListener implements Listener } if (item != null - && antib.getSettings().getData().getAlert().getAlertOnUse().contains(item.getType()) + && antib.getSettings().getData().getAlert().getAlertOnUse(item.getType()) && !Permissions.ALERTS_NOTRIGGER.isAuthorized(user)) { antib.getEssentialsConnect().alert(user, item.getType().toString(), _("alertUsed")); -- cgit v1.2.3 From f03361b0c61265902ed5e7fc69452cce5ad1457e Mon Sep 17 00:00:00 2001 From: ementalo Date: Wed, 24 Oct 2012 14:49:40 +0100 Subject: "When IDE's attack" --- Essentials/src/net/ess3/settings/antibuild/Alert.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Essentials/src/net/ess3/settings/antibuild/Alert.java b/Essentials/src/net/ess3/settings/antibuild/Alert.java index d13ea4530..28b59c3c2 100644 --- a/Essentials/src/net/ess3/settings/antibuild/Alert.java +++ b/Essentials/src/net/ess3/settings/antibuild/Alert.java @@ -23,20 +23,17 @@ public class Alert implements StorageObject @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) private Set alertOnPlacement = new HashSet(); - ; @Comment("For which block types would you like to be alerted when used?") @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) private Set alertOnUse = new HashSet(); - ; @Comment("For which block types would you like to be alerted when broken?") @ListType(Material.class) @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) private Set alertOnBreak = new HashSet(); - - ; + public Alert() { if (alertOnPlacement.isEmpty()) -- cgit v1.2.3 From deae46fa7328d0f0be3ffd83e46e5c25cf7851dc Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 24 Oct 2012 22:35:08 +0200 Subject: Allow to fill data with defaults on newly created configs --- Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java b/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java index 5c55169d1..8f65e223c 100644 --- a/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java +++ b/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java @@ -82,6 +82,10 @@ public abstract class AsyncStorageObjectHolder implemen public abstract void finishWrite(); + protected void fillWithDefaults() + { + } + public StorageQueue.RequestState getRequestState(long timestamp) { if (savetime == 0 || savetime < timestamp || (timestamp < 0 && savetime > 0)) @@ -108,6 +112,7 @@ public abstract class AsyncStorageObjectHolder implemen return writer; } + private class StorageObjectDataWriter extends AbstractDelayedYamlFileWriter { public StorageObjectDataWriter() @@ -176,6 +181,7 @@ public abstract class AsyncStorageObjectHolder implemen loaded.set(true); if (exception instanceof FileNotFoundException) { + fillWithDefaults(); writer.schedule(); } } -- cgit v1.2.3 From f6f49f4f1ebb88cab4f8fa5ed82214fad92d2092 Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 24 Oct 2012 22:45:16 +0200 Subject: Removed empty methods. --- Essentials/src/net/ess3/Jails.java | 10 ---------- Essentials/src/net/ess3/Kits.java | 10 ---------- Essentials/src/net/ess3/economy/MoneyHolder.java | 14 -------------- Essentials/src/net/ess3/economy/WorthHolder.java | 10 ---------- Essentials/src/net/ess3/ranks/RanksStorage.java | 10 ---------- Essentials/src/net/ess3/settings/SettingsHolder.java | 9 --------- Essentials/src/net/ess3/settings/SpawnsHolder.java | 10 ---------- Essentials/src/net/ess3/settings/WarpHolder.java | 9 --------- .../src/net/ess3/storage/AsyncStorageObjectHolder.java | 11 ++++++----- Essentials/src/net/ess3/user/User.java | 10 ---------- .../src/net/ess3/antibuild/AntiBuildHolder.java | 11 +---------- EssentialsGeoIP/src/net/ess3/geoip/ConfigHolder.java | 10 ---------- EssentialsProtect/src/net/ess3/protect/ProtectHolder.java | 10 ---------- EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java | 10 ---------- 14 files changed, 7 insertions(+), 137 deletions(-) diff --git a/Essentials/src/net/ess3/Jails.java b/Essentials/src/net/ess3/Jails.java index 1ac51142b..c97239e1d 100644 --- a/Essentials/src/net/ess3/Jails.java +++ b/Essentials/src/net/ess3/Jails.java @@ -102,16 +102,6 @@ public class Jails extends AsyncStorageObjectHolder imp queueSave(); } - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } - @Override public int getCount() { diff --git a/Essentials/src/net/ess3/Kits.java b/Essentials/src/net/ess3/Kits.java index e464caf4e..7913ec977 100644 --- a/Essentials/src/net/ess3/Kits.java +++ b/Essentials/src/net/ess3/Kits.java @@ -69,16 +69,6 @@ public class Kits extends AsyncStorageObjectHolder imple return getData().getKits().isEmpty(); } - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } - @Override public void checkTime(IUser user, Kit kit) throws NoChargeException { diff --git a/Essentials/src/net/ess3/economy/MoneyHolder.java b/Essentials/src/net/ess3/economy/MoneyHolder.java index cc0d4c79a..135a7f9f2 100644 --- a/Essentials/src/net/ess3/economy/MoneyHolder.java +++ b/Essentials/src/net/ess3/economy/MoneyHolder.java @@ -7,20 +7,6 @@ import net.ess3.storage.AsyncStorageObjectHolder; public class MoneyHolder extends AsyncStorageObjectHolder { - - @Override - public void finishRead() - { - - } - - @Override - public void finishWrite() - { - - } - - public MoneyHolder(IEssentials ess) { super(ess, Money.class, new File(ess.getPlugin().getDataFolder(), "economy_npcs.yml")); diff --git a/Essentials/src/net/ess3/economy/WorthHolder.java b/Essentials/src/net/ess3/economy/WorthHolder.java index 26ce23e31..3fb8f57fd 100644 --- a/Essentials/src/net/ess3/economy/WorthHolder.java +++ b/Essentials/src/net/ess3/economy/WorthHolder.java @@ -14,16 +14,6 @@ import org.bukkit.material.MaterialData; public class WorthHolder extends AsyncStorageObjectHolder implements IWorth { - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } - public WorthHolder(final IEssentials ess) { super(ess, net.ess3.economy.Worth.class, new File(ess.getPlugin().getDataFolder(), "worth.yml")); diff --git a/Essentials/src/net/ess3/ranks/RanksStorage.java b/Essentials/src/net/ess3/ranks/RanksStorage.java index 08909bdb7..d845a81c8 100644 --- a/Essentials/src/net/ess3/ranks/RanksStorage.java +++ b/Essentials/src/net/ess3/ranks/RanksStorage.java @@ -26,16 +26,6 @@ public class RanksStorage extends AsyncStorageObjectHolder implements IRa } }; - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } - public RanksStorage(final IEssentials ess) { super(ess, Ranks.class, new File(ess.getPlugin().getDataFolder(), "ranks.yml")); diff --git a/Essentials/src/net/ess3/settings/SettingsHolder.java b/Essentials/src/net/ess3/settings/SettingsHolder.java index c0e7d6dd4..e9b7f8af3 100644 --- a/Essentials/src/net/ess3/settings/SettingsHolder.java +++ b/Essentials/src/net/ess3/settings/SettingsHolder.java @@ -8,15 +8,6 @@ import net.ess3.storage.AsyncStorageObjectHolder; public class SettingsHolder extends AsyncStorageObjectHolder implements ISettings { - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } private transient volatile boolean debug = false; public SettingsHolder(final IEssentials ess) diff --git a/Essentials/src/net/ess3/settings/SpawnsHolder.java b/Essentials/src/net/ess3/settings/SpawnsHolder.java index 9460b0b62..e778ef052 100644 --- a/Essentials/src/net/ess3/settings/SpawnsHolder.java +++ b/Essentials/src/net/ess3/settings/SpawnsHolder.java @@ -28,16 +28,6 @@ import org.bukkit.plugin.EventExecutor; public class SpawnsHolder extends AsyncStorageObjectHolder implements IEssentialsModule { - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } - public SpawnsHolder(final IEssentials ess) { super(ess, Spawns.class, new File(ess.getPlugin().getDataFolder(), "spawn.yml")); diff --git a/Essentials/src/net/ess3/settings/WarpHolder.java b/Essentials/src/net/ess3/settings/WarpHolder.java index 6da9d8528..5d54532ef 100644 --- a/Essentials/src/net/ess3/settings/WarpHolder.java +++ b/Essentials/src/net/ess3/settings/WarpHolder.java @@ -8,15 +8,6 @@ import net.ess3.storage.AsyncStorageObjectHolder; public class WarpHolder extends AsyncStorageObjectHolder implements IWarp { - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } private final String name; public WarpHolder(String name, IEssentials ess) throws InvalidNameException diff --git a/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java b/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java index 8f65e223c..4c909b1bb 100644 --- a/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java +++ b/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java @@ -2,10 +2,7 @@ package net.ess3.storage; import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Level; import net.ess3.api.IEssentials; import org.bukkit.Bukkit; @@ -78,9 +75,13 @@ public abstract class AsyncStorageObjectHolder implemen return file.getAbsolutePath(); } - public abstract void finishRead(); + protected void finishRead() + { + } - public abstract void finishWrite(); + protected void finishWrite() + { + } protected void fillWithDefaults() { diff --git a/Essentials/src/net/ess3/user/User.java b/Essentials/src/net/ess3/user/User.java index a1ec0d8fa..f38d794b8 100644 --- a/Essentials/src/net/ess3/user/User.java +++ b/Essentials/src/net/ess3/user/User.java @@ -78,16 +78,6 @@ public class User extends UserBase implements IUser return player; } - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } - @Override public void checkCooldown(final UserData.TimestampType cooldownType, final double cooldown, final boolean set, final IPermission bypassPermission) throws CooldownException { diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java b/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java index d8bf3623b..7e08defe8 100644 --- a/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java +++ b/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java @@ -5,6 +5,7 @@ import net.ess3.api.IEssentials; import net.ess3.settings.antibuild.AntiBuild; import net.ess3.storage.AsyncStorageObjectHolder; + public class AntiBuildHolder extends AsyncStorageObjectHolder { public AntiBuildHolder(final IEssentials ess) @@ -12,14 +13,4 @@ public class AntiBuildHolder extends AsyncStorageObjectHolder super(ess, AntiBuild.class, new File(ess.getPlugin().getDataFolder(), "antibuild.yml")); onReload(); } - - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } } diff --git a/EssentialsGeoIP/src/net/ess3/geoip/ConfigHolder.java b/EssentialsGeoIP/src/net/ess3/geoip/ConfigHolder.java index 0edb7bc50..c535ed4a0 100644 --- a/EssentialsGeoIP/src/net/ess3/geoip/ConfigHolder.java +++ b/EssentialsGeoIP/src/net/ess3/geoip/ConfigHolder.java @@ -17,14 +17,4 @@ public class ConfigHolder extends AsyncStorageObjectHolder this.geoip = geoip; onReload(true); } - - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } } diff --git a/EssentialsProtect/src/net/ess3/protect/ProtectHolder.java b/EssentialsProtect/src/net/ess3/protect/ProtectHolder.java index 9718fbe79..140f70ffa 100644 --- a/EssentialsProtect/src/net/ess3/protect/ProtectHolder.java +++ b/EssentialsProtect/src/net/ess3/protect/ProtectHolder.java @@ -12,14 +12,4 @@ public class ProtectHolder extends AsyncStorageObjectHolder { super(ess, Protect.class, new File(ess.getPlugin().getDataFolder(), "protect.yml")); } - - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } } diff --git a/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java b/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java index 51937ee77..9c62337c4 100644 --- a/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java +++ b/EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java @@ -52,14 +52,4 @@ public class SignsConfigHolder extends AsyncStorageObjectHolder { return !signsEnabled; } - - @Override - public void finishRead() - { - } - - @Override - public void finishWrite() - { - } } -- cgit v1.2.3 From 10c8540fa0d9733a1ad403d8f3361cab0adacbb9 Mon Sep 17 00:00:00 2001 From: ementalo Date: Thu, 25 Oct 2012 15:41:29 +0100 Subject: Porting 2.9 teleport changes --- Essentials/src/net/ess3/Teleport.java | 184 ++++++++++++--------- Essentials/src/net/ess3/api/ITeleport.java | 5 + .../src/net/ess3/commands/Commandtpaccept.java | 3 +- .../src/net/ess3/commands/Commandtphere.java | 3 +- .../src/net/ess3/permissions/Permissions.java | 1 + Essentials/src/net/ess3/utils/Target.java | 32 ++++ 6 files changed, 151 insertions(+), 77 deletions(-) create mode 100644 Essentials/src/net/ess3/utils/Target.java diff --git a/Essentials/src/net/ess3/Teleport.java b/Essentials/src/net/ess3/Teleport.java index 9ca5ff875..ef1957e64 100644 --- a/Essentials/src/net/ess3/Teleport.java +++ b/Essentials/src/net/ess3/Teleport.java @@ -13,6 +13,7 @@ import net.ess3.user.CooldownException; import net.ess3.user.UserData.TimestampType; import net.ess3.utils.DateUtil; import net.ess3.utils.LocationUtil; +import net.ess3.utils.Target; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; @@ -22,37 +23,11 @@ public class Teleport implements Runnable, ITeleport { private static final double MOVE_CONSTANT = 0.3; - - private static class Target - { - private final Location location; - private final Entity entity; - - Target(Location location) - { - this.location = location; - this.entity = null; - } - - Target(Entity entity) - { - this.entity = entity; - this.location = null; - } - - public Location getLocation() - { - if (this.entity != null) - { - return this.entity.getLocation(); - } - return location; - } - } private IUser user; + private IUser teleportUser; private int teleTimer = -1; private long started; // time this task was initiated - private long delay; // how long to delay the teleport + private long tpDelay; // how long to delay the teleport private int health; // note that I initially stored a clone of the location for reference, but... // when comparing locations, I got incorrect mismatches (rounding errors, looked like) @@ -67,13 +42,19 @@ public class Teleport implements Runnable, ITeleport private TeleportCause cause; private void initTimer(long delay, Target target, Trade chargeFor, TeleportCause cause) + { + initTimer(delay, user, target, chargeFor, cause); + } + + private void initTimer(long delay, IUser teleportUser, Target target, Trade chargeFor, TeleportCause cause) { this.started = System.currentTimeMillis(); - this.delay = delay; - this.health = user.getPlayer().getHealth(); - this.initX = Math.round(user.getPlayer().getLocation().getX() * MOVE_CONSTANT); - this.initY = Math.round(user.getPlayer().getLocation().getY() * MOVE_CONSTANT); - this.initZ = Math.round(user.getPlayer().getLocation().getZ() * MOVE_CONSTANT); + this.tpDelay = delay; + this.health = teleportUser.getPlayer().getHealth(); + this.initX = Math.round(teleportUser.getPlayer().getLocation().getX() * MOVE_CONSTANT); + this.initY = Math.round(teleportUser.getPlayer().getLocation().getY() * MOVE_CONSTANT); + this.initZ = Math.round(teleportUser.getPlayer().getLocation().getZ() * MOVE_CONSTANT); + this.teleportUser = teleportUser; this.teleportTarget = target; this.chargeFor = chargeFor; this.cause = cause; @@ -88,28 +69,36 @@ public class Teleport implements Runnable, ITeleport cancel(); return; } - if (Math.round(user.getPlayer().getLocation().getX() * MOVE_CONSTANT) != initX - || Math.round(user.getPlayer().getLocation().getY() * MOVE_CONSTANT) != initY - || Math.round(user.getPlayer().getLocation().getZ() * MOVE_CONSTANT) != initZ - || user.getPlayer().getHealth() < health) + + if (teleportUser == null || !teleportUser.isOnline() || teleportUser.getPlayer().getLocation() == null) + { + cancel(false); + return; + } + + if (!Permissions.TELEPORT_TIMER_MOVE.isAuthorized(user) + &&(Math.round(teleportUser.getPlayer().getLocation().getX() * MOVE_CONSTANT) != initX + || Math.round(teleportUser.getPlayer().getLocation().getY() * MOVE_CONSTANT) != initY + || Math.round(teleportUser.getPlayer().getLocation().getZ() * MOVE_CONSTANT) != initZ + || teleportUser.getPlayer().getHealth() < health)) { // user moved, cancel teleport cancel(true); return; } - health = user.getPlayer().getHealth(); // in case user healed, then later gets injured + health = teleportUser.getPlayer().getHealth(); // in case user healed, then later gets injured long now = System.currentTimeMillis(); - if (now > started + delay) + if (now > started + tpDelay) { try { cooldown(false); - user.sendMessage(_("teleportationCommencing")); + teleportUser.sendMessage(_("teleportationCommencing")); try { - now(teleportTarget, cause); + teleportUser.getTeleport().now(teleportTarget, cause); if (chargeFor != null) { chargeFor.charge(user); @@ -123,6 +112,10 @@ public class Teleport implements Runnable, ITeleport catch (Exception ex) { user.sendMessage(_("cooldownWithMessage", ex.getMessage())); + if (user != teleportUser) + { + teleportUser.sendMessage(_("cooldownWithMessage", ex.getMessage())); + } } } } @@ -133,21 +126,7 @@ public class Teleport implements Runnable, ITeleport this.ess = ess; } - @Override - public void respawn(final Trade chargeFor, TeleportCause cause) throws Exception - { - final Location bed = user.getBedSpawnLocation(); - final Location respawnLoc = ess.getPlugin().callRespawnEvent(user.getPlayer(), bed == null ? user.getPlayer().getWorld().getSpawnLocation() : bed, bed != null); - teleport(new Target(respawnLoc), chargeFor, cause); - } - - @Override - public void warp(String warp, Trade chargeFor, TeleportCause cause) throws Exception - { - final Location loc = ess.getWarps().getWarp(warp); - teleport(new Target(loc), chargeFor, cause); - user.sendMessage(_("warpingTo", warp)); - } + public void cooldown(boolean check) throws Exception { @@ -162,6 +141,7 @@ public class Teleport implements Runnable, ITeleport } } + //If we need to cancel a pending teleport call this method public void cancel(boolean notifyUser) { if (teleTimer == -1) @@ -174,6 +154,10 @@ public class Teleport implements Runnable, ITeleport if (notifyUser) { user.sendMessage(_("pendingTeleportCancelled")); + if (teleportUser != user) + { + teleportUser.sendMessage(_("pendingTeleportCancelled")); + } } } finally @@ -186,18 +170,14 @@ public class Teleport implements Runnable, ITeleport { cancel(false); } - - public void teleport(Location loc, Trade chargeFor) throws Exception - { - teleport(new Target(loc), chargeFor, TeleportCause.PLUGIN); - } - + @Override public void teleport(Location loc, Trade chargeFor, TeleportCause cause) throws Exception { teleport(new Target(loc), chargeFor, cause); } + @Override public void teleport(Entity entity, Trade chargeFor, TeleportCause cause) throws Exception { teleport(new Target(entity), chargeFor, cause); @@ -205,14 +185,14 @@ public class Teleport implements Runnable, ITeleport private void teleport(Target target, Trade chargeFor, TeleportCause cause) throws Exception { - double tDelay = ess.getRanks().getTeleportDelay(user); + double delay = ess.getRanks().getTeleportDelay(user); if (chargeFor != null) { chargeFor.isAffordableFor(user); } cooldown(true); - if (tDelay <= 0 || Permissions.TELEPORT_TIMER_BYPASS.isAuthorized(user)) + if (delay <= 0 || Permissions.TELEPORT_TIMER_BYPASS.isAuthorized(user)) { cooldown(false); now(target, cause); @@ -224,16 +204,14 @@ public class Teleport implements Runnable, ITeleport } cancel(); - Calendar c = new GregorianCalendar(); - c.add(Calendar.SECOND, (int)tDelay); - c.add(Calendar.MILLISECOND, (int)((tDelay * 1000.0) % 1000.0)); - user.sendMessage(_("dontMoveMessage", DateUtil.formatDateDiff(c.getTimeInMillis()))); - initTimer((long)(tDelay * 1000.0), target, chargeFor, cause); + warnUser(user, delay); + initTimer((long)(delay * 1000.0), target, chargeFor, cause); teleTimer = ess.getPlugin().scheduleSyncRepeatingTask(this, 10, 10); } - private void now(final Target target, final TeleportCause cause) throws Exception + @Override + public void now(final Target target, final TeleportCause cause) throws Exception { cancel(); user.setLastLocation(); @@ -258,20 +236,76 @@ public class Teleport implements Runnable, ITeleport now(new Target(loc), cause); } + + @Override + //The now function is used when you want to skip tp delay when teleporting someone to a location or player. + public void now(Entity entity, boolean cooldown, TeleportCause cause) throws Exception + { + if (cooldown) + { + cooldown(false); + } + now(new Target(entity), cause); + } + public void now(Location loc, Trade chargeFor, TeleportCause cause) throws Exception { cooldown(false); chargeFor.charge(user); now(new Target(loc), cause); } - - public void now(Entity entity, boolean cooldown, TeleportCause cause) throws Exception + + //The teleportToMe function is a wrapper used to handle teleporting players to them, like /tphere + public void teleportToMe(IUser otherUser, Trade chargeFor, TeleportCause cause) throws Exception { - if (cooldown) + Target target = new Target(user.getPlayer()); + + double delay = ess.getRanks().getTeleportDelay(user); + + if (chargeFor != null) { - cooldown(false); + chargeFor.isAffordableFor(user); } - now(new Target(entity), cause); + cooldown(true); + if (delay <= 0 || Permissions.TELEPORT_TIMER_BYPASS.isAuthorized(user)) + { + cooldown(false); + otherUser.getTeleport().now(target, cause); + if (chargeFor != null) + { + chargeFor.charge(user); + } + return; } + + cancel(false); + warnUser(otherUser, delay); + initTimer((long)(delay * 1000.0), otherUser, target, chargeFor, cause); + + teleTimer = ess.getPlugin().scheduleSyncRepeatingTask(this, 10, 10); + } + + private void warnUser(final IUser user, final double delay) + { + Calendar c = new GregorianCalendar(); + c.add(Calendar.SECOND, (int)delay); + c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0)); + user.sendMessage(_("dontMoveMessage", DateUtil.formatDateDiff(c.getTimeInMillis()))); + } + + @Override + public void respawn(final Trade chargeFor, TeleportCause cause) throws Exception + { + final Location bed = user.getBedSpawnLocation(); + final Location respawnLoc = ess.getPlugin().callRespawnEvent(user.getPlayer(), bed == null ? user.getPlayer().getWorld().getSpawnLocation() : bed, bed != null); + teleport(new Target(respawnLoc), chargeFor, cause); + } + + @Override + public void warp(String warp, Trade chargeFor, TeleportCause cause) throws Exception + { + final Location loc = ess.getWarps().getWarp(warp); + user.sendMessage(_("warpingTo", warp)); + teleport(new Target(loc), chargeFor, cause); } @Override diff --git a/Essentials/src/net/ess3/api/ITeleport.java b/Essentials/src/net/ess3/api/ITeleport.java index afec3e213..35f973ce5 100644 --- a/Essentials/src/net/ess3/api/ITeleport.java +++ b/Essentials/src/net/ess3/api/ITeleport.java @@ -1,6 +1,7 @@ package net.ess3.api; import net.ess3.economy.Trade; +import net.ess3.utils.Target; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; @@ -11,12 +12,16 @@ public interface ITeleport void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception; void now(Entity entity, boolean cooldown, TeleportCause cause) throws Exception; + + void now(final Target target, final TeleportCause cause) throws Exception; void back(Trade chargeFor) throws Exception; void teleport(Location bed, Trade charge, TeleportCause teleportCause) throws Exception; void teleport(Entity entity, Trade chargeFor, TeleportCause cause) throws Exception; + + void teleportToMe(IUser otherUser, Trade chargeFor, TeleportCause cause) throws Exception; void home(Location loc, Trade chargeFor) throws Exception; diff --git a/Essentials/src/net/ess3/commands/Commandtpaccept.java b/Essentials/src/net/ess3/commands/Commandtpaccept.java index a33d216ad..8aed3028e 100644 --- a/Essentials/src/net/ess3/commands/Commandtpaccept.java +++ b/Essentials/src/net/ess3/commands/Commandtpaccept.java @@ -56,12 +56,13 @@ public class Commandtpaccept extends EssentialsCommand if (user.isTpRequestHere()) { - user.getTeleport().teleport(target.getPlayer(), charge, TeleportCause.COMMAND); + target.getTeleport().teleportToMe(user, charge, TeleportCause.COMMAND); } else { target.getTeleport().teleport(user.getPlayer(), charge, TeleportCause.COMMAND); } user.requestTeleport(null, false); + throw new NoChargeException(); } } diff --git a/Essentials/src/net/ess3/commands/Commandtphere.java b/Essentials/src/net/ess3/commands/Commandtphere.java index 525591e9b..7cacbd9e9 100644 --- a/Essentials/src/net/ess3/commands/Commandtphere.java +++ b/Essentials/src/net/ess3/commands/Commandtphere.java @@ -16,7 +16,8 @@ public class Commandtphere extends EssentialsCommand { throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); } - player.getTeleport().teleport(user.getPlayer(), new Trade(commandName, ess), TeleportCause.COMMAND); + + user.getTeleport().teleportToMe(player, new Trade(commandName, ess), TeleportCause.COMMAND); user.sendMessage(_("teleporting")); player.sendMessage(_("teleporting")); throw new NoChargeException(); diff --git a/Essentials/src/net/ess3/permissions/Permissions.java b/Essentials/src/net/ess3/permissions/Permissions.java index 2dbf91ec2..84afcef23 100644 --- a/Essentials/src/net/ess3/permissions/Permissions.java +++ b/Essentials/src/net/ess3/permissions/Permissions.java @@ -96,6 +96,7 @@ public enum Permissions implements IPermission TELEPORT_HIDDEN, TELEPORT_OTHERS, TELEPORT_TIMER_BYPASS, + TELEPORT_TIMER_MOVE, TEMPBAN_EXEMPT, TEMPBAN_OFFLINE, TIME_SET, diff --git a/Essentials/src/net/ess3/utils/Target.java b/Essentials/src/net/ess3/utils/Target.java new file mode 100644 index 000000000..43e124eea --- /dev/null +++ b/Essentials/src/net/ess3/utils/Target.java @@ -0,0 +1,32 @@ +package net.ess3.utils; + +import org.bukkit.Location; +import org.bukkit.entity.Entity; + +public class Target +{ + private final Location location; + private final Entity entity; + + public Target(Location location) + { + this.location = location; + this.entity = null; + } + + public Target(Entity entity) + { + this.entity = entity; + this.location = null; + } + + public Location getLocation() + { + if (this.entity != null) + { + return this.entity.getLocation(); + } + return location; + } + } + -- cgit v1.2.3 From 811f20d2545602f47c4bb5020a52ea392d96f056 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 27 Oct 2012 12:51:18 +1100 Subject: Cleanup usages of split. --- Essentials/src/net/ess3/I18n.java | 4 +++- Essentials/src/net/ess3/ItemDb.java | 22 +++++++++++++++------- .../src/net/ess3/commands/Commanddelhome.java | 5 ++++- Essentials/src/net/ess3/commands/Commandgive.java | 5 ++++- Essentials/src/net/ess3/commands/Commandhome.java | 5 ++++- Essentials/src/net/ess3/commands/Commanditem.java | 15 +++++++++------ .../src/net/ess3/commands/Commandsethome.java | 5 ++++- .../src/net/ess3/commands/Commandspawnmob.java | 7 +++++-- .../ess3/listener/EssentialsPlayerListener.java | 8 +++++--- .../src/net/ess3/storage/BukkitConstructor.java | 12 +++++++----- Essentials/src/net/ess3/user/UserMap.java | 14 ++++++++------ 11 files changed, 68 insertions(+), 34 deletions(-) diff --git a/Essentials/src/net/ess3/I18n.java b/Essentials/src/net/ess3/I18n.java index 678d111c5..d52842d81 100644 --- a/Essentials/src/net/ess3/I18n.java +++ b/Essentials/src/net/ess3/I18n.java @@ -10,6 +10,7 @@ import java.text.MessageFormat; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.regex.Pattern; import net.ess3.api.IEssentials; import net.ess3.api.II18n; @@ -97,6 +98,7 @@ public class I18n implements II18n } return messageFormat.format(objects); } + private final Pattern partSplit = Pattern.compile("[_\\.]"); public void updateLocale(final String loc) { @@ -104,7 +106,7 @@ public class I18n implements II18n { return; } - final String[] parts = loc.split("[_\\.]"); + final String[] parts = partSplit.split(loc); if (parts.length == 1) { currentLocale = new Locale(parts[0]); diff --git a/Essentials/src/net/ess3/ItemDb.java b/Essentials/src/net/ess3/ItemDb.java index a34531dcd..6866215bd 100644 --- a/Essentials/src/net/ess3/ItemDb.java +++ b/Essentials/src/net/ess3/ItemDb.java @@ -84,31 +84,39 @@ public class ItemDb implements IItemDb return stack; } + @Override public ItemStack get(final String id, final int quantity) throws Exception { final ItemStack retval = get(id.toLowerCase(Locale.ENGLISH)); retval.setAmount(quantity); return retval; } + private final Pattern idMatch = Pattern.compile("^\\d+[:+',;.]\\d+$"); + private final Pattern metaSplit = Pattern.compile("[:+',;.]"); + private final Pattern number = Pattern.compile("^\\d+$"); + private final Pattern conjoined = Pattern.compile("^[^:+',;.]+[:+',;.]\\d+$"); + @Override public ItemStack get(final String id) throws Exception { int itemid = 0; String itemname = null; short metaData = 0; - if (id.matches("^\\d+[:+',;.]\\d+$")) + if (idMatch.matcher(id).matches()) { - itemid = Integer.parseInt(id.split("[:+',;.]")[0]); - metaData = Short.parseShort(id.split("[:+',;.]")[1]); + String[] split = metaSplit.split(id); + itemid = Integer.parseInt(split[0]); + metaData = Short.parseShort(split[1]); } - else if (id.matches("^\\d+$")) + else if (number.matcher(id).matches()) { itemid = Integer.parseInt(id); } - else if (id.matches("^[^:+',;.]+[:+',;.]\\d+$")) + else if (conjoined.matcher(id).matches()) { - itemname = id.split("[:+',;.]")[0].toLowerCase(Locale.ENGLISH); - metaData = Short.parseShort(id.split("[:+',;.]")[1]); + String[] split = metaSplit.split(id); + itemname = split[0].toLowerCase(Locale.ENGLISH); + metaData = Short.parseShort(split[1]); } else { diff --git a/Essentials/src/net/ess3/commands/Commanddelhome.java b/Essentials/src/net/ess3/commands/Commanddelhome.java index f0b54cd27..4ceb6b366 100644 --- a/Essentials/src/net/ess3/commands/Commanddelhome.java +++ b/Essentials/src/net/ess3/commands/Commanddelhome.java @@ -1,6 +1,7 @@ package net.ess3.commands; import java.util.Locale; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.IUser; import net.ess3.permissions.Permissions; @@ -9,6 +10,8 @@ import org.bukkit.command.CommandSender; public class Commanddelhome extends EssentialsCommand { + private final transient Pattern colon = Pattern.compile(":"); + @Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { @@ -22,7 +25,7 @@ public class Commanddelhome extends EssentialsCommand String[] expandedArg; //Allowing both formats /sethome khobbits house | /sethome khobbits:house - final String[] nameParts = args[0].split(":"); + final String[] nameParts = colon.split(args[0]); if (nameParts[0].length() != args[0].length()) { expandedArg = nameParts; diff --git a/Essentials/src/net/ess3/commands/Commandgive.java b/Essentials/src/net/ess3/commands/Commandgive.java index 6bc23fc3e..174d571ca 100644 --- a/Essentials/src/net/ess3/commands/Commandgive.java +++ b/Essentials/src/net/ess3/commands/Commandgive.java @@ -1,6 +1,7 @@ package net.ess3.commands; import java.util.Locale; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.IUser; import net.ess3.permissions.Permissions; @@ -13,6 +14,8 @@ import org.bukkit.inventory.ItemStack; public class Commandgive extends EssentialsCommand { + private final transient Pattern data = Pattern.compile("[:+',;.]"); + @Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { @@ -45,7 +48,7 @@ public class Commandgive extends EssentialsCommand { for (int i = Util.isInt(args[3]) ? 4 : 3; i < args.length; i++) { - final String[] split = args[i].split("[:+',;.]", 2); + final String[] split = data.split(args[i], 2); if (split.length < 1) { continue; diff --git a/Essentials/src/net/ess3/commands/Commandhome.java b/Essentials/src/net/ess3/commands/Commandhome.java index 936a2f4a5..a1a048dfe 100644 --- a/Essentials/src/net/ess3/commands/Commandhome.java +++ b/Essentials/src/net/ess3/commands/Commandhome.java @@ -2,6 +2,7 @@ package net.ess3.commands; import java.util.Locale; import java.util.Set; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.IUser; import net.ess3.economy.Trade; @@ -14,6 +15,8 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; public class Commandhome extends EssentialsCommand { + private final transient Pattern colon = Pattern.compile(":"); + @Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { @@ -24,7 +27,7 @@ public class Commandhome extends EssentialsCommand String[] nameParts; if (args.length > 0) { - nameParts = args[0].split(":"); + nameParts = colon.split(args[0]); if (nameParts[0].length() == args[0].length() || !Permissions.HOME_OTHERS.isAuthorized(user)) { homeName = nameParts[0]; diff --git a/Essentials/src/net/ess3/commands/Commanditem.java b/Essentials/src/net/ess3/commands/Commanditem.java index a43b122a7..416bed766 100644 --- a/Essentials/src/net/ess3/commands/Commanditem.java +++ b/Essentials/src/net/ess3/commands/Commanditem.java @@ -1,6 +1,7 @@ package net.ess3.commands; import java.util.Locale; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.IUser; import net.ess3.permissions.Permissions; @@ -10,16 +11,18 @@ import org.bukkit.inventory.ItemStack; public class Commanditem extends EssentialsCommand { + private final transient Pattern data = Pattern.compile("[:+',;.]"); + @Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); - + } if (args.length > 1 && args[0].equals("love") && args[1].equals("you")) - { + { user.sendMessage("What is love?"); user.sendMessage("Baby don't hurt me"); return; @@ -36,12 +39,12 @@ public class Commanditem extends EssentialsCommand { stack.setAmount(Integer.parseInt(args[1])); } - + if (args.length > 2 && Permissions.ITEM_ENCHANTED.isAuthorized(user)) { for (int i = 2; i < args.length; i++) { - final String[] split = args[i].split("[:+',;.]", 2); + final String[] split = data.split(args[i], 2); if (split.length < 1) { continue; @@ -66,14 +69,14 @@ public class Commanditem extends EssentialsCommand } } } - + if (stack.getTypeId() == 0) { throw new Exception(_("cantSpawnItem", "Air")); } user.giveItems(stack, false); - + final String displayName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' '); user.sendMessage(_("itemSpawn", stack.getAmount(), displayName)); } diff --git a/Essentials/src/net/ess3/commands/Commandsethome.java b/Essentials/src/net/ess3/commands/Commandsethome.java index 48ebb0990..743cbb611 100644 --- a/Essentials/src/net/ess3/commands/Commandsethome.java +++ b/Essentials/src/net/ess3/commands/Commandsethome.java @@ -1,6 +1,7 @@ package net.ess3.commands; import java.util.Locale; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.IUser; import net.ess3.permissions.Permissions; @@ -8,13 +9,15 @@ import net.ess3.permissions.Permissions; public class Commandsethome extends EssentialsCommand { + private final transient Pattern colon = Pattern.compile(":"); + @Override public void run(final IUser user, final String commandLabel, String[] args) throws Exception { if (args.length > 0) { //Allowing both formats /sethome khobbits house | /sethome khobbits:house - final String[] nameParts = args[0].split(":"); + final String[] nameParts = colon.split(args[0]); if (nameParts[0].length() != args[0].length()) { args = nameParts; diff --git a/Essentials/src/net/ess3/commands/Commandspawnmob.java b/Essentials/src/net/ess3/commands/Commandspawnmob.java index 2fe07e450..37bd26ebd 100644 --- a/Essentials/src/net/ess3/commands/Commandspawnmob.java +++ b/Essentials/src/net/ess3/commands/Commandspawnmob.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.Locale; import java.util.Random; import java.util.Set; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.ISettings; import net.ess3.api.IUser; @@ -22,6 +23,8 @@ import org.bukkit.material.Colorable; public class Commandspawnmob extends EssentialsCommand { + private final transient Pattern colon = Pattern.compile(":"); + @Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { @@ -45,7 +48,7 @@ public class Commandspawnmob extends EssentialsCommand final String[] mountparts = args[0].split(","); - String[] parts = mountparts[0].split(":"); + String[] parts = colon.split(mountparts[0]); String mobType = parts[0]; String mobData = null; if (parts.length == 2) @@ -56,7 +59,7 @@ public class Commandspawnmob extends EssentialsCommand String mountData = null; if (mountparts.length > 1) { - parts = mountparts[1].split(":"); + parts = colon.split(mountparts[1]); mountType = parts[0]; if (parts.length == 2) { diff --git a/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java b/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java index 68e11936f..c73f9c02a 100644 --- a/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java +++ b/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Locale; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.regex.Pattern; import static net.ess3.I18n._; import net.ess3.api.IEssentials; import net.ess3.api.ISettings; @@ -171,7 +172,7 @@ public class EssentialsPlayerListener implements Listener { event.setJoinMessage(joinMessage); } - + final IUser user = ess.getUserMap().getUser(event.getPlayer()); user.updateDisplayName(); @@ -243,7 +244,7 @@ public class EssentialsPlayerListener implements Listener default: return; } - + ess.getUserMap().addPrejoinedPlayer(event.getPlayer()); final IUser user = ess.getUserMap().getUser(event.getPlayer()); ess.getUserMap().removePrejoinedPlayer(event.getPlayer()); @@ -318,12 +319,13 @@ public class EssentialsPlayerListener implements Listener }); } } + private final Pattern spaceSplit = Pattern.compile(" "); @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerCommandPreprocess(final PlayerCommandPreprocessEvent event) { final IUser user = ess.getUserMap().getUser(event.getPlayer()); - final String cmd = event.getMessage().toLowerCase(Locale.ENGLISH).split(" ")[0].replace("/", "").toLowerCase(Locale.ENGLISH); + final String cmd = spaceSplit.split(event.getMessage().toLowerCase(Locale.ENGLISH))[0].replace("/", "").toLowerCase(Locale.ENGLISH); if (ess.getSettings().getData().getCommands().getSocalspy().getSocialspyCommands().contains(cmd)) { for (Player player : ess.getServer().getOnlinePlayers()) diff --git a/Essentials/src/net/ess3/storage/BukkitConstructor.java b/Essentials/src/net/ess3/storage/BukkitConstructor.java index 1a5159456..a3aa18b2e 100644 --- a/Essentials/src/net/ess3/storage/BukkitConstructor.java +++ b/Essentials/src/net/ess3/storage/BukkitConstructor.java @@ -21,6 +21,8 @@ import org.yaml.snakeyaml.nodes.*; public class BukkitConstructor extends Constructor { private final transient Pattern NUMPATTERN = Pattern.compile("\\d+"); + private final transient Pattern DATAPATTERN = Pattern.compile("[:+',;.]"); + private final transient Pattern WORD = Pattern.compile("\\W"); private final transient IPlugin plugin; public BukkitConstructor(final Class clazz, final IPlugin plugin) @@ -59,7 +61,7 @@ public class BukkitConstructor extends Constructor { return null; } - final String[] split = val.split("[:+',;.]", 2); + final String[] split = DATAPATTERN.split(val, 2); if (split.length == 0) { return null; @@ -92,12 +94,12 @@ public class BukkitConstructor extends Constructor { return null; } - final String[] split1 = val.split("\\W"); + final String[] split1 = WORD.split(val); if (split1.length == 0) { return null; } - final String[] split2 = split1[0].split("[:+',;.]", 2); + final String[] split2 = DATAPATTERN.split(split1[0], 2); if (split2.length == 0) { return null; @@ -131,7 +133,7 @@ public class BukkitConstructor extends Constructor { for (int i = 2; i < split1.length; i++) { - final String[] split3 = split1[0].split("[:+',;.]", 2); + final String[] split3 = DATAPATTERN.split(split1[0], 2); if (split3.length < 1) { continue; @@ -175,7 +177,7 @@ public class BukkitConstructor extends Constructor { return null; } - final String[] split = val.split("[:+',;.]", 2); + final String[] split = DATAPATTERN.split(val, 2); if (split.length == 0) { return null; diff --git a/Essentials/src/net/ess3/user/UserMap.java b/Essentials/src/net/ess3/user/UserMap.java index 57ef75daf..f586733f9 100644 --- a/Essentials/src/net/ess3/user/UserMap.java +++ b/Essentials/src/net/ess3/user/UserMap.java @@ -7,6 +7,7 @@ import java.util.LinkedHashSet; import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.regex.Pattern; import net.ess3.api.IEssentials; import net.ess3.api.IUser; import net.ess3.api.IUserMap; @@ -100,19 +101,19 @@ public class UserMap extends StorageObjectMap implements IUserMap { return getObject(player.getName()); } - + @Override public IUser matchUser(final String name, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException { return matchUser(name, true, includeOffline, null); } - + @Override public IUser matchUserExcludingHidden(final String name, final Player requester) throws TooManyMatchesException, PlayerNotFoundException { return matchUser(name, false, false, requester); } - + public IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline, final Player requester) throws TooManyMatchesException, PlayerNotFoundException { final Set users = matchUsers(name, includeHidden, includeOffline, requester); @@ -132,7 +133,7 @@ public class UserMap extends StorageObjectMap implements IUserMap } } } - + @Override public Set matchUsers(final String name, final boolean includeOffline) { @@ -144,11 +145,12 @@ public class UserMap extends StorageObjectMap implements IUserMap { return matchUsers(name, false, false, requester); } - + private final Pattern comma = Pattern.compile(","); + public Set matchUsers(final String name, final boolean includeHidden, final boolean includeOffline, final Player requester) { final String colorlessName = FormatUtil.stripColor(name); - final String[] search = colorlessName.split(","); + final String[] search = comma.split(colorlessName); final boolean multisearch = search.length > 1; final Set result = new LinkedHashSet(); final String nicknamePrefix = FormatUtil.stripColor(getNickNamePrefix()); -- cgit v1.2.3