summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2012-10-01 17:51:56 +0100
committerElgarL <ElgarL@palmergames.com>2012-10-01 17:51:56 +0100
commitcd0fde05b7a8322331b9bc14ae07afeee0aa497b (patch)
tree39445a34d73c670e99c6e5ad0aa5b1365a578c21
parent778f5649c8c0b3be9cc379f61c0a767959ebdbcd (diff)
parent8cf2ce7b73829a3496397d2a4405a0618bed5798 (diff)
downloadEssentials-cd0fde05b7a8322331b9bc14ae07afeee0aa497b.tar
Essentials-cd0fde05b7a8322331b9bc14ae07afeee0aa497b.tar.gz
Essentials-cd0fde05b7a8322331b9bc14ae07afeee0aa497b.tar.lz
Essentials-cd0fde05b7a8322331b9bc14ae07afeee0aa497b.tar.xz
Essentials-cd0fde05b7a8322331b9bc14ae07afeee0aa497b.zip
Merge remote-tracking branch 'remotes/origin/2.9' into groupmanager
-rw-r--r--Essentials/src/com/earth2me/essentials/DescParseTickFormat.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java15
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/I18n.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/ISettings.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java21
-rw-r--r--Essentials/src/com/earth2me/essentials/Teleport.java177
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java14
-rw-r--r--Essentials/src/com/earth2me/essentials/UserData.java38
-rw-r--r--Essentials/src/com/earth2me/essentials/Util.java5
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandban.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandgc.java5
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandheal.java21
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsethome.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsudo.java12
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtphere.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/metrics/Metrics.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java35
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java29
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java9
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java16
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignEnchant.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignFree.java9
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignKit.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignRepair.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignWarp.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignWeather.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java8
-rw-r--r--Essentials/src/com/earth2me/essentials/textreader/TextPager.java6
-rw-r--r--Essentials/src/config.yml62
-rw-r--r--Essentials/src/info.txt48
-rw-r--r--Essentials/src/items.csv402
-rw-r--r--Essentials/src/messages.properties8
-rw-r--r--Essentials/src/messages_cs.properties6
-rw-r--r--Essentials/src/messages_da.properties6
-rw-r--r--Essentials/src/messages_de.properties8
-rw-r--r--Essentials/src/messages_en.properties8
-rw-r--r--Essentials/src/messages_es.properties6
-rw-r--r--Essentials/src/messages_fi.properties6
-rw-r--r--Essentials/src/messages_fr.properties6
-rw-r--r--Essentials/src/messages_it.properties6
-rw-r--r--Essentials/src/messages_nl.properties6
-rw-r--r--Essentials/src/messages_pl.properties6
-rw-r--r--Essentials/src/messages_pt.properties6
-rw-r--r--Essentials/src/messages_se.properties6
-rw-r--r--Essentials/src/plugin.yml11
-rw-r--r--EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java78
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java41
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java30
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java15
-rw-r--r--EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java6
56 files changed, 877 insertions, 382 deletions
diff --git a/Essentials/src/com/earth2me/essentials/DescParseTickFormat.java b/Essentials/src/com/earth2me/essentials/DescParseTickFormat.java
index 9c40acacc..91efe3c0a 100644
--- a/Essentials/src/com/earth2me/essentials/DescParseTickFormat.java
+++ b/Essentials/src/com/earth2me/essentials/DescParseTickFormat.java
@@ -269,11 +269,11 @@ public final class DescParseTickFormat
// How many ingame days have passed since the server start?
final long days = ticks / ticksPerDay;
- ticks = ticks - days * ticksPerDay;
+ ticks -= days * ticksPerDay;
// How many hours on the last day?
final long hours = ticks / ticksPerHour;
- ticks = ticks - hours * ticksPerHour;
+ ticks -= hours * ticksPerHour;
// How many minutes on the last day?
final long minutes = (long)Math.floor(ticks / ticksPerMinute);
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
index 8dbd02a38..0077d988c 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
@@ -7,6 +7,7 @@ import java.util.logging.Logger;
import org.bukkit.Material;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -46,7 +47,7 @@ public class EssentialsEntityListener implements Listener
{
event.setCancelled(true);
}
-
+
if (attacker.isGodModeEnabled() && !attacker.isAuthorized("essentials.god.pvp"))
{
event.setCancelled(true);
@@ -161,4 +162,16 @@ public class EssentialsEntityListener implements Listener
event.setCancelled(true);
}
}
+
+ @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
+ public void onPotionSplashEvent(final PotionSplashEvent event)
+ {
+ for (LivingEntity entity : event.getAffectedEntities())
+ {
+ if (entity instanceof Player && ess.getUser(entity).isGodModeEnabled())
+ {
+ event.setIntensity(entity, 0d);
+ }
+ }
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
index f19f0f763..8ef218a67 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
@@ -347,7 +347,7 @@ public class EssentialsPlayerListener implements Listener
}
}
- @EventHandler(priority = EventPriority.LOWEST)
+ @EventHandler(priority = EventPriority.LOW)
public void onPlayerChangedWorldHack(final PlayerChangedWorldEvent event)
{
final Player user = event.getPlayer();
@@ -496,7 +496,7 @@ public class EssentialsPlayerListener implements Listener
}
}
- @EventHandler(priority = EventPriority.LOWEST)
+ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onInventoryClickEvent(final InventoryClickEvent event)
{
if (event.getView().getTopInventory().getType() == InventoryType.PLAYER)
diff --git a/Essentials/src/com/earth2me/essentials/I18n.java b/Essentials/src/com/earth2me/essentials/I18n.java
index c00180087..93f743140 100644
--- a/Essentials/src/com/earth2me/essentials/I18n.java
+++ b/Essentials/src/com/earth2me/essentials/I18n.java
@@ -143,7 +143,7 @@ public class I18n implements II18n
{
private final transient File dataFolder;
- public FileResClassLoader(final ClassLoader classLoader, final IEssentials ess)
+ FileResClassLoader(final ClassLoader classLoader, final IEssentials ess)
{
super(classLoader);
this.dataFolder = ess.getDataFolder();
diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java
index 434de7ba6..d8c421fde 100644
--- a/Essentials/src/com/earth2me/essentials/ISettings.java
+++ b/Essentials/src/com/earth2me/essentials/ISettings.java
@@ -92,10 +92,6 @@ public interface ISettings extends IConf
boolean isCommandOverridden(String name);
- boolean isCommandRestricted(IEssentialsCommand cmd);
-
- boolean isCommandRestricted(String label);
-
boolean isDebug();
boolean isEcoDisabled();
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index 90310cedb..fff129d52 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -147,26 +147,6 @@ public class Settings implements ISettings
}
@Override
- public boolean isCommandRestricted(IEssentialsCommand cmd)
- {
- return isCommandRestricted(cmd.getName());
- }
-
- @Override
- public boolean isCommandRestricted(String label)
- {
- for (String c : config.getStringList("restricted-commands"))
- {
- if (!c.equalsIgnoreCase(label))
- {
- continue;
- }
- return true;
- }
- return config.getBoolean("restrict-" + label.toLowerCase(Locale.ENGLISH), false);
- }
-
- @Override
public boolean isPlayerCommand(String label)
{
for (String c : config.getStringList("player-commands"))
@@ -387,6 +367,7 @@ public class Settings implements ISettings
format = format.replace("{WORLDNAME}", "{1}");
format = format.replace("{SHORTWORLDNAME}", "{2}");
format = format.replaceAll("\\{(\\D*?)\\}", "\\[$1\\]");
+ format = "§r".concat(format);
mFormat = new MessageFormat(format);
chatFormats.put(group, mFormat);
}
diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java
index b6179c0a5..6a666a199 100644
--- a/Essentials/src/com/earth2me/essentials/Teleport.java
+++ b/Essentials/src/com/earth2me/essentials/Teleport.java
@@ -21,13 +21,13 @@ public class Teleport implements Runnable, ITeleport
private final Location location;
private final String name;
- public Target(Location location)
+ Target(Location location)
{
this.location = location;
this.name = null;
}
- public Target(Player entity)
+ Target(Player entity)
{
this.name = entity.getName();
this.location = null;
@@ -37,13 +37,14 @@ public class Teleport implements Runnable, ITeleport
{
if (this.name != null)
{
-
+
return ess.getServer().getPlayerExact(name).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
@@ -62,12 +63,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.getHealth();
- this.initX = Math.round(user.getLocation().getX() * MOVE_CONSTANT);
- this.initY = Math.round(user.getLocation().getY() * MOVE_CONSTANT);
- this.initZ = Math.round(user.getLocation().getZ() * MOVE_CONSTANT);
+ this.health = teleportUser.getHealth();
+ this.initX = Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT);
+ this.initY = Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT);
+ this.initZ = Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT);
+ this.teleportUser = teleportUser;
this.teleportTarget = target;
this.chargeFor = chargeFor;
this.cause = cause;
@@ -79,31 +86,38 @@ public class Teleport implements Runnable, ITeleport
if (user == null || !user.isOnline() || user.getLocation() == null)
{
- cancel();
+ cancel(false);
return;
}
- if (Math.round(user.getLocation().getX() * MOVE_CONSTANT) != initX
- || Math.round(user.getLocation().getY() * MOVE_CONSTANT) != initY
- || Math.round(user.getLocation().getZ() * MOVE_CONSTANT) != initZ
- || user.getHealth() < health)
- { // user moved, cancel teleport
- cancel(true);
+ if (teleportUser == null || !teleportUser.isOnline() || teleportUser.getLocation() == null)
+ {
+ cancel(false);
return;
}
- health = user.getHealth(); // in case user healed, then later gets injured
-
+ if (!user.isAuthorized("essentials.teleport.timer.move")
+ && (Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT) != initX
+ || Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT) != initY
+ || Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT) != initZ
+ || teleportUser.getHealth() < health))
+ {
+ // user moved, cancel teleport
+ cancel(true);
+ return;
+ }
+ health = teleportUser.getHealth(); // in case user healed, then later gets injured
long now = System.currentTimeMillis();
if (now > started + delay)
{
try
{
cooldown(false);
- user.sendMessage(_("teleportationCommencing"));
+ teleportUser.sendMessage(_("teleportationCommencing"));
try
{
- now(teleportTarget, cause);
+ teleportUser.getTeleport().now(teleportTarget, cause);
+ cancel(false);
if (chargeFor != null)
{
chargeFor.charge(user);
@@ -117,6 +131,10 @@ public class Teleport implements Runnable, ITeleport
catch (Exception ex)
{
user.sendMessage(_("cooldownWithMessage", ex.getMessage()));
+ if (user != teleportUser)
+ {
+ teleportUser.sendMessage(_("cooldownWithMessage", ex.getMessage()));
+ }
}
}
}
@@ -127,22 +145,6 @@ public class Teleport implements Runnable, ITeleport
this.ess = ess;
}
- public void respawn(final Trade chargeFor, TeleportCause cause) throws Exception
- {
- final Player player = user.getBase();
- final Location bed = player.getBedSpawnLocation();
- final PlayerRespawnEvent pre = new PlayerRespawnEvent(player, bed == null ? player.getWorld().getSpawnLocation() : bed, bed != null);
- ess.getServer().getPluginManager().callEvent(pre);
- teleport(new Target(pre.getRespawnLocation()), chargeFor, cause);
- }
-
- public void warp(String warp, Trade chargeFor, TeleportCause cause) throws Exception
- {
- Location loc = ess.getWarps().getWarp(warp);
- teleport(new Target(loc), chargeFor, cause);
- user.sendMessage(_("warpingTo", warp));
- }
-
public void cooldown(boolean check) throws Exception
{
final Calendar time = new GregorianCalendar();
@@ -181,6 +183,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)
@@ -193,6 +196,10 @@ public class Teleport implements Runnable, ITeleport
if (notifyUser)
{
user.sendMessage(_("pendingTeleportCancelled"));
+ if (teleportUser != user)
+ {
+ teleportUser.sendMessage(_("pendingTeleportCancelled"));
+ }
}
}
finally
@@ -201,16 +208,40 @@ public class Teleport implements Runnable, ITeleport
}
}
- public void cancel()
+ //The now function is used when you want to skip tp delay when teleporting someone to a location or player.
+ public void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception
+ {
+ if (cooldown)
+ {
+ cooldown(false);
+ }
+ now(new Target(loc), cause);
+ }
+
+ public void now(Player entity, boolean cooldown, TeleportCause cause) throws Exception
+ {
+ if (cooldown)
+ {
+ cooldown(false);
+ }
+ now(new Target(entity), cause);
+ }
+
+ private void now(Target target, TeleportCause cause) throws Exception
{
cancel(false);
+ user.setLastLocation();
+ user.getBase().teleport(Util.getSafeDestination(target.getLocation()), cause);
}
+ //The teleport function is used when you want to normally teleport someone to a location or player.
+ //This method is nolonger used internally and will be removed.
+ @Deprecated
public void teleport(Location loc, Trade chargeFor) throws Exception
{
- teleport(new Target(loc), chargeFor, TeleportCause.PLUGIN);
+ teleport(loc, chargeFor, TeleportCause.PLUGIN);
}
-
+
public void teleport(Location loc, Trade chargeFor, TeleportCause cause) throws Exception
{
teleport(new Target(loc), chargeFor, cause);
@@ -241,58 +272,82 @@ public class Teleport implements Runnable, ITeleport
return;
}
- cancel();
- Calendar c = new GregorianCalendar();
- c.add(Calendar.SECOND, (int)delay);
- c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
- user.sendMessage(_("dontMoveMessage", Util.formatDateDiff(c.getTimeInMillis())));
+ cancel(false);
+ warnUser(user);
initTimer((long)(delay * 1000.0), target, chargeFor, cause);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
- private void now(Target target, TeleportCause cause) throws Exception
+ //The teleportToMe function is a wrapper used to handle teleporting players to them, like /tphere
+ public void teleportToMe(User otherUser, Trade chargeFor, TeleportCause cause) throws Exception
{
- cancel();
- user.setLastLocation();
- user.getBase().teleport(Util.getSafeDestination(target.getLocation()), cause);
- }
+ Target target = new Target(user);
- public void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception
- {
- if (cooldown)
+ double delay = ess.getSettings().getTeleportDelay();
+
+ if (chargeFor != null)
+ {
+ chargeFor.isAffordableFor(user);
+ }
+ cooldown(true);
+ if (delay <= 0 || user.isAuthorized("essentials.teleport.timer.bypass"))
{
cooldown(false);
+ otherUser.getTeleport().now(target, cause);
+ if (chargeFor != null)
+ {
+ chargeFor.charge(user);
+ }
+ return;
}
- now(new Target(loc), cause);
+
+ cancel(false);
+ warnUser(otherUser);
+ initTimer((long)(delay * 1000.0), otherUser, target, chargeFor, cause);
+
+ teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
- public void now(Location loc, Trade chargeFor, TeleportCause cause) throws Exception
+ private void warnUser(final IUser user)
{
- cooldown(false);
- chargeFor.charge(user);
- now(new Target(loc), cause);
+ Calendar c = new GregorianCalendar();
+ c.add(Calendar.SECOND, (int)delay);
+ c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
+ user.sendMessage(_("dontMoveMessage", Util.formatDateDiff(c.getTimeInMillis())));
}
- public void now(Player entity, boolean cooldown, TeleportCause cause) throws Exception
+ //The respawn function is a wrapper used to handle tp fallback, on /jail and /home
+ public void respawn(final Trade chargeFor, TeleportCause cause) throws Exception
{
- if (cooldown)
- {
- cooldown(false);
- }
- now(new Target(entity), cause);
+ final Player player = user.getBase();
+ final Location bed = player.getBedSpawnLocation();
+ final PlayerRespawnEvent pre = new PlayerRespawnEvent(player, bed == null ? player.getWorld().getSpawnLocation() : bed, bed != null);
+ ess.getServer().getPluginManager().callEvent(pre);
+ teleport(new Target(pre.getRespawnLocation()), chargeFor, cause);
+ }
+
+ //The warp function is a wrapper used to teleport a player to a /warp
+ public void warp(String warp, Trade chargeFor, TeleportCause cause) throws Exception
+ {
+ Location loc = ess.getWarps().getWarp(warp);
+ teleport(new Target(loc), chargeFor, cause);
+ user.sendMessage(_("warpingTo", warp));
}
+ //The back function is a wrapper used to teleport a player /back to their previous location.
public void back(Trade chargeFor) throws Exception
{
teleport(new Target(user.getLastLocation()), chargeFor, TeleportCause.COMMAND);
}
+ //This function is used to throw a user back after a jail sentence
public void back() throws Exception
{
now(new Target(user.getLastLocation()), TeleportCause.COMMAND);
}
+ //This function handles teleporting to /home
public void home(Location loc, Trade chargeFor) throws Exception
{
teleport(new Target(loc), chargeFor, TeleportCause.COMMAND);
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index dbd56df12..01284d4b8 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -63,20 +63,22 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
@Override
public boolean isAuthorized(final String node)
{
+ final boolean result = isAuthorizedCheck(node);
if (ess.getSettings().isDebug())
{
- ess.getLogger().log(Level.INFO, "checking if " + base.getName() + " has " + node);
+ ess.getLogger().log(Level.INFO, "checking if " + base.getName() + " has " + node + " - " + result);
}
+ return result;
+ }
+
+ private boolean isAuthorizedCheck(final String node)
+ {
+
if (base instanceof OfflinePlayer)
{
return false;
}
- if (isOp())
- {
- return true;
- }
-
if (isJailed())
{
return false;
diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java
index be25cf665..e9b84e656 100644
--- a/Essentials/src/com/earth2me/essentials/UserData.java
+++ b/Essentials/src/com/earth2me/essentials/UserData.java
@@ -28,8 +28,9 @@ public abstract class UserData extends PlayerExtension implements IConf
config = new EssentialsConf(new File(folder, Util.sanitizeFileName(base.getName()) + ".yml"));
reloadConfig();
}
-
- public final void reset () {
+
+ public final void reset()
+ {
config.getFile().delete();
config = new EssentialsConf(new File(folder, Util.sanitizeFileName(base.getName()) + ".yml"));
reloadConfig();
@@ -108,26 +109,25 @@ public abstract class UserData extends PlayerExtension implements IConf
return new HashMap<String, Object>();
}
- public Location getHome(String name) throws Exception
+ private String getHomeName(String search)
{
- Location loc = config.getLocation("homes." + name, getServer());
- if (loc == null)
+ if (Util.isInt(search))
{
try
{
- loc = config.getLocation("homes." + getHomes().get(Integer.parseInt(name) - 1), getServer());
- }
- catch (IndexOutOfBoundsException e)
- {
- return null;
+ search = getHomes().get(Integer.parseInt(search) - 1);
}
- catch (NumberFormatException e)
+ catch (Exception e)
{
- return null;
}
}
-
- return loc;
+ return search;
+ }
+
+ public Location getHome(String name) throws Exception
+ {
+ String search = getHomeName(name);
+ return config.getLocation("homes." + search, getServer());
}
public Location getHome(final Location world)
@@ -169,20 +169,20 @@ public abstract class UserData extends PlayerExtension implements IConf
public void delHome(String name) throws Exception
{
- String search = name;
+ String search = getHomeName(name);
if (!homes.containsKey(search))
{
- search = Util.sanitizeFileName(name);
+ search = Util.sanitizeFileName(search);
}
if (homes.containsKey(search))
{
- homes.remove(name);
- config.removeProperty("homes." + name);
+ homes.remove(search);
+ config.removeProperty("homes." + search);
config.save();
}
else
{
- throw new Exception(_("invalidHome", name));
+ throw new Exception(_("invalidHome", search));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java
index c1f7cd014..34e5c6420 100644
--- a/Essentials/src/com/earth2me/essentials/Util.java
+++ b/Essentials/src/com/earth2me/essentials/Util.java
@@ -23,10 +23,13 @@ public class Util
private final static Logger logger = Logger.getLogger("Minecraft");
private final static Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9]");
private final static Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]");
+ private final static Pattern BADFILENAMES = Pattern.compile("^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\\.(.+))?$", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS);
public static String sanitizeFileName(final String name)
{
- final String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
+ String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
+ if(BADFILENAMES.matcher(newName).matches())
+ newName = "_" + newName;
return newName;
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandban.java b/Essentials/src/com/earth2me/essentials/commands/Commandban.java
index 5f70df273..cf6ea53df 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandban.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandban.java
@@ -44,7 +44,7 @@ public class Commandban extends EssentialsCommand
}
else
{
- if (user.isAuthorized("essentials.ban.exempt"))
+ if (user.isAuthorized("essentials.ban.exempt") && sender instanceof Player)
{
sender.sendMessage(_("banExempt"));
return;
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgc.java b/Essentials/src/com/earth2me/essentials/commands/Commandgc.java
index 11af52b6f..56816d452 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandgc.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandgc.java
@@ -53,10 +53,7 @@ public class Commandgc extends EssentialsCommand
break;
}
- sender.sendMessage(
- "\u00a76" + worldType + " \"" + w.getName() + "\": "
- + w.getLoadedChunks().length + _("gcchunks")
- + w.getEntities().size() + _("gcentities"));
+ sender.sendMessage(_("gcWorld", worldType, w.getName(), w.getLoadedChunks().length, w.getEntities().size()));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandheal.java b/Essentials/src/com/earth2me/essentials/commands/Commandheal.java
index 82678c96e..224e782de 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandheal.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandheal.java
@@ -6,6 +6,8 @@ import java.util.List;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
public class Commandheal extends EssentialsCommand
@@ -33,9 +35,7 @@ public class Commandheal extends EssentialsCommand
{
user.healCooldown();
}
- user.setHealth(20);
- user.setFoodLevel(20);
- user.sendMessage(_("heal"));
+ healPlayer(user);
}
@Override
@@ -63,10 +63,19 @@ public class Commandheal extends EssentialsCommand
{
continue;
}
- p.setHealth(20);
- p.setFoodLevel(20);
- p.sendMessage(_("heal"));
+ healPlayer(p);
sender.sendMessage(_("healOther", p.getDisplayName()));
}
}
+
+ private void healPlayer(final Player p)
+ {
+ p.setHealth(20);
+ p.setFoodLevel(20);
+ p.sendMessage(_("heal"));
+ for (PotionEffect effect : p.getActivePotionEffects())
+ {
+ p.removePotionEffect(effect.getType());
+ }
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java b/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
index 7ec1ba11d..c97761f8d 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
@@ -2,7 +2,9 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
import java.util.Locale;
+import java.util.regex.Pattern;
import org.bukkit.Location;
import org.bukkit.Server;
@@ -55,9 +57,10 @@ public class Commandsethome extends EssentialsCommand
{
name = "home";
}
- if ("bed".equals(name))
+ if ("bed".equals(name) || Util.isInt(name))
{
- throw new NotEnoughArgumentsException();
+ user.sendMessage(_("invalidHomeName"));
+ throw new NoChargeException();
}
usersHome.setHome(name, location);
user.sendMessage(_("homeSet", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ()));
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java b/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java
index 1d974121b..d41cf9a51 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java
@@ -7,6 +7,7 @@ import java.util.logging.Logger;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
+import org.bukkit.entity.Player;
public class Commandsudo extends EssentialsCommand
@@ -26,6 +27,15 @@ public class Commandsudo extends EssentialsCommand
}
final User user = getPlayer(server, args, 0, false);
+ if(args[1].equalsIgnoreCase("say"))
+ {
+ if (user.isAuthorized("essentials.sudo.exempt"))
+ {
+ throw new Exception(_("sudoExempt"));
+ }
+ user.chat(getFinalArg(args, 2));
+ return;
+ }
final String command = args[1];
final String[] arguments = new String[args.length - 2];
if (arguments.length > 0)
@@ -33,7 +43,7 @@ public class Commandsudo extends EssentialsCommand
System.arraycopy(args, 2, arguments, 0, args.length - 2);
}
- if (user.isAuthorized("essentials.sudo.exempt"))
+ if (user.isAuthorized("essentials.sudo.exempt") && sender instanceof Player)
{
throw new Exception(_("sudoExempt"));
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java
index 86f88f884..865492921 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java
@@ -65,12 +65,13 @@ public class Commandtpaccept extends EssentialsCommand
if (user.isTpRequestHere())
{
- user.getTeleport().teleport(target, charge, TeleportCause.COMMAND);
+ target.getTeleport().teleportToMe(user, charge, TeleportCause.COMMAND);
}
else
{
target.getTeleport().teleport(user, charge, TeleportCause.COMMAND);
}
user.requestTeleport(null, false);
+ throw new NoChargeException();
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java b/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java
index 641290575..76041ca6c 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java
@@ -27,7 +27,7 @@ public class Commandtphere extends EssentialsCommand
{
throw new Exception(_("noPerm", "essentials.worlds." + user.getWorld().getName()));
}
- player.getTeleport().teleport(user, new Trade(this.getName(), ess), TeleportCause.COMMAND);
+ user.getTeleport().teleportToMe(player, new Trade(this.getName(), ess), TeleportCause.COMMAND);
user.sendMessage(_("teleporting"));
player.sendMessage(_("teleporting"));
throw new NoChargeException();
diff --git a/Essentials/src/com/earth2me/essentials/metrics/Metrics.java b/Essentials/src/com/earth2me/essentials/metrics/Metrics.java
index f361e4f50..a0bf103e8 100644
--- a/Essentials/src/com/earth2me/essentials/metrics/Metrics.java
+++ b/Essentials/src/com/earth2me/essentials/metrics/Metrics.java
@@ -223,7 +223,7 @@ public class Metrics
}
catch (IOException e)
{
- Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage());
+ Bukkit.getLogger().log(Level.FINE, "[Metrics] " + e.getMessage());
}
}
}, 0, PING_INTERVAL * 1200);
diff --git a/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java
index fad479444..9396bd4ad 100644
--- a/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java
@@ -1,12 +1,11 @@
package com.earth2me.essentials.perm;
import com.earth2me.essentials.IEssentials;
-import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
-public class ConfigPermissionsHandler implements IPermissionsHandler
+public class ConfigPermissionsHandler extends SuperpermsHandler
{
private final transient IEssentials ess;
@@ -16,46 +15,16 @@ public class ConfigPermissionsHandler implements IPermissionsHandler
}
@Override
- public String getGroup(final Player base)
- {
- return null;
- }
-
- @Override
- public List<String> getGroups(final Player base)
- {
- return null;
- }
-
- @Override
public boolean canBuild(final Player base, final String group)
{
return true;
}
@Override
- public boolean inGroup(final Player base, final String group)
- {
- return false;
- }
-
- @Override
public boolean hasPermission(final Player base, final String node)
{
final String[] cmds = node.split("\\.", 2);
- return !ess.getSettings().isCommandRestricted(cmds[cmds.length - 1])
- && ess.getSettings().isPlayerCommand(cmds[cmds.length - 1]);
+ return ess.getSettings().isPlayerCommand(cmds[cmds.length - 1]) || super.hasPermission(base, node);
}
- @Override
- public String getPrefix(final Player base)
- {
- return null;
- }
-
- @Override
- public String getSuffix(final Player base)
- {
- return null;
- }
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java
index ae19f57dd..68dc3fe50 100644
--- a/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java
@@ -8,7 +8,7 @@ import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;
-public class PermissionsExHandler implements IPermissionsHandler
+public class PermissionsExHandler extends SuperpermsHandler
{
private final transient PermissionManager manager;
@@ -66,7 +66,7 @@ public class PermissionsExHandler implements IPermissionsHandler
@Override
public boolean hasPermission(final Player base, final String node)
{
- return manager.has(base.getName(), node, base.getWorld().getName());
+ return super.hasPermission(base, node);
}
@Override
diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java
index e1bf13d10..ab2332528 100644
--- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java
@@ -200,7 +200,8 @@ public class PermissionsHandler implements IPermissionsHandler
{
if (!(handler instanceof ConfigPermissionsHandler))
{
- LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config.");
+ LOGGER.log(Level.INFO, "Essentials: Using config file enhanced permissions.");
+ LOGGER.log(Level.INFO, "Permissions listed in as player-commands will be given to all users.");
handler = new ConfigPermissionsHandler(plugin);
}
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java
index aedd4c5ae..0b4b93058 100644
--- a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java
@@ -31,25 +31,26 @@ public class SuperpermsHandler implements IPermissionsHandler
}
@Override
- public boolean hasPermission(final Player base, final String node)
+ public boolean hasPermission(final Player base, String node)
{
- if (base.hasPermission("-" + node))
+ String permCheck = node;
+ int index;
+ while (true)
{
- return false;
- }
- final String[] parts = node.split("\\.");
- final StringBuilder builder = new StringBuilder(node.length());
- for (String part : parts)
- {
- builder.append('*');
- if (base.hasPermission(builder.toString()))
+ if (base.isPermissionSet(permCheck))
{
- return true;
+ return base.hasPermission(permCheck);
}
- builder.deleteCharAt(builder.length() - 1);
- builder.append(part).append('.');
+
+ index = node.lastIndexOf('.');
+ if (index < 1)
+ {
+ return base.hasPermission("*");
+ }
+
+ node = node.substring(0, index);
+ permCheck = node + ".*";
}
- return base.hasPermission(node);
}
@Override
diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
index f3faa2de0..e5f125cf8 100644
--- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
+++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
@@ -438,11 +438,13 @@ public class EssentialsSign
{
private final transient SignChangeEvent event;
private final transient Block block;
+ private final transient Sign sign;
- public EventSign(final SignChangeEvent event)
+ EventSign(final SignChangeEvent event)
{
this.event = event;
this.block = event.getBlock();
+ this.sign = (Sign)block.getState();
}
@Override
@@ -455,6 +457,8 @@ public class EssentialsSign
public final void setLine(final int index, final String text)
{
event.setLine(index, text);
+ sign.setLine(index, text);
+ updateSign();
}
@Override
@@ -466,6 +470,7 @@ public class EssentialsSign
@Override
public void updateSign()
{
+ sign.update();
}
}
@@ -475,7 +480,7 @@ public class EssentialsSign
private final transient Sign sign;
private final transient Block block;
- public BlockSign(final Block block)
+ BlockSign(final Block block)
{
this.block = block;
this.sign = (Sign)block.getState();
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
index 162457baf..517c313cc 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java
@@ -88,6 +88,16 @@ public class SignBlockListener implements Listener
{
event.setLine(i, Util.formatString(user, "essentials.signs", event.getLine(i)));
}
+
+ final String topLine = event.getLine(0);
+ for (Signs signs : Signs.values())
+ {
+ final EssentialsSign sign = signs.getSign();
+ if (topLine.equalsIgnoreCase(sign.getSuccessName()))
+ {
+ event.setLine(0, Util.stripFormat(topLine));
+ }
+ }
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -98,9 +108,8 @@ public class SignBlockListener implements Listener
return;
}
- for (Signs signs : Signs.values())
+ for (EssentialsSign sign : ess.getSettings().enabledSigns())
{
- final EssentialsSign sign = signs.getSign();
if (event.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
{
event.setCancelled(true);
@@ -137,9 +146,8 @@ public class SignBlockListener implements Listener
{
return;
}
- for (Signs signs : Signs.values())
+ for (EssentialsSign sign : ess.getSettings().enabledSigns())
{
- final EssentialsSign sign = signs.getSign();
if (sign.getBlocks().contains(block.getType())
&& !sign.onBlockPlace(block, event.getPlayer(), ess))
{
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignEnchant.java b/Essentials/src/com/earth2me/essentials/signs/SignEnchant.java
index e1eb7825e..37203555c 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignEnchant.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignEnchant.java
@@ -21,11 +21,13 @@ public class SignEnchant extends EssentialsSign
final String[] enchantLevel = sign.getLine(2).split(":");
if (enchantLevel.length != 2)
{
+ sign.setLine(2, "§c<enchant>");
throw new SignException(_("invalidSignLine", 3));
}
final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]);
if (enchantment == null)
{
+ sign.setLine(2, "§c<enchant>");
throw new SignException(_("enchantmentNotFound"));
}
int level;
@@ -35,6 +37,7 @@ public class SignEnchant extends EssentialsSign
}
catch (NumberFormatException ex)
{
+ sign.setLine(2, "§c<enchant>");
throw new SignException(ex.getMessage(), ex);
}
if (level < 1 || level > enchantment.getMaxLevel())
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignFree.java b/Essentials/src/com/earth2me/essentials/signs/SignFree.java
index 781cbd33b..b5dd3fa73 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignFree.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignFree.java
@@ -19,7 +19,14 @@ public class SignFree extends EssentialsSign
@Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
{
- getItemStack(sign.getLine(1), 1, ess);
+ try {
+ getItemStack(sign.getLine(1), 1, ess);
+ }
+ catch (SignException ex)
+ {
+ sign.setLine(1, "§c<item>");
+ throw new SignException(ex.getMessage(), ex);
+ }
return true;
}
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignKit.java b/Essentials/src/com/earth2me/essentials/signs/SignKit.java
index aee1d7dea..1c3528a18 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignKit.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignKit.java
@@ -51,7 +51,7 @@ public class SignKit extends EssentialsSign
final String kitName = sign.getLine(1).toLowerCase(Locale.ENGLISH).trim();
final String group = sign.getLine(2);
if ((!group.isEmpty() && ("§2Everyone".equals(group) || player.inGroup(group)))
- || (group.isEmpty() && (player.isAuthorized("essentials.kit." + kitName))))
+ || (group.isEmpty() && (player.isAuthorized("essentials.kits." + kitName))))
{
final Trade charge = getTrade(sign, 3, ess);
charge.isAffordableFor(player);
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignRepair.java b/Essentials/src/com/earth2me/essentials/signs/SignRepair.java
index 361cd4c55..7e76309f1 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignRepair.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignRepair.java
@@ -25,6 +25,7 @@ public class SignRepair extends EssentialsSign
}
else if (!repairTarget.equalsIgnoreCase("all") && !repairTarget.equalsIgnoreCase("hand") )
{
+ sign.setLine(1, "§c<hand|all>");
throw new SignException(_("invalidSignLine", 2));
}
validateTrade(sign, 2, ess);
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
index 76e8e730b..eb81ea4e1 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
@@ -1,6 +1,7 @@
package com.earth2me.essentials.signs;
import com.earth2me.essentials.ChargeException;
+import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.IEssentials;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
@@ -22,8 +23,8 @@ public class SignWarp extends EssentialsSign
if (warpName.isEmpty())
{
- sign.setLine(1, "§dWarp name!");
- return false;
+ sign.setLine(1, "§c<Warp name>");
+ throw new SignException(_("invalidSignLine", 1));
}
else
{
@@ -52,7 +53,7 @@ public class SignWarp extends EssentialsSign
if ((!group.isEmpty()
&& ("§2Everyone".equals(group)
|| player.inGroup(group)))
- || (group.isEmpty() && (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warp." + warpName))))
+ || (group.isEmpty() && (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warps." + warpName))))
{
final Trade charge = getTrade(sign, 3, ess);
try
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignWeather.java b/Essentials/src/com/earth2me/essentials/signs/SignWeather.java
index 559fcc2e3..9be677143 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignWeather.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignWeather.java
@@ -29,6 +29,7 @@ public class SignWeather extends EssentialsSign
sign.setLine(1, "§2Storm");
return true;
}
+ sign.setLine(1, "§c<sun|storm>");
throw new SignException(_("onlySunStorm"));
}
diff --git a/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java b/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java
index b651dd40b..39ab28bd9 100644
--- a/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java
+++ b/Essentials/src/com/earth2me/essentials/storage/AsyncStorageObjectHolder.java
@@ -89,7 +89,7 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
private class StorageObjectDataWriter extends AbstractDelayedYamlFileWriter
{
- public StorageObjectDataWriter()
+ StorageObjectDataWriter()
{
super(ess, getStorageFile());
}
@@ -112,7 +112,7 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
private class StorageObjectDataReader extends AbstractDelayedYamlFileReader<T>
{
- public StorageObjectDataReader()
+ StorageObjectDataReader()
{
super(ess, getStorageFile(), clazz);
}
diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java
index a9f9e1480..57e599ff2 100644
--- a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java
+++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java
@@ -1,9 +1,6 @@
package com.earth2me.essentials.textreader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
public class SimpleTextInput implements IText
@@ -11,7 +8,7 @@ public class SimpleTextInput implements IText
private final transient List<String> lines = new ArrayList<String>();
public SimpleTextInput (final String input) {
- lines.add(input);
+ lines.addAll(Arrays.asList(input.split("\\n")));
}
@Override
diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java
index ea1b787d5..5376abbd2 100644
--- a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java
+++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java
@@ -1,5 +1,6 @@
package com.earth2me.essentials.textreader;
+import java.util.List;
import org.bukkit.command.CommandSender;
@@ -20,7 +21,12 @@ public class SimpleTextPager
}
}
- public String getString(int line)
+ public List<String> getLines()
+ {
+ return text.getLines();
+ }
+
+ public String getLine(int line)
{
if (text.getLines().size() < line)
{
diff --git a/Essentials/src/com/earth2me/essentials/textreader/TextPager.java b/Essentials/src/com/earth2me/essentials/textreader/TextPager.java
index 7b73f49ab..3242d7509 100644
--- a/Essentials/src/com/earth2me/essentials/textreader/TextPager.java
+++ b/Essentials/src/com/earth2me/essentials/textreader/TextPager.java
@@ -70,7 +70,7 @@ public class TextPager
}
for (int i = start; i < lines.size() && i < start + (onePage ? 20 : 9); i++)
{
- sender.sendMessage(lines.get(i));
+ sender.sendMessage("§r" + lines.get(i));
}
if (!onePage && page < pages && commandName != null)
{
@@ -137,7 +137,7 @@ public class TextPager
}
for (int i = start; i < end && i < start + (onePage ? 20 : 9); i++)
{
- sender.sendMessage(lines.get(i));
+ sender.sendMessage("§r" + lines.get(i));
}
if (!onePage && page < pages && commandName != null)
{
@@ -189,7 +189,7 @@ public class TextPager
}
for (int i = start; i < chapterend && i < start + (onePage ? 20 : 9); i++)
{
- sender.sendMessage(lines.get(i));
+ sender.sendMessage("§r" + lines.get(i));
}
if (!onePage && page < pages && commandName != null)
{
diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml
index 65a0773fd..9fa0f8c4c 100644
--- a/Essentials/src/config.yml
+++ b/Essentials/src/config.yml
@@ -8,15 +8,10 @@
# If you receive an error when Essentials loads, ensure that:
# - No tabs are present: YAML only allows spaces
# - Indents are correct: YAML hierarchy is based entirely on indentation
-# - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrphe)
-# - List items are prefixed with a hyphen and indented:
-# lists:
-# - look like this
-# not:
-# - like this
+# - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrophe)
# - Text with symbols is enclosed in single or double quotation marks
-# - CraftBukkit and Permissions have been updated: CraftBukkit and Essentials almost always line up, but sometimes other plugins fall behind CraftBukkit's multiple daily updates
-# - You have saved the document as UTF-8, NOT the default, ANSI
+
+# If you have problems join the Essentials help support channel: http://tiny.cc/EssentialsChat
############################################################
# +------------------------------------------------------+ #
@@ -96,18 +91,20 @@ overridden-commands:
disabled-commands:
# - nick
-# Restricted commands have been removed.
-# Now we have a whitelist, all commands not on this list are only available to ops.
-# These will have NO EFFECT if you have Permissions installed!
-# They are here only if you want something simpler than Permissions.
+# If you do not wish to use a permission system, you can define a list of 'player perms' below.
+# This list has no effect if your using a supported permissions system.
+# If your using an unsupported permissions system simply delete this section.
+# Whitelist the commands and permissions you wish to give players by default (everything else is op only).
# These are the permissions without the "essentials." part.
player-commands:
- afk
+ - afk.auto
- back
- back.ondeath
- balance
- balance.others
- balancetop
+ - build
- chat.color
- chat.format
- chat.shout
@@ -138,8 +135,6 @@ player-commands:
- near
- pay
- ping
- - powertool
- - powertooltoggle
- protect
- r
- rules
@@ -190,7 +185,7 @@ kits:
dtools:
delay: 10
items:
- - 277 1 efficiency:1
+ - 277 1 efficiency:1 durability:1
- 278 1
- 279:780 1
tools:
@@ -206,7 +201,6 @@ kits:
# To enable signs, remove # symbol. To disable all signs, comment/remove each sign.
# Essentials Colored sign support will be enabled when any sign types are enabled.
# Color is not an actual sign, its for enabling using color codes on signs, when the correct permissions are given.
-# We recommend not enabling chest protection signs if you don't intend to use them, (or are using LWC/Lockette).
enabledSigns:
#- color
@@ -226,9 +220,7 @@ enabledSigns:
#- spawnmob
#- repair
#- time
- #- weather
- #- protection
-
+ #- weather
# How many times per second can Essentials signs be interacted with per player.
# Values should be between 1-20, 20 being virtually no lag protection.
@@ -254,16 +246,12 @@ debug: false
# Set the locale for all messages
# If you don't set this, the default locale of the server will be used.
-# Don't forget to remove the # infront of the line
+# Don't forget to remove the # in front of the line
#locale: de_DE
# Turn off god mode when people exit
remove-god-on-disconnect: false
-# Use the permission system of bukkit
-# This only works if no other permission plugins are installed
-use-bukkit-permissions: false
-
# Auto-AFK
# After this timeout in seconds, the user will be set as afk.
# Set to -1 for no timeout.
@@ -285,11 +273,11 @@ freeze-afk-players: false
disable-item-pickup-while-afk: false
# Should we automatically remove afk status when the player moves?
-# Player will be removed from afk on chat/command reguardless of this setting.
+# Player will be removed from afk on chat/command regardless of this setting.
# Disable this to reduce server lag.
cancel-afk-on-move: true
-# You can disable the death messages of minecraft here
+# You can disable the death messages of Minecraft here
death-messages: true
# Add worlds to this list, if you want to automatically disable god mode there
@@ -299,17 +287,17 @@ no-god-in-worlds:
# Set to true to enable per-world permissions for teleporting between worlds with essentials commands
# This applies to /world, /back, /tp[a|o][here|all], but not warps.
# Give someone permission to teleport to a world with essentials.worlds.<worldname>
-# This does not effect the /home command, there is a seperate toggle below for this.
+# This does not effect the /home command, there is a separate toggle below for this.
world-teleport-permissions: false
# The number of items given if the quantity parameter is left out in /item or /give.
-# If this number is below 1, the maximum stack size size is given. If oversized stacks
-# is not enabled, any number higher then the maximum stack size results in more than one stack.
+# If this number is below 1, the maximum stack size size is given. If over-sized stacks
+# are not enabled, any number higher then the maximum stack size results in more than one stack.
default-stack-size: -1
-# Oversized stacks are stacks that ignore the normal max stacksize.
+# Over-sized stacks are stacks that ignore the normal max stack size.
# They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission.
-# How many items should be in an oversized stack?
+# How many items should be in an over-sized stack?
oversized-stacksize: 64
# Allow repair of enchanted weapons and armor.
@@ -369,7 +357,7 @@ starting-balance: 0
# These are now defined in worth.yml
# Defines the cost to use the given commands PER USE
-# Some commands like /repair have subcosts, check the wiki for more information.
+# Some commands like /repair have sub-costs, check the wiki for more information.
command-costs:
# /example costs $1000 PER USE
#example: 1000
@@ -564,15 +552,15 @@ protect:
storm: false
thunder: false
lightning: false
-
+
############################################################
# +------------------------------------------------------+ #
# | EssentialsAntiBuild | #
# +------------------------------------------------------+ #
############################################################
-
+
# Disable various default physics and behaviors
-
+
# Should people with build: false in permissions be allowed to build
# Set true to disable building for those people
# Setting to false means EssentialsAntiBuild will never prevent you from building
@@ -585,7 +573,7 @@ protect:
# Should we tell people they are not allowed to build
warn-on-build-disallow: true
-
+
# For which block types would you like to be alerted?
# You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time.
# 10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket
@@ -624,7 +612,7 @@ newbies:
# When we spawn for the first time, which spawnpoint do we use?
# Set to "none" if you want to use the spawn point of the world.
spawnpoint: newbies
-
+
# Do we want to give users anything on first join? Set to '' to disable
# This kit will be given regardless of cost, and permissions.
#kit: ''
diff --git a/Essentials/src/info.txt b/Essentials/src/info.txt
index cfc037040..965780a15 100644
--- a/Essentials/src/info.txt
+++ b/Essentials/src/info.txt
@@ -25,28 +25,30 @@ when he does not select a chapter.
#Colors
Minecraft colors:
-&0 &&0 &1 &&1 &2 &&2 &3 &&3
-&4 &&4 &5 &&5 &6 &&6 &7 &&7
-&8 &&8 &9 &&9 &a &&a &b &&b
-&c &&c &d &&d &e &&e &f &&f
-&&k &k Magic!
+&0 &&0 &1 &&1 &2 &&2 &3 &&3
+&4 &&4 &5 &&5 &6 &&6 &7 &&7
+&8 &&8 &9 &&9 &a &&a &b &&b
+&c &&c &d &&d &e &&e &f &&f
+
+&&k &k Magic!&r &&l &l Bold!
+&&m &m Strike!&r &&n &n Underline!
+&&o &o Italic!&r &&r &r reset format codes!
#Tags
-PLAYER: {PLAYER}
-USERNAME: {PLAYER}
-IP: {IP}
-ADDRESS: {ADDRESS}
-BALANCE: {BALANCE}
-MAILS: {MAILS}
-WORLD: {WORLD}
-WORLDS: {WORLDS}
-ONLINE: {ONLINE}
-UNIQUE: {UNIQUE}
-PLAYERLIST: {PLAYERLIST}
-TIME: {TIME}
-DATE: {DATE}
-WORLDTIME12: {WORLDTIME12}
-WORLDTIME24: {WORLDTIME24}
-WORLDDATE: {WORLDDATE}
-PLUGINS: {PLUGINS}
-VERSION: {VERSION} \ No newline at end of file
+&6Player name:&r {PLAYER}
+&6IP:&r {IP}
+&6Address:&r {ADDRESS}
+&6Balance:&r {BALANCE}
+&6Unread mails:&r {MAILS}
+&6Current world:&r {WORLD}
+&6Worlds list:&r {WORLDS}
+&6Number of online players:&r {ONLINE}
+&6Number of unique players who joined the server:&r {UNIQUE}
+&6Player list:&r {PLAYERLIST}
+&6Time of server:&r {TIME}
+&6Date of server:&r {DATE}
+&6Time of world PM/AM:&r {WORLDTIME12}
+&6Time of world:&r {WORLDTIME24}
+&6Date of world:&r {WORLDDATE}
+&6Plugin list:&r {PLUGINS}
+&6Version of Craftbukkit:&r {VERSION} \ No newline at end of file
diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv
index ecb3e816f..a3d6ca91b 100644
--- a/Essentials/src/items.csv
+++ b/Essentials/src/items.csv
@@ -1,4 +1,4 @@
-#version: teamcity
+#version: TeamCity
#If you change this file, it will not be automatically updated after the next release,
#item,id,metadata
stone,1,0
@@ -1587,7 +1587,9 @@ tdoor,96,0
doort,96,0
trapd,96,0
dtrap,96,0
+monsteregg,97,0
silverfish,97,0
+monsteregg,97,0
monstereggsmoothstone,97,0
monstereggsstone,97,0
meggsmoothstone,97,0
@@ -3396,6 +3398,7 @@ sign,323,0
woodendoor,324,0
wooddoor,324,0
wdoor,324,0
+door,324,0
bucket,325,0
bukkit,325,0
waterbucket,326,0
@@ -3945,14 +3948,98 @@ waterbottle,373,0
fullbottle,373,0
watervase,373,0
fullvase,373,0
+clearpotion,373,6
+clearpot,373,6
+clearextendedpotion,373,7
+clearexpotion,373,7
+clear2potion,373,7
+clearextendedpot,373,7
+clearexpot,373,7
+clear2pot,373,7
+diffusepotion,373,11
+diffusepot,373,11
+artlesspotion,373,13
+artlesspot,373,13
+thinpotion,373,14
+thinpot,373,14
+thinextendedpotion,373,15
+thinexpotion,373,15
+thin2potion,373,15
+thinextendedpot,373,15
+thinexpot,373,15
+thin2pot,373,15
awkwardpotion,373,16
awkwardpot,373,16
+bunglingpotion,373,22
+bunglingpot,373,22
+bunglingextendedpotion,373,23
+bunglingexpotion,373,23
+bungling2potion,373,23
+bunglingextendedpot,373,23
+bunglingexpot,373,23
+bungling2pot,373,23
+smoothpotion,373,27
+smoothpot,373,27
+suavepotion,373,29
+suavepot,373,29
+debonairpotion,373,30
+debonairpot,373,30
+debonairextendedpotion,373,31
+debonairexpotion,373,31
+debonair2potion,373,31
+debonairextendedpot,373,31
+debonairexpot,373,31
+debonair2pot,373,31
thickpotion,373,32
thickpot,373,32
-mundaneexpotion,373,64
+charmingpotion,373,38
+charmingpot,373,38
+charmingextendedpotion,373,39
+charmingexpotion,373,39
+charming2potion,373,39
+charmingextendedpot,373,39
+charmingexpot,373,39
+charming2pot,373,39
+refinedpotion,373,43
+refinedpot,373,43
+cordialpotion,373,45
+cordialpot,373,45
+sparklingpotion,373,46
+sparklingpot,373,46
+sparklingextendedpotion,373,47
+sparklingexpotion,373,47
+sparkling2potion,373,47
+sparklingextendedpot,373,47
+sparklingexpot,373,47
+sparkling2pot,373,47
+potentpotion,373,48
+potentpot,373,48
+rankpotion,373,54
+rankpot,373,54
+rankextendedpotion,373,55
+rankexpotion,373,55
+rank2potion,373,55
+rankextendedpot,373,55
+rankexpot,373,55
+rank2pot,373,55
+acridpotion,373,59
+acridpot,373,59
+grosspotion,373,61
+grosspot,373,61
+stinkypotion,373,62
+stinkypot,373,62
+stinkyextendedpotion,373,63
+stinkyexpotion,373,63
+stinky2potion,373,63
+stinkyextendedpot,373,63
+stinkyexpot,373,63
+stinky2pot,373,63
mundaneextendedpotion,373,64
-mundaneexpot,373,64
+mundaneexpotion,373,64
+mundane2potion,373,64
mundaneextendedpot,373,64
+mundaneexpot,373,64
+mundane2pot,373,64
mundanepotion,373,8192
mundanepot,373,8192
regenerationpotion,373,8193
@@ -3964,8 +4051,10 @@ regenpot,373,8193
rpot,373,8193
swiftnesspotion,373,8194
swiftpotion,373,8194
+speedpotion,373,8194
swiftnesspot,373,8194
swiftpot,373,8194
+speedpot,373,8194
swpot,373,8194
fireresistancepotion,373,8195
fireresistpotion,373,8195
@@ -3997,7 +4086,7 @@ strpotion,373,8201
strengthpot,373,8201
strongpot,373,8201
strpot,373,8201
-spot,373,8201
+stpot,373,8201
slownesspotion,373,8202
slowpotion,373,8202
slownesspot,373,8202
@@ -4031,16 +4120,22 @@ regeniipot,373,8225
r2pot,373,8225
swiftnessleveliipotion,373,8226
swiftleveliipotion,373,8226
+speedleveliipotion,373,8226
swiftnesslevel2potion,373,8226
swiftlevel2potion,373,8226
+speedlevel2potion,373,8226
swiftnessiipotion,373,8226
swiftiipotion,373,8226
+speediipotion,373,8226
swiftnessleveliipot,373,8226
swiftleveliipot,373,8226
+speedleveliipot,373,8226
swiftnesslevel2pot,373,8226
swiftlevel2pot,373,8226
+speedlevel2pot,373,8226
swiftnessiipot,373,8226
swiftiipot,373,8226
+speediipot,373,8226
sw2pot,373,8226
posionleveliipotion,373,8228
acidleveliipotion,373,8228
@@ -4086,7 +4181,7 @@ strlevel2pot,373,8233
strengthiipot,373,8233
strongiipot,373,8233
striipot,373,8233
-s2pot,373,8233
+st2pot,373,8233
harmingleveliipotion,373,8236
damageleveliipotion,373,8236
dmgleveliipotion,373,8236
@@ -4121,12 +4216,16 @@ regenexpot,373,8257
repot,373,8257
swiftnessextendedpotion,373,8258
swiftextendedpotion,373,8258
+speedextendedpotion,373,8258
swiftnessexpotion,373,8258
swiftexpotion,373,8258
+speedexpotion,373,8258
swiftnessextendedpot,373,8258
swiftextendedpot,373,8258
+speedextendedpot,373,8258
swiftnessexpot,373,8258
swiftexpot,373,8258
+speedexpot,373,8258
swepot,373,8258
fireresistanceextendedpotion,373,8259
fireresistextendedpotion,373,8259
@@ -4171,7 +4270,7 @@ strextendedpot,373,8265
strengthexpot,373,8265
strongexpot,373,8265
strexpot,373,8265
-sepot,373,8265
+stepot,373,8265
slownessextendedpotion,373,8266
slowextenedpotion,373,8266
slownessexpotion,373,8266
@@ -4184,19 +4283,37 @@ slepot,373,8266
regenerationdualbitpotion,373,8289
regeneratedualbitpotion,373,8289
regendualbitpotion,373,8289
+regenerationdbpotion,373,8289
+regeneratedbpotion,373,8289
+regendbpotion,373,8289
regenerationdualbitpot,373,8289
regeneratedualbitpot,373,8289
regendualbitpot,373,8289
+regenerationdbpot,373,8289
+regeneratedbpot,373,8289
+regendbpot,373,8289
rdbpot,373,8289
swiftnessdualbitpotion,373,8290
swiftdualbitpotion,373,8290
+speeddualbitpotion,373,8290
swiftnessdualbitpot,373,8290
swiftdualbitpot,373,8290
+speeddualbitpot,373,8290
+swiftnessdbpotion,373,8290
+swiftdbpotion,373,8290
+speeddbpotion,373,8290
+swiftnessdbpot,373,8290
+swiftdbpot,373,8290
+speeddbpot,373,8290
swdbpot,373,8290
poisondualbitpotion,373,8292
aciddualbitpotion,373,8292
poisondualbitpot,373,8292
aciddualbitpot,373,8292
+poisondbpotion,373,8292
+aciddbpotion,373,8292
+poisondbpot,373,8292
+aciddbpot,373,8292
pdbpot,373,8292
strengthdualbitpotion,373,8297
strongdualbitpotion,373,8297
@@ -4204,7 +4321,13 @@ strdualbitpotion,373,8297
strengthdualbitpot,373,8297
strongdualbitpot,373,8297
strdualbitpot,373,8297
-sdbpot,373,8297
+strengthdbpotion,373,8297
+strongdbpotion,373,8297
+strdbpotion,373,8297
+strengthdbpot,373,8297
+strongdbpot,373,8297
+strdbpot,373,8297
+stdbpot,373,8297
splashmundanepotion,373,16384
splmundanepotion,373,16384
splashregenerationpotion,373,16385
@@ -4225,12 +4348,16 @@ splregenpot,373,16385
sprpot,373,16385
splashswiftnesspotion,373,16386
splashswiftpotion,373,16386
+splashspeedpotion,373,16386
splashswiftnesspot,373,16386
splashswiftpot,373,16386
+splashspeedpot,373,16386
splswiftnesspotion,373,16386
splswiftpotion,373,16386
+splspeedpotion,373,16386
splswiftnesspot,373,16386
splswiftpot,373,16386
+splspeedpot,373,16386
spswpot,373,16386
splashfireresistancepotion,373,16387
splashfireresistpotion,373,16387
@@ -4267,6 +4394,22 @@ splhealingpot,373,16389
splhealpot,373,16389
spllifepot,373,16389
sphpot,373,16389
+splashclearpotion,373,16390
+splashclearpot,373,16390
+splclearpotion,373,16390
+splclearpot,373,16390
+splashclearextendedpotion,373,16391
+splashclearexpotion,373,16391
+splashclear2potion,373,16391
+splashclearextendedpot,373,16391
+splashclearexpot,373,16391
+splashclear2pot,373,16391
+splclearextendedpotion,373,16391
+splclearexpotion,373,16391
+splclear2potion,373,16391
+splclearextendedpot,373,16391
+splclearexpot,373,16391
+splclear2pot,373,16391
splashweaknesspotion,373,16392
splashweakpotion,373,16392
splashweaknesspot,373,16392
@@ -4288,7 +4431,7 @@ splstrpotion,373,16393
splstrengthpot,373,16393
splstrongpot,373,16393
splstrpot,373,16393
-spspot,373,16393
+spstpot,373,16393
splashslownesspotion,373,16394
splashslowpotion,373,16394
splashslownesspot,373,16394
@@ -4298,13 +4441,16 @@ splslowpotion,373,16394
splslownesspot,373,16394
splslowpot,373,16394
spslpot,373,16394
+splashdiffusepotion,373,16395
+splashdiffusepot,373,16395
+spldiffusepotion,373,16395
+spldiffusepot,373,16395
splashharmingpotion,373,16396
splashdamagepotion,373,16396
splashdmgpotion,373,16396
splashharmingpot,373,16396
splashdamagepot,373,16396
splashdmgpot,373,16396
-dmgsplashpot,373,16396
splharmingpotion,373,16396
spldamagepotion,373,16396
spldmgpotion,373,16396
@@ -4312,6 +4458,74 @@ splharmingpot,373,16396
spldamagepot,373,16396
spldmgpot,373,16396
spdpot,373,16396
+splashartlesspotion,373,16397
+splashartlesspot,373,16397
+splartlesspotion,373,16397
+splartlesspot,373,16397
+splashthinpotion,373,16398
+splashthinpot,373,16398
+splthinpotion,373,16398
+splthinpot,373,16398
+splashthinextendedpotion,373,16399
+splashthinexpotion,373,16399
+splashthin2potion,373,16399
+splashthinextendedpot,373,16399
+splashthinexpot,373,16399
+splashthin2pot,373,16399
+splthinextendedpotion,373,16399
+splthinexpotion,373,16399
+splthin2potion,373,16399
+splthinextendedpot,373,16399
+splthinexpot,373,16399
+splthin2pot,373,16399
+splashawkwardpotion,373,16400
+splashawkwardpot,373,16400
+splawkwardpotion,373,16400
+splawkwardpot,373,16400
+splashbunglingpotion,373,16406
+splashbunglingpot,373,16406
+splbunglingpotion,373,16406
+splbunglingpot,373,16406
+splashbunglingextendedpotion,373,16407
+splashbunglingexpotion,373,16407
+splashbungling2potion,373,16407
+splashbunglingextendedpot,373,16407
+splashbunglingexpot,373,16407
+splashbungling2pot,373,16407
+splbunglingextendedpotion,373,16407
+splbunglingexpotion,373,16407
+splbungling2potion,373,16407
+splbunglingextendedpot,373,16407
+splbunglingexpot,373,16407
+splbungling2pot,373,16407
+splashsmoothpotion,373,16411
+splashsmoothpot,373,16411
+splsmoothpotion,373,16411
+splsmoothpot,373,16411
+splashsuavepotion,373,16413
+splashsuavepot,373,16413
+splsuavepotion,373,16413
+splsuavepot,373,16413
+splashdebonairpotion,373,16414
+splashdebonairpot,373,16414
+spldebonairpotion,373,16414
+spldebonairpot,373,16414
+splashdebonairextendedpotion,373,16415
+splashdebonairexpotion,373,16415
+splashdebonair2potion,373,16415
+splashdebonairextendedpot,373,16415
+splashdebonairexpot,373,16415
+splashdebonair2pot,373,16415
+spldebonairextendedpotion,373,16415
+spldebonairexpotion,373,16415
+spldebonair2potion,373,16415
+spldebonairextendedpot,373,16415
+spldebonairexpot,373,16415
+spldebonair2pot,373,16415
+splashthickpotion,373,16416
+splashthickpot,373,16416
+splthickpotion,373,16416
+splthickpot,373,16416
splashregenerationleveliipotion,373,16417
splashregenerateleveliipotion,373,16417
splashregenleveliipotion,373,16417
@@ -4351,28 +4565,40 @@ splregeniipot,373,16417
spr2pot,373,16417
splashswiftnessleveliipotion,373,16418
splashswiftleveliipotion,373,16418
+splashspeedleveliipotion,373,16418
splashswiftnesslevel2potion,373,16418
splashswiftlevel2potion,373,16418
+splashspeedlevel2potion,373,16418
splashswiftnessiipotion,373,16418
splashswiftiipotion,373,16418
+splashspeediipotion,373,16418
splashswiftnessleveliipot,373,16418
splashswiftleveliipot,373,16418
+splashspeedleveliipot,373,16418
splashswiftnesslevel2pot,373,16418
splashswiftlevel2pot,373,16418
+splashspeedlevel2pot,373,16418
splashswiftnessiipot,373,16418
splashswiftiipot,373,16418
+splashspeediipot,373,16418
splswiftnessleveliipotion,373,16418
splswiftleveliipotion,373,16418
+splspeedleveliipotion,373,16418
splswiftnesslevel2potion,373,16418
splswiftlevel2potion,373,16418
+splspeedlevel2potion,373,16418
splswiftnessiipotion,373,16418
splswiftiipotion,373,16418
+splspeediipotion,373,16418
splswiftnessleveliipot,373,16418
splswiftleveliipot,373,16418
+splspeedleveliipot,373,16418
splswiftnesslevel2pot,373,16418
splswiftlevel2pot,373,16418
+splspeedlevel2pot,373,16418
splswiftnessiipot,373,16418
splswiftiipot,373,16418
+splspeediipot,373,16418
spsw2pot,373,16418
splashposionleveliipotion,373,16420
splashacidleveliipotion,373,16420
@@ -4424,6 +4650,22 @@ splheallevel2pot,373,16421
splhealingiipot,373,16421
splhealiipot,373,16421
sph2pot,373,16421
+splashcharmingpotion,373,16422
+splashcharmingpot,373,16422
+splcharmingpotion,373,16422
+splcharmingpot,373,16422
+splashcharmingextendedpotion,373,16423
+splashcharmingexpotion,373,16423
+splashcharming2potion,373,16423
+splashcharmingextendedpot,373,16423
+splashcharmingexpot,373,16423
+splashcharming2pot,373,16423
+splcharmingextendedpotion,373,16423
+splcharmingexpotion,373,16423
+splcharming2potion,373,16423
+splcharmingextendedpot,373,16423
+splcharmingexpot,373,16423
+splcharming2pot,373,16423
splashstrengthleveliipotion,373,16425
splashstrongleveliipotion,373,16425
splashstrleveliipotion,373,16425
@@ -4460,7 +4702,11 @@ splstrlevel2pot,373,16425
splstrengthiipot,373,16425
splstrongiipot,373,16425
splstriipot,373,16425
-sps2pot,373,16425
+spst2pot,373,16425
+splashrefinedpotion,373,16427
+splashrefinedpot,373,16427
+splrefinedpotion,373,16427
+splrefinedpot,373,16427
splashharmingleveliipotion,373,16428
splashdamageleveliipotion,373,16428
splashdmgleveliipotion,373,16428
@@ -4498,6 +4744,82 @@ splharmingiipot,373,16428
spldamageiipot,373,16428
spldmgiipot,373,16428
spd2pot,373,16428
+splashcordialpotion,373,16429
+splashcordialpot,373,16429
+splcordialpotion,373,16429
+splcordialpot,373,16429
+splashsparklingpotion,373,16430
+splashsparklingpot,373,16430
+splsparklingpotion,373,16430
+splsparklingpot,373,16430
+splashsparklingextendedpotion,373,16431
+splashsparklingexpotion,373,16431
+splashsparkling2potion,373,16431
+splashsparklingextendedpot,373,16431
+splashsparklingexpot,373,16431
+splashsparkling2pot,373,16431
+splsparklingextendedpotion,373,16431
+splsparklingexpotion,373,16431
+splsparkling2potion,373,16431
+splsparklingextendedpot,373,16431
+splsparklingexpot,373,16431
+splsparkling2pot,373,16431
+splashpotentpotion,373,16432
+splashpotentpot,373,16432
+splpotentpotion,373,16432
+splpotentpot,373,16432
+splashrankpotion,373,16438
+splashrankpot,373,16438
+splrankpotion,373,16438
+splrankpot,373,16438
+splashrankextendedpotion,373,16439
+splashrankexpotion,373,16439
+splashrank2potion,373,16439
+splashrankextendedpot,373,16439
+splashrankexpot,373,16439
+splashrank2pot,373,16439
+splrankextendedpotion,373,16439
+splrankexpotion,373,16439
+splrank2potion,373,16439
+splrankextendedpot,373,16439
+splrankexpot,373,16439
+splrank2pot,373,16439
+splashacridpotion,373,16443
+splashacridpot,373,16443
+splacridpotion,373,16443
+splacridpot,373,16443
+splashgrosspotion,373,16445
+splashgrosspot,373,16445
+splgrosspotion,373,16445
+splgrosspot,373,16445
+splashstinkypotion,373,16446
+splashstinkypot,373,16446
+splstinkypotion,373,16446
+splstinkypot,373,16446
+splashstinkyextendedpotion,373,16447
+splashstinkyexpotion,373,16447
+splashstinky2potion,373,16447
+splashstinkyextendedpot,373,16447
+splashstinkyexpot,373,16447
+splashstinky2pot,373,16447
+splstinkyextendedpotion,373,16447
+splstinkyexpotion,373,16447
+splstinky2potion,373,16447
+splstinkyextendedpot,373,16447
+splstinkyexpot,373,16447
+splstinky2pot,373,16447
+splashmundaneextendedpotion,373,16448
+splashmundaneexpotion,373,16448
+splashmundane2potion,373,16448
+splashmundaneextendedpot,373,16448
+splashmundaneexpot,373,16448
+splashmundane2pot,373,16448
+splmundaneextendedpotion,373,16448
+splmundaneexpotion,373,16448
+splmundane2potion,373,16448
+splmundaneextendedpot,373,16448
+splmundaneexpot,373,16448
+splmundane2pot,373,16448
splashregenerationextendedpotion,373,16449
splashregenerateextendedpotion,373,16449
splashregenextendepotion,373,16449
@@ -4525,20 +4847,28 @@ splregenexpot,373,16449
sprepot,373,16449
splashswiftnessextendedpotion,373,16450
splashswiftextendedpotion,373,16450
+splashspeedextendedpotion,373,16450
splashswiftnessexpotion,373,16450
splashswiftexpotion,373,16450
+splashspeedexpotion,373,16450
splashswiftnessextendedpot,373,16450
splashswiftextendedpot,373,16450
+splashspeedextendedpot,373,16450
splashswiftnessexpot,373,16450
splashswiftexpot,373,16450
+splashspeedexpot,373,16450
splswiftnessextendedpotion,373,16450
splswiftextendedpotion,373,16450
+splspeedextendedpotion,373,16450
splswiftnessexpotion,373,16450
splswiftexpotion,373,16450
+splspeedexpotion,373,16450
splswiftnessextendedpot,373,16450
splswiftextendedpot,373,16450
+splspeedextendedpot,373,16450
splswiftnessexpot,373,16450
splswiftexpot,373,16450
+splspeedexpot,373,16450
spswepot,373,16450
splashfireresistanceextendedpotion,373,16451
splashfireresistextendedpotion,373,16451
@@ -4623,7 +4953,7 @@ splstrextendedpot,373,16457
splstrengthexpot,373,16457
splstrongexpot,373,16457
splstrexpot,373,16457
-spsepot,373,16457
+spstepot,373,16457
splashslownessextendedpotion,373,16458
splashslowextenedpotion,373,16458
splashslownessexpotion,373,16458
@@ -4653,15 +4983,43 @@ splregendualbitpotion,373,16481
splregenerationdualbitpot,373,16481
splregeneratedualbitpot,373,16481
splregendualbitpot,373,16481
+splashregenerationdbpotion,373,16481
+splashregeneratedbpotion,373,16481
+splashregendbpotion,373,16481
+splashregenerationdbpot,373,16481
+splashregeneratedbpot,373,16481
+splashregendbpot,373,16481
+splregenerationdbpotion,373,16481
+splregeneratedbpotion,373,16481
+splregendbpotion,373,16481
+splregenerationdbpot,373,16481
+splregeneratedbpot,373,16481
+splregendbpot,373,16481
sprdbpot,373,16481
splashswiftnessdualbitpotion,373,16482
splashswiftdualbitpotion,373,16482
+splashspeeddualbitpotion,373,16482
splashswiftnessdualbitpot,373,16482
splashswiftdualbitpot,373,16482
+splashspeeddualbitpot,373,16482
splswiftnessdualbitpotion,373,16482
splswiftdualbitpotion,373,16482
+splspeeddualbitpotion,373,16482
splswiftnessdualbitpot,373,16482
splswiftdualbitpot,373,16482
+splspeeddualbitpot,373,16482
+splashswiftnessdbpotion,373,16482
+splashswiftdbpotion,373,16482
+splashspeeddbpotion,373,16482
+splashswiftnessdbpot,373,16482
+splashswiftdbpot,373,16482
+splashspeeddbpot,373,16482
+splswiftnessdbpotion,373,16482
+splswiftdbpotion,373,16482
+splspeeddbpotion,373,16482
+splswiftnessdbpot,373,16482
+splswiftdbpot,373,16482
+splspeeddbpot,373,16482
spswdbpot,373,16482
splashpoisondualbitpotion,373,16484
splashaciddualbitpotion,373,16484
@@ -4671,6 +5029,14 @@ splpoisondualbitpotion,373,16484
splaciddualbitpotion,373,16484
splpoisondualbitpot,373,16484
splaciddualbitpot,373,16484
+splashpoisondbpotion,373,16484
+splashaciddbpotion,373,16484
+splashpoisondbpot,373,16484
+splashaciddbpot,373,16484
+splpoisondbpotion,373,16484
+splaciddbpotion,373,16484
+splpoisondbpot,373,16484
+splaciddbpot,373,16484
sppdbpot,373,16484
splashstrengthdualbitpotion,373,16489
splashstrongdualbitpotion,373,16489
@@ -4684,7 +5050,19 @@ splstrdualbitpotion,373,16489
splstrengthdualbitpot,373,16489
splstrongdualbitpot,373,16489
splstrdualbitpot,373,16489
-spsdbpot,373,16489
+splashstrengthdbpotion,373,16489
+splashstrongdbpotion,373,16489
+splashstrdbpotion,373,16489
+splashstrengthdbpot,373,16489
+splashstrongdbpot,373,16489
+splashstrdbpot,373,16489
+splstrengthdbpotion,373,16489
+splstrongdbpotion,373,16489
+splstrdbpotion,373,16489
+splstrengthdbpot,373,16489
+splstrongdbpot,373,16489
+splstrdbpot,373,16489
+spstdbpot,373,16489
glassbottle,374,0
bottle,374,0
gbottle,374,0
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index f46a42314..4852f2bef 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -28,7 +28,7 @@ banIpAddress=\u00a76Banned IP address
bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt.
bigTreeSuccess= \u00a76Big tree spawned.
blockList=\u00a76Essentials relayed the following commands to another plugin:
-broadcast=\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
+broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
buildAlert=\u00a74You are not permitted to build
bukkitFormatChanged=Bukkit version format changed. Version not checked.
burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76.
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a74You have nobody to whom you can reply.
freedMemory=Freed {0} MB.
gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for {1}\u00a76.
-gcchunks= chunks,
-gcentities= entities
gcfree=\u00a76Free memory:\u00a7c {0} MB
gcmax=\u00a76Maximum memory:\u00a7c {0} MB
gctotal=\u00a76Allocated memory:\u00a7c {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_cs.properties b/Essentials/src/messages_cs.properties
index 9c05f7aba..26e039001 100644
--- a/Essentials/src/messages_cs.properties
+++ b/Essentials/src/messages_cs.properties
@@ -108,8 +108,6 @@ flying=flying
foreverAlone=\u00a7cNemas komu odepsat.
freedMemory=Uvolneno {0} MB.
gameMode=\u00a77Nastavil jsi herni mod z {0} na {1}.
-gcchunks= chunky,
-gcentities= entity
gcfree=Volna pamet: {0} MB
gcmax=Dostupna pamet: {0} MB
gctotal=Vyuzita pamet: {0} MB
@@ -459,3 +457,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties
index 10794e3ef..9419ad45e 100644
--- a/Essentials/src/messages_da.properties
+++ b/Essentials/src/messages_da.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cDu har ingen til hvem du kan svare.
freedMemory=Frigjorde {0} MB.
gameMode=\u00a77Satte game mode {0} for {1}.
-gcchunks= chunks,
-gcentities= entities
gcfree=Free memory: {0} MB
gcmax=Maximum memory: {0} MB
gctotal=Allocated memory: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties
index 312647887..90e373b33 100644
--- a/Essentials/src/messages_de.properties
+++ b/Essentials/src/messages_de.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cDu hast niemanden, dem du antworten kannst.
freedMemory={0} MB frei gemacht.
gameMode=\u00a77Set game mode {0} for {1}.
-gcchunks= Chunks,
-gcentities= Einheiten
gcfree=Freier Speicher: {0} MB
gcmax=Maximaler Speicher: {0} MB
gctotal=Reservierter Speicher: {0} MB
@@ -232,7 +230,7 @@ nickChanged=Nickname ge\u00e4ndert.
nickDisplayName=\u00a77Du musst \u00a7fchange-displayname\u00a7c in der Essentials-Config aktivieren.
nickInUse=\u00a7cDieser Name wird bereits verwendet.
nickNamesAlpha=\u00a7cNicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten.
-nickNoMore=\u00a7Du hast keinen Nicknamen mehr.
+nickNoMore=\u00a7cDu hast keinen Nicknamen mehr.
nickOthersPermission=\u00a7cDu hast keine Rechte um den Nicknamen von anderen zu \u00e4ndern.
nickSet=\u00a77Dein Nickname ist nun \u00a7c{0}
noAccessCommand=\u00a7cDu hast keinen Zugriff auf diesen Befehl.
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties
index f46a42314..4852f2bef 100644
--- a/Essentials/src/messages_en.properties
+++ b/Essentials/src/messages_en.properties
@@ -28,7 +28,7 @@ banIpAddress=\u00a76Banned IP address
bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt.
bigTreeSuccess= \u00a76Big tree spawned.
blockList=\u00a76Essentials relayed the following commands to another plugin:
-broadcast=\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
+broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
buildAlert=\u00a74You are not permitted to build
bukkitFormatChanged=Bukkit version format changed. Version not checked.
burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76.
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a74You have nobody to whom you can reply.
freedMemory=Freed {0} MB.
gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for {1}\u00a76.
-gcchunks= chunks,
-gcentities= entities
gcfree=\u00a76Free memory:\u00a7c {0} MB
gcmax=\u00a76Maximum memory:\u00a7c {0} MB
gctotal=\u00a76Allocated memory:\u00a7c {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties
index dd0ad7494..b3b098d91 100644
--- a/Essentials/src/messages_es.properties
+++ b/Essentials/src/messages_es.properties
@@ -105,8 +105,6 @@ flying=volando
foreverAlone=\u00a7cNo tienes nadie a quien puedas responder.
freedMemory= {0} MB libres.
gameMode=\u00a77Modo de juego {0} activado para {1}.
-gcchunks= pixeles
-gcentities= entidades
gcfree=Memoria libre: {0} MB
gcmax=Memoria maxima: {0} MB
gctotal=Memoria localizada: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_fi.properties b/Essentials/src/messages_fi.properties
index 9ea0819ce..8dd5343ad 100644
--- a/Essentials/src/messages_fi.properties
+++ b/Essentials/src/messages_fi.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cSinulla ei ole ket\u00e4\u00e4n kenelle vastata.
freedMemory=Vapaata muistia {0} MB.
gameMode=\u00a77Asetit pelimuodon "{0}" pelaajalle {1}.
-gcchunks= chunkkia,
-gcentities= kokonaisuutta
gcfree=Vapaa muisti: {0} MB
gcmax=Maksimi muisti: {0} MB
gctotal=Sallittu muisti: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties
index 3551fad51..7468952a6 100644
--- a/Essentials/src/messages_fr.properties
+++ b/Essentials/src/messages_fr.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cVous n''avez personne \u00e0 qui r\u00e9pondre
freedMemory=A lib\u00e9r\u00e9 {0} Mo.
gameMode=\u00a77Mode de jeu {0} pour {1}.
-gcchunks=portions,
-gcentities=entit\u00e9s
gcfree=M\u00e9moire libre : {0} Mo
gcmax=M\u00e9moire maximale : {0} Mo
gctotal=M\u00e9moire utilis\u00e9e : {0} Mo
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_it.properties b/Essentials/src/messages_it.properties
index b4a6a0d95..91e2e8f27 100644
--- a/Essentials/src/messages_it.properties
+++ b/Essentials/src/messages_it.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cNon c''e'' nessuno a cui rispondere.
freedMemory=Liberati {0} MB.
gameMode=\u00a77Modalita''di gioco {0} impostata per {1}.
-gcchunks= blocchi,
-gcentities= entita''
gcfree=Memoria libera: {0} MB
gcmax=Memoria massima: {0} MB
gctotal=Memoria allocata: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties
index d64fd52f3..62be530f1 100644
--- a/Essentials/src/messages_nl.properties
+++ b/Essentials/src/messages_nl.properties
@@ -105,8 +105,6 @@ flying=vliegen
foreverAlone=\u00a7cJe hebt niemand waarnaar je kan reageren.
freedMemory={0} MB gelost.
gameMode=\u00a77Zet spel modus {0} voor {1}.
-gcchunks= chunks,
-gcentities= entiteiten
gcfree=Vrij geheugen: {0} MB
gcmax=Maximaal geheugen: {0} MB
gctotal=Gealloceerd geheugen: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_pl.properties b/Essentials/src/messages_pl.properties
index 5a98a7ee5..1a1e73d65 100644
--- a/Essentials/src/messages_pl.properties
+++ b/Essentials/src/messages_pl.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cNie masz komu odpisac.
freedMemory=Zwolniono {0} MB.
gameMode=\u00a77Ustawiono tryb gry {0} dla {1}.
-gcchunks= chunki
-gcentities= jednostki
gcfree=Wolna pamiec: {0} MB
gcmax=Maksymalna pamiec: {0} MB
gctotal=Alokowana pamiec: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_pt.properties b/Essentials/src/messages_pt.properties
index 4d5d59b22..11a2c1df0 100644
--- a/Essentials/src/messages_pt.properties
+++ b/Essentials/src/messages_pt.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cVoc\u00ea nao tem ninguem a quem responder.
freedMemory=Livre {0} MB.
gameMode=\u00a77Gamemode {0} definido para {1}.
-gcchunks= chunks,
-gcentities= entidades
gcfree=Memoria livre: {0} MB
gcmax=Mem\u00f3ria Maxima: {0} MB
gctotal=Mem\u00f3ria alocada: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/messages_se.properties b/Essentials/src/messages_se.properties
index 43a181a6c..c7685d6f4 100644
--- a/Essentials/src/messages_se.properties
+++ b/Essentials/src/messages_se.properties
@@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cDu har ingen att svara.
freedMemory=Befriade {0} MB.
gameMode=\u00a77Satte {0}s spell\u00e4ge till {1}.
-gcchunks= bitar,
-gcentities= enheter
gcfree=Ledigt minne: {0} MB
gcmax=Maximalt minne: {0} MB
gctotal=Tilldelat minne: {0} MB
@@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
+antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
+invalidHomeName=\u00a74Invalid home name
diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml
index ce1e8d787..225534a08 100644
--- a/Essentials/src/plugin.yml
+++ b/Essentials/src/plugin.yml
@@ -128,9 +128,9 @@ commands:
usage: /<command> [player]
aliases: [coords,egetpos,position,eposition,whereami,ewhereami]
gc:
- description: Reports garbage collection and tick info; useful to developers.
+ description: Reports memory, uptime and tick info.
usage: /<command>
- aliases: [elag,lag,mem,memory,egc,emem,ememory]
+ aliases: [elag,lag,mem,memory,egc,emem,ememory,uptime,euptime]
give:
description: Give a player an item.
usage: /<command> <player> <item|numeric> [amount <enchantmentname[:level]> ...]
@@ -351,7 +351,7 @@ commands:
usage: /<command> [day|night|dawn|17:30|4pm|4000ticks] [worldname|all]
aliases: [etime, day, night, eday, enight]
togglejail:
- description: Jails/Unjails a player and tp them to the jail specified.
+ description: Jails/Unjails a player, TPs them to the jail specified.
usage: /<command> <player> <jailname> [datediff]
aliases: [tjail,jail,ejail,unjail,eunjail,etogglejail]
top:
@@ -450,3 +450,8 @@ commands:
description: Calculates the worth of items in hand or as specified.
usage: /<command> [item] [amount]
aliases: [eworth,price,eprice]
+
+permissions:
+ essentials.*:
+ default: op
+ description: Give players with op everything by default \ No newline at end of file
diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java
index a877bc47e..d2f46586f 100644
--- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java
+++ b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java
@@ -7,13 +7,17 @@ import java.util.logging.Level;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
+import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.*;
+import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
+import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
@@ -28,7 +32,7 @@ public class EssentialsAntiBuildListener implements Listener
this.ess = prot.getEssentialsConnect().getEssentials();
}
- private boolean metaPermCheck(User user, String action, Block block)
+ private boolean metaPermCheck(final User user, final String action, final Block block)
{
if (block == null)
{
@@ -37,13 +41,13 @@ public class EssentialsAntiBuildListener implements Listener
return metaPermCheck(user, action, block.getTypeId(), block.getData());
}
- private boolean metaPermCheck(User user, String action, int blockId)
+ private boolean metaPermCheck(final User user, final String action, final int blockId)
{
final String blockPerm = "essentials.build." + action + "." + blockId;
return user.isAuthorized(blockPerm);
}
- private boolean metaPermCheck(User user, String action, int blockId, byte data)
+ private boolean metaPermCheck(final User user, final String action, final int blockId, final byte data)
{
final String blockPerm = "essentials.build." + action + "." + blockId;
final String dataPerm = blockPerm + ":" + data;
@@ -137,7 +141,7 @@ public class EssentialsAntiBuildListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public void onPaintingBreak(PaintingBreakByEntityEvent event)
+ public void onPaintingBreak(final PaintingBreakByEntityEvent event)
{
final Entity entity = event.getRemover();
if (entity instanceof Player)
@@ -156,7 +160,7 @@ public class EssentialsAntiBuildListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public void onBlockPistonExtend(BlockPistonExtendEvent event)
+ public void onBlockPistonExtend(final BlockPistonExtendEvent event)
{
for (Block block : event.getBlocks())
{
@@ -169,7 +173,7 @@ public class EssentialsAntiBuildListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public void onBlockPistonRetract(BlockPistonRetractEvent event)
+ public void onBlockPistonRetract(final BlockPistonRetractEvent event)
{
if (!event.isSticky())
{
@@ -230,4 +234,66 @@ public class EssentialsAntiBuildListener implements Listener
}
}
}
+
+ @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
+ public void onCraftItemEvent(final CraftItemEvent event)
+ {
+ HumanEntity entity = event.getWhoClicked();
+
+ if (entity instanceof Player)
+ {
+ final User user = ess.getUser(entity);
+ final ItemStack item = event.getRecipe().getResult();
+
+ if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ {
+ if (!metaPermCheck(user, "craft", item.getTypeId(), item.getData().getData()))
+ {
+ event.setCancelled(true);
+ if (ess.getSettings().warnOnBuildDisallow())
+ {
+ user.sendMessage(_("antiBuildCraft", item.getType().toString()));
+ }
+ }
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
+ public void onPlayerPickupItem(PlayerPickupItemEvent event)
+ {
+
+ final User user = ess.getUser(event.getPlayer());
+ final ItemStack item = event.getItem().getItemStack();
+
+ if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ {
+ if (!metaPermCheck(user, "pickup", item.getTypeId(), item.getData().getData()))
+ {
+ event.setCancelled(true);
+ event.getItem().setPickupDelay(50);
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
+ public void onPlayerDropItem(final PlayerDropItemEvent event)
+ {
+
+ final User user = ess.getUser(event.getPlayer());
+ final ItemStack item = event.getItemDrop().getItemStack();
+
+ if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ {
+ if (!metaPermCheck(user, "drop", item.getTypeId(), item.getData().getData()))
+ {
+ event.setCancelled(true);
+ user.updateInventory();
+ if (ess.getSettings().warnOnBuildDisallow())
+ {
+ user.sendMessage(_("antiBuildDrop", item.getType().toString()));
+ }
+ }
+ }
+ }
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
index bd760b0ec..1791a9c5b 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
@@ -25,14 +25,9 @@ public class EssentialsProtectBlockListener implements Listener
this.ess = prot.getEssentialsConnect().getEssentials();
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(final BlockPlaceEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
-
final User user = ess.getUser(event.getPlayer());
final Block blockPlaced = event.getBlockPlaced();
@@ -79,13 +74,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockIgnite(BlockIgniteEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
final Block block = event.getBlock();
if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
@@ -130,13 +121,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockFromTo(final BlockFromToEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
final Block toBlock = event.getToBlock();
if ((toBlock.getType() == Material.RAILS || toBlock.getType() == Material.POWERED_RAIL || toBlock.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
@@ -171,13 +158,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBurn(final BlockBurnEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
final Block block = event.getBlock();
if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL) && prot.getSettingBool(ProtectConfig.protect_rails))
{
@@ -207,13 +190,9 @@ public class EssentialsProtectBlockListener implements Listener
BlockFace.SELF
};
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(final BlockBreakEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
final User user = ess.getUser(event.getPlayer());
final Block block = event.getBlock();
@@ -290,13 +269,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPistonExtend(BlockPistonExtendEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
for (Block block : event.getBlocks())
{
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
@@ -338,10 +313,10 @@ public class EssentialsProtectBlockListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPistonRetract(BlockPistonRetractEvent event)
{
- if (event.isCancelled() || !event.isSticky())
+ if (!event.isSticky())
{
return;
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
index 7e558eb81..ef556c9bd 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
@@ -26,13 +26,9 @@ public class EssentialsProtectEntityListener implements Listener
this.ess = prot.getEssentialsConnect().getEssentials();
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityDamage(final EntityDamageEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
final Entity target = event.getEntity();
if (target instanceof Villager && prot.getSettingBool(ProtectConfig.prevent_villager_death))
@@ -191,10 +187,10 @@ public class EssentialsProtectEntityListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityExplode(final EntityExplodeEvent event)
{
- if (event.isCancelled() || event.getEntity() == null)
+ if (event.getEntity() == null)
{
return;
}
@@ -263,17 +259,13 @@ public class EssentialsProtectEntityListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onCreatureSpawn(final CreatureSpawnEvent event)
{
if (event.getEntity() instanceof Player)
{
return;
}
- if (event.isCancelled())
- {
- return;
- }
final EntityType creature = event.getEntityType();
if (creature == null)
{
@@ -290,13 +282,9 @@ public class EssentialsProtectEntityListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityTarget(final EntityTargetEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
if (!(event.getTarget() instanceof Player))
{
return;
@@ -316,7 +304,7 @@ public class EssentialsProtectEntityListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onExplosionPrime(ExplosionPrimeEvent event)
{
if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
@@ -326,13 +314,9 @@ public class EssentialsProtectEntityListener implements Listener
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityChangeBlock(EntityChangeBlockEvent event)
{
- if (event.isCancelled())
- {
- return;
- }
if (event.getEntityType() == EntityType.ENDERMAN && prot.getSettingBool(ProtectConfig.prevent_enderman_pickup))
{
event.setCancelled(true);
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java
index 1b8dd19ff..1e5fa6da3 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java
@@ -17,11 +17,10 @@ public class EssentialsProtectWeatherListener implements Listener
this.prot = prot;
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onWeatherChange(final WeatherChangeEvent event)
{
- if (!event.isCancelled()
- && prot.getSettingBool(ProtectConfig.disable_weather_storm)
+ if (prot.getSettingBool(ProtectConfig.disable_weather_storm)
&& event.toWeatherState())
{
event.setCancelled(true);
@@ -29,21 +28,19 @@ public class EssentialsProtectWeatherListener implements Listener
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onLightningStrike(final LightningStrikeEvent event)
{
- if (!event.isCancelled()
- && prot.getSettingBool(ProtectConfig.disable_weather_lightning))
+ if (prot.getSettingBool(ProtectConfig.disable_weather_lightning))
{
event.setCancelled(true);
}
}
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onThunderChange(final ThunderChangeEvent event)
{
- if (!event.isCancelled()
- && prot.getSettingBool(ProtectConfig.disable_weather_thunder)
+ if (prot.getSettingBool(ProtectConfig.disable_weather_thunder)
&& event.toThunderState())
{
event.setCancelled(true);
diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
index 52567de41..0dcf9843a 100644
--- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
+++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
@@ -101,7 +101,11 @@ public class EssentialsSpawnPlayerListener implements Listener
{
final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user, ess);
final SimpleTextPager pager = new SimpleTextPager(output);
- ess.broadcastMessage(user, pager.getString(0));
+
+ for (String line : pager.getLines())
+ {
+ ess.broadcastMessage(user, line);
+ }
}
final String kitName = ess.getSettings().getNewPlayerKit();