diff --git a/BuildAll/nbproject/build-impl.xml b/BuildAll/nbproject/build-impl.xml
index d52f998c1..89e33e7cd 100644
--- a/BuildAll/nbproject/build-impl.xml
+++ b/BuildAll/nbproject/build-impl.xml
@@ -12,9 +12,9 @@ is divided into following sections:
- execution
- debugging
- javadoc
- - junit compilation
- - junit execution
- - junit debugging
+ - test compilation
+ - test execution
+ - test debugging
- applet
- cleanup
@@ -181,6 +181,7 @@ is divided into following sections:
+
@@ -225,6 +226,27 @@ is divided into following sections:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -357,11 +379,52 @@ is divided into following sections:
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -370,32 +433,270 @@ is divided into following sections:
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No tests executed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
@@ -427,10 +728,13 @@ is divided into following sections:
-
+
Must set JVM to use for profiling in profiler.info.jvm
Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
+
@@ -488,6 +792,7 @@ is divided into following sections:
+
@@ -504,6 +809,7 @@ is divided into following sections:
+
@@ -511,6 +817,7 @@ is divided into following sections:
+
@@ -537,6 +844,9 @@ is divided into following sections:
+
+
+
@@ -582,7 +892,7 @@ is divided into following sections:
-
+
-
+
+
+ This target only works when run from inside the NetBeans IDE.
@@ -869,8 +1183,9 @@ is divided into following sections:
-
+
Must select one file in the IDE or set profile.class
+ This target only works when run from inside the NetBeans IDE.
@@ -878,12 +1193,8 @@ is divided into following sections:
-
-
+
+ This target only works when run from inside the NetBeans IDE.
@@ -895,12 +1206,8 @@ is divided into following sections:
-
-
+
+ This target only works when run from inside the NetBeans IDE.
@@ -922,6 +1229,42 @@ is divided into following sections:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
@@ -1008,14 +1351,14 @@ is divided into following sections:
-
+
Some tests failed; see details above.
@@ -1028,39 +1371,40 @@ is divided into following sections:
Must select some files in the IDE or set test.includes
-
+
Some tests failed; see details above.
+
+ Must select some files in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+ Some tests failed; see details above.
+
+
-
+
Must select one file in the IDE or set test.class
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Must select one file in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
@@ -1188,9 +1532,12 @@ is divided into following sections:
-
-
-
+
+
+
+
+
+
diff --git a/BuildAll/nbproject/genfiles.properties b/BuildAll/nbproject/genfiles.properties
index de7702440..cf660eaf5 100644
--- a/BuildAll/nbproject/genfiles.properties
+++ b/BuildAll/nbproject/genfiles.properties
@@ -4,5 +4,5 @@ build.xml.stylesheet.CRC32=28e38971@1.50.3.46
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=b4df970c
-nbproject/build-impl.xml.script.CRC32=1fd6d3cc
-nbproject/build-impl.xml.stylesheet.CRC32=fcddb364@1.50.3.46
+nbproject/build-impl.xml.script.CRC32=8905537e
+nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index c1d4e9f74..9ba2c696a 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -65,7 +65,7 @@ import org.yaml.snakeyaml.error.YAMLException;
public class Essentials extends JavaPlugin implements IEssentials
{
- public static final int BUKKIT_VERSION = 2396;
+ public static final int BUKKIT_VERSION = 2455;
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient ISettings settings;
private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this);
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
index 0c4d7b9e1..e93c61952 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
@@ -5,10 +5,7 @@ import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Material;
-import org.bukkit.entity.Ageable;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Player;
+import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -37,51 +34,18 @@ public class EssentialsEntityListener implements Listener
{
final User defender = ess.getUser(eDefend);
final User attacker = ess.getUser(eAttack);
-
- if (ess.getSettings().getLoginAttackDelay() > 0 && !attacker.isAuthorized("essentials.pvpdelay.exempt")
- && (System.currentTimeMillis() < (attacker.getLastLogin() + ess.getSettings().getLoginAttackDelay())))
+ onPlayerVsPlayerDamage(event, defender, attacker);
+ onPlayerVsPlayerPowertool(event, defender, attacker);
+ }
+ else if (eDefend instanceof Player && eAttack instanceof Projectile)
+ {
+ Entity shooter = ((Projectile)event.getDamager()).getShooter();
+ if (shooter instanceof Player)
{
- event.setCancelled(true);
- }
-
- if (attacker.hasInvulnerabilityAfterTeleport() || defender.hasInvulnerabilityAfterTeleport())
- {
- event.setCancelled(true);
- }
-
- if (attacker.isGodModeEnabled() && !attacker.isAuthorized("essentials.god.pvp"))
- {
- event.setCancelled(true);
- }
-
- if (attacker.isHidden() && !attacker.isAuthorized("essentials.vanish.pvp"))
- {
- event.setCancelled(true);
- }
-
- attacker.updateActivity(true);
- final List commandList = attacker.getPowertool(attacker.getItemInHand());
- if (commandList != null && !commandList.isEmpty())
- {
- for (final String command : commandList)
- {
- if (command != null && !command.isEmpty())
- {
- ess.scheduleSyncDelayedTask(
- new Runnable()
- {
- @Override
- public void run()
- {
- attacker.getServer().dispatchCommand(attacker.getBase(), command.replaceAll("\\{player\\}", defender.getName()));
- LOGGER.log(Level.INFO, String.format("[PT] %s issued server command: /%s", attacker.getName(), command));
- }
- });
-
- event.setCancelled(true);
- return;
- }
- }
+ final User defender = ess.getUser(eDefend);
+ final User attacker = ess.getUser(shooter);
+ onPlayerVsPlayerDamage(event, defender, attacker);
+ onPlayerVsPlayerPowertool(event, defender, attacker);
}
}
else if (eAttack instanceof Player)
@@ -103,6 +67,59 @@ public class EssentialsEntityListener implements Listener
}
}
+ private void onPlayerVsPlayerDamage(final EntityDamageByEntityEvent event, final User defender, final User attacker)
+ {
+ if (ess.getSettings().getLoginAttackDelay() > 0 && !attacker.isAuthorized("essentials.pvpdelay.exempt")
+ && (System.currentTimeMillis() < (attacker.getLastLogin() + ess.getSettings().getLoginAttackDelay())))
+ {
+ event.setCancelled(true);
+ }
+
+ if (attacker.hasInvulnerabilityAfterTeleport() || defender.hasInvulnerabilityAfterTeleport())
+ {
+ event.setCancelled(true);
+ }
+
+ if (attacker.isGodModeEnabled() && !attacker.isAuthorized("essentials.god.pvp"))
+ {
+ event.setCancelled(true);
+ }
+
+ if (attacker.isHidden() && !attacker.isAuthorized("essentials.vanish.pvp"))
+ {
+ event.setCancelled(true);
+ }
+
+ attacker.updateActivity(true);
+ }
+
+ private void onPlayerVsPlayerPowertool(final EntityDamageByEntityEvent event, final User defender, final User attacker)
+ {
+ final List commandList = attacker.getPowertool(attacker.getItemInHand());
+ if (commandList != null && !commandList.isEmpty())
+ {
+ for (final String command : commandList)
+ {
+ if (command != null && !command.isEmpty())
+ {
+ ess.scheduleSyncDelayedTask(
+ new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ attacker.getServer().dispatchCommand(attacker.getBase(), command.replaceAll("\\{player\\}", defender.getName()));
+ LOGGER.log(Level.INFO, String.format("[PT] %s issued server command: /%s", attacker.getName(), command));
+ }
+ });
+
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+ }
+
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onEntityDamage(final EntityDamageEvent event)
{
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
index afbab584a..ae024da9c 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
@@ -166,7 +166,8 @@ public class EssentialsPlayerListener implements Listener
for (String p : ess.getVanishedPlayers())
{
Player toVanish = ess.getUser(p).getBase();
- if (toVanish.isOnline()) {
+ if (toVanish.isOnline())
+ {
user.hidePlayer(toVanish);
}
}
@@ -174,7 +175,14 @@ public class EssentialsPlayerListener implements Listener
if (user.isAuthorized("essentials.sleepingignored"))
{
- user.setSleepingIgnored(true);
+ ess.scheduleSyncDelayedTask(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ user.setSleepingIgnored(true);
+ }
+ });
}
if (!ess.getSettings().isCommandDisabled("motd") && user.isAuthorized("essentials.motd"))
@@ -204,7 +212,11 @@ public class EssentialsPlayerListener implements Listener
final List mail = user.getMails();
if (mail.isEmpty())
{
- user.sendMessage(_("noNewMail"));
+ final String msg = _("noNewMail");
+ if (!msg.isEmpty())
+ {
+ user.sendMessage(msg);
+ }
}
else
{
@@ -352,9 +364,10 @@ public class EssentialsPlayerListener implements Listener
public void onPlayerChangedWorldHack(final PlayerChangedWorldEvent event)
{
final Player user = event.getPlayer();
- if (user.getGameMode() != GameMode.CREATIVE) {
- user.setAllowFlight(false);
- }
+ if (user.getGameMode() != GameMode.CREATIVE)
+ {
+ user.setAllowFlight(false);
+ }
user.setFlySpeed(0.1f);
user.setWalkSpeed(0.2f);
}
diff --git a/Essentials/src/com/earth2me/essentials/Kit.java b/Essentials/src/com/earth2me/essentials/Kit.java
index d0a3b5d7e..476aaea97 100644
--- a/Essentials/src/com/earth2me/essentials/Kit.java
+++ b/Essentials/src/com/earth2me/essentials/Kit.java
@@ -102,6 +102,13 @@ public class Kit
boolean spew = false;
for (String d : items)
{
+ if (d.startsWith(ess.getSettings().getCurrencySymbol()))
+ {
+ Double value = Double.parseDouble(d.substring(ess.getSettings().getCurrencySymbol().length()).trim());
+ Trade t = new Trade(value, ess);
+ t.pay(user);
+ continue;
+ }
final String[] parts = d.split(" ");
final String[] item = parts[0].split("[:+',;.]", 2);
final int id = Material.getMaterial(Integer.parseInt(item[0])).getId();
diff --git a/Essentials/src/com/earth2me/essentials/Mob.java b/Essentials/src/com/earth2me/essentials/Mob.java
index 6cef12a7c..151cef199 100644
--- a/Essentials/src/com/earth2me/essentials/Mob.java
+++ b/Essentials/src/com/earth2me/essentials/Mob.java
@@ -37,7 +37,10 @@ public enum Mob
MAGMACUBE("MagmaCube", Enemies.ENEMY, EntityType.MAGMA_CUBE),
SNOWMAN("Snowman", Enemies.FRIENDLY, "", EntityType.SNOWMAN),
OCELOT("Ocelot", Enemies.NEUTRAL, EntityType.OCELOT),
- IRONGOLEM("IronGolem", Enemies.NEUTRAL, EntityType.IRON_GOLEM);
+ IRONGOLEM("IronGolem", Enemies.NEUTRAL, EntityType.IRON_GOLEM),
+ WITHER("Wither", Enemies.ENEMY, EntityType.WITHER),
+ BAT("Bat", Enemies.NEUTRAL, EntityType.BAT),
+ WITCH("Witch", Enemies.ENEMY, EntityType.WITCH);
public static final Logger logger = Logger.getLogger("Minecraft");
@@ -68,7 +71,7 @@ public enum Mob
hashMap.put(mob.name.toLowerCase(Locale.ENGLISH), mob);
}
}
-
+
public static Set getMobList() {
return Collections.unmodifiableSet(hashMap.keySet());
}
diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java
index e861056ad..571873384 100644
--- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java
+++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java
@@ -841,6 +841,12 @@ public class OfflinePlayer implements Player
throw new UnsupportedOperationException("Not supported yet.");
}
+ @Override
+ public void setBedSpawnLocation(Location lctn, boolean force)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
@Override
public void playEffect(EntityEffect ee)
{
@@ -1105,4 +1111,10 @@ public class OfflinePlayer implements Player
{
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ @Override
+ public void giveExpLevels(int i)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index ca78aca7b..b178f4c8e 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -558,6 +558,8 @@ public class Settings implements ISettings
return config.getString("locale", "");
}
+ //This method should always only return one character due to the implementation of the calling methods
+ //If you need to use a string currency, for example "coins", use the translation key 'currency'.
@Override
public String getCurrencySymbol()
{
diff --git a/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java b/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java
index 4187f835d..79cdfa7b4 100644
--- a/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java
+++ b/Essentials/src/com/earth2me/essentials/TNTExplodeListener.java
@@ -24,13 +24,13 @@ public class TNTExplodeListener implements Listener, Runnable
if (!enabled)
{
enabled = true;
- timer = ess.scheduleSyncDelayedTask(this, 1000);
+ timer = ess.scheduleSyncDelayedTask(this, 200);
return;
}
if (timer != -1)
{
ess.getScheduler().cancelTask(timer);
- timer = ess.scheduleSyncDelayedTask(this, 1000);
+ timer = ess.scheduleSyncDelayedTask(this, 200);
}
}
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index f74e11f25..2aeeba0ac 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -70,8 +70,8 @@ public class User extends UserData implements Comparable, IReplyTo, IUser
}
return result;
}
-
- private boolean isAuthorizedCheck(final String node)
+
+ private boolean isAuthorizedCheck(final String node)
{
if (base instanceof OfflinePlayer)
@@ -538,7 +538,11 @@ public class User extends UserData implements Comparable, IReplyTo, IUser
if (broadcast && !isHidden())
{
setDisplayNick();
- ess.broadcastMessage(this, _("userIsNotAway", getDisplayName()));
+ final String msg = _("userIsNotAway", getDisplayName());
+ if (!msg.isEmpty())
+ {
+ ess.broadcastMessage(this, msg);
+ }
}
}
lastActivity = System.currentTimeMillis();
@@ -571,7 +575,11 @@ public class User extends UserData implements Comparable, IReplyTo, IUser
if (!isHidden())
{
setDisplayNick();
- ess.broadcastMessage(this, _("userIsAway", getDisplayName()));
+ final String msg = _("userIsAway", getDisplayName());
+ if (!msg.isEmpty())
+ {
+ ess.broadcastMessage(this, msg);
+ }
}
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java
index c71883571..6a5d6dc26 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java
@@ -32,12 +32,13 @@ public class Commandafk extends EssentialsCommand
private void toggleAfk(User user)
{
user.setDisplayNick();
+ String msg = "";
if (!user.toggleAfk())
{
//user.sendMessage(_("markedAsNotAway"));
if (!user.isHidden())
{
- ess.broadcastMessage(user, _("userIsNotAway", user.getDisplayName()));
+ msg = _("userIsNotAway", user.getDisplayName());
}
user.updateActivity(false);
}
@@ -46,8 +47,12 @@ public class Commandafk extends EssentialsCommand
//user.sendMessage(_("markedAsAway"));
if (!user.isHidden())
{
- ess.broadcastMessage(user, _("userIsAway", user.getDisplayName()));
+ msg = _("userIsAway", user.getDisplayName());
}
}
+ if (!msg.isEmpty())
+ {
+ ess.broadcastMessage(user, msg);
+ }
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandexp.java b/Essentials/src/com/earth2me/essentials/commands/Commandexp.java
index f3dac79e2..5d3658470 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandexp.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandexp.java
@@ -125,13 +125,13 @@ public class Commandexp extends EssentialsCommand
sender.sendMessage(_("exp", target.getDisplayName(), SetExpFix.getTotalExperience(target), target.getLevel(), SetExpFix.getExpUntilNextLevel(target)));
}
- private void setExp(final CommandSender sender, final User target, String strAmount, final boolean give)
+ private void setExp(final CommandSender sender, final User target, String strAmount, final boolean give) throws NotEnoughArgumentsException
{
Long amount;
strAmount = strAmount.toLowerCase(Locale.ENGLISH);
- if (strAmount.startsWith("l"))
+ if (strAmount.startsWith("l") || strAmount.endsWith("l"))
{
- strAmount = strAmount.substring(1);
+ strAmount = strAmount.replaceAll("l","");
int neededLevel = Integer.parseInt(strAmount);
if (give)
{
@@ -142,6 +142,10 @@ public class Commandexp extends EssentialsCommand
}
else {
amount = Long.parseLong(strAmount);
+ if (amount < 0 || amount > Integer.MAX_VALUE)
+ {
+ throw new NotEnoughArgumentsException();
+ }
}
if (give)
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java
index 9f38eb5ae..5b9b854cb 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java
@@ -19,12 +19,22 @@ public class Commandgamemode extends EssentialsCommand
@Override
protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
- if (args.length < 2)
+ GameMode gameMode;
+ if (args.length == 0)
{
throw new NotEnoughArgumentsException();
}
- GameMode gameMode = matchGameMode(args[0].toLowerCase(Locale.ENGLISH));
- gamemodeOtherPlayers(server, sender, gameMode, args[1]);
+ else if (args.length == 1)
+ {
+ gameMode = matchGameMode(commandLabel);
+ gamemodeOtherPlayers(server, sender, gameMode, args[0]);
+ }
+ else if (args.length == 2)
+ {
+ gameMode = matchGameMode(args[0].toLowerCase(Locale.ENGLISH));
+ gamemodeOtherPlayers(server, sender, gameMode, args[1]);
+ }
+
}
@Override
@@ -41,7 +51,7 @@ public class Commandgamemode extends EssentialsCommand
gamemodeOtherPlayers(server, user, gameMode, args[1]);
return;
}
- else
+ else
{
try
{
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java
index 8419f05f4..de6e1ea9b 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java
@@ -83,7 +83,7 @@ public class Commandhome extends EssentialsCommand
}
else
{
- if (bed != null)
+ if (bed != null && user.isAuthorized("essentials.home.bed"))
{
homes.add("bed");
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java b/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java
index 75910cd85..ddc86f19c 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java
@@ -36,6 +36,10 @@ public class Commandtppos extends EssentialsCommand
{
location.setPitch(Float.parseFloat(args[4]));
}
+ if (x > 30000000 || y > 30000000 || z > 30000000 || x < -30000000 || y < -30000000 || z < -30000000)
+ {
+ throw new NotEnoughArgumentsException("Value of coordinates cannot be over 30000000"); //todo: I18n
+ }
final Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
user.sendMessage(_("teleporting"));
@@ -64,8 +68,13 @@ public class Commandtppos extends EssentialsCommand
{
location.setPitch(Float.parseFloat(args[5]));
}
+ if (x > 30000000 || y > 30000000 || z > 30000000 || x < -30000000 || y < -30000000 || z < -30000000)
+ {
+ throw new NotEnoughArgumentsException("Value of coordinates cannot be over 30000000"); //todo: I18n
+ }
sender.sendMessage(_("teleporting"));
user.sendMessage(_("teleporting"));
user.getTeleport().teleport(location, null, TeleportCause.COMMAND);
+
}
}
\ No newline at end of file
diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java
index 1ac37e459..7239ea475 100644
--- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java
+++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java
@@ -699,4 +699,40 @@ public class FakeWorld implements World
{
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ @Override
+ public int getAmbientSpawnLimit()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setAmbientSpawnLimit(int i)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public String[] getGameRules()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public String getGameRuleValue(String string)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean setGameRuleValue(String string, String string1)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean isGameRule(String string)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java b/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java
index 7ed3034c3..e484ebfe1 100644
--- a/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java
+++ b/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java
@@ -67,6 +67,10 @@ public class SetExpFix
exp += getExpAtLevel(currentLevel);
currentLevel++;
}
+ if (exp < 0)
+ {
+ exp = Integer.MAX_VALUE;
+ }
return exp;
}
@@ -82,6 +86,10 @@ public class SetExpFix
currentLevel--;
exp += getExpAtLevel(currentLevel);
}
+ if (exp < 0)
+ {
+ exp = Integer.MAX_VALUE;
+ }
return exp;
}
diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml
index 1eedc95dd..b1f1dedd6 100644
--- a/Essentials/src/config.yml
+++ b/Essentials/src/config.yml
@@ -200,7 +200,7 @@ kits:
# See http://wiki.ess3.net/wiki/Sign_Tutorial for instructions on how to use these.
# To enable signs, remove # symbol. To disable all signs, comment/remove each sign.
# Essentials Colored sign support will be enabled when any sign types are enabled.
-# Color is not an actual sign, its for enabling using color codes on signs, when the correct permissions are given.
+# Color is not an actual sign, it's for enabling using color codes on signs, when the correct permissions are given.
enabledSigns:
#- color
@@ -287,12 +287,12 @@ no-god-in-worlds:
# Set to true to enable per-world permissions for teleporting between worlds with essentials commands
# This applies to /world, /back, /tp[a|o][here|all], but not warps.
# Give someone permission to teleport to a world with essentials.worlds.
-# This does not effect the /home command, there is a separate toggle below for this.
+# This does not affect the /home command, there is a separate toggle below for this.
world-teleport-permissions: false
# The number of items given if the quantity parameter is left out in /item or /give.
# If this number is below 1, the maximum stack size size is given. If over-sized stacks
-# are not enabled, any number higher then the maximum stack size results in more than one stack.
+# are not enabled, any number higher than the maximum stack size results in more than one stack.
default-stack-size: -1
# Over-sized stacks are stacks that ignore the normal max stack size.
@@ -315,7 +315,7 @@ login-attack-delay: 5
#Set the max fly speed, values range from 0.1 to 1.0
max-fly-speed: 0.8
-#Set the maximum amount of mails that can be send within a minute.
+#Set the maximum amount of mail that can be sent within a minute.
mails-per-minute: 1000
############################################################
@@ -460,6 +460,10 @@ protect:
fireball-explosion: false
fireball-fire: false
fireball-playerdamage: false
+ witherskull-explosion: false
+ witherskull-playerdamage: false
+ wither-spawnexplosion: false
+ wither-blockreplace: false
creeper-explosion: false
creeper-playerdamage: false
creeper-blockdamage: false
@@ -496,7 +500,10 @@ protect:
ocelot: false
iron_golem: false
villager: false
-
+ wither: false
+ bat: false
+ witch: false
+
# Maximum height the creeper should explode. -1 allows them to explode everywhere.
# Set prevent.creeper-explosion to true, if you want to disable creeper explosions.
creeper:
@@ -549,6 +556,9 @@ protect:
# Should the damage after hit by a lightning be disabled?
lightning: false
+
+ # Should Wither damage be disabled?
+ wither: false
# Disable weather options
weather:
diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv
index da66c0e5c..8b0f8b967 100644
--- a/Essentials/src/items.csv
+++ b/Essentials/src/items.csv
@@ -639,19 +639,22 @@ pstick,29,7
spiderweb,30,0
sweb,30,0
web,30,0
-longgrass,31,0
-tallgrass,31,0
-wildgrass,31,0
-grasslong,31,0
-grasstall,31,0
-grasswild,31,0
-lgrass,31,0
-tgrass,31,0
-wgrass,31,0
+longgrass,31,1
+tallgrass,31,1
+wildgrass,31,1
+grasslong,31,1
+grasstall,31,1
+grasswild,31,1
+lgrass,31,1
+tgrass,31,1
+wgrass,31,1
+fern,31,2
+bush,31,2
deadshrub,32,0
-shrubdead,32,0
dshrub,32,0
-shrubd,32,0
+deadbush,32,0
+dbush,32,0
+deadsapling,32,0
normalpistonbase,33,7
normalpiston,33,7
normpistonbase,33,7
@@ -826,12 +829,16 @@ rose,38,0
redflower,38,0
rflower,38,0
brownmushroom,39,0
+brownshroom,39,0
brownmush,39,0
bmushroom,39,0
+bshroom,39,0
bmush,39,0
redmushroom,40,0
+redshroom,40,0
redmush,40,0
rmushroom,40,0
+rshroom,40,0
rmush,40,0
goldblock,41,0
blockgold,41,0
@@ -1659,33 +1666,54 @@ circlestonebrick,98,3
circlestonebb,98,3
circlestone,98,3
circlesbb,98,3
+giantredmushroom,99,0
hugeredmushroom,99,0
bigredmushroom,99,0
-brmushroom,99,0
-giantredmushroom,99,0
+gredmushroom,99,0
+hredmushroom,99,0
+bredmushroom,99,0
+giantrmushroom,99,0
+hugermushroom,99,0
+bigrmushroom,99,0
grmushroom,99,0
+hrmushroom,99,0
+brmushroom,99,0
+giantbrownmushroom,100,0
hugebrownmushroom,100,0
bigbrownmushroom,100,0
-bbmushroom,100,0
-giantbrownmushroom,100,0
+gbrownmushroom,100,0
+hbrownmushroom,100,0
+bbrownmushroom,100,0
+giantbmushroom,100,0
+hugebmushroom,100,0
+bigbmushroom,100,0
gbmushroom,100,0
+hbmushroom,100,0
+bbmushroom,100,0
ironbars,101,0
ironbarsb,101,0
ironbarsblock,101,0
-metalbarsblock,101,0
-metalbarsb,101,0
+ironfence,101,0
metalbars,101,0
-jailbarsblock,101,0
-jailbarsb,101,0
+metalbarsb,101,0
+metalbarsblock,101,0
+metalfence,101,0
jailbars,101,0
-mbarsblock,101,0
-mbarsb,101,0
+jailbarsb,101,0
+jailbarsblock,101,0
+jailfence,101,0
mbars,101,0
-jbarsblock,101,0
-jbarsb,101,0
+mbarsb,101,0
+mbarsblock,101,0
+mfence,101,0
jbars,101,0
+jbarsb,101,0
+jbarsblock,101,0
+jfence,101,0
+ibars,101,0
ibarsb,101,0
ibarsblock,101,0
+ifence,101,0
glasspane,102,0
glassp,102,0
paneglass,102,0
@@ -2949,6 +2977,141 @@ forestwoodenstair,136,0
forestwoodstair,136,0
forestwstair,136,0
foreststair,136,0
+commandblock,137,0
+blockcommand,137,0
+cmdblock,137,0
+blockcmd,137,0
+macroblock,137,0
+blockmacro,137,0
+beacon,138,0
+beaconblock,138,0
+cobblestonewall,139,0
+cstonewall,139,0
+cobblewall,139,0
+cobblestonefence,139,0
+cstonefence,139,0
+cobblefence,139,0
+mosscobblestonewall,139,1
+mosscstonewall,139,1
+mosscobblewall,139,1
+mcobblestonewall,139,1
+mcstonewall,139,1
+mcobblewall,139,1
+mosscobblestonefence,139,1
+mosscstonefence,139,1
+mosscobblefence,139,1
+mcobblestonefence,139,1
+mcstonefence,139,1
+mcobblefence,139,1
+emptyflowerpot,140,0
+emptypot,140,0
+flowerpotblock,140,0
+potblock,140,0
+roseflowerpot,140,1
+rosepot,140,1
+dandelionflowerpot,140,2
+dandelionpot,140,2
+oaksaplingflowerpot,140,3
+saplingflowerpot,140,3
+oakflowerpot,140,3
+oaksaplingpot,140,3
+saplingpot,140,3
+oakpot,140,3
+sprucesaplingflowerpot,140,4
+spruceflowerpot,140,4
+darksaplingflowerpot,140,4
+darkflowerpot,140,4
+pinesaplingflowerpot,140,4
+pineflowerpot,140,4
+sprucesaplingpot,140,4
+sprucepot,140,4
+darksaplingpot,140,4
+darkpot,140,4
+pinesaplingpot,140,4
+pinepot,140,4
+birchsaplingflowerpot,140,5
+birchflowerpot,140,5
+lightsaplingflowerpot,140,5
+lightflowerpot,140,5
+whitesaplingflowerpot,140,5
+whiteflowerpot,140,5
+birchsaplingpot,140,5
+birchpot,140,5
+lightsaplingpot,140,5
+lightpot,140,5
+whitesaplingpot,140,5
+whitepot,140,5
+forestsaplingflowerpot,140,6
+forestflowerpot,140,6
+junglesaplingflowerpot,140,6
+jungleflowerpot,140,6
+forestsaplingpot,140,6
+forestpot,140,6
+junglesaplingpot,140,6
+junglepot,140,6
+redmushroomflowerpot,140,7
+redshroomflowerpot,140,7
+redmushflowerpot,140,7
+rmushroomflowerpot,140,7
+rshroomflowerpot,140,7
+rmushflowerpot,140,7
+redmushroompot,140,7
+redshroompot,140,7
+redmushpot,140,7
+rmushroompot,140,7
+rshroompot,140,7
+rmushpot,140,7
+brownmushroomflowerpot,140,8
+brownshroomflowerpot,140,8
+brownmushflowerpot,140,8
+bmushroomflowerpot,140,8
+bshroomflowerpot,140,7
+bmushflowerpot,140,8
+brownmushroompot,140,8
+brownshroompot,140,8
+brownmushpot,140,8
+bmushroompot,140,8
+bshroompot,140,8
+bmushpot,140,8
+cactusflowerpot,140,9
+cactuspot,140,9
+deadbushflowerpot,140,10
+dbushflowerpot,140,10
+deadsaplingflowerpot,140,10
+dsaplingflowerpot,140,10
+deadshrubflowerpot,140,10
+dshrubflowerpot,140,10
+deadbushpot,140,10
+dbushpot,140,10
+deadsaplingpot,140,10
+dsaplingpot,140,10
+deadshrubpot,140,10
+dshrubpot,140,10
+fernflowerpot,140,11
+bushflowerpot,140,11
+fernpot,140,11
+bushpot,140,11
+carrots,141,0
+plantedcarrot,141,0
+plantcarrot,141,0
+growingcarrot,141,0
+potatoes,142,0
+plantedpotato,142,0
+plantpotato,142,0
+growingpotato,142,0
+woodenplankbutton,143,0
+woodplankbutton,143,0
+wplankbutton,143,0
+plankbutton,143,0
+woodenbutton,143,0
+woodbutton,143,0
+wbutton,143,0
+headblock,144,0
+anvil,145,0
+slightlydamagedanvil,145,1
+slightdamageanvil,145,1
+damagedanvil,145,1
+verydamagedanvil,145,2
ironshovel,256,0
ironspade,256,0
ishovel,256,0
@@ -3818,7 +3981,6 @@ dioder,356,0
diode,356,0
cookie,357,0
chart,358,0
-map,358,0
map0,358,0
map1,358,1
map2,358,2
@@ -4074,6 +4236,19 @@ healingpot,373,8197
healpot,373,8197
lifepot,373,8197
hpot,373,8197
+nightvisionpotion,373,8198
+nvisionpotion,373,8198
+nightvpotion,373,8198
+darkvisionpotion,373,8198
+dvisionpotion,373,8198
+darkvpotion,373,8198
+nightvisionpot,373,8198
+nvisionpot,373,8198
+nightvpot,373,8198
+darkvisionpot,373,8198
+dvisionpot,373,8198
+darkvpot,373,8198
+npot,373,8198
weaknesspotion,373,8200
weakpotion,373,8200
weaknesspot,373,8200
@@ -4098,6 +4273,13 @@ harmingpot,373,8204
damagepot,373,8204
dmgpot,373,8204
dpot,373,8204
+invisibilitypotion,373,8206
+invisiblepotion,373,8206
+invpotion,373,8206
+invisibilitypot,373,8206
+invisiblepot,373,8206
+invpot,373,8206
+ipot,373,8206
regenerationleveliipotion,373,8225
regenerateleveliipotion,373,8225
regenleveliipotion,373,8225
@@ -4248,6 +4430,31 @@ acidextendedpot,373,8260
posionexpot,373,8260
acidexpot,373,8260
pepot,373,8260
+nightvisionextendedpotion,373,8262
+nvisionextendedpotion,373,8262
+nightvextendedpotion,373,8262
+darkvisionextendedpotion,373,8262
+dvisionextendedpotion,373,8262
+darkvextendedpotion,373,8262
+nightvisionexpotion,373,8262
+nvisionexpotion,373,8262
+nightvexpotion,373,8262
+darkvisionexpotion,373,8262
+dvisionexpotion,373,8262
+darkvexpotion,373,8262
+nightvisionextendedpot,373,8262
+nvisionextendedpot,373,8262
+nightvextendedpot,373,8262
+darkvisionextendedpot,373,8262
+dvisionextendedpot,373,8262
+darkvextendedpot,373,8262
+nightvisionexpot,373,8262
+nvisionexpot,373,8262
+nightvexpot,373,8262
+darkvisionexpot,373,8262
+dvisionexpot,373,8262
+darkvexpot,373,8262
+nepot,373,8262
weaknessextendedpotion,373,8264
weakextendedpotion,373,8264
weaknessexpotion,373,8264
@@ -4279,6 +4486,19 @@ slowextenedpot,373,8266
slownessexpot,373,8266
slowexpot,373,8266
slepot,373,8266
+invisibilityextendedpotion,373,8270
+invisibleextendedpotion,373,8270
+invextendedpotion,373,8270
+invisibilityexpotion,373,8270
+invisibleexpotion,373,8270
+invexpotion,373,8270
+invisibilityextendedpot,373,8270
+invisibleextendedpot,373,8270
+invextendedpot,373,8270
+invisibilityexpot,373,8270
+invisibleexpot,373,8270
+invexpot,373,8270
+iepot,373,8270
regenerationdualbitpotion,373,8289
regeneratedualbitpotion,373,8289
regendualbitpotion,373,8289
@@ -4397,6 +4617,31 @@ splashclearpotion,373,16390
splashclearpot,373,16390
splclearpotion,373,16390
splclearpot,373,16390
+splashnightvisionpotion,373,16390
+splashnvisionpotion,373,16390
+splashnightvpotion,373,16390
+splashdarkvisionpotion,373,16390
+splashdvisionpotion,373,16390
+splashdarkvpotion,373,16390
+splashnightvisionpot,373,16390
+splashnvisionpot,373,16390
+splashnightvpot,373,16390
+splashdarkvisionpot,373,16390
+splashdvisionpot,373,16390
+splashdarkvpot,373,16390
+splnightvisionpotion,373,16390
+splnvisionpotion,373,16390
+splnightvpotion,373,16390
+spldarkvisionpotion,373,16390
+spldvisionpotion,373,16390
+spldarkvpotion,373,16390
+splnightvisionpot,373,16390
+splnvisionpot,373,16390
+splnightvpot,373,16390
+spldarkvisionpot,373,16390
+spldvisionpot,373,16390
+spldarkvpot,373,16390
+spnpot,373,16390
splashclearextendedpotion,373,16391
splashclearexpotion,373,16391
splashclear2potion,373,16391
@@ -4465,6 +4710,19 @@ splashthinpotion,373,16398
splashthinpot,373,16398
splthinpotion,373,16398
splthinpot,373,16398
+splashinvisibilitypotion,373,16398
+splashinvisiblepotion,373,16398
+splashinvpotion,373,16398
+splashinvisibilitypot,373,16398
+splashinvisiblepot,373,16398
+splashinvpot,373,16398
+splinvisibilitypotion,373,16398
+splinvisiblepotion,373,16398
+splinvpotion,373,16398
+splinvisibilitypot,373,16398
+splinvisiblepot,373,16398
+splinvpot,373,16398
+spipot,373,16398
splashthinextendedpotion,373,16399
splashthinexpotion,373,16399
splashthin2potion,373,16399
@@ -4911,6 +5169,55 @@ splacidextendedpot,373,16452
splposionexpot,373,16452
splacidexpot,373,16452
sppepot,373,16452
+splashnightvisionextendedpotion,373,16454
+splashnvisionextendedpotion,373,16454
+splashnightvextendedpotion,373,16454
+splashdarkvisionextendedpotion,373,16454
+splashdvisionextendedpotion,373,16454
+splashdarkvextendedpotion,373,16454
+splashnightvisionextendedpot,373,16454
+splashnvisionextendedpot,373,16454
+splashnightvextendedpot,373,16454
+splashdarkvisionextendedpot,373,16454
+splashdvisionextendedpot,373,16454
+splashdarkvextendedpot,373,16454
+splashnightvisionexpotion,373,16454
+splashnvisionexpotion,373,16454
+splashnightvexpotion,373,16454
+splashdarkvisionexpotion,373,16454
+splashdvisionexpotion,373,16454
+splashdarkvexpotion,373,16454
+splashnightvisionexpot,373,16454
+splashnvisionexpot,373,16454
+splashnightvexpot,373,16454
+splashdarkvisionexpot,373,16454
+splashdvisionexpot,373,16454
+splashdarkvexpot,373,16454
+splnightvisionextendedpotion,373,16454
+splnvisionextendedpotion,373,16454
+splnightvextendedpotion,373,16454
+spldarkvisionextendedpotion,373,16454
+spldvisionextendedpotion,373,16454
+spldarkvextendedpotion,373,16454
+splnightvisionextendedpot,373,16454
+splnvisionextendedpot,373,16454
+splnightvextendedpot,373,16454
+spldarkvisionextendedpot,373,16454
+spldvisionextendedpot,373,16454
+spldarkvextendedpot,373,16454
+splnightvisionexpotion,373,16454
+splnvisionexpotion,373,16454
+splnightvexpotion,373,16454
+spldarkvisionexpotion,373,16454
+spldvisionexpotion,373,16454
+spldarkvexpotion,373,16454
+splnightvisionexpot,373,16454
+splnvisionexpot,373,16454
+splnightvexpot,373,16454
+spldarkvisionexpot,373,16454
+spldvisionexpot,373,16454
+spldarkvexpot,373,16454
+spnepot,373,16454
splashweaknessextendedpotion,373,16456
splashweakextendedpotion,373,16456
splashweaknessexpotion,373,16456
@@ -4970,6 +5277,31 @@ splslowextenedpot,373,16458
splslownessexpot,373,16458
splslowexpot,373,16458
spslepot,373,16458
+splashinvisibilityextendedpotion,373,16462
+splashinvisibleextendedpotion,373,16462
+splashinvextendedpotion,373,16462
+splashinvisibilityextendedpot,373,16462
+splashinvisibleextendedpot,373,16462
+splashinvextendedpot,373,16462
+splashinvisibilityexpotion,373,16462
+splashinvisibleexpotion,373,16462
+splashinvexpotion,373,16462
+splashinvisibilityexpot,373,16462
+splashinvisibleexpot,373,16462
+splashinvexpot,373,16462
+splinvisibilityextendedpotion,373,16462
+splinvisibleextendedpotion,373,16462
+splinvextendedpotion,373,16462
+splinvisibilityextendedpot,373,16462
+splinvisibleextendedpot,373,16462
+splinvextendedpot,373,16462
+splinvisibilityexpotion,373,16462
+splinvisibleexpotion,373,16462
+splinvexpotion,373,16462
+splinvisibilityexpot,373,16462
+splinvisibleexpot,373,16462
+splinvexpot,373,16462
+spiepot,373,16462
splashregenerationdualbitpotion,373,16481
splashregeneratedualbitpotion,373,16481
splashregendualbitpotion,373,16481
@@ -5190,6 +5522,10 @@ egglavaslime,383,62
egglavacube,383,62
eggmagmacube,383,62
eggmagmaslime,383,62
+bategg,383,65
+eggbat,383,65
+witchegg,383,66
+eggwitch,383,66
pigegg,383,90
eggpig,383,90
sheepegg,383,91
@@ -5242,6 +5578,53 @@ sealedbook,387,0
diary,387,0
ownedbook,387,0
emerald,388,0
+itemframe,389,0
+pictureframe,389,0
+iframe,389,0
+pframe,389,0
+flowerpot,390,0
+pot,390,0
+carrot,391,0
+potato,392,0
+bakedpotato,393,0
+roastedpotato,393,0
+cookedpotato,393,0
+bakepotato,393,0
+roastpotato,393,0
+cookpotato,393,0
+posionouspotato,394,0
+posionpotato,394,0
+emptymap,395,0
+map,395,0
+goldencarrot,396,0
+goldcarrot,396,0
+gcarrot,396,0
+head,397,0
+skeletonhead,397,0
+headskeleton,397,0
+witherhead,397,1
+witherskeletonhead,397,1
+wskeletionhead,397,1
+headwither,397,1
+headwitherskeleton,397,1
+headwskeletion,397,1
+zombiehead,397,2
+headzombie,397,2
+humanhead,397,3
+stevehead,397,3
+headhuman,397,3
+headsteve,397,3
+creeperhead,397,4
+headcreeper,397,4
+carrotonastick,398,0
+carrotonstick,398,0
+netherstar,399,0
+hellstar,399,0
+pumpkinpie,400,0
+pumpkincake,400,0
+ppie,400,0
+pcake,400,0
+pie,400,0
goldmusicrecord,2256,0
goldmusicdisk,2256,0
goldmusicdisc,2256,0
diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties
index 60d21d896..cd6d1208c 100644
--- a/Essentials/src/messages_es.properties
+++ b/Essentials/src/messages_es.properties
@@ -10,10 +10,10 @@ alertBroke=Roto:
alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} en: {3}
alertPlaced=Situado:
alertUsed=Usado:
-antiBuildBreak=\u00a74You are not permitted to break {0} blocks here.
-antiBuildInteract=\u00a74You are not permitted to interact with {0}.
-antiBuildPlace=\u00a74You are not permitted to place {0} here.
-antiBuildUse=\u00a74You are not permitted to use {0}.
+antiBuildBreak=\u00a74Tu no tines permitido romper {0} bloques aca.
+antiBuildInteract=\u00a74Tu no tienes permitido interactuar con {0}.
+antiBuildPlace=\u00a74Tu no tienes permitido poner {0} aca.
+antiBuildUse=\u00a74Tu no tienes permitido usar {0}.
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.
@@ -28,7 +28,7 @@ banIpAddress=\u00a77Direccion IP baneada.
bigTreeFailure=\u00a7cBig Generacion de arbol fallida. Prueba de nuevo en hierba o arena.
bigTreeSuccess= \u00a77Big Arbol generado.
blockList=Essentials le ha cedido los siguientes comandos a otros plugins:
-broadcast=[\u00a7cAnuncio\u00a7f]\u00a7a {0}
+broadcast=\u00a7c[\u00a76Broadcast\u00a7c]\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.
@@ -36,16 +36,16 @@ canTalkAgain=\u00a77Ya puedes hablar de nuevo.
cantFindGeoIpDB=No se puede encontrar la base 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}
-chatTypeAdmin=[A]
-chatTypeLocal=[L]
+chatTypeAdmin=
+chatTypeLocal=
chatTypeSpy=[Espia]
commandFailed=Comando {0} fallado:
commandHelpFailedForPlugin=Error obteniendo ayuda para: {0}
-commandNotLoaded=\u00a7cCommand {0} esta cargado incorrectamente.
+commandNotLoaded=\u00a7cComando {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:
+connectedPlayers=Jugadores conectados:
connectionFailed=Error al abrir conexion.
cooldownWithMessage=\u00a7cTiempo restante: {0}
corruptNodeInConfig=\u00a74Notice: Tu archivo de configuracion tiene un nodo {0} incorrecto.
@@ -118,7 +118,7 @@ hatArmor=\u00a7cNo puedes usar este item como sombrero!
hatEmpty=\u00a7cNo estas usando un sombrero.
hatFail=\u00a7cDebes tener un item en tu mano para usarlo de sombrero.
hatPlaced=\u00a7eDisfruta tu nuevo sombrero!
-hatRemoved=\u00a7eYour hat has been removed.
+hatRemoved=\u00a7eTu sombrero a sido removido.
haveBeenReleased=\u00a77Has sido liberado.
heal=\u00a77Has sido curado.
healOther=\u00a77Has curado a {0}.
@@ -157,7 +157,7 @@ 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.
-itemNames=Item short names: {0}
+itemNames=Articulo nombres cortos: {0}
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.
@@ -188,10 +188,10 @@ kitTimed=\u00a7c No puedes usar ese kit de nuevo para otro{0}.
kits=\u00a77Kits: {0}
lightningSmited=\u00a77Acabas de ser golpeado.
lightningUse=\u00a77Golpeando a {0}
-listAfkTag = \u00a77[AFK]\u00a7f
+listAfkTag = \u00a77[Lejos]\u00a7f
listAmount = \u00a79Hay \u00a7c{0}\u00a79 jugadores de un maximo de \u00a7c{1}\u00a79 jugadores online.
listAmountHidden = \u00a79Hay \u00a7c{0}\u00a79 jugadores de un maximo de \u00a7c{1}\u00a79 jugadores online.
-listGroupTag={0}\u00a7f:
+listGroupTag={0}\u00a7f:
listHiddenTag = \u00a77[ESCONDIDO]\u00a7f
loadWarpError=Error al cargar el teletransporte {0}
localFormat=Local: <{0}> {1}
@@ -218,7 +218,7 @@ moneyTaken={0} han sido sacados de tu cuenta bancaria.
month=mes
months=meses
moreThanZero=Las cantidades han de ser mayores que 0.
-moveSpeed=\u00a77Set {0} speed to {1} for {2}.
+moveSpeed=\u00a77Has puesto {0} velocidad a {1} por {2}.
msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt=\u00a7cNo puedes silenciar a ese jugador.
mutedPlayer=Player {0} silenciado.
@@ -251,7 +251,7 @@ noPendingRequest=No tienes ninguna peticion pendiente.
noPerm=\u00a7cNo tienes el permiso de \u00a7f{0}\u00a7c.
noPermToSpawnMob=\u00a7cNo tienes permisos para spawnear a este mob.
noPlacePermission=\u00a7cNo tienes permiso para situar ese bloque en ese lugar.
-noPowerTools=You have no power tools assigned.
+noPowerTools=Usted no tiene ningunas herramientas eléctricas asignadas.
noRules=\u00a7cNo hay reglas especificadas todavia.
noWarpsDefined=No hay teletransportes definidos aun.
none=ninguno
@@ -262,7 +262,7 @@ notEnoughMoney=No tienes el dinero suficiente.
notFlying=no volando
notRecommendedBukkit=* ! * La version de bukkit no es la recomendada para esta version de Essentials.
notSupportedYet=No tiene soporte por el momento.
-nothingInHand = \u00a7cNo tienes anda en tu mano.
+nothingInHand = \u00a7cNo tienes nada en tu mano.
now=ahora
nuke=Que la muerta afecte al que no despierte.
numberRequired=Un numero es necesario, amigo .
@@ -304,8 +304,8 @@ powerToolRemove=Comando \u00a7c{0}\u00a7f borrado desde {1}.
powerToolRemoveAll=Todos los comandos borrados desde {0}.
powerToolsDisabled=Todas tus herramientas de poder han sido desactivadas.
powerToolsEnabled=Todas tus herramientas de poder han sido activadas.
-protectionOwner=\u00a76[EssentialsProtect] Dueño de la proteccion: {0}
-questionFormat=\u00a77[Pregunta]\u00a7f {0}
+protectionOwner=\u00a76[EssentialsProtect] Dueno de la proteccion: {0}
+questionFormat=\u00a7c[Pregunta]\u00a7f {0}
readNextPage=escribe /{0} {1} para leer la prox. pagina.
reloadAllPlugins=\u00a77Todos los plugins recargados.
removed=\u00a77{0} entidades removidas.
@@ -330,7 +330,7 @@ serverFull=Servidor lleno.
serverTotal=Server Total: {0}
setSpawner=Cambiado tipo de spawner a {0}
sheepMalformedColor=Color malformado.
-shoutFormat=\u00a77[Shout]\u00a7f {0}
+shoutFormat=\u00a7a[Mundo]\u00a7f {0}
signFormatFail=\u00a74[{0}]
signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
@@ -343,7 +343,7 @@ spawned=nacido
sudoExempt=No puedes usar el comando sudo con este user.
sudoRun=Forzando {0} a ejecutar: /{1} {2}
suicideMessage=\u00a77Adios mundo cruel...
-suicideSuccess= \u00a77{0} se quito su propia vida.
+suicideSuccess= \u00a77{0} se tiro desde un rascacielos.
survival=supervivencia
takenFromAccount=\u00a7c{0} han sido sacados de tu cuenta.
takenFromOthersAccount=\u00a7c{0} han sidos sacados de la cuenta de {1}\u00a7c . Nuevo presupuesto: {2}
@@ -423,7 +423,7 @@ weatherStormFor=\u00a77Has establecido el tiempo como tormenta en este {1} duran
weatherSun=\u00a77Has establecido el tiempo como sol en este mundo.
weatherSunFor=\u00a77Has establecido el tiempo como sol en este {1} durante {0} segundos.
whoisAFK=\u00a76 - AFK:\u00a7f {0}
-whoisBanned=\u00a76 - Banned:\u00a7f {0}
+whoisBanned=\u00a76 - Baneado:\u00a7f {0}
whoisExp=\u00a76 - Exp:\u00a7f {0} (Nivel {1})
whoisFly=\u00a76 - Modo de vuelo:\u00a7f {0} ({1})
whoisGamemode=\u00a76 - Modo de juego:\u00a7f {0}
@@ -441,22 +441,22 @@ whoisTop=\u00a76 ====== WhoIs:\u00a7f {0} \u00a76======
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ño
-years=años
+year=ano
+years=anos
youAreHealed=\u00a77Has sido curado.
youHaveNewMail=\u00a7cTienes {0} mensajes!\u00a7f Pon \u00a77/mail read\u00a7f para ver tus emails no leidos!.
-posX=\u00a76X: {0} (+East <-> -West)
-posY=\u00a76Y: {0} (+Up <-> -Down)
-posZ=\u00a76Z: {0} (+South <-> -North)
-posYaw=\u00a76Yaw: {0} (Rotation)
-posPitch=\u00a76Pitch: {0} (Head angle)
-distance=\u00a76Distance: {0}
-giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
+posX=\u00a76X: {0} (+Este <-> -Oeste)
+posY=\u00a76Y: {0} (+Arriba <-> -abajo)
+posZ=\u00a76Z: {0} (+Sur <-> -Norte)
+posYaw=\u00a76guiñar: {0} (Rotacion)
+posPitch=\u00a76Tono: {0} (Angulo de cabeza)
+distance=\u00a76Distancia: {0}
+giveSpawn=\u00a76Se a dado\u00a7c {0} \u00a76de\u00a7c {1} a\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
-antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
-antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
-gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
-invalidHomeName=\u00a74Invalid home name
-invalidWarpName=\u00a74Invalid warp name
-userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.
+antiBuildCraft=\u00a74No se le permite crear\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74No se le permite botar \u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entidades
+invalidHomeName=\u00a74Nombre de casa invalido
+invalidWarpName=\u00a74Nombre de warp invalido
+userUnknown=\u00a74Peligro: El jugador '\u00a7c{0}\u00a74' Nunca a ingresado a este servidor.
diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties
index bf1dfecff..605c0b884 100644
--- a/Essentials/src/messages_fr.properties
+++ b/Essentials/src/messages_fr.properties
@@ -3,31 +3,31 @@
# Translations start here
# by: L\u00e9a Gris
action=* {0} {1}
-addedToAccount=\u00a7a{0} a \u00e9t\u00e9 rajout\u00e9 \u00e0 votre compte.
-addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2}
+addedToAccount=\u00a7a{0} ont \u00e9t\u00e9 ajout\u00e9 \u00e0 votre compte.
+addedToOthersAccount=\u00a7a{0} ajout\u00e9s au compte de {1}\u00a7a. Nouveau solde : {2}
adventure = adventure
alertBroke=a cass\u00e9 :
alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} \u00e0:{3}
alertPlaced=a plac\u00e9 :
alertUsed=a utilis\u00e9 :
-antiBuildBreak=\u00a74You are not permitted to break {0} blocks here.
-antiBuildInteract=\u00a74You are not permitted to interact with {0}.
-antiBuildPlace=\u00a74You are not permitted to place {0} here.
-antiBuildUse=\u00a74You are not permitted to use {0}.
+antiBuildBreak=\u00a74Vous n'\u00eates pas autoris\u00e9s \u00e0 casser des blocs de {0} ici.
+antiBuildInteract=\u00a74Vous n'\u00eates pas autoris\u00e9s \u00e0 interagir avec {0}.
+antiBuildPlace=\u00a74Vous n'\u00eates pas autoris\u00e9s \u00e0 placer {0} ici.
+antiBuildUse=\u00a74Vous n'\u00eates pas autoris\u00e9s \u00e0 utliser {0}.
autoAfkKickReason=Vous avez \u00e9t\u00e9 \u00e9ject\u00e9 pour inactivit\u00e9e sup\u00e9rieure \u00e0 {0} minutes.
backAfterDeath=\u00a77Utilisez la commande /back pour retourner \u00e0 l''endroit ou vous \u00eates mort.
-backUsageMsg=\u00a77Retour \u00e0 votre emplacement pr\u00e9c\u00c3\u00a8dent.
-backupDisabled=An external backup script has not been configured.
+backUsageMsg=\u00a77Retour \u00e0 votre emplacement pr\u00e9c\u00e9dent.
+backupDisabled=Aucun script de backup externe n'a \u00e9t\u00e9 configur\u00e9.
backupFinished=Sauvegarde termin\u00e9
backupStarted=D\u00e9but de la sauvegarde...
balance=\u00a77Solde : {0}
balanceTop=\u00a77Meilleurs soldes au ({0})
banExempt=\u00a77Vous ne pouvez pas bannir ce joueur.
-banFormat=Banned: {0}
+banFormat=Banni : {0}
banIpAddress=\u00a77Adresse IP bannie.
bigTreeFailure=\u00a7c\u00c9chec de la g\u00e9n\u00e9ration du gros arbre. Essayez de nouveau sur de la terre ou de l'herbe.
bigTreeSuccess=\u00a77Gros arbre cr\u00e9e.
-blockList=Essentials relayed the following commands to another plugin:
+blockList=Essentials a relay\u00e9 les commandes suivantes \u00e0 un autre plugin :
broadcast=[\u00a7cMessage\u00a7f]\u00a7a {0}
buildAlert=\u00a7cVous n'avez pas la permission de construire.
bukkitFormatChanged=Le format de la version de Bukkit a \u00e9t\u00e9 chang\u00e9. La version n''a pas \u00e9t\u00e9 v\u00e9rifi\u00e9e.
@@ -35,7 +35,7 @@ burnMsg=\u00a77Vous avez enflamm\u00e9 {0} pour {1} seconde(s).
canTalkAgain=\u00a77Vous pouvez de nouveau parler.
cantFindGeoIpDB=N'arrive pas \u00e0 trouver la base de donn\u00e9es GeoIP!
cantReadGeoIpDB=Echec de la lecture de la base de donn\u00e9es GeoIP!
-cantSpawnItem=\u00a7cVous n''avez pas le droit de faire appara\u00c3\u00aetre {0}
+cantSpawnItem=\u00a7cVous n''avez pas le droit de faire appara\u00eEtre {0}
chatTypeAdmin=[A]
chatTypeLocal=[L]
chatTypeSpy=[Spy]
@@ -46,15 +46,15 @@ compassBearing=\u00a77Orientation : {0} ({1} degr\u00e9s).
configFileMoveError=\u00c9chec du d\u00e9placement de config.yml vers l'emplacement de sauvegarde.
configFileRenameError=\u00c9chec du changement de nom du fichier temporaire de config.yml
connectedPlayers=Joueurs connect\u00e9s :
-connectionFailed=\u00c9chec de l'ouverture de la connexion.
+connectionFailed=\u00c9chec de la connexion.
cooldownWithMessage=\u00a7cR\u00e9utilisation : {0}
corruptNodeInConfig=\u00a74Annonce : Votre fichier de configuration a un {0} n\u0153ud corrompu.
-couldNotFindTemplate=Le mod\u00c3\u00a8le {0} est introuvable
-creatingConfigFromTemplate=Cr\u00e9ation de la configuration \u00e0 partir du mod\u00c3\u00a8le : {0}
+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=cr\u00e9atif
currency={0}{1}
-currentWorld=Current World: {0}
+currentWorld=Monde actuel : {0}
day=jour
days=jours
defaultBanReason=Le marteau du bannissement a frapp\u00e9 !
@@ -62,7 +62,7 @@ deleteFileError=Le fichier {0} n''a pas pu \u00eatre supprim\u00e9
deleteHome=\u00a77La r\u00e9sidence {0} a \u00e9t\u00e9 supprim\u00e9e.
deleteJail=\u00a77La prison {0} a \u00e9t\u00e9 supprim\u00e9e.
deleteWarp=\u00a77Warp {0} supprim\u00e9.
-deniedAccessCommand=L''acc\u00c3\u00a8s \u00e0 la commande a \u00e9t\u00e9 refus\u00e9 pour {0}.
+deniedAccessCommand=L''acc\u00e8s \u00e0 la commande a \u00e9t\u00e9 refus\u00e9 pour {0}.
dependancyDownloaded=[Essentials] Fichier {0} correctement t\u00e9l\u00e9charg\u00e9.
dependancyException=[Essentials] Une erreur est survenue lors de la tentative de t\u00e9l\u00e9chargement.
dependancyNotFound=[Essentials] Une d\u00e9pendance requise n'a pas \u00e9t\u00e9 trouv\u00e9e, t\u00e9l\u00e9chargement en cours.
@@ -72,26 +72,26 @@ depthBelowSea=\u00a77Vous \u00eates \u00e0 {0} bloc(s) en-dessous du niveau de l
destinationNotSet=Destination non d\u00e9finie
disableUnlimited=\u00a77D\u00e9sactivation du placement illimit\u00e9 de {0} pour {1}.
disabled=d\u00e9sactiv\u00e9
-disabledToSpawnMob=Spawning this mob was disabled in the config file.
+disabledToSpawnMob=L'invacation de ce monstre a \u00e9t\u00e9 d\u00e9sactiv\u00e9e dans le fichier de configuration.
dontMoveMessage=\u00a77La t\u00e9l\u00e9portation commence dans {0}. Ne bougez pas.
downloadingGeoIp=T\u00e9l\u00e9chargement de la base de donn\u00e9es GeoIP ... Cela peut prendre un moment (Pays : 0.6 Mo, villes : 20Mo)
duplicatedUserdata=Donn\u00e9e utilisateur dupliqu\u00e9e : {0} et {1}
-durability=\u00a77This tool has \u00a7c{0}\u00a77 uses left
+durability=\u00a77Cet outil a \u00a7c{0}\u00a77 usages restants
enableUnlimited=\u00a77Quantit\u00e9 illimit\u00e9e de {0} \u00e0 {1}.
enabled=activ\u00e9
enchantmentApplied = \u00a77L''enchantement {0} a \u00e9t\u00e9 appliqu\u00e9 \u00e0 l''objet dans votre main.
-enchantmentNotFound = \u00a7cEnchantement non-trouv\u00e9
+enchantmentNotFound = \u00a7cEnchantement non trouv\u00e9
enchantmentPerm = \u00a7cVous n''avez pas les droits pour {0}.
-enchantmentRemoved = \u00a77The enchantment {0} has been removed from your item in hand.
-enchantments = \u00a77Enchantments : {0}
+enchantmentRemoved = \u00a77L'enchantement {0} de l'item dans votre main a \u00e9t\u00e9 supprim\u00e9.
+enchantments = \u00a77Enchantements : {0}
errorCallingCommand=Erreur en appelant la commande /{0}
errorWithMessage=\u00a7cErreur : {0}
essentialsHelp1=Le fichier est corrompuet Essentials ne peut l'ouvrir. Essentials est maintenant d\u00e9sactiv\u00e9. Si vous ne pouvez corriger vous-m\u00eame, aller \u00e0 http://tiny.cc/EssentialsChat
essentialsHelp2=Le fichier est corrompuet Essentials ne peut l'ouvrir. Essentials est maintenant d\u00e9sactiv\u00e9. Si vous ne pouvez corriger vous-m\u00eame, tapez /essentialshelp ou aller \u00e0 http://tiny.cc/EssentialsChat
essentialsReload=\u00a77Essentials {0} a \u00e9t\u00e9 recharg\u00e9.
-exp=\u00a7c{0} \u00a77has\u00a7c {1} \u00a77exp (level\u00a7c {2}\u00a77) and needs\u00a7c {3} \u00a77more exp to level up.
-expSet=\u00a7c{0} \u00a77now has\u00a7c {1} \u00a77exp.
-extinguish=\u00a77Vous cessez de br\u00fbler.
+exp=\u00a7c{0} \u00a77a\u00a7c {1} \u00a77exp (niveau\u00a7c {2}\u00a77) et a besoin de\u00a7c {3} \u00a77pour monter d'un niveau.
+expSet=\u00a7c{0} \u00a77a maintenant\u00a7c {1} \u00a77exp.
+extinguish=\u00a77Vous cessez de br\u00FBler.
extinguishOthers=\u00a77Vous avez \u00e9teint la combustion de {0}.
failedToCloseConfig=Echec de la fermeture de la configuration {0}
failedToCreateConfig=Echec de la cr\u00e9ation de la configuration {0}
@@ -100,7 +100,7 @@ false=\u00a74false\u00a7f
feed=\u00a77Vous avez \u00e9t\u00e9 rassasi\u00e9.
feedOther=\u00a77 est rassasi\u00e9 {0}.
fileRenameError=Echec du changement de nom de {0}
-flyMode=\u00a77Set fly mode {0} for {1}.
+flyMode=\u00a77Fly mode {0} pour {1} d\u00e9fini.
flying=flying
foreverAlone=\u00a7cVous n''avez personne \u00e0 qui r\u00e9pondre
freedMemory=A lib\u00e9r\u00e9 {0} Mo.
@@ -114,21 +114,21 @@ geoipJoinFormat=Joueur {0} vient de {1}
godDisabledFor=d\u00e9sactiv\u00e9 pour {0}
godEnabledFor=activ\u00e9 pour {0}
godMode=\u00a77Mode Dieu {0}.
-hatArmor=\u00a7cError, you cannot use this item as a hat!
-hatEmpty=\u00a7cYou are not wearing a hat.
-hatFail=\u00a7cYou must have something to wear in your hand.
-hatPlaced=\u00a7eEnjoy your new hat!
-hatRemoved=\u00a7eYour hat has been removed.
+hatArmor=\u00a7cErreur, vous ne pouvez pas utliser cet item comme chapeau !
+hatEmpty=\u00a7cVous ne portez pas de chapeau.
+hatFail=\u00a7cVous devez avoir quelque chose \u00e0 porter dans votre main.
+hatPlaced=\u00a7eProfitez bien de votre nouveau chapeau !
+hatRemoved=\u00a7eVotre chapeau a \u00e9t\u00e9 retir\u00e9.
haveBeenReleased=\u00a77Vous avez \u00e9t\u00e9 lib\u00e9r\u00e9.
heal=\u00a77Vous avez \u00e9t\u00e9 soign\u00e9.
healOther=\u00a77{0} a \u00e9t\u00e9 soign\u00e9.
helpConsole=Pour voir l''aide tapez ?
helpFrom=\u00a77Commands from {0}:
helpLine=\u00a76/{0}\u00a7f: {1}
-helpMatching=\u00a77Commands matching "{0}":
+helpMatching=\u00a77Commandes correspondant \u00e0 "{0}" :
helpOp=\u00a7c[Aide Admin]\u00a7f \u00a77{0} : \u00a7f {1}
helpPages=Page \u00a7c{0}\u00a7f sur \u00a7c{1}\u00a7f.
-helpPlugin=\u00a74{0}\u00a7f: Plugin Help: /help {1}
+helpPlugin=\u00a74{0}\u00a7f: Aide Plugin : /help {1}
holeInFloor=Trou dans le Sol.
homeSet=\u00a77R\u00e9sidence d\u00e9finie.
homeSetToBed=\u00a77Votre r\u00e9sidence est d\u00e9sormais li\u00e9e \u00e0 ce lit.
@@ -142,13 +142,13 @@ 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=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Page \u00a74{0}\u00a76/\u00a74{1} \u00a7e----
infoUnknownChapter=Chapitre inconnu.
-invBigger=Les inventaires des autres joueurs sont plus gros que le v\u00f4tre.
+invBigger=Les inventaires des autres joueurs sont plus gros que le v\u00F4tre.
invRestored=Votre inventaire vous a \u00e9t\u00e9 rendu.
invSee=Vous voyez l''inventaire de {0}.
invSeeHelp=Utilisez /invsee pour revenir \u00e0 votre inventaire.
invalidCharge=\u00a7cCharge invalide.
-invalidHome=Home {0} doesn't exist
-invalidMob=Mauvias type de cr\u00e9ature.
+invalidHome=La r\u00e9sidence {0} n'existe pas
+invalidMob=Mauvais type de cr\u00e9ature.
invalidServer=Serveur non valide.
invalidSignLine=La ligne {0} du panneau est invalide.
invalidWorld=\u00a7cMonde invalide.
@@ -173,11 +173,11 @@ jailNotExist=Cette prison n'existe pas.
jailReleased=\u00a77Joueur \u00a7e{0}\u00a77 lib\u00e9r\u00e9.
jailReleasedPlayerNotify=\u00a77Vous avez \u00e9t\u00e9 lib\u00e9r\u00e9 !
jailSentenceExtended=Dur\u00e9e d''emprisonnement rallong\u00e9e de : {0}
-jailSet=\u00a77La prison {0} a \u00e9t\u00e9 cr\u00e9\u00e9.
+jailSet=\u00a77La prison {0} a \u00e9t\u00e9 cr\u00e9\u00e9e.
jumpError=\u00c7a aurait pu faire mal au cerveau de votre ordinateur.
kickDefault=\u00c9ject\u00e9 du serveur
kickExempt=\u00a77Vous ne pouvez pas \u00e9jecter ce joueur.
-kickedAll=\u00a7cKicked all players from server
+kickedAll=\u00a7cTous les joueurs ont \u00e9t\u00e9 \u00e9ject\u00e9s
kill=\u00a77Tu\u00e9 {0}.
kitError2=\u00a7cCe kit n'existe pas ou a \u00e9t\u00e9 mal d\u00e9fini.
kitError=\u00a7cIl n'y a pas de kits valides.
@@ -193,14 +193,14 @@ listAmount = \u00a79Il y a \u00a7c{0}\u00a79 joueurs en ligne sur \u00a7c{1}\u00
listAmountHidden = \u00a79Il y a \u00a7c{0}\u00a77/{1}\u00a79 sur un maximum de \u00a7c{2}\u00a79 joueurs en ligne.
listGroupTag={0}\u00a7f:
listHiddenTag = \u00a77[MASQU\u00c9]\u00a7f
-loadWarpError=\u00c9chec du chargement du point de t\u00e9l\u00e9portation {0}.
-localFormat=Locale : <{0}> {1}
+loadWarpError=\u00c9chec du chargement du warp {0}.
+localFormat=Local : <{0}> {1}
mailClear=\u00a7cPour marquer votre courrier en tant que lu, entrez /mail clear
mailCleared=\u00a77Courrier supprim\u00e9 !
mailSent=\u00a77Courrier envoy\u00e9 !
markMailAsRead=\u00a7cPour marquer votre courrier en tant que lu, entrez /mail clear
markedAsAway=\u00a77Vous \u00eates d\u00e9sormais AFK.
-markedAsNotAway=\u00a77Vous n'\u00eates d\u00e9sormais plus AFK.
+markedAsNotAway=\u00a77Vous n'\u00eates plus AFK.
maxHomes=Vous ne pouvez pas cr\u00e9er plus de {0} r\u00e9sidences.
mayNotJail=\u00a7cVous ne pouvez pas emprisonner cette personne.
me=moi
@@ -213,7 +213,7 @@ mobSpawnLimit=Quantit\u00e9 de cr\u00e9atures limit\u00e9 \u00e0 au maximum du s
mobSpawnTarget=Le bloc cible doit \u00eatre un g\u00e9n\u00e9rateur de cr\u00e9atures.
mobsAvailable=\u00a77cr\u00e9atures : {0}
moneyRecievedFrom=\u00a7a{0} a \u00e9t\u00e9 re\u00e7u de {1}
-moneySentTo=\u00a7a{0} a \u00e9t\u00e9 envoy\u00e9 \u00e0 {1}
+moneySentTo=\u00a7a{0} ont \u00e9t\u00e9 envoy\u00e9s \u00e0 {1}
moneyTaken={0} pr\u00e9lev\u00e9(s) de votre compte.
month=mois
months=mois
@@ -233,12 +233,12 @@ nickNamesAlpha=\u00a7cLes surnoms doivent \u00eatre alphanum\u00e9riques.
nickNoMore=\u00a7 Vous n'avez plus de surnom.
nickOthersPermission=\u00a7cVous n'avez pas la permission de changer le surnom des autres.
nickSet=\u00a77Votre surnom est maintenant \u00a7c{0}
-noAccessCommand=\u00a7cVous n'avez pas acc\u00c3\u00a8s \u00e0 cette commande.
+noAccessCommand=\u00a7cVous n'avez pas acc\u00e8s \u00e0 cette commande.
noAccessPermission=\u00a7cVous n''avez pas la permissions d''acc\u00e9der \u00e0 cette {0}
-noBreakBedrock=You are not allowed to destroy bedrock.
+noBreakBedrock=Vous n'\u00eates pas autoris\u00e9s \u00e0 d\u00e9truire la bedrock.
noDestroyPermission=\u00a7cVous n''avez pas la permission de d\u00e9truire ce {0}.
-noDurability=\u00a7cThis item does not have a durability.
-noGodWorldWarning=\u00a7cWarning! Le mode Dieu est d\u00e9sactiv\u00e9 dans ce monde.
+noDurability=\u00a7cCet item n'a pas de durabilit\u00e9.
+noGodWorldWarning=\u00a7cAttention ! Le mode dieu est d\u00e9sactiv\u00e9 dans ce monde.
noHelpFound=\u00a7cAucune commande correspondante.
noHomeSet=Vous n'avez pas d\u00e9fini de r\u00e9sidence.
noHomeSetPlayer=Le joueur n'a pas d\u00e9fini sa r\u00e9sidence.
@@ -250,43 +250,43 @@ noNewMail=\u00a77Vous n'avez pas de courrier.
noPendingRequest=Vous n'avez pas de requ\u00eate non lue.
noPerm=\u00a7cVous n''avez pas la permission \u00a7f{0}\u00a7c.
noPermToSpawnMob=\u00a7cVous n'avez pas la permission d'invoquer cette cr\u00e9ature.
-noPlacePermission=\u00a7cVous n'avez pas la permission de placer un bloc pr\u00c3\u00a8 de cette pancarte.
+noPlacePermission=\u00a7cVous n'avez pas la permission de placer un bloc pr\u00e8s de cette pancarte.
noPowerTools=Vous n'avez pas d'outil macro associ\u00e9.
noRules=\u00a7cIl n'y a pas encore de r\u00e8gles d\u00e9finies.
-noWarpsDefined=Aucun point de t\u00e9l\u00e9portation d\u00e9fini.
+noWarpsDefined=Aucun warp d\u00e9fini.
none=aucun
notAllowedToQuestion=\u00a7cVous n'\u00eates pas autoris\u00e9 \u00e0 poser des questions.
notAllowedToShout=\u00a7cVous n'\u00eates pas autoris\u00e9 \u00e0 crier.
notEnoughExperience=Vous n'avez pas assez d'exp\u00e9rience.
notEnoughMoney=Vous n'avez pas les fonds n\u00e9cessaires.
notFlying=not flying
-notRecommendedBukkit=* ! * La version de Bukkit n'est pas celle qui est recommand\u00e9 pour cette version de Essentials.
+notRecommendedBukkit=* ! * Cette version de Bukkit n'est pas recommand\u00e9 pour cette version de Essentials.
notSupportedYet=Pas encore pris en charge.
nothingInHand = \u00a7cVous n'avez rien en main.
now=maintenant
nuke=Que la mort s'abatte sur eux !
-numberRequired=Il faut fournir un nombre ici.
+numberRequired=Un nombre est requis ici.
onlyDayNight=/time ne supporte que (jour) day/night (nuit).
-onlyPlayers=Seulement les joueurs en jeu peuvent utiliser {0}.
+onlyPlayers=Seuls les joueurs en jeu peuvent utiliser {0}.
onlySunStorm=/weather ne supporte que (soleil) sun/storm (temp\u00eate).
-orderBalances=Classement des balance de {0} utilisateurs, patientez ...
+orderBalances=Classement des soldes des {0} joueurs, patientez ...
pTimeCurrent=Pour \u00a7e{0}\u00a7f l''heure est {1}.
pTimeCurrentFixed=L''heure de \u00a7e{0}\u00a7f est fix\u00e9e \u00e0 {1}.
pTimeNormal=\u00a7fPour \u00a7e{0}\u00a7f l'heure est normale et correspond au server.
pTimeOthersPermission=\u00a7cVous n'etes pas autoris\u00e9 \u00e0 changer l'heure des autres joueurs.
-pTimePlayers=Ces joueurs ont leur propre horraire :
+pTimePlayers=Ces joueurs ont leur propre horaire :
pTimeReset=l''heure a \u00e9t\u00e9 r\u00e9initialis\u00e9e \u00e0 : \u00a7e{0}
pTimeSet=l''heure du joueur a \u00e9t\u00e9 r\u00e9egl\u00e9ee \u00e0 \u00a73{0}\u00a7f pour : \u00a7e{1}
pTimeSetFixed=l''heure du joueur a \u00e9t\u00e9 fix\u00e9e \u00e0 : \u00a7e{1}
parseError=Erreur de conversion {0} \u00e0 la ligne {1}
pendingTeleportCancelled=\u00a7cRequete de t\u00e9l\u00e9portation annul\u00e9e.
-permissionsError=Permissions/GroupManager manquant, les pr\u00e9fixes et suffixes ne seront pas affich\u00e9s.
+permissionsError=Permissions/GroupManager manquant, les pr\u00e9fixes et suffixes ne seront pas affich\u00e9s.
playerBanned=\u00a7cJoueur {0} banni {1} pour {2}
-playerInJail=\u00a7cLe joueur est d\u00e9j\u00e0 dans la prison {0}.
+playerInJail=\u00a7cLe joueur est d\u00e9j\u00e0 emprisonn\u00e9 dans {0}.
playerJailed=\u00a77Le joueur {0} a \u00e9t\u00e9 emprisonn\u00e9.
playerJailedFor=\u00a77{0} a \u00e9t\u00e9 emprisonn\u00e9 pour {1}.
playerKicked=\u00a7c{0} a \u00e9t\u00e9 \u00e9ject\u00e9 {1} pour {2}.
-playerMuted=\u00a77Vous avez \u00e9t\u00e9 r\u00e9duis au silence.
+playerMuted=\u00a77Vous avez \u00e9t\u00e9 r\u00e9duit au silence.
playerMutedFor=\u00a77Vous avez \u00e9t\u00e9 r\u00e9duis au silence pour {0}
playerNeverOnServer=\u00a7cLe joueur {0} n''a jamais \u00e9t\u00e9 sur le serveur.
playerNotFound=\u00a7cLe joueur est introuvable.
@@ -296,7 +296,7 @@ possibleWorlds=\u00a77Les mondes possibles sont les nombres de 0 \u00e0 {0}.
powerToolAir=La commande ne peut pas \u00eatre assign\u00e9e \u00e0 l'air.
powerToolAlreadySet=La commande \u00a7c{0}\u00a7f est d\u00e9j\u00e0 assign\u00e9e \u00e0 {1}.
powerToolAttach=Commande \u00a7c{0}\u00a7f assign\u00e9e \u00e0 {1}.
-powerToolClearAll=Toutes les commandes assign\u00e9es ont \u00e9et\u00e9e retir\u00e9ees.
+powerToolClearAll=Toutes les commandes assign\u00e9es ont \u00e9t\u00e9 retir\u00e9es.
powerToolList={1} assign\u00e9s aux commandes : \u00a7c{0}\u00a7f.
powerToolListEmpty={0} n'a pas de commande assign\u00e9e.
powerToolNoSuchCommandAssigned=La commande \u00a7c{0}\u00a7f n''a pas \u00e9t\u00e9 assign\u00e9e \u00e0 {1}.
@@ -313,42 +313,42 @@ repair=Vous avez r\u00e9par\u00e9 votre : \u00a7e{0}.
repairAlreadyFixed=\u00a77Cet objet n'a pas besoin de r\u00e9paration.
repairEnchanted=\u00a77Vous n'\u00eates pas autoris\u00e9 \u00e0 r\u00e9parer les objets enchant\u00e9s.
repairInvalidType=\u00a7cCet objet ne peut \u00eatre r\u00e9par\u00e9.
-repairNone=Aucun objet n'a besoin d'u00eatre r\u00e9par\u00e9.
+repairNone=Aucun objet n'a besoin d'\u00eatre r\u00e9par\u00e9.
requestAccepted=\u00a77Demande de t\u00e9l\u00e9portation accept\u00e9e.
requestAcceptedFrom=\u00a77{0} a accept\u00e9 votre demande de t\u00e9l\u00e9portation.
requestDenied=\u00a77Demande de t\u00e9l\u00e9portation refus\u00e9e.
requestDeniedFrom=\u00a77{0} a refus\u00e9 votre demande de t\u00e9l\u00e9portation.
requestSent=\u00a77Requ\u00eate envoy\u00e9e \u00e0 {0}\u00a77.
-requestTimedOut=\u00a7cLa de mande de t\u00e9l\u00e9portation a expir\u00e9.
-requiredBukkit=* ! * Vous avez besoin au moins de la version {0} de CraftBukkit. T\u00e9l\u00e9chargez-la ici http://dl.bukkit.org/downloads/craftbukkit/
+requestTimedOut=\u00a7cLa demande de t\u00e9l\u00e9portation a expir\u00e9.
+requiredBukkit=* ! * Vous avez au moins besoin de la version {0} de CraftBukkit. T\u00e9l\u00e9chargez-la ici http://dl.bukkit.org/downloads/craftbukkit/
returnPlayerToJailError=Error occurred when trying to return player {0} to jail: {1}
second=seconde
seconds=secondes
seenOffline=Le joueur {0} est hors ligne depuis {1}
seenOnline=Le joueur {0} est en ligne depuis {1}
serverFull=Le serveur est plein.
-serverTotal=Server Total: {0}
+serverTotal=Total du serveur : {0}
setSpawner=Type de g\u00e9n\u00e9rateur chang\u00e9 en {0}
-sheepMalformedColor=Couleur mal form\u00e9e.
+sheepMalformedColor=Couleur incorrecte.
shoutFormat=\u00a77[Crie]\u00a7f {0}
signFormatFail=\u00a74[{0}]
signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Vous n'avez pas l'autorisation de cr\u00e9er une pancarte ici.
-similarWarpExist=Un point de t\u00e9l\u00e9portation avec un nom similaire existe d\u00e9j\u00e0.
-slimeMalformedSize=Taille mal form\u00e9e.
-soloMob=Ce cr\u00e9ature aime \u00eatre seul.
+similarWarpExist=Un warp avec un nom similaire existe d\u00e9j\u00e0.
+slimeMalformedSize=Taille incorrecte.
+soloMob=Cette cr\u00e9ature pr\u00e9f\u00e8re \u00eatre seule.
spawnSet=\u00a77Le point de d\u00e9part a \u00e9t\u00e9 d\u00e9fini pour le groupe {0}.
spawned=invoqu\u00e9(s)
sudoExempt=You cannot sudo this user
-sudoRun=Forcing {0} to run: /{1} {2}
+sudoRun=Le joueur {0} ex\u00e9cute de force : /{1} {2}
suicideMessage=\u00a77Au revoir monde cruel...
suicideSuccess=\u00a77{0} s''est suicid\u00e9.
survival=survie
-takenFromAccount=\u00a7c{0} ont \u00e9t\u00e9 retir\u00e9 de votre compte.
-takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2}
+takenFromAccount=\u00a7c{0} ont \u00e9t\u00e9 retir\u00e9s de votre compte.
+takenFromOthersAccount=\u00a7c{0} retir\u00e9s du compte de {1}\u00a7c. Nouveau solde : {2}
teleportAAll=\u00a77Demande de t\u00e9l\u00e9portation envoy\u00e9e \u00e0 tous les joueurs...
-teleportAll=\u00a77T\u00e9l\u00e9poration de tous les joueurs.
+teleportAll=\u00a77T\u00e9l\u00e9portation de tous les joueurs.
teleportAtoB=\u00a77{0}\u00a77 vous a t\u00e9l\u00e9port\u00e9 \u00e0 {1}\u00a77.
teleportDisabled={0} a la t\u00e9l\u00e9portation d\u00e9sactiv\u00e9.
teleportHereRequest=\u00a7c{0}\u00a7c Vous a demand\u00e9 de vous t\u00e9l\u00e9porter \u00e0 lui/elle.
@@ -357,9 +357,9 @@ teleportRequest=\u00a7c{0}\u00a7c vous demande s''il peut se t\u00e9l\u00e9porte
teleportRequestTimeoutInfo=\u00a77Cette demande de t\u00e9l\u00e9portation expirera dans {0} secondes.
teleportTop=\u00a77T\u00e9l\u00e9portation vers le haut.
teleportationCommencing=\u00a77D\u00e9but de la t\u00e9l\u00e9portation...
-teleportationDisabled=\u00a77T\u00e9l\u00e9poration d\u00e9sactiv\u00e9.
+teleportationDisabled=\u00a77T\u00e9l\u00e9portation d\u00e9sactiv\u00e9.
teleportationEnabled=\u00a77T\u00e9l\u00e9portation activ\u00e9e.
-teleporting=\u00a77T\u00e9l\u00e9poration en cours...
+teleporting=\u00a77T\u00e9l\u00e9portation en cours...
teleportingPortal=\u00a77T\u00e9l\u00e9portation via portail.
tempBanned=Banni temporairement du serveur pour {0}
tempbanExempt=\u00a77Vous ne pouvez pas bannir temporairement ce joueur.
@@ -378,7 +378,7 @@ tradeCompleted=\u00a77\u00c9change termin\u00e9.
tradeSignEmpty=Le panneau de vente n'as pas encore assez de stock.
tradeSignEmptyOwner=Il n'y a rien \u00e0 collecter de cette pancarte d'\u00e9change commercial.
treeFailure=\u00a7cEchec de la g\u00e9n\u00e9ration de l'arbre. Essayez de nouveau sur de l'herbe ou de la terre.
-treeSpawned=\u00a77Arbre cr\u00e9\u00e9.
+treeSpawned=\u00a77Arbre cr\u00e9 \u00e9.
true=\u00a72true\u00a7f
typeTpaccept=\u00a77Pour le t\u00e9l\u00e9porter, utilisez \u00a7c/tpaccept\u00a77.
typeTpdeny=\u00a77Pour d\u00e9cliner cette demande, utilisez \u00a7c/tpdeny\u00a77.
@@ -391,55 +391,55 @@ unknownItemId=Num\u00e9ro d''objet inconnu : {0}
unknownItemInList=L''objet {0} est inconnu dans la liste {1}.
unknownItemName=Nom d''objet inconnu : {0}
unlimitedItemPermission=\u00a7cPas de permission pour l''objet illimit\u00e9 {0}.
-unlimitedItems=Objets illimit\u00e9s:
+unlimitedItems=Objets illimit\u00e9s :
unmutedPlayer=Le joueur {0} n''est plus muet.
unvanished=\u00a7aYou are once again visible.
unvanishedReload=\u00a7cA reload has forced you to become visible.
upgradingFilesError=Erreur durant la mise \u00e0 jour des fichiers.
userDoesNotExist=L''utilisateur {0} n''existe pas.
-userIsAway={0} s'est mis en AFK
+userIsAway={0} est d\u00e9sormais AFK
userIsNotAway={0} n'est plus AFK
userJailed=\u00a77Vous avez \u00e9t\u00e9 emprisonn\u00e9.
userUsedPortal={0} a utilis\u00e9 un portail existant.
userdataMoveBackError=Echec du d\u00e9placement de userdata/{0}.tmp vers userdata/{1}
userdataMoveError=Echec du d\u00e9placement de userdata/{0} vers userdata/{1}.tmp
usingTempFolderForTesting=Utilise un fichier temporaire pour un test.
-vanished=\u00a7aYou have now been vanished.
-versionMismatch=Versions diff\u00e9rentes ! Mettez s''il vous plait {0} \u00e0 la m\u00eame version.
-versionMismatchAll=Mauvaise version ! S'il vous plait mettez des jars Essentials de version identique.
+vanished=\u00a7aVous \u00eates d\u00e9sormais invisible.
+versionMismatch=Versions diff\u00e9rentes ! Veuillez mettre {0} \u00e0 la m\u00eame version.
+versionMismatchAll=Mauvaise version ! Veuillez mettre des jars Essentials de m\u00eame version.
voiceSilenced=\u00a77Vous avez \u00e9t\u00e9 r\u00e9duit au silence.
-walking=walking
-warpDeleteError=Probl\u00c3\u00a8me concernant la suppression du fichier warp.
+walking=en train de marcher
+warpDeleteError=Probl\u00e8me concernant la suppression du fichier warp.
warpListPermission=\u00a7cVous n'avez pas la permission d'afficher la liste des points de t\u00e9l\u00e9portation.
-warpNotExist=Ce point de t\u00e9l\u00e9portation n'existe pas.
-warpOverwrite=\u00a7cYou cannot overwrite that warp.
-warpSet=\u00a77Le point de t\u00e9l\u00e9portation {0} a \u00e9t\u00e9 cr\u00e9\u00e9.
-warpUsePermission=\u00a7cVous n'avez pas la permission d'utiliser ce point de t\u00e9l\u00e9portation.
+warpNotExist=Ce warp n'existe pas.
+warpOverwrite=\u00a7cVous ne pouvez pas \u00e9craser ce warp.
+warpSet=\u00a77Le warp {0} a \u00e9t\u00e9 cr\u00e9 \u00e9.
+warpUsePermission=\u00a7cVous n'avez pas la permission d'utiliser ce warp.
warpingTo=\u00a77T\u00e9l\u00e9portation vers {0}.
-warps=point de t\u00e9l\u00e9portations : {0}
-warpsCount=\u00a77Il y a {0} points de t\u00e9l\u00e9portations. Page {1} sur {2}.
+warps=warps : {0}
+warpsCount=\u00a77Il y a {0} warps. Page {1} sur {2}.
weatherStorm=\u00a77Vous avez programm\u00e9 l''orage dans {0}
weatherStormFor=\u00a77Vous avez programm\u00e9 l''orage dans {0} pour {1} secondes.
weatherSun=\u00a77Vous avez programm\u00e9 le beau temps dans {0}
weatherSunFor=\u00a77Vous avez programm\u00e9 le beau temps dans {0} pour {1} secondes.
-whoisAFK=\u00a76 - AFK:\u00a7f {0}
-whoisBanned=\u00a76 - Banni:\u00a7f {0}
-whoisExp=\u00a76 - Exp:\u00a7f {0} (Level {1})
-whoisFly=\u00a76 - Fly mode:\u00a7f {0} ({1})
-whoisGamemode=\u00a76 - Mode de jeu:\u00a7f {0}
-whoisGeoLocation=\u00a76 - Emplacement:\u00a7f {0}
-whoisGod=\u00a76 - Mode Dieu:\u00a7f {0}
-whoisHealth=\u00a76 - Sant\u00e9:\u00a7f {0} / 20
-whoisIPAddress=\u00a76 - Adresse IP:\u00a7f {0}
-whoisJail=\u00a76 - Jail:\u00a7f {0}
-whoisLocation=\u00a76 - Emplacement:\u00a7f ({0}, {1}, {2}, {3})
-whoisMoney=\u00a76 - Argent:\u00a7f {0}
-whoisMuted=\u00a76 - Muted:\u00a7f {0}
-whoisNick=\u00a76 - Nick:\u00a7f {0}
-whoisOp=\u00a76 - OP:\u00a7f {0}
+whoisAFK=\u00a76 - AFK :\u00a7f {0}
+whoisBanned=\u00a76 - Banni :\u00a7f {0}
+whoisExp=\u00a76 - Exp :\u00a7f {0} (Level {1})
+whoisFly=\u00a76 - Fly mode :\u00a7f {0} ({1})
+whoisGamemode=\u00a76 - Mode de jeu :\u00a7f {0}
+whoisGeoLocation=\u00a76 - Emplacement :\u00a7f {0}
+whoisGod=\u00a76 - Mode dieu :\u00a7f {0}
+whoisHealth=\u00a76 - Sant\u00e9 :\u00a7f {0} / 20
+whoisIPAddress=\u00a76 - Adresse IP :\u00a7f {0}
+whoisJail=\u00a76 - Jail :\u00a7f {0}
+whoisLocation=\u00a76 - Position :\u00a7f ({0}, {1}, {2}, {3})
+whoisMoney=\u00a76 - Argent :\u00a7f {0}
+whoisMuted=\u00a76 - Muet :\u00a7f {0}
+whoisNick=\u00a76 - Surnom :\u00a7f {0}
+whoisOp=\u00a76 - OP :\u00a7f {0}
whoisTop=\u00a76 ====== WhoIs:\u00a7f {0} \u00a76======
-worth=\u00a77Une pile de {0} vaut \u00a7c{1}\u00a77 ({2} objet(s) \u00e0 {3} chacun)
-worthMeta=\u00a77Une pile de {0} avec la m\u00e9tadonn\u00e9e de {1} vaut \u00a7c{2}\u00a77 ({3} objet(s) \u00e0 {4} chacun)
+worth=\u00a77Un stack de {0} vaut \u00a7c{1}\u00a77 ({2} objet(s) \u00e0 {3} chacun)
+worthMeta=\u00a77Un stack de {0} de type {1} vaut \u00a7c{2}\u00a77 ({3} objet(s) \u00e0 {4} chacun)
worthSet=Valeur cr\u00e9e
year=ann\u00e9e
years=ann\u00e9es
@@ -448,15 +448,15 @@ youHaveNewMail=\u00a7cVous avez {0} messages ! \u00a7fEntrez \u00a77/mail read\u
posX=\u00a76X: {0} (+East <-> -West)
posY=\u00a76Y: {0} (+Up <-> -Down)
posZ=\u00a76Z: {0} (+South <-> -North)
-posYaw=\u00a76Yaw: {0} (Rotation)
-posPitch=\u00a76Pitch: {0} (Head angle)
-distance=\u00a76Distance: {0}
+posYaw=\u00a76Yaw : {0} (Rotation)
+posPitch=\u00a76Pitch : {0} (Head angle)
+distance=\u00a76Distance : {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
-uptime=\u00a76Uptime:\u00a7c {0}
-antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
-antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
-gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
-invalidHomeName=\u00a74Invalid home name
-invalidWarpName=\u00a74Invalid warp name
-userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.
+uptime=\u00a76Dur\u00e9e de fonctionnent :\u00a7c {0}
+antiBuildCraft=\u00a74Vous n'\u00eates pas autoris\u00e9s \u00e0 cr\u00e9er\u00a7c {0}\u00a74.
+antiBuildDrop=\u00a74Vous n'\u00eates pas autoris\u00e9s \u00e0 jeter\u00a7c {0}\u00a74.
+gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 portions, \u00a7c{3}\u00a76 entit\u00e9s
+invalidHomeName=\u00a74Nom de r\u00e9sindence invalide
+invalidWarpName=\u00a74Nom de warp invalide
+userUnknown=\u00a74Attention : Le joueur '\u00a7c{0}\u00a74' n'est jamais venu sur ce serveur.
\ No newline at end of file
diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml
index 225534a08..c24c4de30 100644
--- a/Essentials/src/plugin.yml
+++ b/Essentials/src/plugin.yml
@@ -109,12 +109,8 @@ commands:
aliases: [efeed,eat,eeat]
fly:
description: Take off, and soar!
- usage: / [player] [on|off]
+ usage: / [player [on|off]]
aliases: [efly]
- itemdb:
- description: Searches for an item.
- usage: / -
- aliases: [eitemdb,itemno,eitemno,durability,dura,edura,edurability]
fireball:
description: Throw a fireball.
usage: / [small]
@@ -123,21 +119,21 @@ commands:
description: Change player gamemode.
usage: / [player]
aliases: [gm,creative,creativemode,survival,survivalmode,adventure,adventuremode,gmc,gma,gms,gmt,egamemod,eecreative,ecreativemode,esurvival,esurvivalmode,eadventure,eadventuremode,egmc,egma,egms,egm,egmt]
- getpos:
- description: Get your current coordinates or those of a player.
- usage: / [player]
- aliases: [coords,egetpos,position,eposition,whereami,ewhereami]
gc:
description: Reports memory, uptime and tick info.
usage: /
aliases: [elag,lag,mem,memory,egc,emem,ememory,uptime,euptime]
+ getpos:
+ description: Get your current coordinates or those of a player.
+ usage: / [player]
+ aliases: [coords,egetpos,position,eposition,whereami,ewhereami]
give:
description: Give a player an item.
usage: /
- [amount ...]
aliases: [egive]
god:
description: Enables your godly powers.
- usage: / [player] [on|off]
+ usage: / [player [on|off]]
aliases: [tgm,godmode,egod,etgm,egodmode]
hat:
description: Get some cool new headgear
@@ -175,6 +171,10 @@ commands:
description: Spawn an item.
usage: /
- [amount ...]
aliases: [i,eitem]
+ itemdb:
+ description: Searches for an item.
+ usage: /
-
+ aliases: [eitemdb,itemno,eitemno,durability,dura,edura,edurability]
jails:
description: List all jails.
usage: /
@@ -191,10 +191,6 @@ commands:
description: Kicks all players off the server except the issuer.
usage: / [reason]
aliases: [ekickall]
- kit:
- description: Obtains the specified kit or views all available kits.
- usage: / [kit] [player]
- aliases: [ekit,kits,ekits]
kill:
description: Kills specified player.
usage: /
@@ -203,17 +199,21 @@ commands:
description: Kill all mobs in a world.
usage: / [mobType] [radius]
aliases: [ekillall,butcher,ebutcher,mobkill,emobkill]
+ kit:
+ description: Obtains the specified kit or views all available kits.
+ usage: / [kit] [player]
+ aliases: [ekit,kits,ekits]
kittycannon:
description: Throw an exploding kitten at your opponent
usage: /
- list:
- description: List all online players.
- usage: /
- aliases: [playerlist,who,online,plist,eplist,elist,ewho,eplayerlist,eonline]
lightning:
description: The power of Thor. Strike at cursor or player.
usage: / [player] [power]
aliases: [strike,smite,thor,shock,elightning,estrike,esmite,ethor,eshock]
+ list:
+ description: List all online players.
+ usage: /
+ aliases: [playerlist,who,online,plist,eplist,elist,ewho,eplayerlist,eonline]
mail:
description: Manages inter-player, intra-server mail.
usage: / [read|clear|send [to] [message]|sendall [message]]
diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java
index 83301ea28..e8b8ce01c 100644
--- a/Essentials/test/com/earth2me/essentials/FakeServer.java
+++ b/Essentials/test/com/earth2me/essentials/FakeServer.java
@@ -118,6 +118,12 @@ public class FakeServer implements Server
throw new UnsupportedOperationException("Not supported yet.");
}
+ @Override
+ public boolean isHardcore()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
@Override
public Player getPlayer(String string)
{
@@ -795,4 +801,10 @@ public class FakeServer implements Server
{
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ @Override
+ public int getAmbientSpawnLimit()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java
index a14036c2e..7e5c60476 100644
--- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java
+++ b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java
@@ -51,7 +51,7 @@ public class EssentialsAntiBuildListener implements Listener
return user.isAuthorized(blockPerm);
}
- private boolean metaPermCheck(final User user, final String action, final int blockId, final byte data)
+ private boolean metaPermCheck(final User user, final String action, final int blockId, final short data)
{
final String blockPerm = "essentials.build." + action + "." + blockId;
final String dataPerm = blockPerm + ":" + data;
@@ -219,7 +219,7 @@ public class EssentialsAntiBuildListener implements Listener
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
- if (event.hasItem() && !metaPermCheck(user, "interact", item.getTypeId(), item.getData().getData()))
+ if (event.hasItem() && !metaPermCheck(user, "interact", item.getTypeId(), item.getDurability()))
{
event.setCancelled(true);
if (ess.getSettings().warnOnBuildDisallow())
@@ -251,7 +251,7 @@ public class EssentialsAntiBuildListener implements Listener
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
- if (!metaPermCheck(user, "craft", item.getTypeId(), item.getData().getData()))
+ if (!metaPermCheck(user, "craft", item.getTypeId(), item.getDurability()))
{
event.setCancelled(true);
if (ess.getSettings().warnOnBuildDisallow())
@@ -272,7 +272,7 @@ public class EssentialsAntiBuildListener implements Listener
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
- if (!metaPermCheck(user, "pickup", item.getTypeId(), item.getData().getData()))
+ if (!metaPermCheck(user, "pickup", item.getTypeId(), item.getDurability()))
{
event.setCancelled(true);
event.getItem().setPickupDelay(50);
@@ -289,7 +289,7 @@ public class EssentialsAntiBuildListener implements Listener
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
- if (!metaPermCheck(user, "drop", item.getTypeId(), item.getData().getData()))
+ if (!metaPermCheck(user, "drop", item.getTypeId(), item.getDurability()))
{
event.setCancelled(true);
user.updateInventory();
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
index ee1130483..d415182b0 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
@@ -381,6 +381,11 @@ public class GroupManager extends JavaPlugin {
User senderUser = null;
boolean isOpOverride = config.isOpOverride();
+ if (sender.getClass().getName().equals("org.bukkit.craftbukkit.command.CraftBlockCommandSender")) {
+ sender.sendMessage(ChatColor.RED + "GM Commands can not be called from CommandBlocks");
+ return true;
+ }
+
// DETERMINING PLAYER INFORMATION
if (sender instanceof Player) {
senderPlayer = (Player) sender;
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
index ef556c9bd..1ca9519ce 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
@@ -10,9 +10,9 @@ import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
+import org.bukkit.event.entity.*;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
-import org.bukkit.event.entity.*;
public class EssentialsProtectEntityListener implements Listener
@@ -38,33 +38,27 @@ public class EssentialsProtectEntityListener implements Listener
}
final User user = ess.getUser(target);
+ final DamageCause cause = event.getCause();
+
if (event instanceof EntityDamageByBlockEvent)
{
- final DamageCause cause = event.getCause();
-
if (prot.getSettingBool(ProtectConfig.disable_contactdmg)
&& cause == DamageCause.CONTACT
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.contact")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !(target instanceof Player && shouldBeDamaged(user, "contact")))
{
event.setCancelled(true);
return;
}
if (prot.getSettingBool(ProtectConfig.disable_lavadmg)
&& cause == DamageCause.LAVA
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.lava")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !(target instanceof Player && shouldBeDamaged(user, "lava")))
{
event.setCancelled(true);
return;
}
if (prot.getSettingBool(ProtectConfig.prevent_tnt_explosion)
&& cause == DamageCause.BLOCK_EXPLOSION
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.tnt")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !(target instanceof Player && shouldBeDamaged(user, "tnt")))
{
event.setCancelled(true);
return;
@@ -77,6 +71,39 @@ public class EssentialsProtectEntityListener implements Listener
final Entity eAttack = edEvent.getDamager();
final User attacker = ess.getUser(eAttack);
+ //Creeper explode prevention
+ if (eAttack instanceof Creeper
+ && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion)
+ || prot.getSettingBool(ProtectConfig.prevent_creeper_playerdmg))
+ && !(target instanceof Player && shouldBeDamaged(user, "creeper")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
+ && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg)
+ && !(target instanceof Player && shouldBeDamaged(user, "fireball")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (event.getEntity() instanceof WitherSkull
+ && prot.getSettingBool(ProtectConfig.prevent_witherskull_playerdmg)
+ && !(target instanceof Player && shouldBeDamaged(user, "witherskull")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
+ if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg)
+ && !(target instanceof Player && shouldBeDamaged(user, "tnt")))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
// PVP Settings
if (target instanceof Player && eAttack instanceof Player
&& prot.getSettingBool(ProtectConfig.disable_pvp)
@@ -86,49 +113,9 @@ public class EssentialsProtectEntityListener implements Listener
return;
}
- //Creeper explode prevention
- if (eAttack instanceof Creeper && prot.getSettingBool(ProtectConfig.prevent_creeper_explosion)
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.creeper")
- && !user.isAuthorized("essentials.protect.damage.disable")))
- {
- event.setCancelled(true);
- return;
- }
-
- if (eAttack instanceof Creeper && prot.getSettingBool(ProtectConfig.prevent_creeper_playerdmg)
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.creeper")
- && !user.isAuthorized("essentials.protect.damage.disable")))
- {
- event.setCancelled(true);
- return;
- }
-
- if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
- && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg)
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.fireball")
- && !user.isAuthorized("essentials.protect.damage.disable")))
- {
- event.setCancelled(true);
- return;
- }
-
- if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg)
- && !(target instanceof Player
- && user.isAuthorized("essentials.protect.damage.tnt")
- && !user.isAuthorized("essentials.protect.damage.disable")))
- {
- event.setCancelled(true);
- return;
- }
-
if (edEvent.getDamager() instanceof Projectile
&& target instanceof Player
- && ((prot.getSettingBool(ProtectConfig.disable_projectiles)
- && !(user.isAuthorized("essentials.protect.damage.projectiles")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && ((prot.getSettingBool(ProtectConfig.disable_projectiles) && !shouldBeDamaged(user, "projectiles"))
|| (((Projectile)edEvent.getDamager()).getShooter() instanceof Player
&& prot.getSettingBool(ProtectConfig.disable_pvp)
&& (!user.isAuthorized("essentials.protect.pvp")
@@ -139,13 +126,11 @@ public class EssentialsProtectEntityListener implements Listener
}
}
- final DamageCause cause = event.getCause();
if (target instanceof Player)
{
if (cause == DamageCause.FALL
&& prot.getSettingBool(ProtectConfig.disable_fall)
- && !(user.isAuthorized("essentials.protect.damage.fall")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !shouldBeDamaged(user, "fall"))
{
event.setCancelled(true);
return;
@@ -153,33 +138,35 @@ public class EssentialsProtectEntityListener implements Listener
if (cause == DamageCause.SUFFOCATION
&& prot.getSettingBool(ProtectConfig.disable_suffocate)
- && !(user.isAuthorized("essentials.protect.damage.suffocation")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !shouldBeDamaged(user, "suffocation"))
{
event.setCancelled(true);
return;
}
- if ((cause == DamageCause.FIRE
- || cause == DamageCause.FIRE_TICK)
+ if ((cause == DamageCause.FIRE || cause == DamageCause.FIRE_TICK)
&& prot.getSettingBool(ProtectConfig.disable_firedmg)
- && !(user.isAuthorized("essentials.protect.damage.fire")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !shouldBeDamaged(user, "fire"))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.DROWNING
&& prot.getSettingBool(ProtectConfig.disable_drown)
- && !(user.isAuthorized("essentials.protect.damage.drowning")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !shouldBeDamaged(user, "drowning"))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.LIGHTNING
&& prot.getSettingBool(ProtectConfig.disable_lightning)
- && !(user.isAuthorized("essentials.protect.damage.lightning")
- && !user.isAuthorized("essentials.protect.damage.disable")))
+ && !shouldBeDamaged(user, "lightning"))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (cause == DamageCause.WITHER
+ && prot.getSettingBool(ProtectConfig.disable_wither)
+ && !shouldBeDamaged(user, "wither"))
{
event.setCancelled(true);
return;
@@ -187,6 +174,12 @@ public class EssentialsProtectEntityListener implements Listener
}
}
+ private boolean shouldBeDamaged(final User user, final String type)
+ {
+ return (user.isAuthorized("essentials.protect.damage.".concat(type))
+ && !user.isAuthorized("essentials.protect.damage.disable"));
+ }
+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityExplode(final EntityExplodeEvent event)
{
@@ -206,6 +199,12 @@ public class EssentialsProtectEntityListener implements Listener
}
return;
}
+ if (event.getEntity() instanceof Wither
+ && prot.getSettingBool(ProtectConfig.prevent_wither_spawnexplosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
else if (event.getEntity() instanceof Creeper
&& (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion)
|| prot.getSettingBool(ProtectConfig.prevent_creeper_blockdmg)
@@ -228,6 +227,13 @@ public class EssentialsProtectEntityListener implements Listener
event.setCancelled(true);
return;
}
+ else if ((event.getEntity() instanceof WitherSkull)
+ && prot.getSettingBool(ProtectConfig.prevent_witherskull_explosion))
+ {
+ event.setCancelled(true);
+ return;
+ }
+
// This code will prevent explosions near protected rails, signs or protected chests
// TODO: Use protect db instead of this code
@@ -294,6 +300,7 @@ public class EssentialsProtectEntityListener implements Listener
|| event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY
|| event.getReason() == TargetReason.PIG_ZOMBIE_TARGET
|| event.getReason() == TargetReason.RANDOM_TARGET
+ || event.getReason() == TargetReason.DEFEND_VILLAGE
|| event.getReason() == TargetReason.TARGET_ATTACKED_OWNER
|| event.getReason() == TargetReason.OWNER_ATTACKED_TARGET)
&& prot.getSettingBool(ProtectConfig.prevent_entitytarget)
@@ -322,5 +329,10 @@ public class EssentialsProtectEntityListener implements Listener
event.setCancelled(true);
return;
}
+ if (event.getEntityType() == EntityType.WITHER && prot.getSettingBool(ProtectConfig.prevent_wither_blockreplace))
+ {
+ event.setCancelled(true);
+ return;
+ }
}
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java
index 31141d7e7..d7f428539 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java
@@ -17,6 +17,7 @@ public enum ProtectConfig
disable_firedmg("protect.disable.firedmg", false),
disable_lightning("protect.disable.lightning", false),
disable_drown("protect.disable.drown", false),
+ disable_wither("protect.disable.wither", false),
disable_weather_storm("protect.disable.weather.storm", false),
disable_weather_lightning("protect.disable.weather.lightning", false),
disable_weather_thunder("protect.disable.weather.thunder", false),
@@ -34,6 +35,10 @@ public enum ProtectConfig
prevent_fireball_explosion("protect.prevent.fireball-explosion", false),
prevent_fireball_fire("protect.prevent.fireball-fire", false),
prevent_fireball_playerdmg("protect.prevent.fireball-playerdamage", false),
+ prevent_witherskull_explosion("protect.prevent.witherskull-explosion", false),
+ prevent_witherskull_playerdmg("protect.prevent.witherskull-playerdamage", false),
+ prevent_wither_spawnexplosion("protect.prevent.wither-spawnexplosion", false),
+ prevent_wither_blockreplace("protect.prevent.wither-blockreplace", false),
prevent_creeper_explosion("protect.prevent.creeper-explosion", true),
prevent_creeper_playerdmg("protect.prevent.creeper-playerdamage", false),
prevent_creeper_blockdmg("protect.prevent.creeper-blockdamage", false),
diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
index 0dcf9843a..6fdd4a6a5 100644
--- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
+++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
@@ -97,6 +97,7 @@ public class EssentialsSpawnPlayerListener implements Listener
ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user), 1L);
}
+ //This method allows for multiple line player announce messages using multiline yaml syntax #EasterEgg
if (ess.getSettings().getAnnounceNewPlayers())
{
final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user, ess);
diff --git a/lib/bukkit.jar b/lib/bukkit.jar
index 6f9ebec27..4b282ee2b 100644
Binary files a/lib/bukkit.jar and b/lib/bukkit.jar differ
diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar
index e2d918bb5..beff3e4a8 100644
Binary files a/lib/craftbukkit.jar and b/lib/craftbukkit.jar differ