summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIaccidentally <coryhuckaby@gmail.com>2012-10-28 10:54:50 -0400
committerIaccidentally <coryhuckaby@gmail.com>2012-10-28 10:54:50 -0400
commit689b9ebf2239d878a1f3b71300cf798c7eb65df9 (patch)
treed6568302b7e3883aefe856948a1a2bf8a8082fd3
parent6be807e30d356fde3e1b579bfa99a0993c4b3a70 (diff)
parent811f20d2545602f47c4bb5020a52ea392d96f056 (diff)
downloadEssentials-689b9ebf2239d878a1f3b71300cf798c7eb65df9.tar
Essentials-689b9ebf2239d878a1f3b71300cf798c7eb65df9.tar.gz
Essentials-689b9ebf2239d878a1f3b71300cf798c7eb65df9.tar.lz
Essentials-689b9ebf2239d878a1f3b71300cf798c7eb65df9.tar.xz
Essentials-689b9ebf2239d878a1f3b71300cf798c7eb65df9.zip
Merge branch 'master' of https://github.com/essentials/Essentials
-rw-r--r--Essentials/src/net/ess3/I18n.java4
-rw-r--r--Essentials/src/net/ess3/ItemDb.java22
-rw-r--r--Essentials/src/net/ess3/Jails.java10
-rw-r--r--Essentials/src/net/ess3/Kits.java10
-rw-r--r--Essentials/src/net/ess3/Teleport.java184
-rw-r--r--Essentials/src/net/ess3/api/ITeleport.java5
-rw-r--r--Essentials/src/net/ess3/commands/Commanddelhome.java5
-rw-r--r--Essentials/src/net/ess3/commands/Commandgive.java5
-rw-r--r--Essentials/src/net/ess3/commands/Commandhome.java5
-rw-r--r--Essentials/src/net/ess3/commands/Commanditem.java15
-rw-r--r--Essentials/src/net/ess3/commands/Commandsethome.java5
-rw-r--r--Essentials/src/net/ess3/commands/Commandspawnmob.java7
-rw-r--r--Essentials/src/net/ess3/commands/Commandtpaccept.java3
-rw-r--r--Essentials/src/net/ess3/commands/Commandtphere.java3
-rw-r--r--Essentials/src/net/ess3/economy/MoneyHolder.java14
-rw-r--r--Essentials/src/net/ess3/economy/WorthHolder.java10
-rw-r--r--Essentials/src/net/ess3/listener/EssentialsPlayerListener.java8
-rw-r--r--Essentials/src/net/ess3/permissions/Permissions.java1
-rw-r--r--Essentials/src/net/ess3/ranks/RanksStorage.java10
-rw-r--r--Essentials/src/net/ess3/settings/General.java2
-rw-r--r--Essentials/src/net/ess3/settings/SettingsHolder.java9
-rw-r--r--Essentials/src/net/ess3/settings/SpawnsHolder.java10
-rw-r--r--Essentials/src/net/ess3/settings/WarpHolder.java9
-rw-r--r--Essentials/src/net/ess3/settings/antibuild/Alert.java54
-rw-r--r--Essentials/src/net/ess3/settings/antibuild/BlackList.java62
-rw-r--r--Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java17
-rw-r--r--Essentials/src/net/ess3/storage/BukkitConstructor.java12
-rw-r--r--Essentials/src/net/ess3/user/User.java10
-rw-r--r--Essentials/src/net/ess3/user/UserMap.java14
-rw-r--r--Essentials/src/net/ess3/utils/Target.java32
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java11
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java16
-rw-r--r--EssentialsGeoIP/src/net/ess3/geoip/ConfigHolder.java10
-rw-r--r--EssentialsProtect/src/net/ess3/protect/ProtectHolder.java10
-rw-r--r--EssentialsSigns/src/net/ess3/signs/SignsConfigHolder.java10
35 files changed, 304 insertions, 310 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/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
@@ -103,16 +103,6 @@ public class Jails extends AsyncStorageObjectHolder<net.ess3.settings.Jails> imp
}
@Override
- public void finishRead()
- {
- }
-
- @Override
- public void finishWrite()
- {
- }
-
- @Override
public int getCount()
{
throw new UnsupportedOperationException("Not supported yet.");
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
@@ -70,16 +70,6 @@ public class Kits extends AsyncStorageObjectHolder<net.ess3.settings.Kits> imple
}
@Override
- public void finishRead()
- {
- }
-
- @Override
- public void finishWrite()
- {
- }
-
- @Override
public void checkTime(IUser user, Kit kit) throws NoChargeException
{
final Calendar time = new GregorianCalendar();
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)
@@ -68,12 +43,18 @@ public class Teleport implements Runnable, ITeleport
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/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/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/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<Money>
{
-
- @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<net.ess3.economy.Worth> 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/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/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/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<Ranks> 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/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";
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<Settings> 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<Spawns> 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<Warp> 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/settings/antibuild/Alert.java b/Essentials/src/net/ess3/settings/antibuild/Alert.java
index ec4aac252..28b59c3c2 100644
--- a/Essentials/src/net/ess3/settings/antibuild/Alert.java
+++ b/Essentials/src/net/ess3/settings/antibuild/Alert.java
@@ -22,53 +22,59 @@ public class Alert implements StorageObject
@ListType(Material.class)
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
- private Set<Material> alertOnPlacement = null;
- @Comment("For which block types would you like to be alerted when used?")
+ private Set<Material> alertOnPlacement = new HashSet<Material>();
+ @Comment("For which block types would you like to be alerted when used?")
@ListType(Material.class)
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
- private Set<Material> alertOnUse = null;
+ private Set<Material> alertOnUse = new HashSet<Material>();
@Comment("For which block types would you like to be alerted when broken?")
@ListType(Material.class)
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
- private Set<Material> alertOnBreak = null;
+ private Set<Material> alertOnBreak = new HashSet<Material>();
+
public Alert()
{
- if (alertOnPlacement == null)
+ if (alertOnPlacement.isEmpty())
{
Material[] mat =
{
Material.LAVA, Material.STATIONARY_LAVA, Material.TNT, Material.LAVA_BUCKET
};
- alertOnPlacement = new HashSet<Material>();
alertOnPlacement.addAll(Arrays.asList(mat));
}
-
- if (alertOnUse == null)
- {
- alertOnUse = new HashSet<Material>();
- alertOnUse.add(Material.LAVA_BUCKET);
- }
-
- if (alertOnBreak == null)
+
+ if (alertOnUse.isEmpty())
{
- alertOnBreak = new HashSet<Material>();
+ alertOnUse.add(Material.LAVA_BUCKET);
}
}
-
- public Set<Material> getAlertOnPlacement()
+
+ public boolean getAlertOnPlacement(Material mat)
{
- return alertOnPlacement;
+ if (alertOnPlacement == null)
+ {
+ return false;
+ }
+ return alertOnPlacement.contains(mat);
}
-
- public Set<Material> getAlertOnUse()
+
+ public boolean getAlertOnUse(Material mat)
{
- return alertOnUse;
+ if (alertOnUse == null)
+ {
+ return false;
+ }
+ return alertOnUse.contains(mat);
}
-
- public Set<Material> 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<Material> placement;
+ private Set<Material> placement = new HashSet<Material>();
@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<Material> usage;
+ private Set<Material> usage = new HashSet<Material>();
@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<Material> breaking;
+ private Set<Material> breaking = new HashSet<Material>();
@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<Material> piston;
+ private Set<Material> piston = new HashSet<Material>();
public BlackList()
{
- if (placement == null)
+ if(placement.isEmpty())
{
Material[] mat =
{
Material.LAVA, Material.STATIONARY_LAVA, Material.TNT, Material.LAVA_BUCKET
};
- placement = new HashSet<Material>();
+
placement.addAll(Arrays.asList(mat));
}
- if (usage == null)
- {
- usage = new HashSet<Material>();
- usage.add(Material.LAVA_BUCKET);
- }
- if (breaking == null)
+ if (usage.isEmpty())
{
- breaking = new HashSet<Material>();
- }
-
- if (piston == null)
- {
- piston = new HashSet<Material>();
- }
-
-
+ usage.add(Material.LAVA_BUCKET);
+ }
}
- public Set<Material> getPlacement()
+ public boolean getPlacement(Material mat)
{
- return placement;
+ if(placement == null)
+ {
+ return false;
+ }
+ return placement.contains(mat);
}
- public Set<Material> getUsage()
+ public boolean getUsage(Material mat)
{
- return usage;
+ if(usage == null)
+ {
+ return false;
+ }
+ return usage.contains(mat);
}
- public Set<Material> getBreaking()
+ public boolean getBreaking(Material mat)
{
- return breaking;
+ if(breaking == null)
+ {
+ return false;
+ }
+ return breaking.contains(mat);
}
- public Set<Material> getPiston()
+ public boolean getPiston(Material mat)
{
- return piston;
+ if(piston == null)
+ {
+ return false;
+ }
+ return piston.contains(mat);
}
}
diff --git a/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java b/Essentials/src/net/ess3/storage/AsyncStorageObjectHolder.java
index 5c55169d1..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,17 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
return file.getAbsolutePath();
}
- public abstract void finishRead();
+ protected void finishRead()
+ {
+ }
+
+ protected void finishWrite()
+ {
+ }
- public abstract void finishWrite();
+ protected void fillWithDefaults()
+ {
+ }
public StorageQueue.RequestState getRequestState(long timestamp)
{
@@ -108,6 +113,7 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
return writer;
}
+
private class StorageObjectDataWriter extends AbstractDelayedYamlFileWriter
{
public StorageObjectDataWriter()
@@ -176,6 +182,7 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
loaded.set(true);
if (exception instanceof FileNotFoundException)
{
+ fillWithDefaults();
writer.schedule();
}
}
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/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
@@ -79,16 +79,6 @@ public class User extends UserBase implements IUser
}
@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
{
final Calendar now = new GregorianCalendar();
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<IUser> 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<IUser> users = matchUsers(name, includeHidden, includeOffline, requester);
@@ -132,7 +133,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
}
}
}
-
+
@Override
public Set<IUser> matchUsers(final String name, final boolean includeOffline)
{
@@ -144,11 +145,12 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
{
return matchUsers(name, false, false, requester);
}
-
+ private final Pattern comma = Pattern.compile(",");
+
public Set<IUser> 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<IUser> result = new LinkedHashSet<IUser>();
final String nicknamePrefix = FormatUtil.stripColor(getNickNamePrefix());
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;
+ }
+ }
+
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<AntiBuild>
{
public AntiBuildHolder(final IEssentials ess)
@@ -12,14 +13,4 @@ public class AntiBuildHolder extends AsyncStorageObjectHolder<AntiBuild>
super(ess, AntiBuild.class, new File(ess.getPlugin().getDataFolder(), "antibuild.yml"));
onReload();
}
-
- @Override
- public void finishRead()
- {
- }
-
- @Override
- public void finishWrite()
- {
- }
}
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"));
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<GeoIP>
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<Protect>
{
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<SignConfig>
{
return !signsEnabled;
}
-
- @Override
- public void finishRead()
- {
- }
-
- @Override
- public void finishWrite()
- {
- }
}