summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/ISettings.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java10
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java6
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandessentials.java6
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java44
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandnick.java91
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandunban.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandwarp.java80
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandwhois.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignProtection.java30
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignWarp.java2
-rw-r--r--Essentials/src/messages.properties22
-rw-r--r--Essentials/src/messages_da.properties21
-rw-r--r--Essentials/src/messages_de.properties22
-rw-r--r--Essentials/src/messages_en.properties21
-rw-r--r--Essentials/src/messages_es.properties373
-rw-r--r--Essentials/src/messages_fr.properties21
-rw-r--r--Essentials/src/messages_nl.properties23
-rw-r--r--Essentials/src/plugin.yml34
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java8
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java163
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java146
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java50
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java38
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java76
-rw-r--r--WebPush/index.php11
-rw-r--r--WebPush/upload.php47
28 files changed, 1007 insertions, 353 deletions
diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java
index 7ffa0c138..49a6ebf23 100644
--- a/Essentials/src/com/earth2me/essentials/ISettings.java
+++ b/Essentials/src/com/earth2me/essentials/ISettings.java
@@ -136,4 +136,6 @@ public interface ISettings extends IConf
boolean getFreezeAfkPlayers();
boolean areDeathMessagesEnabled();
+
+ public void setDebug(boolean debug);
}
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index ca076c272..c19314e24 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -378,10 +378,12 @@ public class Settings implements ISettings
return config.getBoolean("protect.disable.warn-on-build-disallow", false);
}
+ private boolean debug = false;
+
@Override
public boolean isDebug()
{
- return config.getBoolean("debug", false);
+ return debug || config.getBoolean("debug", false);
}
@Override
@@ -532,4 +534,10 @@ public class Settings implements ISettings
{
return config.getBoolean("death-messages", true);
}
+
+ @Override
+ public void setDebug(final boolean debug)
+ {
+ this.debug = debug;
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index f0754cdb4..593abccbe 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -285,11 +285,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
public void setDisplayNick(String name)
{
setDisplayName(name);
- //TODO: Maybe we need to limit nick length, or try use a string trim.
- if (name.length() <= 16)
- {
- setPlayerListName(name);
- }
+ setPlayerListName(name.length() > 16 ? name.substring(0, 16) : name);
}
@Override
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java
index 328a4a8b5..a1a66854f 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java
@@ -23,6 +23,12 @@ public class Commandessentials extends EssentialsCommand
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
+ if (args.length > 0 && args[0].equalsIgnoreCase("debug"))
+ {
+ ess.getSettings().setDebug(!ess.getSettings().isDebug());
+ sender.sendMessage("Essentials " + ess.getDescription().getVersion() + " debug mode " + (ess.getSettings().isDebug() ? "enabled" : "disabled"));
+ return;
+ }
final Map<String, Byte> noteMap = new HashMap<String, Byte>();
noteMap.put("1F#", (byte)0x0);
noteMap.put("1G", (byte)0x1);
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java
new file mode 100644
index 000000000..90e9df143
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java
@@ -0,0 +1,44 @@
+package com.earth2me.essentials.commands;
+
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+import org.bukkit.GameMode;
+import org.bukkit.Server;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+
+public class Commandgamemode extends EssentialsCommand
+{
+ public Commandgamemode()
+ {
+ super("gamemode");
+ }
+
+ @Override
+ public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+ {
+ Player player;
+ if (args.length == 0)
+ {
+ if (sender instanceof Player)
+ {
+ player = ess.getUser(sender); }
+ else
+ {
+ throw new NotEnoughArgumentsException();
+ }
+ }
+ else
+ {
+ player = server.getPlayer(args[0]);
+ if (player == null)
+ {
+ throw new Exception(Util.i18n("playerNotFound"));
+ }
+ }
+ player.setGameMode(player.getGameMode() == GameMode.SURVIVAL ? GameMode.CREATIVE : GameMode.SURVIVAL);
+ //TODO: add this to messages?
+ sender.sendMessage(Util.format("gameMode", Util.i18n(player.getGameMode().toString().toLowerCase()), player.getDisplayName()));
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java
index f2165aebc..534547e34 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java
@@ -15,85 +15,51 @@ public class Commandnick extends EssentialsCommand
}
@Override
- public void run(Server server, User user, String commandLabel, String[] args) throws Exception
+ public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
-
- if (!ess.getSettings().changeDisplayName()) {
+ if (!ess.getSettings().changeDisplayName())
+ {
throw new Exception(Util.i18n("nickDisplayName"));
}
-
if (args.length > 1)
{
if (!user.isAuthorized("essentials.nick.others"))
{
throw new Exception(Util.i18n("nickOthersPermission"));
}
-
- setOthersNickname(server, user, args);
- return;
- }
-
-
- String nick = args[0];
- if ("off".equalsIgnoreCase(nick) || user.getName().equalsIgnoreCase(nick))
- {
- user.setDisplayNick(user.getName());
- user.setNickname(null);
- user.sendMessage(Util.i18n("nickNoMore"));
+ setNickname(server, getPlayer(server, args, 0), args[1]);
+ user.sendMessage(Util.i18n("nickChanged"));
return;
}
-
- if (nick.matches("[^a-zA-Z_0-9]"))
- {
- throw new Exception(Util.i18n("nickNamesAlpha"));
- }
-
- for (Player p : server.getOnlinePlayers())
- {
- if (user == p)
- {
- continue;
- }
- String dn = p.getDisplayName().toLowerCase();
- String n = p.getName().toLowerCase();
- String nk = nick.toLowerCase();
- if (nk.equals(dn) || nk.equals(n))
- {
- throw new Exception(Util.i18n("nickInUse"));
- }
- }
-
- user.setDisplayNick(ess.getSettings().getNicknamePrefix() + nick);
- user.setNickname(nick);
- user.sendMessage(Util.format("nickSet", user.getDisplayName() + "§7."));
+ setNickname(server, user, args[0]);
}
@Override
- public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
+ public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 2)
{
throw new NotEnoughArgumentsException();
}
-
- if (!ess.getSettings().changeDisplayName()) {
- sender.sendMessage(Util.i18n("nickDisplayName"));
- return;
+ if (!ess.getSettings().changeDisplayName())
+ {
+ throw new Exception(Util.i18n("nickDisplayName"));
}
-
- setOthersNickname(server, sender, args);
-
+ setNickname(server, getPlayer(server, args, 0), args[1]);
+ sender.sendMessage(Util.i18n("nickChanged"));
}
- private void setOthersNickname(Server server, CommandSender sender, String[] args) throws Exception
+ private void setNickname(final Server server, final User target, final String nick) throws Exception
{
- User target = getPlayer(server, args, 0);
- String nick = args[1];
- if ("off".equalsIgnoreCase(nick) || target.getName().equalsIgnoreCase(nick))
+ if (nick.matches("[^a-zA-Z_0-9]"))
+ {
+ throw new Exception(Util.i18n("nickNamesAlpha"));
+ }
+ else if ("off".equalsIgnoreCase(nick) || target.getName().equalsIgnoreCase(nick))
{
target.setDisplayNick(target.getName());
target.setNickname(null);
@@ -101,10 +67,25 @@ public class Commandnick extends EssentialsCommand
}
else
{
- target.setDisplayNick(ess.getSettings().getNicknamePrefix() + nick);
- target.setNickname(nick);
+ final String formattedNick = nick.replace('&', '\u00a7').replace("\u00a7\u00a7", "&");
+ for (Player p : server.getOnlinePlayers())
+ {
+ if (target.getBase() == p)
+ {
+ continue;
+ }
+ String dn = p.getDisplayName().toLowerCase();
+ String n = p.getName().toLowerCase();
+ String nk = formattedNick.toLowerCase();
+ if (nk.equals(dn) || nk.equals(n))
+ {
+ throw new Exception(Util.i18n("nickInUse"));
+ }
+ }
+
+ target.setDisplayNick(ess.getSettings().getNicknamePrefix() + formattedNick);
+ target.setNickname(formattedNick);
target.sendMessage(Util.format("nickSet", target.getDisplayName() + "§7."));
}
- sender.sendMessage(Util.i18n("nickChanged"));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java
index ca9fee47b..e98a613ff 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java
@@ -18,6 +18,6 @@ public class Commandsuicide extends EssentialsCommand
user.setHealth(0);
user.sendMessage(Util.i18n("suicideMessage"));
ess.broadcastMessage(user,
- Util.format("suicideSuccess",user.getDisplayName()));
+ Util.format("suicideSuccess", user.getDisplayName()));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandunban.java b/Essentials/src/com/earth2me/essentials/commands/Commandunban.java
index 4877c2aeb..c36fde0e7 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandunban.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandunban.java
@@ -20,7 +20,7 @@ public class Commandunban extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
-
+
try
{
final User u = getPlayer(server, args, 0, true);
@@ -29,7 +29,7 @@ public class Commandunban extends EssentialsCommand
}
catch (NoSuchFieldException e)
{
- sender.sendMessage(Util.i18n("playerNotFound"));
+ throw new Exception(Util.i18n("playerNotFound"));
}
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java
index 36d1d0df0..accbca4b0 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java
@@ -8,6 +8,7 @@ import com.earth2me.essentials.Warps;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import org.bukkit.command.CommandSender;
public class Commandwarp extends EssentialsCommand
@@ -28,33 +29,7 @@ public class Commandwarp extends EssentialsCommand
{
throw new Exception(Util.i18n("warpListPermission"));
}
-
- Warps warps = ess.getWarps();
- if (warps.isEmpty())
- {
- throw new Exception(Util.i18n("noWarpsDefined"));
- }
- final List<String> warpNameList = new ArrayList<String>(warps.getWarpNames());
- final Iterator<String> iterator = warpNameList.iterator();
- while (iterator.hasNext())
- {
- final String warpName = iterator.next();
- if (ess.getSettings().getPerWarpPermission() && !user.isAuthorized("essentials.warp." + warpName))
- {
- iterator.remove();
- }
- }
- int page = 1;
- if (args.length > 0)
- {
- page = Integer.parseInt(args[0]);
- }
- if (warpNameList.size() > WARPS_PER_PAGE)
- {
- user.sendMessage(Util.format("warpsCount", warpNameList.size(), page, (int)Math.ceil(warpNameList.size() / (double)WARPS_PER_PAGE)));
- }
- final int warpPage = (page - 1) * WARPS_PER_PAGE;
- user.sendMessage(Util.joinList(warpNameList.subList(warpPage, warpPage+Math.min(warpNameList.size() - warpPage, WARPS_PER_PAGE))));
+ warpList(user, args);
throw new NoChargeException();
}
if (args.length > 0)
@@ -75,6 +50,57 @@ public class Commandwarp extends EssentialsCommand
}
}
+ public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
+ {
+ if (args.length < 2 || args[0].matches("[0-9]+"))
+ {
+ warpList(null, args);
+ throw new NoChargeException();
+ }
+ User otherUser = ess.getUser(server.getPlayer(args[1]));
+ if (otherUser == null)
+ {
+ throw new Exception(Util.i18n("playerNotFound"));
+ }
+ warpUser(otherUser, args[0]);
+ throw new NoChargeException();
+
+ }
+
+ private void warpList(User user, String[] args) throws Exception
+ {
+ Warps warps = ess.getWarps();
+ if (warps.isEmpty())
+ {
+ throw new Exception(Util.i18n("noWarpsDefined"));
+ }
+ final List<String> warpNameList = new ArrayList<String>(warps.getWarpNames());
+
+ if (user != null)
+ {
+ final Iterator<String> iterator = warpNameList.iterator();
+ while (iterator.hasNext())
+ {
+ final String warpName = iterator.next();
+ if (ess.getSettings().getPerWarpPermission() && !user.isAuthorized("essentials.warp." + warpName))
+ {
+ iterator.remove();
+ }
+ }
+ }
+ int page = 1;
+ if (args.length > 0)
+ {
+ page = Integer.parseInt(args[0]);
+ }
+ if (warpNameList.size() > WARPS_PER_PAGE)
+ {
+ user.sendMessage(Util.format("warpsCount", warpNameList.size(), page, (int)Math.ceil(warpNameList.size() / (double)WARPS_PER_PAGE)));
+ }
+ final int warpPage = (page - 1) * WARPS_PER_PAGE;
+ user.sendMessage(Util.joinList(warpNameList.subList(warpPage, warpPage + Math.min(warpNameList.size() - warpPage, WARPS_PER_PAGE))));
+ }
+
private void warpUser(User user, String name) throws Exception
{
Trade charge = new Trade(this.getName(), ess);
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java
index 1769202f5..164ddbcdc 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java
@@ -53,17 +53,18 @@ public class Commandwhois extends EssentialsCommand
sender.sendMessage("");
sender.sendMessage(Util.format("whoisIs", u.getDisplayName(), u.getName()));
sender.sendMessage(Util.format("whoisHealth", u.getHealth()));
+ sender.sendMessage(Util.format("whoisGamemode", Util.i18n(u.getGameMode().toString().toLowerCase())));
sender.sendMessage(Util.format("whoisLocation", u.getLocation().getWorld().getName(), u.getLocation().getBlockX(), u.getLocation().getBlockY(), u.getLocation().getBlockZ()));
if (!ess.getSettings().isEcoDisabled())
{
sender.sendMessage(Util.format("whoisMoney", Util.formatCurrency(u.getMoney(), ess)));
}
- sender.sendMessage(u.isAfk()
- ? Util.i18n("whoisStatusAway")
+ sender.sendMessage(u.isAfk()
+ ? Util.i18n("whoisStatusAway")
: Util.i18n("whoisStatusAvailable"));
sender.sendMessage(Util.format("whoisIPAddress", u.getAddress().getAddress().toString()));
final String location = u.getGeoLocation();
- if (location != null
+ if (location != null
&& (sender instanceof Player ? ess.getUser(sender).isAuthorized("essentials.geoip.show") : true))
{
sender.sendMessage(Util.format("whoisGeoLocation", location));
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java
index 157535cd9..ced8443a6 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java
@@ -35,10 +35,15 @@ public class SignProtection extends EssentialsSign
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
{
sign.setLine(3, "§4" + username);
- if (hasAdjacentBlock(sign.getBlock()) && isBlockProtected(sign.getBlock(), player, username, true) != SignProtectionState.NOT_ALLOWED)
+ if (hasAdjacentBlock(sign.getBlock()))
{
- sign.setLine(3, "§1" + username);
- return true;
+ final SignProtectionState state = isBlockProtected(sign.getBlock(), player, username, true);
+ if (state == SignProtectionState.NOSIGN || state == SignProtectionState.OWNER
+ || player.isAuthorized("essentials.signs.protection.override"))
+ {
+ sign.setLine(3, "§1" + username);
+ return true;
+ }
}
player.sendMessage(Util.i18n("signProtectInvalidLocation"));
return false;
@@ -183,11 +188,6 @@ public class SignProtection extends EssentialsSign
SignProtectionState retstate = SignProtectionState.NOSIGN;
for (SignProtectionState state : signs.values())
{
-
- if (state == SignProtectionState.OWNER)
- {
- return state;
- }
if (state == SignProtectionState.ALLOWED)
{
retstate = state;
@@ -197,6 +197,16 @@ public class SignProtection extends EssentialsSign
retstate = state;
}
}
+ if (!secure || retstate == SignProtectionState.NOSIGN)
+ {
+ for (SignProtectionState state : signs.values())
+ {
+ if (state == SignProtectionState.OWNER)
+ {
+ return state;
+ }
+ }
+ }
return retstate;
}
@@ -300,7 +310,7 @@ public class SignProtection extends EssentialsSign
player.sendMessage(Util.format("noDestroyPermission", block.getType().toString().toLowerCase()));
return false;
}
-
+
@Override
public boolean onBlockBreak(final Block block, final IEssentials ess)
{
@@ -324,7 +334,7 @@ public class SignProtection extends EssentialsSign
return state == SignProtectionState.NOSIGN;
}
-
+
@Override
public boolean onBlockIgnite(final Block block, final IEssentials ess)
{
diff --git a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
index 244450d8a..4aa4af11f 100644
--- a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
+++ b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java
@@ -35,7 +35,7 @@ public class SignWarp extends EssentialsSign
throw new SignException(ex.getMessage(), ex);
}
final String group = sign.getLine(2);
- if ("Everyone".equalsIgnoreCase(group))
+ if ("Everyone".equalsIgnoreCase(group) || "Everybody".equalsIgnoreCase(group))
{
sign.setLine(2, "§2Everyone");
}
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index ef149d68c..a01247e05 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -33,18 +33,19 @@ cantFindGeoIpDB = Can''t find GeoIP database!
cantReadGeoIpDB = Failed to read GeoIP database!
cantSpawnItem = \u00a7cYou are not allowed to spawn the item {0}
commandFailed = Command {0} failed:
-commandHelpFailedForPlugin = Error getting help for: {0}
+commandHelpFailedForPlugin = Error getting help for: {0}
commandNotLoaded = \u00a7cCommand {0} is improperly loaded.
compassBearing = \u00a77Bearing: {0} ({1} degrees).
configFileMoveError = Failed to move config.yml to backup location.
configFileRenameError = Failed to rename temp file to config.yml
-connectedPlayers = Connected players:
+connectedPlayers = Connected players:
connectionFailed = Failed to open connection.
cooldownWithMessage = \u00a7cCooldown: {0}
corruptNodeInConfig = \u00a74Notice: Your configuration file has a corrupt {0} node.
couldNotFindTemplate = Could not find template {0}
creatingConfigFromTemplate = Creating config from template: {0}
creatingEmptyConfig = Creating empty config: {0}
+creative=creative
day = day
days = days
defaultBanReason = The Ban Hammer has spoken!
@@ -78,6 +79,7 @@ failedToWriteConfig = Failed to write config {0}
fileRenameError = Renaming file {0} failed
foreverAlone = \u00a7cYou have nobody to whom you can reply.
freedMemory = Freed {0} MB.
+gameMode = \u00a77Set game mode {0} for {1}.
gcchunks = chunks,
gcentities = entities
gcfree = Free memory: {0} MB
@@ -103,8 +105,8 @@ hour = hour
hours = hours
ignorePlayer = You ignore player {0} from now on.
illegalDate = Illegal date format.
-infoChapter = Select chapter:
-infoChapterPages = Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f:
+infoChapter = Select chapter:
+infoChapterPages = Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f:
infoFileDoesNotExist = File info.txt does not exist. Creating one for you.
infoPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
infoUnknownChapter = Unknown chapter.
@@ -166,10 +168,10 @@ minute = minute
minutes = minutes
missingItems = You do not have {0}x {1}.
missingPrefixSuffix = Missing a prefix or suffix for {0}
-mobsAvailable = \u00a77Mobs: {0}
mobSpawnError = Error while changing mob spawner.
mobSpawnLimit = Mob quantity limited to server limit
mobSpawnTarget = Target block must be a mob spawner.
+mobsAvailable = \u00a77Mobs: {0}
moneyRecievedFrom = \u00a7a{0} has been received from {1}
moneySentTo = \u00a7a{0} has been sent to {1}
moneyTaken = {0} taken from your bank account.
@@ -189,7 +191,7 @@ nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
nickNoMore = \u00a77You no longer have a nickname.
nickOthersPermission = \u00a7cYou do not have permission to change the nickname of others
-nickSet = \u00a77Your nickname is now \u00a7c{0}
+nickSet = \u00a77Your nickname is now \u00a7c{0}
noAccessCommand = \u00a7cYou do not have access to that command.
noAccessPermission = \u00a7cYou do not have permission to access that {0}.
noDestroyPermission = \u00a7cYou do not have permission to destroy that {0}.
@@ -203,8 +205,8 @@ noMailSendPerm = \u00a7cYou do not have the \u00a7fessentials.mail.send\u00a7c p
noMotd = \u00a7cThere is no message of the day.
noNewMail = \u00a77You have no new mail.
noPendingRequest = You do not have a pending request.
-noPowerTools = You have no power tools assigned.
noPlacePermission = \u00a7cYou do not have permission to place a block near that sign.
+noPowerTools = You have no power tools assigned.
noRules = \u00a7cThere are no rules specified yet.
noWarpsDefined = No warps defined
none = none
@@ -250,13 +252,13 @@ powerToolListEmpty = {0} has no commands assigned.
powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned to {1}.
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
-powerToolsEnabled = All of your power tools have been enabled.
powerToolsDisabled = All of your power tools have been disabled.
+powerToolsEnabled = All of your power tools have been enabled.
protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Reloaded all plugins.
repair = You have successfully repaired your: \u00a7e{0}.
-repairAlreadyFixed = \u00a77This item does not need repairing.
+repairAlreadyFixed = \u00a77This item does not need repairing.
repairInvalidType = \u00a7cThis item cannot be repaired.
repairNone = There were no items that needing repairing.
requestAccepted = \u00a77Teleport request accepted.
@@ -284,6 +286,7 @@ spawnSet = \u00a77Spawn location set for group {0}.
spawned = spawned
suicideMessage = \u00a77Goodbye Cruel World...
suicideSuccess = \u00a77{0} took their own life
+survival=survival
takenFromAccount = \u00a7c{0} has been taken from your account.
takenFromOthersAccount = \u00a7c{0} has been taken from {1} account.
teleportAAll = \u00a77Teleporting request sent to all players...
@@ -352,6 +355,7 @@ weatherStorm = \u00a77You set the weather to storm in {0}
weatherStormFor = \u00a77You set the weather to storm in {0} for {1} seconds
weatherSun = \u00a77You set the weather to sun in {0}
weatherSunFor = \u00a77You set the weather to sun in {0} for {1} seconds
+whoisGamemode = \u00a79 - Gamemode: {0}
whoisGeoLocation = \u00a79 - Location: {0}
whoisHealth = \u00a79 - Health: {0}/20
whoisIPAddress = \u00a79 - IP Address: {0}
diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties
index 960fd8321..3061f0c74 100644
--- a/Essentials/src/messages_da.properties
+++ b/Essentials/src/messages_da.properties
@@ -33,18 +33,19 @@ cantFindGeoIpDB = Kan ikke finde GeoIP database!
cantReadGeoIpDB = Fejl ved l\u00e6sning af GeoIP database!
cantSpawnItem = \u00a7cDu er ikke tilladt at spawne elementet {0}
commandFailed = Kommando {0} fejlede:
-commandHelpFailedForPlugin=Fejl ved at f\u00e5 hj\u00e6lp til: {0}
+commandHelpFailedForPlugin=Fejl ved at f\u00e5 hj\u00e6lp til: {0}
commandNotLoaded = \u00a7cCommand {0} er ikke indl\u00e6st korrekt.
compassBearing = \u00a77B\u00e6rer: {0} ({1} grader).
configFileMoveError = Kunne ikke flytte config.yml til backup placering.
configFileRenameError = Kunne ikke omd\u00f8be temp fil til config.yml
-connectedPlayers = Tilsluttede spillere:
+connectedPlayers = Tilsluttede spillere:
connectionFailed = Failed ved \u00e5bning af forbindelse.
cooldownWithMessage = \u00a7cNedk\u00f8lning: {0}
corruptNodeInConfig = \u00a74Notice: Din konfigurations fil har en korrupt {0} node.
couldNotFindTemplate = Kunne ikke finde skabelon {0}
creatingConfigFromTemplate = Opretter config fra skabelon: {0}
creatingEmptyConfig = Opretter tom config: {0}
+creative=creative
day = dag
days = dage
defaultBanReason = Ban hammeren har talt!
@@ -78,6 +79,7 @@ failedToWriteConfig = Fejlede i at skrive config {0}
fileRenameError = Resterende fil {0} fejlede
foreverAlone = \u00a7cDu har ingen du kan svare.
freedMemory = Befriede {0} MB.
+gameMode=\u00a77Set game mode {0} for {1}.
gcchunks = stykker,
gcentities = enheder
gcfree = Free memory: {0} MB
@@ -103,8 +105,8 @@ hour = time
hours = timer
ignorePlayer = Du ignorere spiller {0} fra nu af.
illegalDate = Ilegal dato format.
-infoChapter = V\u00e6lg kapitel:
-infoChapterPages = Kapitel {0}, side \u00a7c{1}\u00a7f af \u00a7c{2}\u00a7f:
+infoChapter = V\u00e6lg kapitel:
+infoChapterPages = Kapitel {0}, side \u00a7c{1}\u00a7f af \u00a7c{2}\u00a7f:
infoFileDoesNotExist = Fil info.txt eksisterer ikke. Laver en for dig.
infoPages = Side \u00a7c{0}\u00a7f af \u00a7c{1}\u00a7f:
infoUnknownChapter = Ukendt kapitel.
@@ -169,6 +171,7 @@ missingPrefixSuffix = Mangler et pr\u00e6fiks eller suffiks for {0}
mobSpawnError = Fejl ved \u00e6ndring af mob fremkalder.
mobSpawnLimit = Mob m\u00e6ngde begr\u00e6nset til server gr\u00e6nse
mobSpawnTarget = M\u00e5l blok skal v\u00e6re en mob fremkalder.
+mobsAvailable=\u00a77Mobs: {0}
moneyRecievedFrom = \u00a7a{0} er modtaget fra {1}
moneySentTo = \u00a7a{0} er sendt til {1}
moneyTaken = {0} taget fra din bank konto.
@@ -188,7 +191,7 @@ nickInUse = \u00a7cDet navn er allerede i brug.
nickNamesAlpha = \u00a7cKaldenavne skal v\u00e6re alfanumeriske.
nickNoMore = \u00a7Du har ikke l\u00e6ngere et kaldenavn.
nickOthersPermission = \u00a7cDu har ikke tilladelse til at \u00e6ndre andres kaldenavn
-nickSet = \u00a77Dit kaldenavn er nu \u00a7c{0}
+nickSet = \u00a77Dit kaldenavn er nu \u00a7c{0}
noAccessCommand = \u00a7cDu har ikke adgang til den kommando.
noAccessPermission = \u00a7cDu har ikke tilladelse til at f\u00e5 adgang til det {0}.
noDestroyPermission = \u00a7cDu har ikke tilladelse til at \u00f8del\u00e6gge det {0}.
@@ -249,13 +252,13 @@ powerToolListEmpty = {0} has no commands assigned.
powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned to {1}.
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
-powerToolsEnabled= All of your power tools have been enabled.
powerToolsDisabled= All of your power tools have been disabled.
+powerToolsEnabled= All of your power tools have been enabled.
protectionOwner = \u00a76[EssentialsProtect] Beskyttelses ejer: {0}
questionFormat = \u00a77[Sp\u00f8rgsm\u00e5l]\u00a7f {0}
reloadAllPlugins = \u00a77Genindl\u00e6ste alle tilf\u00f8jelser.
repair = You have successfully repaired your: \u00a7e{0}.
-repairAlreadyFixed = \u00a77This item does not need repairing.
+repairAlreadyFixed = \u00a77This item does not need repairing.
repairInvalidType = \u00a7cThis item cannot be repaired.
repairNone = There were no items that needing repairing.
requestAccepted = \u00a77Teleporterings anmodning n\u00e6gtet.
@@ -283,6 +286,7 @@ spawnSet = \u00a77Spawn placering sat for gruppe {0}.
spawned = spawnet
suicideMessage = \u00a77Farvel grusomme verden...
suicideSuccess = \u00a77{0} tog sit eget liv
+survival=survival
takenFromAccount = \u00a7c{0} er taget fra din konto.
takenFromOthersAccount = \u00a7c{0} er blevet taget fra {1} konto.
teleportAAll = \u00a77Teleporting request sent to all players...
@@ -351,6 +355,7 @@ weatherStorm = \u00a77Du har sat vejret til storm i {0}
weatherStormFor = \u00a77Du har sat vejret til storm i {0} i {1} sekunder
weatherSun = \u00a77Du har sat vejret til sol i {0}
weatherSunFor = \u00a77Du har sat vejret til sol i {0} i {1} sekunder
+whoisGamemode = \u00a79 - Gamemode: {0}
whoisGeoLocation = \u00a79 - Placering: {0}
whoisHealth = \u00a79 - Helbred: {0}/20
whoisIPAddress = \u00a79 - IP Addresse: {0}
@@ -366,5 +371,3 @@ year = \u00e5r
years = \u00e5r
youAreHealed = \u00a77Du er blevet helbredt.
youHaveNewMail = \u00a7cDu har {0} beskeder!\u00a7f Type \u00a77/post l\u00e6s\u00a7f for at se din post.
-
-
diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties
index f0ec0f493..c1b656ca8 100644
--- a/Essentials/src/messages_de.properties
+++ b/Essentials/src/messages_de.properties
@@ -33,21 +33,22 @@ cantFindGeoIpDB = Kann GeoIP-Datenbank nicht finden!
cantReadGeoIpDB = Fehler beim Einlesen der GeoIP-Datenbank!
cantSpawnItem = \u00a7cDu darfst {0} nicht erzeugen.
commandFailed = Befehl {0} scheiterte:
-commandHelpFailedForPlugin=Fehler beim Abrufen der Hilfe f\u00fcr: {0}
+commandHelpFailedForPlugin=Fehler beim Abrufen der Hilfe f\u00fcr: {0}
commandNotLoaded = \u00a7cBefehl {0} ist nicht richtig geladen.
compassBearing = \u00a77Peilung: {0} ({1} Grad).
configFileMoveError = Verschieben von config.yml in den Sicherheitskopien-Ordner gescheitert.
configFileRenameError = Verschieben einer tempor\u00e4ren Datei nach config.yml gescheitert.
-connectedPlayers = Verbundene Spieler:
+connectedPlayers = Verbundene Spieler:
connectionFailed = Fehler beim Verbindungsaufbau.
cooldownWithMessage = \u00a7cBeschr\u00e4nkung: {0}
corruptNodeInConfig = \u00a74Hinweis: Deine Konfigurationsdatei hat einen ung\u00fcltigen Knoten {0}.
couldNotFindTemplate = Vorlage {0} konnte nicht gefunden werden.
creatingConfigFromTemplate = Erstelle Konfiguration aus Vorlage: {0}
creatingEmptyConfig = Erstelle leere Konfiguration: {0}
+creative=creative
day = Tag
days = Tage
-defaultBanReason = Der Bann-Hammer hat gesprochen!
+defaultBanReason = Der Bann-Hammer hat gesprochen!
deleteFileError = Konnte Datei nicht l\u00f6schen: {0}
deleteHome = \u00a77Zuhause {0} wurde gel\u00f6scht.
deleteJail = \u00a77Gef\u00e4ngnis {0} wurde gel\u00f6scht.
@@ -78,6 +79,7 @@ failedToWriteConfig = Fehler beim Schreiben der Konfiguration {0}
fileRenameError = Umbenennen von {0} gescheitert.
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
@@ -103,8 +105,8 @@ hour = Stunde
hours = Stunden
ignorePlayer = Du ignorierst ab jetzt Spieler {0}.
illegalDate = Ung\u00fcltiges Datumsformat.
-infoChapter = W\u00e4hle Kapitel:
-infoChapterPages = Kapitel {0}, Seite \u00a7c{1}\u00a7f von \u00a7c{2}\u00a7f:
+infoChapter = W\u00e4hle Kapitel:
+infoChapterPages = Kapitel {0}, Seite \u00a7c{1}\u00a7f von \u00a7c{2}\u00a7f:
infoFileDoesNotExist = Datei info.txt existiert nicht. Erzeuge eine neue Datei.
infoPages = Seite \u00a7c{0}\u00a7f von \u00a7c{1}\u00a7f:
infoUnknownChapter = Unbekanntes Kapitel:
@@ -169,6 +171,7 @@ missingPrefixSuffix = Prefix/Suffix fehlt f\u00fcr {0}
mobSpawnError = Fehler beim \u00e4ndern des Monster-Spawner.
mobSpawnLimit = Anzahl an Monster auf Serverlimit beschr\u00e4nkt
mobSpawnTarget = Zielblock, muss ein Monster-Spawner sein.
+mobsAvailable=\u00a77Mobs: {0}
moneyRecievedFrom = \u00a7a{1} hat dir {0} gegeben.
moneySentTo = \u00a7aDu hast {1} {0} gegeben.
moneyTaken = {0} wurde aus deiner Geldb\u00f6rse genommen.
@@ -188,7 +191,7 @@ nickInUse = \u00a7cDieser Name wird bereits verwendet.
nickNamesAlpha = \u00a7cNicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten.
nickNoMore = \u00a7Du hast keinen Nicknamen mehr.
nickOthersPermission = \u00a7cDu hast keine Rechte um den Nicknamen von anderen zu \u00e4ndern.
-nickSet = \u00a77Dein Nickname ist nun \u00a7c{0}
+nickSet = \u00a77Dein Nickname ist nun \u00a7c{0}
noAccessCommand = \u00a7cDu hast keinen Zugriff auf diesen Befehl.
noAccessPermission = \u00a7cDu hast keine Rechte, den Block {0} zu \u00f6ffnen.
noDestroyPermission = \u00a7cDu hast keine Rechte, den Block {0} zu zerst\u00f6ren.
@@ -249,13 +252,13 @@ powerToolListEmpty = {0} hat keinen Befehl.
powerToolNoSuchCommandAssigned = Befehl \u00a7c{0}\u00a7f wurde nicht zu {1} hinzugef\u00fcgt.
powerToolRemove = Befehl \u00a7c{0}\u00a7f erfolgreich von {1} entfernt.
powerToolRemoveAll = Alle Befehle von {0} entfernt.
-powerToolsEnabled = Alle deine Powertools wurden aktiviert.
powerToolsDisabled = Alle deine Powertools wurden deaktiviert.
+powerToolsEnabled = Alle deine Powertools wurden aktiviert.
protectionOwner = \u00a76[EssentialsProtect] Besitzer dieses Blocks: {0}
questionFormat = \u00a77[Frage]\u00a7f {0}
reloadAllPlugins = \u00a77Alle plugins neu geladen.
repair = Du hast erfolgreich deine {0} repariert.
-repairAlreadyFixed = \u00a77Dieser Gegenstand ben\u00f6tigt keine Reparatur.
+repairAlreadyFixed = \u00a77Dieser Gegenstand ben\u00f6tigt keine Reparatur.
repairInvalidType = \u00a7cDieser Gegenstand kann nicht repariert werden.
repairNone = Es sind keine Gegenst\u00e4nde vorhanden, die repariert werden k\u00f6nnen.
requestAccepted = \u00a77Teleportierungsanfrage akzeptiert.
@@ -283,6 +286,7 @@ spawnSet = \u00a77Spawn-Punkt gesetzt f\u00fcr Gruppe {0}.
spawned = erzeugt
suicideMessage = \u00a77Lebewohl grausame Welt...
suicideSuccess = \u00a77{0} hat sich das Leben genommen.
+survival=survival
takenFromAccount = \u00a7c{0} wurden aus deiner Geldb\u00f6rse genommen.
takenFromOthersAccount = \u00a7c{0} wurde von {1} wurde Rechnung getragen.
teleportAAll = \u00a77Teleportierungsanfrage zu allen Spielern gesendet...
@@ -351,6 +355,7 @@ weatherStorm = \u00a77In {0} st\u00fcrmt es nun.
weatherStormFor = \u00a77In {0} st\u00fcrmt es nun f\u00fcr {1} Sekunden.
weatherSun = \u00a77In {0} scheint nun die Sonne.
weatherSunFor = \u00a77In {0} scheint nun f\u00fcr {1} Sekunden die Sonne.
+whoisGamemode = \u00a79 - Gamemode: {0}
whoisGeoLocation = \u00a79 - Herkunft: {0}
whoisHealth = \u00a79 - Gesundheit: {0}/20
whoisIPAddress = \u00a79 - IP-Adresse: {0}
@@ -366,4 +371,3 @@ year = Jahr
years = Jahre
youAreHealed = \u00a77Du wurdest geheilt.
youHaveNewMail = \u00a7cDu hast {0} Nachrichten!\u00a7f Schreibe \u00a77/mail read\u00a7f um deine Nachrichten anzuzeigen.
-
diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties
index e4d40adf2..2f3ae3560 100644
--- a/Essentials/src/messages_en.properties
+++ b/Essentials/src/messages_en.properties
@@ -33,18 +33,19 @@ cantFindGeoIpDB = Can''t find GeoIP database!
cantReadGeoIpDB = Failed to read GeoIP database!
cantSpawnItem = \u00a7cYou are not allowed to spawn the item {0}
commandFailed = Command {0} failed:
-commandHelpFailedForPlugin=Error getting help for: {0}
+commandHelpFailedForPlugin=Error getting help for: {0}
commandNotLoaded = \u00a7cCommand {0} is improperly loaded.
compassBearing = \u00a77Bearing: {0} ({1} degrees).
configFileMoveError = Failed to move config.yml to backup location.
configFileRenameError = Failed to rename temp file to config.yml
-connectedPlayers = Connected players:
+connectedPlayers = Connected players:
connectionFailed = Failed to open connection.
cooldownWithMessage = \u00a7cCooldown: {0}
corruptNodeInConfig = \u00a74Notice: Your configuration file has a corrupt {0} node.
couldNotFindTemplate = Could not find template {0}
creatingConfigFromTemplate = Creating config from template: {0}
creatingEmptyConfig = Creating empty config: {0}
+creative=creative
day = day
days = days
defaultBanReason = The Ban Hammer has spoken!
@@ -78,6 +79,7 @@ failedToWriteConfig = Failed to write config {0}
fileRenameError = Renaming file {0} failed
foreverAlone = \u00a7cYou have nobody to whom you can reply.
freedMemory = Freed {0} MB.
+gameMode=\u00a77Set game mode {0} for {1}.
gcchunks = chunks,
gcentities = entities
gcfree = Free memory: {0} MB
@@ -103,8 +105,8 @@ hour = hour
hours = hours
ignorePlayer = You ignore player {0} from now on.
illegalDate = Illegal date format.
-infoChapter = Select chapter:
-infoChapterPages = Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f:
+infoChapter = Select chapter:
+infoChapterPages = Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f:
infoFileDoesNotExist = File info.txt does not exist. Creating one for you.
infoPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
infoUnknownChapter = Unknown chapter.
@@ -169,6 +171,7 @@ missingPrefixSuffix = Missing a prefix or suffix for {0}
mobSpawnError = Error while changing mob spawner.
mobSpawnLimit = Mob quantity limited to server limit
mobSpawnTarget = Target block must be a mob spawner.
+mobsAvailable=\u00a77Mobs: {0}
moneyRecievedFrom = \u00a7a{0} has been received from {1}
moneySentTo = \u00a7a{0} has been sent to {1}
moneyTaken = {0} taken from your bank account.
@@ -188,7 +191,7 @@ nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
nickNoMore = \u00a77You no longer have a nickname.
nickOthersPermission = \u00a7cYou do not have permission to change the nickname of others
-nickSet = \u00a77Your nickname is now \u00a7c{0}
+nickSet = \u00a77Your nickname is now \u00a7c{0}
noAccessCommand = \u00a7cYou do not have access to that command.
noAccessPermission = \u00a7cYou do not have permission to access that {0}.
noDestroyPermission = \u00a7cYou do not have permission to destroy that {0}.
@@ -249,13 +252,13 @@ powerToolListEmpty = {0} has no commands assigned.
powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned to {1}.
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
-powerToolsEnabled=All of your power tools have been enabled.
powerToolsDisabled=All of your power tools have been enabled.
+powerToolsEnabled=All of your power tools have been enabled.
protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Reloaded all plugins.
repair = You have successfully repaired your: \u00a7e{0}.
-repairAlreadyFixed = \u00a77This item does not need repairing.
+repairAlreadyFixed = \u00a77This item does not need repairing.
repairInvalidType = \u00a7cThis item cannot be repaired.
repairNone = There were no items that needing repairing.
requestAccepted = \u00a77Teleport request accepted.
@@ -283,6 +286,7 @@ spawnSet = \u00a77Spawn location set for group {0}.
spawned = spawned
suicideMessage = \u00a77Goodbye Cruel World...
suicideSuccess = \u00a77{0} took their own life
+survival=survival
takenFromAccount = \u00a7c{0} has been taken from your account.
takenFromOthersAccount = \u00a7c{0} has been taken from {1} account.
teleportAAll = \u00a77Teleporting request sent to all players...
@@ -351,6 +355,7 @@ weatherStorm = \u00a77You set the weather to storm in {0}
weatherStormFor = \u00a77You set the weather to storm in {0} for {1} seconds
weatherSun = \u00a77You set the weather to sun in {0}
weatherSunFor = \u00a77You set the weather to sun in {0} for {1} seconds
+whoisGamemode = \u00a79 - Gamemode: {0}
whoisGeoLocation = \u00a79 - Location: {0}
whoisHealth = \u00a79 - Health: {0}/20
whoisIPAddress = \u00a79 - IP Address: {0}
@@ -366,5 +371,3 @@ year = year
years = years
youAreHealed = \u00a77You have been healed.
youHaveNewMail = \u00a7cYou have {0} messages!\u00a7f Type \u00a77/mail read\u00a7f to view your mail.
-
-
diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties
new file mode 100644
index 000000000..67cf6fa86
--- /dev/null
+++ b/Essentials/src/messages_es.properties
@@ -0,0 +1,373 @@
+#version: TeamCity
+# Single quotes have to be doubled: ''
+# Translations start here
+# by:
+action=* {0} {1}
+addedToAccount = \u00a7a{0} ha sido agregado a tu cuenta.
+addedToOthersAccount = \u00a7a{0} ha sido agregado a la cuenta de {1}.
+alertBroke = roto:
+alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} en: {3}
+alertPlaced = situado:
+alertUsed = usado:
+autoAfkKickReason=Has sido echado por ausentarte mas de {0} minutos.
+backAfterDeath = \u00a77Usa el comando /back para volver al punto en el que moriste.
+backUsageMsg = \u00a77Volviendo a la localizacion anterior.
+backupFinished = Copia de seguridad completada
+backupStarted = Comenzando copia de seguridad
+balance = \u00a77Cantidad: {0}
+balanceTop = \u00a77Top {0} cantidades
+banExempt = \u00a7cNo puedes banear a ese jugador
+banIpAddress = \u00a77Direccion IP baneada
+bannedIpsFileError = Error leyendo banned-ips.txt
+bannedIpsFileNotFound = banned-ips.txt no encontrado
+bannedPlayersFileError = Error leyendo banned-players.txt
+bannedPlayersFileNotFound = banned-players.txt no encontrado
+bigTreeFailure = \u00a7cBig Generacion de arbol fallida. Prueba de nuevo en hierba o arena.
+bigTreeSuccess = \u00a77Big Arbol generado.
+broadcast = [\u00a7cBroadcast\u00a7f]\u00a7a {0}
+buildAlert = \u00a7cNo tienes permisos para construir
+bukkitFormatChanged = Version de formato de Bukkit cambiado. Version no comprobada.
+burnMsg = \u00a77Has puesto {0} en fuego durante {1} segundos.
+canTalkAgain = \u00a77Ya puedes hablar de nuevo
+cantFindGeoIpDB = No se puede encontrar la bases de datos del Geo IP
+cantReadGeoIpDB = Error al intentar leer la base de datos del Geo IP
+cantSpawnItem = \u00a7cNo tienes acceso para producir este objeto {0}
+commandFailed = Command {0} fallado:
+commandHelpFailedForPlugin = Error obteniendo ayuda para: {0}
+commandNotLoaded = \u00a7cCommand {0} esta cargado incorrectamente.
+compassBearing = \u00a77Bearing: {0} ({1} grados).
+configFileMoveError = Error al mover config.yml para hacer una copia de seguridad de la localizacion.
+configFileRenameError = Error al renombrar archivo temp a config.yml
+connectedPlayers = Jugadores conectados:
+connectionFailed = Error al abrir conexion.
+cooldownWithMessage = \u00a7cCooldown: {0}
+corruptNodeInConfig = \u00a74Notice: Tu archivo de configuracion tiene un nodo {0} incorrecto.
+couldNotFindTemplate = No se puede encontrar el template {0}
+creatingConfigFromTemplate = Creando configuracion desde el template: {0}
+creatingEmptyConfig = Creando configuracion vacia: {0}
+creative=creative
+day = dia
+days = dias
+defaultBanReason = Baneado por incumplir las normas!
+deleteFileError = No se puede borrar el archivo: {0}
+deleteHome = \u00a77Home {0} ha sido borrado.
+deleteJail = \u00a77Jail {0} ha sido borrado.
+deleteWarp = \u00a77Warp {0} ha sido borrado.
+deniedAccessCommand = {0} ha denegado el acceso al comando.
+dependancyDownloaded = [Essentials] Dependencia {0} descargada correctamente.
+dependancyException = [Essentials] Error al intentar descargar la dependencia.
+dependancyNotFound = [Essentials] La dependencia necesitada no se encontro, descargandola...
+depth = \u00a77Estas al nivel del mar.
+depthAboveSea = \u00a77Estas {0} bloque(s) por encima del mar.
+depthBelowSea = \u00a77Estas {0} bloque(s) por debajo del mar.
+destinationNotSet = Destino no establecido.
+disableUnlimited = \u00a77Desactivando colocacion ilimitada de {0} para {1}.
+disabled = desactivado
+dontMoveMessage = \u00a77Teletransporte comenzara en {0}. No te muevas.
+downloadingGeoIp = Descargando base de datos de GeoIP ... puede llevar un tiempo (pais: 0.6 MB, ciudad: 20MB)
+duplicatedUserdata = Datos de usuario duplicados: {0} y {1}
+enableUnlimited = \u00a77Dando cantidad ilimitada de {0} a {1}.
+enabled = activado
+errorCallingCommand = Error al ejecutar el comando /{0}
+errorWithMessage = \u00a7cError: {0}
+essentialsReload = \u00a77Essentials Recargado {0}
+extinguish = \u00a77Te has suicidado.
+extinguishOthers = \u00a77Has matado a {0}.
+failedToCloseConfig = Error al cerrar configuracion {0}
+failedToCreateConfig = Error al crear configuracion {0}
+failedToWriteConfig = Error al escribir configuracion {0}
+fileRenameError = Error al renombrar el archivo {0}
+foreverAlone = \u00a7cNo tienes nadie a quien puedas responder.
+freedMemory = {0} MB libres.
+gameMode=\u00a77Set game mode {0} for {1}.
+gcchunks = pixeles,
+gcentities = entidades
+gcfree = Memoria libre: {0} MB
+gcmax = Memoria maxima: {0} MB
+gctotal = Memoria localizada: {0} MB
+geoIpUrlEmpty = Link para descargar GeoIP esta vacio.
+geoIpUrlInvalid = Link para descargar GeoIP es invalido.
+geoipJoinFormat = El jugador {0} viene de {1}
+godDisabledFor = Desactivado para {0}
+godEnabledFor = Activado para {0}
+godMode = \u00a77Modo Dios {0}.
+haveBeenReleased = \u00a77Has sido liberado
+heal = \u00a77Has sido curado.
+healOther = \u00a77Has curado a {0}.
+helpConsole = Para obtener ayuda de la consola, escribe ?.
+helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
+helpPages = Pagina \u00a7c{0}\u00a7f de \u00a7c{1}\u00a7f:
+holeInFloor = Agujero en el suelo
+homeSet = \u00a77Hogar establecido.
+homeSetToBed = \u00a77Tu hogar esta ahora establecido a esta cama.
+homes = Hogares: {0}
+hour = hora
+hours = horas
+ignorePlayer = A partir de ahora ignoras al jugador {0}.
+illegalDate = Forma de fecha ilegal.
+infoChapter = Selecciona una seccion:
+infoChapterPages = Seccion {0}, pagina \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f:
+infoFileDoesNotExist = El archivo info.txt no existe. Creando uno para ti.
+infoPages = Pagina \u00a7c{0}\u00a7f de \u00a7c{1}\u00a7f:
+infoUnknownChapter = Seccion desconocida.
+invBigger = El inventario del otro usuario es mas grande que el tuyo
+invRestored = Tu inventario ha sido recuperado.
+invSee = Estas viendo el inventario de {0}.
+invSeeHelp = Usa /invsee para recuperar tu inventario.
+invalidCharge = \u00a7cCargo invalido.
+invalidMob = Mob invalido.
+invalidServer = Servidor invalido!
+invalidSignLine = Linea {0} en el signo es invalida.
+invalidWorld = \u00a7cMundo invalido.
+inventoryCleared = \u00a77Inventario limpiado.
+inventoryClearedOthers = \u00a77Inventario de \u00a7c{0}\u00a77 limpiado.
+is = es
+itemCannotBeSold = Ese objeto no puede ser vendido al servidor.
+itemMustBeStacked = El objeto tiene que ser intercambiado en pilas. Una cantidad de 2s seria de dos pilas, etc.
+itemNotEnough1 = \u00a7cNo tienes suficientes ejemplares de ese objeto para venderlo.
+itemNotEnough2 = \u00a77Si pensabas en vender todos tus objetos de ese tipo, usa /sell nombredeobjeto
+itemNotEnough3 = \u00a77/sell nombredeobjeto -1 vendera todos excepto un objeto, etc.
+itemSellAir = Realmente has intentado vender Aire? Pon un objeto en tu mano!
+itemSold = \u00a77Vendido para \u00a7c {0} \u00a77 ({1} {2} a {3} cada uno)
+itemSoldConsole = {0} Vendido {1} para\u00a77 {2} \u00a77({3} objetos a {4} cada uno)
+itemSpawn = \u00a77Dando {0} de {1}
+itemsCsvNotLoaded = Error al leer items.csv.
+jailAlreadyIncarcerated = \u00a7cLa persona ya esta en la carcel: {0}
+jailMessage = \u00a7cPor hacer el mal, tiempo en la carcel estaras.
+jailNotExist = Esa carcel no existe.
+jailReleased = \u00a77Player \u00a7e{0}\u00a77 liberado.
+jailReleasedPlayerNotify = \u00a77 Has sido liberado!!
+jailSentenceExtended = El tiempo en la carcel se alarga hasta: {0)
+jailSet = \u00a77Carcel {0} ha sido puesta
+jumpError = Eso es demasiado para tu ordenador!
+kickDefault = Echado del servidor.
+kickExempt = \u00a7cNo puedes echar a esa persona.
+kill = \u00a77ha matado a {0}.
+kitError = \u00a7cNo hay ningun kit valido.
+kitError2 = \u00a7cEse kit no existe o esta mal escrito.
+kitErrorHelp = \u00a7cPerhaps an item is missing a quantity in the configuration?
+kitGive = \u00a77Dando kit a {0}.
+kitInvFull = \u00a7cTu inventario esta lleno, su kit se pondra en el suelo
+kitTimed = \u00a7c No puedes usar ese kit de nuevo para otro{0}.
+kits = \u00a77Kits: {0}
+lightningSmited = \u00a77Acabas de ser golpeado
+lightningUse = \u00a77Golpeando a {0}
+loadWarpError = Error al cargar el tenetransporte {0}
+loadinfo = Cargado {0}, construido {1} por: {2}
+localFormat = Local: <{0}> {1}
+mailClear = \u00a7cPara marcar tu email como leido, escribe /mail clear
+mailCleared = \u00a77Email limpiado!
+mailSent = \u00a77Email enviado!!
+markMailAsRead = \u00a7cPara marcar tu email como leido, escribe /mail clear
+markedAsAway = \u00a77Has sido puesto como AFK.
+markedAsNotAway = \u00a77Ya no estas AFK.
+maxHomes=No puedes establecer mas de {0} hogares.
+mayNotJail = \u00a7cNo puedes encarcelar a esa persona
+me = yo
+minute = minuto
+minutes = minutos
+missingItems = No tienes {0}x de {1}.
+missingPrefixSuffix = Falta un prefijo o un sufijo para {0}
+mobSpawnError = Error al cambiar la localizacion para el nacimiento de los mobs.
+mobSpawnLimit = Cantidad de Mobs limitados al limite del server
+mobSpawnTarget = El block seleccionado sera el lugar donde van a nacer los mobs.
+mobsAvailable = \u00a77Mobs: {0}
+moneyRecievedFrom = \u00a7a{0} ha sido recivido de {1}
+moneySentTo = \u00a7a{0} ha sido enviado a {1}
+moneyTaken = {0} han sido sacados de tu cuenta bancaria.
+month = mes
+months = meses
+moreThanZero = Las cantidades han de ser mayores que 0.
+msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
+muteExempt = \u00a7cNo puedes silenciar a ese jugador.
+mutedPlayer = Player {0} silenciado.
+mutedPlayerFor = Player {0} silenciado durante {1}.
+mutedUserSpeaks = {0} intento hablar, pero esta silenciado.
+needTpohere = Necesitas acceso a /tpohere para teletransportar a otros jugadores.
+negativeBalanceError = El usuario no tiene permitido tener un saldo negativo.
+nickChanged = Nombre de jugador cambiado.
+nickDisplayName=\u00a77Tienes que habilitar cambio de nombre de usuario en la configuracion de Essentials.
+nickInUse = \u00a7cEse nombre ya esta en uso.
+nickNamesAlpha = \u00a7cLos nombres tienen que ser alfanumericos.
+nickNoMore = \u00a77Ya no tienes un nombre de usuario
+nickOthersPermission = \u00a7cNo tienes permiso para cambiar el nombre de usuario de otros.
+nickSet = \u00a77Tu nombre es ahora \u00a7c{0}
+noAccessCommand = \u00a7cNo tienes acceso a ese comando.
+noAccessPermission = \u00a7cNo tienes permisos para hacer eso {0}.
+noDestroyPermission = \u00a7cNo tienes permisos para destrozar eso {0}.
+noHelpFound = \u00a7cNo hay comandos relacionados.
+noHomeSet = No has establecido un hogar.
+noHomeSetPlayer = El jugador no ha establecido un hogar.
+noKitPermission = \u00a7cNecesitas los \u00a7c{0}\u00a7c permisos para usar ese kit.
+noKits = \u00a77No hay kits disponibles todavia
+noMail = No tienes ningun email recivido
+noMailSendPerm = \u00a7cNo tienes el permiso de \u00a7fessentials.mail.send\u00a7c.
+noMotd = \u00a7cNo hay ningun mensaje del dia.
+noNewMail = \u00a77No tienes ningun correo nuevo.
+noPendingRequest = No tienes ninguna peticion pendiente.
+noPlacePermission = \u00a7cNo tienes permiso para situar ese bloque en ese lugar.
+noPowerTools=You have no power tools assigned.
+noRules = \u00a7cNo hay reglas especificadas todavia.
+noWarpsDefined = No hay teletransportes definidos aun
+none = ninguno
+notAllowedToQuestion = \u00a7cYou estas autorizado para usar las preguntas.
+notAllowedToShout = \u00a7cNo estas autorizado para gritar.
+notEnoughMoney = No tienes el dinero suficiente.
+notRecommendedBukkit = La version de bukkit no es la recomendada para esta version de Essentials.
+notSupportedYet = No esta soportado aun.
+now = ahora
+numberRequired = Un numero es necesario, amigo.
+onlyDayNight = /time solo soporta day/night. (dia/noche)
+onlyPlayers = Solo los jugadores conectados pueden usar {0}.
+onlySunStorm = /weather solo soporta sun/storm. (sol/tormenta)
+pTimeCurrent = \u00a7e{0}''s\u00a7f la hora es {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f la hora ha sido cambiada a {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f el tiempo es normal y coincide con el servidor.
+pTimeOthersPermission = \u00a7cNo estas autorizado para especificar'' la hora de otros usuarios.
+pTimePlayers = Estos usuarios tienen su propia hora:
+pTimeReset = La hora del usuario ha sido reiniciada a las: \u00a7e{0}
+pTimeSet = La hora del jugador ha sido cambiada para las: \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = La hora del jugador ha sido arreglada para las: \u00a73{0}\u00a7f for: \u00a7e{1}
+parseError = error analizando {0} en la linea {1}
+pendingTeleportCancelled = \u00a7cPeticion de teletransporte pendiente cancelado.
+permissionsError = Falta el plugin Permissions/GroupManager; Los prefijos/sufijos de chat seran desactivados.
+playerBanned = \u00a7cEl jugador {0} ha baneado a {1} durante {2}
+playerInJail = \u00a7cEl jugador {0} ya esta en la carcel.
+playerJailed = \u00a77Jugador {0} encarcelado.
+playerJailedFor = \u00a77El jugador {0} ha sido encarcelado durante {1}.
+playerKicked = \u00a7cEl jugador {0} echo a {1} durante {2}
+playerMuted = \u00a77Has sido silenciado
+playerMutedFor = \u00a77Has sido silenciado durante {0}
+playerNeverOnServer = \u00a7cEl jugador {0} nunca estuvo en este servidor.
+playerNotFound = \u00a7cJugador no encontrado.
+playerUnmuted = \u00a77Has sido desmuteado.
+pong = Tkm mi ninio!
+possibleWorlds = \u00a77Los mundos posibles son desde el numero 0 hasta el {0}.
+powerToolAir = El comando no se puede ejecutar en el aire.
+powerToolAlreadySet = El comando \u00a7c{0}\u00a7f ya esta asignado a {1}.
+powerToolAttach = \u00a7c{0}\u00a7f comando asignado a {1}.
+powerToolClearAll = Todos los comandos de powertool han sido borrados.
+powerToolList = {1} tiene los siguientes comandos: \u00a7c{0}\u00a7f.
+powerToolListEmpty = {0} no tiene comandos asignados.
+powerToolNoSuchCommandAssigned = El comando \u00a7c{0}\u00a7f no ha sido asignado a {1}.
+powerToolRemove = Comando \u00a7c{0}\u00a7f borrado desde {1}.
+powerToolRemoveAll = Todos los comandos borrados desde {0}.
+powerToolsDisabled=All of your power tools have been disabled.
+powerToolsEnabled=All of your power tools have been enabled.
+protectionOwner = \u00a76[EssentialsProtect] Due&ntilde;o de la proteccion: {0}
+questionFormat = \u00a77[Pregunta]\u00a7f {0}
+reloadAllPlugins = \u00a77Todos los plugins recargados.
+repair = Has reparado satisfactoriamente tu: \u00a7e{0}.
+repairAlreadyFixed = \u00a77Este objeto no necesita de reparado.
+repairInvalidType = \u00a7cEste objeto no puede ser reparado.
+repairNone = No habia objetos que necesitasen ser reparados.
+requestAccepted = \u00a77Peticion de teletransporte aceptada.
+requestAcceptedFrom = \u00a77{0} acepto tu peticion de teletransporte.
+requestDenied = \u00a77Peticion de teletransporte denegada.
+requestDeniedFrom = \u00a77{0} ha denegado tu peticion de teletransporte.
+requestSent = \u00a77Peticion enviada a {0}\u00a77.
+returnPlayerToJailError = Error al intentar quitar al jugador de la carcel.
+second = segundo
+seconds = segundos
+seenOffline = El jugador {0} esta desconectado desde {1}
+seenOnline = El jugador {0} lleva conectado desde {1}
+serverFull = Servidor lleno
+setSpawner = Cambiado tipo de lugar de nacimiento a {0}
+sheepMalformedColor = Color malformado.
+shoutFormat = \u00a77[Shout]\u00a7f {0}
+signFormatFail = \u00a74[{0}]
+signFormatSuccess = \u00a71[{0}]
+signFormatTemplate = [{0}]
+signProtectInvalidLocation = \u00a74No puedes poner carteles en ese sitio.
+similarWarpExist = Ya existe un teletransporte con ese nombre.
+slimeMalformedSize = Medidas malformadas.
+soloMob = A este mob le gusta estar solo
+spawnSet = \u00a77El lugar de nacimiento ha sido puesto para el grupo {0}.
+spawned = nacido
+suicideMessage = \u00a77Adios mundo cruel...
+suicideSuccess = \u00a77{0} se quito su propia vida
+survival=survival
+takenFromAccount = \u00a7c{0} ha sido sacado de tu cuenta.
+takenFromOthersAccount = \u00a7c{0} ha sido sacado de la cuenta de {1}.
+teleportAAll = \u00a77Peticion de teletransporte enviada a todos los jugadores...
+teleportAll = \u00a77Teletransportando a todos los jugadores...
+teleportAtoB = \u00a77{0}\u00a77 te teletransporto a {1}\u00a77.
+teleportDisabled = {0} tiene desactivado los teletransportes.
+teleportHereRequest = \u00a7c{0}\u00a7c ha pedido que te teletransportes con el.
+teleportNewPlayerError = Error al teletransportar al nuevo jugador
+teleportRequest = \u00a7c{0}\u00a7c te ha pedido teletransportarse contigo.
+teleportTop = \u00a77Teletransportandote a la cima.
+teleportationCommencing = \u00a77Comenzando teletransporte...
+teleportationDisabled = \u00a77Teletransporte desactivado.
+teleportationEnabled = \u00a77Teletransporte activado.
+teleporting = \u00a77Teletransportando...
+teleportingPortal = \u00a77Teletransportando via portal.
+tempBanned = Baneado temporalmente del servidor por {0}
+tempbanExempt = \u00a77No puedes banear temporalmente a ese jugador
+thunder = Tu has {0} los truenos en tu mundo.
+thunderDuration = Tu has {0} los truenos en tu mundo durante {1} seconds.
+timeBeforeHeal = Tiempo antes de la siguiente curacion: {0}
+timeBeforeTeleport = Tiempo antes del proximo teletransporte: {0}
+timeFormat = \u00a73{0}\u00a7f or \u00a73{1}\u00a7f or \u00a73{2}\u00a7f
+timePattern = (?:([0-9]+)\\s*y[a-z]*[,\\s]*)?(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?(?:([0-9]+)\\s*(?:s[a-z]*)?)?
+timeSet = Time establecido en todos los mundos.
+timeSetPermission = \u00a7cNo estas autorizado para establecer la hora.
+timeWorldCurrent = La hora actual en {0} es \u00a73{1}
+timeWorldSet = La hora ha sido establecido a {0} en: \u00a7c{1}
+tradeCompleted = \u00a77Intercambio completado.
+tradeSignEmpty = Esta tienda no tiene nada disponible para ti.
+tradeSignEmptyOwner = No hay nada que recojer de esta tienda.
+treeFailure = \u00a7cError al generar arbol. Prueba de nuevo en tierra o hierba.
+treeSpawned = \u00a77Arbol puesto.
+typeTpaccept = \u00a77Para teletransportarte, escribe \u00a7c/tpaccept\u00a77.
+typeTpdeny = \u00a77Para denegar esta peticion, escribe \u00a7c/tpdeny\u00a77.
+typeWorldName = \u00a77Tu tambien puedes escribir el nombre de un mundo especifico.
+unableToSpawnMob = No se puede generar Mobs.
+unbannedIP = IP Adress desbaneada.
+unbannedPlayer = Jugador desbaneado.
+unignorePlayer = Ya no estas ignorando al jugador {0}.
+unknownItemId = ID de objeto desconocido: {0}
+unknownItemInList = Objeto desconocido {0} en {1} lista.
+unknownItemName = Nombre de objeto desconocido: {0}
+unlimitedItemPermission = \u00a7cNo tienes permiso para objetos ilimitados {0}.
+unlimitedItems = Objetos ilimitados.
+unmutedPlayer = Jugador {0} desmuteado.
+upgradingFilesError = Error mientras se actualizaban los archivos
+userDoesNotExist = El usuario {0} no existe
+userIsAway = {0} esta ahora ausente!
+userIsNotAway = {0} ya no esta ausente!
+userJailed = \u00a77Has sido encarcelado!
+userUsedPortal = {0} uso un portal de salida existente.
+userdataMoveBackError = Error al mover userdata/{0}.tmp a userdata/{1}
+userdataMoveError = Error al mover userdata/{0} a userdata/{1}.tmp
+usingTempFolderForTesting = Usando carpeta temporal para pruebas:
+versionMismatch = La version no coincide! Por favor actualiza {0} a la misma version.
+versionMismatchAll = La version no coincide! Por favor actualiza todos los jars de Essentials a la misma version.
+voiceSilenced = \u00a77Tu voz ha sido silenciada
+warpDeleteError = Problema al borrar el archivo de teletransporte.
+warpListPermission = \u00a7cNo tienes permiso para listar esos teletransportes.
+warpNotExist = Ese teletransporte no existe.
+warpSet = \u00a77Teletransporte {0} establecido.
+warpUsePermission = \u00a7cNo tienes permisos para usar ese teletransporte.
+warpingTo = \u00a77Teletransportandote a {0}.
+warpsCount = \u00a77Hay {0} teletransportes. Mostrando pagina {1} de {2}.
+weatherStorm = \u00a77Has establecido el tiempo a tormenta en este mundo.
+weatherStormFor = \u00a77Has establecido el tiempo a tormenta en este {1} durante {0} segundos.
+weatherSun = \u00a77Has establecido el tiempo a sol en este mundo.
+weatherSunFor = \u00a77Has establecido el tiempo a sol en este {1} durante {0} segundos.
+whoisGamemode=\u00a79 - Gamemode: {0}
+whoisGeoLocation = \u00a79 - Localizacion: {0}
+whoisHealth = \u00a79 - Salud: {0}/20
+whoisIPAddress = \u00a79 - Direccion IP: {0}
+whoisIs = {0} es {1}
+whoisLocation = \u00a79 - Localizacion: ({0}, {1}, {2}, {3})
+whoisMoney = \u00a79 - Dinero: {0}
+whoisStatusAvailable = \u00a79 - Estado: Disponible
+whoisStatusAway = \u00a79 - Status: \u00a7cAusente\u00a7f
+worth = \u00a77Pila de {0} con valor de \u00a7c{1}\u00a77 ({2} objeto(s) a {3} cada uno)
+worthMeta = \u00a77Pila de {0} con metadata de {1} , con valor de \u00a7c{2}\u00a77 ({3} objeto(s) a {4} cada uno)
+worthSet = Establecer el valor de un valor
+year = a&ntilde;o
+years = a&ntilde;os
+youAreHealed = \u00a77Has sido curado.
+youHaveNewMail = \u00a7cTienes {0} mensajes!\u00a7f Pon \u00a77/mail read\u00a7f para ver tus emails no leidos!.
diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties
index b96f48339..34b18e766 100644
--- a/Essentials/src/messages_fr.properties
+++ b/Essentials/src/messages_fr.properties
@@ -5,10 +5,10 @@
action = * {0} {1}
addedToAccount = \u00a7a{0} a \u00e9t\u00e9 rajout\u00e9 a votre compte.
addedToOthersAccount = \u00a7a{0} a \u00e9t\u00e9 ajout\u00e9 \u00e0 {1} compte.
-alertBroke = a cass\u00e9:
+alertBroke = a cass\u00e9:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} \u00e0:{3}
-alertPlaced = a plac\u00e9:
-alertUsed = a utilis\u00e9:
+alertPlaced = a plac\u00e9:
+alertUsed = a utilis\u00e9:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Utilisez la commande /back pour retourner \u00e0 l''endroit ou vous \u00eates mort.
backUsageMsg = \u00a77Retour a votre emplacement pr\u00e9c\u00e8dent.
@@ -33,7 +33,7 @@ cantFindGeoIpDB = N''arrive pas \u00e0 trouver la base de donn\u00e9es GeoIP!
cantReadGeoIpDB = Echec de la lecture de la base de donn\u00e9s GeoIP!
cantSpawnItem = \u00a7cVous n''avez pas le droit de faire apparaitre {0}
commandFailed = \u00c9chec de la commande {0}:
-commandHelpFailedForPlugin=Erreur d'obtention d'aider \u00e0: {0}
+commandHelpFailedForPlugin=Erreur d'obtention d'aider \u00e0: {0}
commandNotLoaded = \u00a7cLa commande {0} a \u00e9t\u00e9 mal charg\u00e9e.
compassBearing = \u00a77Orientation: {0} ({1} degr\u00e9s).
configFileMoveError = \u00c9chec du d\u00e9placement de config.yml vers l''emplacement de backup.
@@ -45,6 +45,7 @@ corruptNodeInConfig = \u00a74Annonce: Votre fichier de configuration a un {0} n\
couldNotFindTemplate = Le mod\u00e8le {0} est introuvable
creatingConfigFromTemplate = Cr\u00e9ation de la configuration \u00e0 partir du mod\u00e8le : {0}
creatingEmptyConfig = Cr\u00e9ation d''une configuration vierge : {0}
+creative=creative
day = jour
days = jours
defaultBanReason = Le marteau du ban a frapp\u00e9!
@@ -78,6 +79,7 @@ failedToWriteConfig = \u00c9chec de l''\u00e9criture de la configuration {0}
fileRenameError = Echec du changement de nom de {0}.
foreverAlone = \u00a7cVous n''avez personne \u00e0 qui r\u00e9pondre.
freedMemory = A lib\u00e9r\u00e9 {0} Mo.
+gameMode=\u00a77Set game mode {0} for {1}.
gcchunks = chunks,
gcentities = entit\u00e9s
gcfree = Free memory: {0} Mo
@@ -103,7 +105,7 @@ hour = heure
hours = heures
ignorePlayer = Vous ignorez d\u00e9sormais {0}.
illegalDate = Format de date ill\u00e9gal.
-infoChapter = S\u00e9lectionner le chapitre :
+infoChapter = S\u00e9lectionner le chapitre :
infoChapterPages = Chapitre {0}, page \u00a7c{1}\u00a7f sur \u00a7c{2}\u00a7f:
infoFileDoesNotExist = Le fichier info.txt n''existe pas. Le fichier est en cours de cr\u00e9ation pour vous.
infoPages = Page \u00a7c{0}\u00a7f de \u00a7c{1}\u00a7f.
@@ -169,6 +171,7 @@ missingPrefixSuffix = Pr\u00e9fixe ou Suffixe manquant pour {0}
mobSpawnError = Erreur lors du changement du spawner de monstres.
mobSpawnLimit = Quantit\u00e9 de monstres limit\u00e9 \u00e0 la limite du serveur.
mobSpawnTarget = Le bloc cible doit \u00eatre un spawner de monstres.
+mobsAvailable=\u00a77Mobs: {0}
moneyRecievedFrom = \u00a7a{0} a \u00e9t\u00e9 re\u00e7u de {1}
moneySentTo = \u00a7a{0} a \u00e9t\u00e9 envoy\u00e9 \u00e0 {1}
moneyTaken = {0} pr\u00e9lev\u00e9(s) de votre compte bancaire.
@@ -249,13 +252,13 @@ powerToolListEmpty = {0} has no commands assigned.
powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned to {1}.
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
-powerToolsEnabled=All of your power tools have been enabled.
powerToolsDisabled=All of your power tools have been disabled.
+powerToolsEnabled=All of your power tools have been enabled.
protectionOwner = \u00a76[EssentialsProtect] Propri\u00e9taire de la protection : {0}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Tous les plugins ont \u00e9t\u00e9 recharg\u00e9s.
repair = You have successfully repaired your: \u00a7e{0}.
-repairAlreadyFixed = \u00a77This item does not need repairing.
+repairAlreadyFixed = \u00a77This item does not need repairing.
repairInvalidType = \u00a7cThis item cannot be repaired.
repairNone = There were no items that needing repairing.
requestAccepted = \u00a77Demande de t\u00e9l\u00e9portation accept\u00e9e.
@@ -283,6 +286,7 @@ spawnSet = \u00a77Le point de spawn a \u00e9t\u00e9 d\u00e9fini pour le groupe {
spawned = spawn\u00e9
suicideMessage = \u00a77Au revoir monde cruel...
suicideSuccess = \u00a77{0} a pris sa propre vie.
+survival=survival
takenFromAccount = \u00a7c{0} ont \u00e9t\u00e9 pris de votre compte.
takenFromOthersAccount = \u00a7c{0} a \u00e9t\u00e9 prise de {1} compte.
teleportAAll = \u00a77Teleporting request sent to all players...
@@ -351,6 +355,7 @@ weatherStorm = \u00a77Vous avez d\u00e9fini l''orage dans {0}
weatherStormFor = \u00a77Vous avez d\u00e9fini l''orage dans {0} pour {1} secondes.
weatherSun = \u00a77Vous avez mis le beau temps dans {0}
weatherSunFor = \u00a77Vous avez mis le beau temps dans {0} pour {1} secondes.
+whoisGamemode = \u00a79 - Gamemode: {0}
whoisGeoLocation = \u00a79 - Emplacement: {0}
whoisHealth = \u00a79 - Vie: {0} / 20
whoisIPAddress = \u00a79 - Adresse IP: {0}
@@ -366,5 +371,3 @@ year = ann\u00e9e
years = ann\u00e9es
youAreHealed = \u00a77Vous avez \u00e9t\u00e9 soign\u00e9.
youHaveNewMail = \u00a7cVous avez {0} messages! \u00a7fEntrez \u00a77/mail read\u00a7f pour voir votre courrier.
-
-
diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties
index f5d9fdc70..502bcf6b0 100644
--- a/Essentials/src/messages_nl.properties
+++ b/Essentials/src/messages_nl.properties
@@ -33,18 +33,19 @@ cantFindGeoIpDB = De GeoIP database kon niet gevonden worden!
cantReadGeoIpDB = Fout bij het lezen van de GeoIP database!
cantSpawnItem = \u00a7cJe bent niet bevoegd om {0} te spawnen.
commandFailed = Opdracht {0} mislukt:
-commandHelpFailedForPlugin=Fout bij het \u200b\u200bkrijgen van hulp voor: {0}
+commandHelpFailedForPlugin=Fout bij het \u200b\u200bkrijgen van hulp voor: {0}
commandNotLoaded = \u00a7cOpdracht {0} is fout geladen.
compassBearing = \u00a77Ligging: {0} ({1} graden).
configFileMoveError = Het verplaatsen van config.yml naar de backup locatie is mislukt.
configFileRenameError = Fout bij het hernoemen van de tijdelijke map naar config.yml
-connectedPlayers = Spelers online:
+connectedPlayers = Spelers online:
connectionFailed = Fout bij het verbinden.
cooldownWithMessage = \u00a7cAfkoeltijd: {0}
corruptNodeInConfig = \u00a74Waarschuwing: Het configuratiebestand bevat een fout {0}.
couldNotFindTemplate = Het sjabloon kon niet worden gevonden {0}
creatingConfigFromTemplate = Bezig met aanmaken van een config vanaf sjabloon: {0}
creatingEmptyConfig = Bezig met een lege config aanmaken: {0}
+creative=creative
day = dag
days = dagen
defaultBanReason = De Ban Hamer heeft gesproken!
@@ -78,6 +79,7 @@ failedToWriteConfig = Fout bij het cre\u00ebren van config {0}
fileRenameError = Hernoemen van {0} mislukt
foreverAlone = \u00a7cJe hebt niemand waarnaar je kan reageren.
freedMemory = {0} MB gelost.
+gameMode=\u00a77Set game mode {0} for {1}.
gcchunks = chunks,
gcentities = entities
gcfree = Vrij geheugen: {0} MB
@@ -103,8 +105,8 @@ hour = uur
hours = uren
ignorePlayer = Je negeert {0} vanaf nu.
illegalDate = Illegaal data formaat.
-infoChapter = Selecteer hoofdstuk:
-infoChapterPages = Hoofdstuk {0}, Pagina \u00a7c{1}\u00a7f van de \u00a7c{2}\u00a7f:
+infoChapter = Selecteer hoofdstuk:
+infoChapterPages = Hoofdstuk {0}, Pagina \u00a7c{1}\u00a7f van de \u00a7c{2}\u00a7f:
infoFileDoesNotExist = Bestand info.txt bestaat niet. Bezig met aanmaken.
infoPages = Pagina \u00a7c{0}\u00a7f van de \u00a7c{1}\u00a7f:
infoUnknownChapter = Onbekend hoofdstuk.
@@ -123,7 +125,7 @@ is = is
itemCannotBeSold = Dat voorwerp kan niet aan de server worden verkocht.
itemMustBeStacked = Voorwerp moet geruild worden als stapel. Een hoeveelheid van 2 moet dus geruild worden als twee stapels, etc.
itemNotEnough1 = \u00a7cJe hebt niet genoeg van dat voorwerp om te verkopen.
-itemNotEnough2 = \u00a77Type /sell itemname Als je alles daarvan wilt verkopen
+itemNotEnough2 = \u00a77Type /sell itemname Als je alles daarvan wilt verkopen
itemNotEnough3 = \u00a77/sell itemname -1 zorgt ervoor dat ze allemaal behalve 1 worden verkocht, etc.
itemSellAir = Je wilde serieus lucht verkopen? Plaats een voorwerp in je hand.
itemSold = \u00a77Verkocht voor \u00a7c{0} \u00a77({1} {2} voorwerpen voor {3} per stuk)
@@ -169,6 +171,7 @@ missingPrefixSuffix = Er mist een prefix of suffix voor {0}
mobSpawnError = Fout bij het veranderen van de mob spawner.
mobSpawnLimit = Grootte van de mob hang af van het server limiet
mobSpawnTarget = Target blok moet een mob spawner zijn.
+mobsAvailable=\u00a77Mobs: {0}
moneyRecievedFrom = \u00a7a{0} is ontvangen van {1}
moneySentTo = \u00a7a{0} is verzonden naar {1}
moneyTaken = {0} van je bankrekening afgehaald.
@@ -188,7 +191,7 @@ nickInUse = \u00a7cDie naam is al in gebruik.
nickNamesAlpha = \u00a7cNicknames moeten alfanumeriek zijn.
nickNoMore = \u00a7Je hebt geen nickname meer.
nickOthersPermission = \u00a7cJe hebt geen toestemming om de nickname van anderen te veranderen
-nickSet = \u00a77Je nickname is nu \u00a7c{0}
+nickSet = \u00a77Je nickname is nu \u00a7c{0}
noAccessCommand = \u00a7cJe hebt geen toegang tot die opdracht.
noAccessPermission = \u00a7cJe hebt hier geen toegang voor {0}.
noDestroyPermission = \u00a7cJe hebt geen toegang om dat te vernietigen {0}.
@@ -249,13 +252,13 @@ powerToolListEmpty = {0} has no commands assigned.
powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned to {1}.
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
-powerToolsEnabled=All of your power tools have been enabled.
powerToolsDisabled=All of your power tools have been disabled.
+powerToolsEnabled=All of your power tools have been enabled.
protectionOwner = \u00a76[EssentialsProtect] Beschermingeigenaar: {0}
questionFormat = \u00a77[Vraag]\u00a7f {0}
reloadAllPlugins = \u00a77Alle plugins zijn herladen.
repair = You have successfully repaired your: \u00a7e{0}.
-repairAlreadyFixed = \u00a77This item does not need repairing.
+repairAlreadyFixed = \u00a77This item does not need repairing.
repairInvalidType = \u00a7cThis item cannot be repaired.
repairNone = There were no items that needing repairing.
requestAccepted = \u00a77Teleporteer aanvraag geaccepteerd.
@@ -283,6 +286,7 @@ spawnSet = \u00a77Spawn locatie voor de groep {0} ingesteld.
spawned = gespawned
suicideMessage = \u00a77Vaarwel vreedzame wereld...
suicideSuccess = \u00a77{0} pleegde zelfmoord
+survival=survival
takenFromAccount = \u00a7c{0} is van je bank rekening afgehaald.
takenFromOthersAccount = \u00a7c{0} is overgenomen uit {1} account.
teleportAAll = \u00a77Teleporting request sent to all players...
@@ -351,6 +355,7 @@ weatherStorm = \u00a77Je hebt het weer naar storm gezet in de {0}
weatherStormFor = \u00a77Je hebt het weer in de {0} naar storm gezet voor {1} seconde
weatherSun = \u00a77Je hebt het weer naar zon gezet in de {0}
weatherSunFor = \u00a77Je hebt het weer in de {0} naar zon gezet voor {1} seconde
+whoisGamemode = \u00a79 - Gamemode: {0}
whoisGeoLocation = \u00a79 - Locatie: {0}
whoisHealth = \u00a79 - Levens: {0}/20
whoisIPAddress = \u00a79 - IP Adres: {0}
@@ -366,5 +371,3 @@ year = jaar
years = jaren
youAreHealed = \u00a77Je bent genezen.
youHaveNewMail = \u00a7cJe hebt {0} berichten!\u00a7f Type \u00a77/mail read\u00a7f om je berichten te bekijken.
-
-
diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml
index 1240910ce..a82ec81a2 100644
--- a/Essentials/src/plugin.yml
+++ b/Essentials/src/plugin.yml
@@ -18,7 +18,7 @@ commands:
back:
description: Teleports you to your location prior to tp/spawn/warp.
usage: /<command>
- aliases: [eback]
+ aliases: [eback,return,ereturn]
backup:
description: Runs the backup if configured.
usage: /<command>
@@ -78,7 +78,7 @@ commands:
eco:
description: Manages the server economy.
usage: /<command> [give|take|reset] [player] [amount]
- aliases: [economy,emoney]
+ aliases: [economy,eeco,eeconomy]
essentials:
description: Reloads essentials.
usage: /<command>
@@ -90,10 +90,14 @@ commands:
description: Throw a fireball.
usage: /<command>
aliases: [efireball]
+ gamemode:
+ description: Change player gamemode.
+ usage: /<command> [player]
+ aliases: [gm,creative,creativemode,egamemode,ecreative,ecreativemode,egm]
getpos:
description: Get your current coordinates.
usage: /<command>
- aliases: [coords,egetpos]
+ aliases: [coords,egetpos,whereami,ewhereami]
gc:
description: Reports garbage collection info; useful to developers.
usage: /<command>
@@ -104,8 +108,8 @@ commands:
aliases: [egive]
god:
description: Enables your godly powers.
- usage: /<command>
- aliases: [tgm,godmode,egod,egodmode,etgm]
+ usage: /<command> [player]
+ aliases: [tgm,godmode,egod,etgm,egodmode]
heal:
description: Heals you or the given player.
usage: /<command> <player>
@@ -169,7 +173,7 @@ commands:
lightning:
description: The power of Thor. Strike at cursor or player.
usage: /<command> [player]
- aliases: [strike,smite,elightning,estrike,esmite]
+ aliases: [strike,smite,thor,shock,elightning,estrike,esmite,ethor,eshock]
mail:
description: Manages inter-player, intra-server mail.
usage: /<command> [read|clear|send [to] [message]]
@@ -177,7 +181,7 @@ commands:
me:
description: Describes an action in the context of the player.
usage: /<command> [description]
- aliases: [eme]
+ aliases: [action,describe,eme,eaction,edescribe]
motd:
description: Views the Message Of The Day.
usage: /<command>
@@ -212,7 +216,7 @@ commands:
aliases: [pt,epowertool,ept]
powertooltoggle:
description: Enables or disables all current powertools
- usage: /<command>
+ usage: /<command>
aliases: [ptt,epowertooltoggle,eptt]
ptime:
description: Adjust player's client time. Add @ prefix to fix.
@@ -305,39 +309,47 @@ commands:
tpa:
description: Request to teleport to the specified player.
usage: /<command> <player>
+ aliases: [call,etpa,ecal]
tpaall:
description: Requests all players online to teleport to you.
usage: /<command> <player>
+ aliases: [etpaall]
tpaccept:
description: Accepts a teleport request.
usage: /<command>
- aliases: [tpyes]
+ aliases: [tpyes,etpaccept,etpyes]
tpahere:
description: Request that the specified player teleport to you.
usage: /<command> <player>
+ aliases: [etpahere]
tpall:
description: Teleport all online players to another player.
usage: /<command> <player>
+ aliases: [etpall]
tpdeny:
description: Reject a teleport request.
usage: /<command>
- aliases: [tpno]
+ aliases: [tpno,etpdeny,etpno]
tphere:
description: Teleport a player to you.
usage: /<command> [player]
- aliases: [s]
+ aliases: [s,etphere]
tpo:
description: Teleport override for tptoggle.
usage: /<command> <player>
+ aliases: [etpo]
tpohere:
description: Teleport here override for tptoggle.
usage: /<command> <player>
+ aliases: [etpohere]
tppos:
description: Teleport to coordinates.
usage: /<command> <x> <y> <z> [yaw] [pitch]
+ aliases: [etppos]
tptoggle:
description: Blocks all forms of teleportation.
usage: /<command>
+ aliases: [etptoggle]
tree:
description: Spawn a tree where you are looking.
usage: /<command> [tree|birch|redwood]
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
index 7a10d9a92..c0559ddef 100644
--- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
@@ -24,8 +24,12 @@ public class EssentialsChat extends JavaPlugin
chatListener = new HashMap<String, IEssentialsChatListener>();
- final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer(), ess, chatListener);
- pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.High, this);
+ final EssentialsChatPlayerListenerLowest playerListenerLowest = new EssentialsChatPlayerListenerLowest(getServer(), ess, chatListener);
+ final EssentialsChatPlayerListenerNormal playerListenerNormal = new EssentialsChatPlayerListenerNormal(getServer(), ess, chatListener);
+ final EssentialsChatPlayerListenerHighest playerListenerHighest = new EssentialsChatPlayerListenerHighest(getServer(), ess, chatListener);
+ pluginManager.registerEvent(Type.PLAYER_CHAT, playerListenerLowest, Priority.Lowest, this);
+ pluginManager.registerEvent(Type.PLAYER_CHAT, playerListenerNormal, Priority.Normal, this);
+ pluginManager.registerEvent(Type.PLAYER_CHAT, playerListenerHighest, Priority.Highest, this);
if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion()))
{
LOGGER.log(Level.WARNING, Util.i18n("versionMismatchAll"));
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
new file mode 100644
index 000000000..aeaa38d89
--- /dev/null
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
@@ -0,0 +1,163 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.earth2me.essentials.chat;
+
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.Trade;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+import java.util.Map;
+import java.util.logging.Logger;
+import org.bukkit.Location;
+import org.bukkit.Server;
+import org.bukkit.World;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.event.player.PlayerChatEvent;
+import org.bukkit.event.player.PlayerListener;
+
+
+/**
+ *
+ * @author Seiji
+ */
+public abstract class EssentialsChatPlayer extends PlayerListener
+{
+ protected transient IEssentials ess;
+ protected final static Logger logger = Logger.getLogger("Minecraft");
+ protected final transient Map<String, IEssentialsChatListener> listeners;
+ protected final transient Server server;
+
+ public EssentialsChatPlayer(Server server, IEssentials ess, Map<String, IEssentialsChatListener> listeners)
+ {
+ this.ess = ess;
+ this.listeners = listeners;
+ this.server = server;
+ }
+
+ public void onPlayerChat(final PlayerChatEvent event)
+ {
+ }
+
+ public boolean isAborted(final PlayerChatEvent event)
+ {
+ return isAborted(event, "chat");
+ }
+
+ public boolean isAborted(final PlayerChatEvent event, final String command)
+ {
+ if (event.isCancelled())
+ {
+ return true;
+ }
+ for (IEssentialsChatListener listener : listeners.values())
+ {
+ if (listener.shouldHandleThisChat(event))
+ {
+ return true;
+ }
+ }
+
+ final User user = ess.getUser(event.getPlayer());
+ if (!isAffordableFor(user, command))
+ {
+ event.setCancelled(true);
+ return true;
+ }
+ return false;
+ }
+
+ public String getChatType(final String message)
+ {
+ switch (message.charAt(0))
+ {
+ case '!':
+ return "shout";
+ case '?':
+ return "question";
+ default:
+ return "";
+ }
+ }
+
+ protected void charge(final CommandSender sender, final String command) throws ChargeException
+ {
+ if (sender instanceof Player)
+ {
+ final Trade charge = new Trade(command, ess);
+ charge.charge(ess.getUser((Player)sender));
+ }
+ }
+
+ protected boolean isAffordableFor(final CommandSender sender, final String command)
+ {
+ if (sender instanceof Player)
+ {
+ try
+ {
+ final Trade charge = new Trade(command, ess);
+ charge.isAffordableFor(ess.getUser((Player)sender));
+ }
+ catch (ChargeException e)
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ protected void sendLocalChat(final User sender, final long radius, final PlayerChatEvent event)
+ {
+ event.setCancelled(true);
+ logger.info(Util.format("localFormat", sender.getName(), event.getMessage()));
+ final Location loc = sender.getLocation();
+ final World world = loc.getWorld();
+ final int x = loc.getBlockX();
+ final int y = loc.getBlockY();
+ final int z = loc.getBlockZ();
+ for (Player p : server.getOnlinePlayers())
+ {
+ String type = "[L]";
+ final User u = ess.getUser(p);
+ //TODO: remove reference to op
+ if (u.isIgnoredPlayer(sender.getName()) && !sender.isOp())
+ {
+ continue;
+ }
+ if (!u.equals(sender))
+ {
+ final Location l = u.getLocation();
+ final int dx = x - l.getBlockX();
+ final int dy = y - l.getBlockY();
+ final int dz = z - l.getBlockZ();
+ final long delta = dx * dx + dy * dy + dz * dz;
+ if (delta > radius || world != l.getWorld())
+ {
+ if (!u.isAuthorized("essentials.chat.spy"))
+ {
+ continue;
+ }
+ else
+ {
+ type = type.concat("[Spy]");
+ }
+ }
+ }
+
+ String message = String.format(event.getFormat(), type.concat(sender.getDisplayName()), event.getMessage());
+ for (IEssentialsChatListener listener : listeners.values())
+ {
+ message = listener.modifyMessage(event, p, message);
+ }
+ u.sendMessage(message);
+ }
+ }
+}
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java
deleted file mode 100644
index 85e821e7f..000000000
--- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package com.earth2me.essentials.chat;
-
-import com.earth2me.essentials.ChargeException;
-import com.earth2me.essentials.IEssentials;
-import com.earth2me.essentials.Trade;
-import com.earth2me.essentials.User;
-import com.earth2me.essentials.Util;
-import java.util.Map;
-import java.util.logging.Logger;
-import org.bukkit.Location;
-import org.bukkit.Server;
-import org.bukkit.World;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.event.player.PlayerChatEvent;
-import org.bukkit.event.player.PlayerListener;
-
-
-public class EssentialsChatPlayerListener extends PlayerListener
-{
- private static final Logger LOGGER = Logger.getLogger("Minecraft");
- private final transient IEssentials ess;
- private final transient Server server;
- private final transient Map<String, IEssentialsChatListener> listeners;
-
- public EssentialsChatPlayerListener(final Server server, final IEssentials ess, final Map<String, IEssentialsChatListener> listeners)
- {
- this.server = server;
- this.ess = ess;
- this.listeners = listeners;
- }
-
- @Override
- public void onPlayerChat(final PlayerChatEvent event)
- {
- if (event.isCancelled())
- {
- return;
- }
-
- for (IEssentialsChatListener listener : listeners.values())
- {
- if (listener.shouldHandleThisChat(event))
- {
- return;
- }
- }
-
- final User user = ess.getUser(event.getPlayer());
-
- if (user.isAuthorized("essentials.chat.color"))
- {
- event.setMessage(event.getMessage().replaceAll("&([0-9a-f])", "§$1"));
- }
-
- event.setFormat(ess.getSettings().getChatFormat(user.getGroup()).replace('&', '§').replace("§§", "&").replace("{DISPLAYNAME}", "%1$s").replace("{GROUP}", user.getGroup()).replace("{MESSAGE}", "%2$s").replace("{WORLDNAME}", user.getWorld().getName()).replace("{SHORTWORLDNAME}", user.getWorld().getName().substring(0, 1).toUpperCase()));
-
- long radius = ess.getSettings().getChatRadius();
- if (radius < 1)
- {
- return;
- }
- radius *= radius;
-
- try {
- if (event.getMessage().startsWith("!") && event.getMessage().length() > 1)
- {
- if (user.isAuthorized("essentials.chat.shout"))
- {
- charge(user,"chat-shout");
- event.setMessage(event.getMessage().substring(1));
- event.setFormat(Util.format("shoutFormat", event.getFormat()));
- return;
- }
- user.sendMessage(Util.i18n("notAllowedToShout"));
- event.setCancelled(true);
- return;
- }
-
- if (event.getMessage().startsWith("?") && event.getMessage().length() > 1)
- {
- if (user.isAuthorized("essentials.chat.question"))
- {
- charge(user,"chat-question");
- event.setMessage(event.getMessage().substring(1));
- event.setFormat(Util.format("questionFormat", event.getFormat()));
- return;
- }
- user.sendMessage(Util.i18n("notAllowedToQuestion"));
- event.setCancelled(true);
- return;
- }
- }
- catch (ChargeException ex)
- {
- ess.showError(user, ex, "Shout");
- return;
- }
-
- event.setCancelled(true);
- LOGGER.info(Util.format("localFormat", user.getName(), event.getMessage()));
-
- final Location loc = user.getLocation();
- final World world = loc.getWorld();
- final int x = loc.getBlockX();
- final int y = loc.getBlockY();
- final int z = loc.getBlockZ();
-
- for (Player p : server.getOnlinePlayers())
- {
- final User u = ess.getUser(p);
- if (u.isIgnoredPlayer(user.getName()) && !user.isOp())
- {
- continue;
- }
- if (!u.equals(user) && !u.isAuthorized("essentials.chat.spy"))
- {
- final Location l = u.getLocation();
- final int dx = x - l.getBlockX();
- final int dy = y - l.getBlockY();
- final int dz = z - l.getBlockZ();
- final long delta = dx*dx + dy*dy + dz*dz;
- if (delta > radius || world != l.getWorld())
- {
- continue;
- }
- }
- String message = String.format(event.getFormat(), user.getDisplayName(), event.getMessage());
-
- for (IEssentialsChatListener listener : listeners.values())
- {
- message = listener.modifyMessage(event, p, message);
- }
-
- u.sendMessage(message);
- }
- }
- protected void charge(final CommandSender sender, final String command) throws ChargeException
- {
- if (sender instanceof Player)
- {
- final Trade charge = new Trade(command, ess);
- charge.charge(ess.getUser((Player)sender));
- }
- }
-}
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java
new file mode 100644
index 000000000..17a219acd
--- /dev/null
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java
@@ -0,0 +1,50 @@
+package com.earth2me.essentials.chat;
+
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.User;
+import java.util.Map;
+import org.bukkit.Server;
+import org.bukkit.event.player.PlayerChatEvent;
+
+
+public class EssentialsChatPlayerListenerHighest extends EssentialsChatPlayer
+{
+ public EssentialsChatPlayerListenerHighest(Server server, IEssentials ess, Map<String, IEssentialsChatListener> listeners)
+ {
+ super(server, ess, listeners);
+ }
+
+ @Override
+ public void onPlayerChat(final PlayerChatEvent event)
+ {
+ if (isAborted(event))
+ {
+ return;
+ }
+
+ /**
+ * This file should handle charging the user for the action before returning control back
+ */
+ final User user = ess.getUser(event.getPlayer());
+ final String chatType = getChatType(event.getMessage());
+ final StringBuilder command = new StringBuilder();
+ command.append("chat");
+
+ if (chatType.length() > 0)
+ {
+ command.append("-").append(chatType);
+ }
+
+ try
+ {
+ charge(user, command.toString());
+ }
+ catch (ChargeException e)
+ {
+ ess.showError(user, e, command.toString());
+ event.setCancelled(true);
+ return;
+ }
+ }
+}
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java
new file mode 100644
index 000000000..a7ade803b
--- /dev/null
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java
@@ -0,0 +1,38 @@
+package com.earth2me.essentials.chat;
+
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+import java.util.Map;
+import org.bukkit.Server;
+import org.bukkit.event.player.PlayerChatEvent;
+
+
+public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer
+{
+ public EssentialsChatPlayerListenerLowest(Server server, IEssentials ess, Map<String, IEssentialsChatListener> listeners)
+ {
+ super(server, ess, listeners);
+ }
+
+ @Override
+ public void onPlayerChat(final PlayerChatEvent event)
+ {
+ if (isAborted(event))
+ {
+ return;
+ }
+
+ /**
+ * This listener should apply the general chat formatting only...then return control back
+ * the event handler
+ */
+ final User user = ess.getUser(event.getPlayer());
+ if (user.isAuthorized("essentials.chat.color"))
+ {
+ event.setMessage(event.getMessage().replaceAll("&([0-9a-f])", "\u00a7$1"));
+ }
+ event.setFormat(ess.getSettings().getChatFormat(user.getGroup()).replace('&', '\u00a7').replace("\u00a7\u00a7", "&").replace("{DISPLAYNAME}", "%1$s").replace("{GROUP}", user.getGroup()).replace("{MESSAGE}", "%2$s").replace("{WORLDNAME}", user.getWorld().getName()).replace("{SHORTWORLDNAME}", user.getWorld().getName().substring(0, 1).toUpperCase()));
+ }
+}
diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java
new file mode 100644
index 000000000..d726cb569
--- /dev/null
+++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java
@@ -0,0 +1,76 @@
+package com.earth2me.essentials.chat;
+
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.Util;
+import java.util.Map;
+import org.bukkit.Server;
+import org.bukkit.event.player.PlayerChatEvent;
+
+
+public class EssentialsChatPlayerListenerNormal extends EssentialsChatPlayer
+{
+ public EssentialsChatPlayerListenerNormal(Server server, IEssentials ess, Map<String, IEssentialsChatListener> listeners)
+ {
+ super(server, ess, listeners);
+ }
+
+ @Override
+ public void onPlayerChat(final PlayerChatEvent event)
+ {
+ if (isAborted(event))
+ {
+ return;
+ }
+
+ /**
+ * This file should handle detection of the local chat features...
+ * if local chat is enabled, we need to handle it here
+ */
+ final User user = ess.getUser(event.getPlayer());
+ final String chatType = getChatType(event.getMessage());
+ long radius = ess.getSettings().getChatRadius();
+ if (radius < 1)
+ {
+ return;
+ }
+ radius *= radius;
+ try
+ {
+ if (event.getMessage().length() > 0 && chatType.length() > 0)
+ {
+ StringBuilder permission = new StringBuilder();
+ permission.append("essentials.chat.").append(chatType);
+
+ StringBuilder command = new StringBuilder();
+ command.append("chat-").append(chatType);
+
+ StringBuilder format = new StringBuilder();
+ format.append(chatType).append("Format");
+
+ StringBuilder errorMsg = new StringBuilder();
+ errorMsg.append("notAllowedTo").append(chatType.substring(0, 1).toUpperCase()).append(chatType.substring(1));
+
+ if (user.isAuthorized(permission.toString()))
+ {
+ charge(user, command.toString());
+ event.setMessage(event.getMessage().substring(1));
+ event.setFormat(Util.format(format.toString(), event.getFormat()));
+ return;
+ }
+
+ user.sendMessage(Util.i18n(errorMsg.toString()));
+ event.setCancelled(true);
+ return;
+ }
+ }
+ catch (ChargeException ex)
+ {
+ ess.showError(user, ex, "Shout");
+ event.setCancelled(true);
+ return;
+ }
+ sendLocalChat(user, radius, event);
+ }
+}
diff --git a/WebPush/index.php b/WebPush/index.php
index ab018bf27..fc3405fe2 100644
--- a/WebPush/index.php
+++ b/WebPush/index.php
@@ -22,14 +22,15 @@ $build = $_GET['buildid'];
$branch = $_GET['branch'];
$version = $_GET['version'];
-if ($build == "" || $branch == "" || $version == "")
-{
- die();
+include('../build/function.php');
+updateval($branch);
+
+if ($build == "" || $branch == "" || $version == "") {
+ die('Invalid');
}
//Don't upload dev builds atm.
-if ($branch == "bt2")
-{
+if ($branch == "bt2") {
die();
}
diff --git a/WebPush/upload.php b/WebPush/upload.php
index cf5c2112e..f971062ed 100644
--- a/WebPush/upload.php
+++ b/WebPush/upload.php
@@ -1,35 +1,32 @@
<?php
+
include_once('simple_html_dom.php');
-function uploadit($build, $branch, $file, $version, $changes)
-{
+function uploadit($build, $branch, $file, $version, $changes) {
file_put_contents('status.log', "\nUploading file $file to devbukkit! ", FILE_APPEND);
$slug = "essentials";
$plugin = "Essentials";
$url = "http://ci.earth2me.net/guestAuth/repository/download/$branch/$build:id/$file";
$filename = explode('.', $file);
$request_url = "http://dev.bukkit.org/server-mods/$slug/upload-file.json";
-
+
include ('apikey.php');
-
+
$params['name'] = $filename[0] . '-' . $version;
$params['game_versions'] = 176;
$params['change_log'] = $changes;
$params['change_markup_type'] = "html";
$params['fileurl'] = $url;
-
- if (stripos($version, 'Dev') !== false)
- {
+
+ if (stripos($version, 'Dev') !== false) {
$params['file_type'] = "a";
}
- elseif (stripos($version, 'Pre') !== false)
- {
+ elseif (stripos($version, 'Pre') !== false) {
$params['file_type'] = "b";
}
- else
- {
+ else {
$params['file_type'] = "r";
- }
+ }
$content = file_get_contents($url);
file_put_contents($file, $content);
@@ -42,13 +39,11 @@ function uploadit($build, $branch, $file, $version, $changes)
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$result = curl_exec($ch);
-
- if ($result === false)
- {
+
+ if ($result === false) {
$result = curl_error($ch);
}
- elseif ($result == "")
- {
+ elseif ($result == "") {
$result = "Success uploading $file - $version";
}
curl_close($ch);
@@ -57,8 +52,7 @@ function uploadit($build, $branch, $file, $version, $changes)
return true;
}
-function getChanges($job, $project)
-{
+function getChanges($job, $project) {
$commitblacklist = array(
'Merge branch',
'Merge pull',
@@ -72,20 +66,15 @@ function getChanges($job, $project)
$html->load_file($url);
$output = "Change Log:<ul>";
- foreach ($html->find('.changelist') as $list)
- {
- foreach ($list->find('.comment') as $comment)
- {
+ foreach ($html->find('.changelist') as $list) {
+ foreach ($list->find('.comment') as $comment) {
$text = $comment->innertext;
- foreach ($commitblacklist as $matchtext)
- {
- if (stripos($text, $matchtext) !== FALSE)
- {
+ foreach ($commitblacklist as $matchtext) {
+ if (stripos($text, $matchtext) !== FALSE) {
$text = "";
}
}
- if ($text != "")
- {
+ if ($text != "") {
$output .= "<li>$text</li>\n";
}
}