summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsConf.java148
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java37
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsTimer.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/ISettings.java8
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java18
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java156
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandkit.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandnick.java10
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandrepair.java85
-rw-r--r--Essentials/src/config.yml45
-rw-r--r--Essentials/src/messages.properties22
-rw-r--r--Essentials/src/messages_da.properties24
-rw-r--r--Essentials/src/messages_de.properties24
-rw-r--r--Essentials/src/messages_en.properties24
-rw-r--r--Essentials/src/messages_fr.properties24
-rw-r--r--Essentials/src/messages_nl.properties24
-rw-r--r--Essentials/src/plugin.yml2
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java32
19 files changed, 446 insertions, 250 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java
index 6c6567461..2e3920eba 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java
@@ -1,6 +1,8 @@
package com.earth2me.essentials;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -19,12 +21,12 @@ import org.bukkit.util.config.Configuration;
public class EssentialsConf extends Configuration
{
- private static final Logger logger = Logger.getLogger("Minecraft");
- private File configFile;
- private String templateName = null;
- private Class<?> resourceClass = EssentialsConf.class;
+ private static final Logger LOGGER = Logger.getLogger("Minecraft");
+ private transient File configFile;
+ private transient String templateName = null;
+ private transient Class<?> resourceClass = EssentialsConf.class;
- public EssentialsConf(File configFile)
+ public EssentialsConf(final File configFile)
{
super(configFile);
this.configFile = configFile;
@@ -42,38 +44,84 @@ public class EssentialsConf extends Configuration
{
if (!configFile.getParentFile().mkdirs())
{
- logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
+ LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
+ if (configFile.exists() && configFile.length() == 0 && !configFile.delete())
+ {
+ LOGGER.log(Level.SEVERE, "Could not delete file " + configFile.toString());
+ }
+
+ // This will delete files where the first character is 0. In most cases they are broken.
+ if (configFile.exists() && configFile.length() != 0)
+ {
+ try
+ {
+ final InputStream input = new FileInputStream(configFile);
+ try
+ {
+ if (input.read() == 0)
+ {
+ input.close();
+ configFile.delete();
+ }
+ }
+ catch (IOException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ finally
+ {
+ try
+ {
+ input.close();
+ }
+ catch (IOException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ catch (FileNotFoundException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ }
+
if (!configFile.exists())
{
if (templateName != null)
{
- logger.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
+ LOGGER.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
createFromTemplate();
}
else
{
try
{
- logger.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
+ LOGGER.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
if (!configFile.createNewFile())
{
- logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
+ LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
catch (IOException ex)
{
- logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
+ LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
}
}
}
- try {
+
+ try
+ {
super.load();
- } catch(RuntimeException e) {
- logger.log(Level.INFO, "File: " + configFile.toString());
+ }
+ catch (RuntimeException e)
+ {
+ LOGGER.log(Level.INFO, "File: " + configFile.toString());
throw e;
}
+
if (this.root == null)
{
this.root = new HashMap<String, Object>();
@@ -89,7 +137,7 @@ public class EssentialsConf extends Configuration
istr = resourceClass.getResourceAsStream(templateName);
if (istr == null)
{
- logger.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
+ LOGGER.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
return;
}
ostr = new FileOutputStream(configFile);
@@ -104,7 +152,7 @@ public class EssentialsConf extends Configuration
}
catch (IOException ex)
{
- logger.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
+ LOGGER.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
return;
}
finally
@@ -129,12 +177,12 @@ public class EssentialsConf extends Configuration
}
catch (IOException ex)
{
- logger.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
+ LOGGER.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
}
}
}
- public void setTemplateName(String templateName)
+ public void setTemplateName(final String templateName)
{
this.templateName = templateName;
}
@@ -144,48 +192,48 @@ public class EssentialsConf extends Configuration
return configFile;
}
- public void setTemplateName(String templateName, Class<?> resClass)
+ public void setTemplateName(final String templateName, final Class<?> resClass)
{
this.templateName = templateName;
this.resourceClass = resClass;
}
- public boolean hasProperty(String path)
+ public boolean hasProperty(final String path)
{
return getProperty(path) != null;
}
- public Location getLocation(String path, Server server) throws Exception
+ public Location getLocation(final String path, final Server server) throws Exception
{
- String worldName = getString((path != null ? path + "." : "") + "world");
+ final String worldName = getString((path == null ? "" : path + ".") + "world");
if (worldName == null || worldName.isEmpty())
{
return null;
}
- World world = server.getWorld(worldName);
+ final World world = server.getWorld(worldName);
if (world == null)
{
throw new Exception(Util.i18n("invalidWorld"));
}
return new Location(world,
- getDouble((path != null ? path + "." : "") + "x", 0),
- getDouble((path != null ? path + "." : "") + "y", 0),
- getDouble((path != null ? path + "." : "") + "z", 0),
- (float)getDouble((path != null ? path + "." : "") + "yaw", 0),
- (float)getDouble((path != null ? path + "." : "") + "pitch", 0));
+ getDouble((path == null ? "" : path + ".") + "x", 0),
+ getDouble((path == null ? "" : path + ".") + "y", 0),
+ getDouble((path == null ? "" : path + ".") + "z", 0),
+ (float)getDouble((path == null ? "" : path + ".") + "yaw", 0),
+ (float)getDouble((path == null ? "" : path + ".") + "pitch", 0));
}
- public void setProperty(String path, Location loc)
+ public void setProperty(final String path, final Location loc)
{
- setProperty((path != null ? path + "." : "") + "world", loc.getWorld().getName());
- setProperty((path != null ? path + "." : "") + "x", loc.getX());
- setProperty((path != null ? path + "." : "") + "y", loc.getY());
- setProperty((path != null ? path + "." : "") + "z", loc.getZ());
- setProperty((path != null ? path + "." : "") + "yaw", loc.getYaw());
- setProperty((path != null ? path + "." : "") + "pitch", loc.getPitch());
+ setProperty((path == null ? "" : path + ".") + "world", loc.getWorld().getName());
+ setProperty((path == null ? "" : path + ".") + "x", loc.getX());
+ setProperty((path == null ? "" : path + ".") + "y", loc.getY());
+ setProperty((path == null ? "" : path + ".") + "z", loc.getZ());
+ setProperty((path == null ? "" : path + ".") + "yaw", loc.getYaw());
+ setProperty((path == null ? "" : path + ".") + "pitch", loc.getPitch());
}
- public ItemStack getItemStack(String path)
+ public ItemStack getItemStack(final String path)
{
return new ItemStack(
Material.valueOf(getString(path + ".type", "AIR")),
@@ -194,9 +242,9 @@ public class EssentialsConf extends Configuration
(byte)getInt(path + ".data", 0)*/);
}
- public void setProperty(String path, ItemStack stack)
+ public void setProperty(final String path, final ItemStack stack)
{
- Map<String, Object> map = new HashMap<String, Object>();
+ final Map<String, Object> map = new HashMap<String, Object>();
map.put("type", stack.getType().toString());
map.put("amount", stack.getAmount());
map.put("damage", stack.getDurability());
@@ -205,40 +253,30 @@ public class EssentialsConf extends Configuration
setProperty(path, map);
}
- public long getLong(String path, long def)
+ public long getLong(final String path, final long def)
{
- Number num;
try
{
- num = (Number)getProperty(path);
+ final Number num = (Number)getProperty(path);
+ return num == null ? def : num.longValue();
}
- catch(ClassCastException ex)
+ catch (ClassCastException ex)
{
return def;
}
- if (num == null)
- {
- return def;
- }
- return num.longValue();
}
@Override
- public double getDouble(String path, double def)
+ public double getDouble(final String path, final double def)
{
- Number num;
try
{
- num = (Number)getProperty(path);
- }
- catch(ClassCastException ex)
- {
- return def;
+ Number num = (Number)getProperty(path);
+ return num == null ? def : num.doubleValue();
}
- if (num == null)
+ catch (ClassCastException ex)
{
return def;
}
- return num.doubleValue();
}
}
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
index 62c0ac47a..fbd6995c5 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
@@ -73,11 +73,7 @@ public class EssentialsPlayerListener extends PlayerListener
it.remove();
}
}
- if (user.isAfk())
- {
- user.setAfk(false);
- ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
- }
+ user.updateActivity();
if (ess.getSettings().changeDisplayName())
{
user.setDisplayName(user.getNick());
@@ -93,12 +89,26 @@ public class EssentialsPlayerListener extends PlayerListener
}
final User user = ess.getUser(event.getPlayer());
- if (user.isAfk())
+ if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers())
{
- user.setAfk(false);
- ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
+ final Location from = event.getFrom();
+ final Location to = event.getTo().clone();
+ to.setX(from.getX());
+ to.setY(from.getY());
+ to.setZ(from.getZ());
+ try
+ {
+ event.setTo(Util.getSafeDestination(to));
+ }
+ catch (Exception ex)
+ {
+ event.setTo(to);
+ }
+ return;
}
+ user.updateActivity();
+
if (!ess.getSettings().getNetherPortalsEnabled())
{
return;
@@ -216,6 +226,7 @@ public class EssentialsPlayerListener extends PlayerListener
user.getInventory().setContents(user.getSavedInventory());
user.setSavedInventory(null);
}
+ user.updateActivity();
user.dispose();
if (!ess.getSettings().getReclaimSetting())
{
@@ -304,7 +315,8 @@ public class EssentialsPlayerListener extends PlayerListener
return;
}
User user = ess.getUser(event.getPlayer());
- if (user == null) {
+ if (user == null)
+ {
user = new User(event.getPlayer(), ess);
}
user.setNPC(false);
@@ -436,7 +448,7 @@ public class EssentialsPlayerListener extends PlayerListener
{
return;
}
-
+
// We need to loop through each command and execute
for (String command : commandList)
{
@@ -479,10 +491,9 @@ public class EssentialsPlayerListener extends PlayerListener
}
}
}
- if (user.isAfk())
+ if (!cmd.equalsIgnoreCase("afk"))
{
- user.setAfk(false);
- ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
+ user.updateActivity();
}
}
}
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java
index 639802776..f3b447dae 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java
@@ -24,16 +24,17 @@ public class EssentialsTimer implements Runnable
{
final User user = ess.getUser(player);
onlineUsers.add(user);
- user.setLastActivity(currentTime);
+ user.setLastOnlineActivity(currentTime);
+ user.checkActivity();
}
final Iterator<User> iterator = onlineUsers.iterator();
while (iterator.hasNext())
{
final User user = iterator.next();
- if (user.getLastActivity() < currentTime && user.getLastActivity() > user.getLastLogout())
+ if (user.getLastOnlineActivity() < currentTime && user.getLastOnlineActivity() > user.getLastLogout())
{
- user.setLastLogout(user.getLastActivity());
+ user.setLastLogout(user.getLastOnlineActivity());
iterator.remove();
continue;
}
diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java
index ccfcc3175..82c057648 100644
--- a/Essentials/src/com/earth2me/essentials/ISettings.java
+++ b/Essentials/src/com/earth2me/essentials/ISettings.java
@@ -109,8 +109,6 @@ public interface ISettings extends IConf
boolean permissionBasedItemSpawn();
- void reloadConfig();
-
boolean showNonEssCommandsInHelp();
boolean spawnIfNoHome();
@@ -136,4 +134,10 @@ public interface ISettings extends IConf
boolean addPrefixSuffix();
boolean isUpdateEnabled();
+
+ long getAutoAfk();
+
+ long getAutoAfkKick();
+
+ boolean getFreezeAfkPlayers();
}
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index 951c13363..2b7eea8f6 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -485,4 +485,22 @@ public class Settings implements ISettings
{
return config.getBoolean("update-check", true);
}
+
+ @Override
+ public long getAutoAfk()
+ {
+ return config.getLong("auto-afk", 300);
+ }
+
+ @Override
+ public long getAutoAfkKick()
+ {
+ return config.getLong("auto-afk-kick", -1);
+ }
+
+ @Override
+ public boolean getFreezeAfkPlayers()
+ {
+ return config.getBoolean("freeze-afk-players", false);
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java
index 29bbd89cc..d160a6f07 100644
--- a/Essentials/src/com/earth2me/essentials/User.java
+++ b/Essentials/src/com/earth2me/essentials/User.java
@@ -1,11 +1,9 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.IEssentialsCommand;
-import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import com.earth2me.essentials.register.payment.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
-import java.util.logging.Logger;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
@@ -14,38 +12,43 @@ import org.bukkit.entity.Player;
public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
- private static final Logger logger = Logger.getLogger("Minecraft");
private boolean justPortaled = false;
private CommandSender replyTo = null;
- private User teleportRequester;
- private boolean teleportRequestHere;
- private final Teleport teleport;
- private long lastActivity;
+ private transient User teleportRequester;
+ private transient boolean teleportRequestHere;
+ private transient final Teleport teleport;
+ private transient long lastOnlineActivity = System.currentTimeMillis();;
+ private transient long lastActivity;
private boolean hidden = false;
+ private transient boolean godStateBeforeAfk;
- User(Player base, IEssentials ess)
+ User(final Player base, final IEssentials ess)
{
super(base, ess);
teleport = new Teleport(this, ess);
+ godStateBeforeAfk = isGodModeEnabled();
}
- User update(Player base)
+ User update(final Player base)
{
setBase(base);
return this;
}
- public boolean isAuthorized(IEssentialsCommand cmd)
+ @Override
+ public boolean isAuthorized(final IEssentialsCommand cmd)
{
return isAuthorized(cmd, "essentials.");
}
- public boolean isAuthorized(IEssentialsCommand cmd, String permissionPrefix)
+ @Override
+ public boolean isAuthorized(final IEssentialsCommand cmd, final String permissionPrefix)
{
return isAuthorized(permissionPrefix + (cmd.getName().equals("r") ? "msg" : cmd.getName()));
}
- public boolean isAuthorized(String node)
+ @Override
+ public boolean isAuthorized(final String node)
{
if (isOp())
{
@@ -62,11 +65,11 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
public void healCooldown() throws Exception
{
- Calendar now = new GregorianCalendar();
+ final Calendar now = new GregorianCalendar();
if (getLastHealTimestamp() > 0)
{
- double cooldown = ess.getSettings().getHealCooldown();
- Calendar cooldownTime = new GregorianCalendar();
+ final double cooldown = ess.getSettings().getHealCooldown();
+ final Calendar cooldownTime = new GregorianCalendar();
cooldownTime.setTimeInMillis(getLastHealTimestamp());
cooldownTime.add(Calendar.SECOND, (int)cooldown);
cooldownTime.add(Calendar.MILLISECOND, (int)((cooldown * 1000.0) % 1000.0));
@@ -78,12 +81,13 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
setLastHealTimestamp(now.getTimeInMillis());
}
- public void giveMoney(double value)
+ @Override
+ public void giveMoney(final double value)
{
giveMoney(value, null);
}
- public void giveMoney(double value, CommandSender initiator)
+ public void giveMoney(final double value, final CommandSender initiator)
{
if (value == 0)
{
@@ -93,35 +97,36 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
sendMessage(Util.format("addedToAccount", Util.formatCurrency(value, ess)));
if (initiator != null)
{
- initiator.sendMessage((Util.format("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName())));
+ initiator.sendMessage(Util.format("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName()));
}
}
- public void payUser(User reciever, double value) throws Exception
+ public void payUser(final User reciever, final double value) throws Exception
{
if (value == 0)
{
return;
}
- if (!canAfford(value))
- {
- throw new Exception(Util.i18n("notEnoughMoney"));
- }
- else
+ if (canAfford(value))
{
setMoney(getMoney() - value);
reciever.setMoney(reciever.getMoney() + value);
sendMessage(Util.format("moneySentTo", Util.formatCurrency(value, ess), reciever.getDisplayName()));
reciever.sendMessage(Util.format("moneyRecievedFrom", Util.formatCurrency(value, ess), getDisplayName()));
}
+ else
+ {
+ throw new Exception(Util.i18n("notEnoughMoney"));
+ }
}
- public void takeMoney(double value)
+ @Override
+ public void takeMoney(final double value)
{
takeMoney(value, null);
}
- public void takeMoney(double value, CommandSender initiator)
+ public void takeMoney(final double value, final CommandSender initiator)
{
if (value == 0)
{
@@ -131,13 +136,13 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
sendMessage(Util.format("takenFromAccount", Util.formatCurrency(value, ess)));
if (initiator != null)
{
- initiator.sendMessage((Util.format("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName())));
+ initiator.sendMessage(Util.format("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName()));
}
}
- public boolean canAfford(double cost)
+ public boolean canAfford(final double cost)
{
- double mon = getMoney();
+ final double mon = getMoney();
return mon >= cost || isAuthorized("essentials.eco.loan");
}
@@ -151,34 +156,37 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return justPortaled;
}
- public void setJustPortaled(boolean value)
+ public void setJustPortaled(final boolean value)
{
justPortaled = value;
}
- public void setReplyTo(CommandSender user)
+ @Override
+ public void setReplyTo(final CommandSender user)
{
replyTo = user;
}
+ @Override
public CommandSender getReplyTo()
{
return replyTo;
}
- public int compareTo(User t)
+ @Override
+ public int compareTo(final User other)
{
- return ChatColor.stripColor(this.getDisplayName()).compareToIgnoreCase(ChatColor.stripColor(t.getDisplayName()));
+ return ChatColor.stripColor(this.getDisplayName()).compareToIgnoreCase(ChatColor.stripColor(other.getDisplayName()));
}
@Override
- public boolean equals(Object o)
+ public boolean equals(final Object object)
{
- if (!(o instanceof User))
+ if (!(object instanceof User))
{
return false;
}
- return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User)o).getDisplayName()));
+ return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User)object).getDisplayName()));
}
@@ -188,7 +196,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return ChatColor.stripColor(this.getDisplayName()).hashCode();
}
- public Boolean canSpawnItem(int itemId)
+ public Boolean canSpawnItem(final int itemId)
{
return !ess.getSettings().itemSpawnBlacklist().contains(itemId);
}
@@ -203,17 +211,18 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
setHome("home", getLocation());
}
- public void setHome(String name)
+ public void setHome(final String name)
{
setHome(name, getLocation());
}
+ @Override
public void setLastLocation()
{
setLastLocation(getLocation());
}
- public void requestTeleport(User player, boolean here)
+ public void requestTeleport(final User player, final boolean here)
{
teleportRequester = player;
teleportRequestHere = here;
@@ -274,14 +283,14 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return teleport;
}
- public long getLastActivity()
+ public long getLastOnlineActivity()
{
- return lastActivity;
+ return lastOnlineActivity;
}
- public void setLastActivity(long timestamp)
+ public void setLastOnlineActivity(final long timestamp)
{
- lastActivity = timestamp;
+ lastOnlineActivity = timestamp;
}
@Override
@@ -291,12 +300,12 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
try
{
- Method method = ess.getPaymentMethod().getMethod();
+ final Method method = ess.getPaymentMethod().getMethod();
if (!method.hasAccount(this.getName()))
{
throw new Exception();
}
- Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
+ final Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
return account.balance();
}
catch (Throwable ex)
@@ -307,18 +316,18 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
}
@Override
- public void setMoney(double value)
+ public void setMoney(final double value)
{
if (ess.getPaymentMethod().hasMethod())
{
try
{
- Method method = ess.getPaymentMethod().getMethod();
+ final Method method = ess.getPaymentMethod().getMethod();
if (!method.hasAccount(this.getName()))
{
throw new Exception();
}
- Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
+ final Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
account.set(value);
}
catch (Throwable ex)
@@ -329,16 +338,23 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
}
@Override
- public void setAfk(boolean set)
+ public void setAfk(final boolean set)
{
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set);
+ if (set && !isAfk() && ess.getSettings().getFreezeAfkPlayers()) {
+ godStateBeforeAfk = isGodModeEnabled();
+ setGodModeEnabled(true);
+ }
+ if (!set && isAfk() && ess.getSettings().getFreezeAfkPlayers()) {
+ setGodModeEnabled(godStateBeforeAfk);
+ }
super.setAfk(set);
}
@Override
public boolean toggleAfk()
{
- boolean now = super.toggleAfk();
+ final boolean now = super.toggleAfk();
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : now);
return now;
}
@@ -348,7 +364,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return hidden;
}
- public void setHidden(boolean hidden)
+ public void setHidden(final boolean hidden)
{
this.hidden = hidden;
}
@@ -389,4 +405,42 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
ess.getBans().unbanByName(getName());
}
}
+
+ public void updateActivity()
+ {
+ if (isAfk())
+ {
+ setAfk(false);
+ ess.broadcastMessage(getName(), Util.format("userIsNotAway", getDisplayName()));
+ return;
+ }
+ lastActivity = System.currentTimeMillis();
+ }
+
+ public void checkActivity()
+ {
+ final long autoafkkick = ess.getSettings().getAutoAfkKick();
+ if (autoafkkick > 0 && lastActivity + autoafkkick * 1000 < System.currentTimeMillis()
+ && !isAuthorized("essentials.kick.exempt") && !isAuthorized("essentials.afk.kickexempt"))
+ {
+ final String kickReason = Util.format("autoAfkKickReason", autoafkkick/60.0);
+ kickPlayer(kickReason);
+
+
+ for (Player player : ess.getServer().getOnlinePlayers())
+ {
+ final User user = ess.getUser(player);
+ if (user.isAuthorized("essentials.kick.notify"))
+ {
+ player.sendMessage(Util.format("playerKicked", Console.NAME, getName(), kickReason));
+ }
+ }
+ }
+ final long autoafk = ess.getSettings().getAutoAfk();
+ if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis())
+ {
+ setAfk(true);
+ ess.broadcastMessage(getName(), Util.format("userIsAway", getDisplayName()));
+ }
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java
index 849ec2398..7f9a91590 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java
@@ -9,6 +9,7 @@ import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.GregorianCalendar;
+import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@@ -124,7 +125,7 @@ public class Commandkit extends EssentialsCommand
for (String d : items)
{
String[] parts = d.split("[^0-9]+", 3);
- int id = Integer.parseInt(parts[0]);
+ int id = Material.getMaterial(Integer.parseInt(parts[0])).getId();
int amount = parts.length > 1 ? Integer.parseInt(parts[parts.length > 2 ? 2 : 1]) : 1;
short data = parts.length > 2 ? Short.parseShort(parts[1]) : 0;
HashMap<Integer,ItemStack> overfilled = user.getInventory().addItem(new ItemStack(id, amount, data));
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java
index 3731b24c5..99c779ba4 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java
@@ -21,6 +21,11 @@ public class Commandnick extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
+
+ if (!ess.getSettings().changeDisplayName()) {
+ user.sendMessage(Util.i18n("nickDisplayName"));
+ return;
+ }
if (args.length > 1)
{
@@ -80,6 +85,11 @@ public class Commandnick extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
+ if (!ess.getSettings().changeDisplayName()) {
+ sender.sendMessage(Util.i18n("nickDisplayName"));
+ return;
+ }
+
setOthersNickname(server, sender, args);
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java b/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java
index 4e85d2aeb..4c3d941ae 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java
@@ -31,7 +31,7 @@ public class Commandpowertool extends EssentialsCommand
String command = getFinalArg(args, 0);
if (command != null && !command.isEmpty())
{
- if (command.equalsIgnoreCase("list"))
+ if (command.equalsIgnoreCase("l:"))
{
if (powertools == null || powertools.isEmpty())
{
@@ -90,6 +90,7 @@ public class Commandpowertool extends EssentialsCommand
}
else
{
+ powertools.clear();
user.sendMessage(Util.format("powerToolRemoveAll", itemName));
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java
index df0509f94..d41f5580f 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java
@@ -1,21 +1,17 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
package com.earth2me.essentials.commands;
+import com.earth2me.essentials.ChargeException;
+import com.earth2me.essentials.IUser;
+import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
+import java.util.ArrayList;
+import java.util.List;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.material.MaterialData;
-/**
- *
- * @author Seiji
- */
public class Commandrepair extends EssentialsCommand
{
public Commandrepair()
@@ -24,7 +20,7 @@ public class Commandrepair extends EssentialsCommand
}
@Override
- public void run(Server server, User user, String commandLabel, String[] args) throws Exception
+ public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
@@ -33,7 +29,20 @@ public class Commandrepair extends EssentialsCommand
if (args[0].equalsIgnoreCase("hand"))
{
- ItemStack item = user.getItemInHand();
+ final ItemStack item = user.getItemInHand();
+ final String itemName = item.getType().toString().toLowerCase();
+ final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess);
+
+ try
+ {
+ charge.isAffordableFor(user);
+ }
+ catch (Exception ex)
+ {
+ user.sendMessage(ex.getMessage());
+ return;
+ }
+
try
{
repairItem(item);
@@ -43,26 +52,26 @@ public class Commandrepair extends EssentialsCommand
user.sendMessage(e.getMessage());
return;
}
+ charge.charge(user);
- String itemName = item.getType().toString().toLowerCase().replace('_', ' ');
charge(user);
- user.sendMessage(Util.format("repair", itemName));
+ user.sendMessage(Util.format("repair", itemName.replace('_', ' ')));
}
else if (args[0].equalsIgnoreCase("all"))
{
- StringBuilder itemList = new StringBuilder();
- itemList.append(repairItems(user.getInventory().getContents()));
+ final List<String> repaired = new ArrayList<String>();
+ repairItems(user.getInventory().getContents(), user, repaired);
- String armor = repairItems(user.getInventory().getArmorContents());
+ repairItems(user.getInventory().getArmorContents(), user, repaired);
- if (itemList.length() == 0)
+ if (repaired.isEmpty())
{
user.sendMessage(Util.format("repairNone"));
}
else
{
charge(user);
- user.sendMessage(Util.format("repair", Util.joinList(itemList)));
+ user.sendMessage(Util.format("repair", Util.joinList(repaired)));
}
}
@@ -72,10 +81,9 @@ public class Commandrepair extends EssentialsCommand
}
}
- private void repairItem(ItemStack item) throws Exception
+ private void repairItem(final ItemStack item) throws Exception
{
- Material material = Material.getMaterial(item.getTypeId());
- String error = null;
+ final Material material = Material.getMaterial(item.getTypeId());
if (material.isBlock() || material.getMaxDurability() < 0)
{
throw new Exception(Util.i18n("repairInvalidType"));
@@ -89,28 +97,39 @@ public class Commandrepair extends EssentialsCommand
item.setDurability((short)0);
}
- private String repairItems(ItemStack[] items)
+ private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired)
{
- StringBuilder itemList = new StringBuilder();
for (ItemStack item : items)
{
+ final String itemName = item.getType().toString().toLowerCase();
+ final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess);
try
{
- repairItem(item);
- if (itemList.length() > 0)
- {
- itemList.append(", ");
- }
+ charge.isAffordableFor(user);
+ }
+ catch (ChargeException ex)
+ {
+ user.sendMessage(ex.getMessage());
+ continue;
+ }
- String itemName = item.getType().toString().toLowerCase().replace('_', ' ');
- itemList.append(itemName);
+ try
+ {
+ repairItem(item);
}
catch (Exception e)
{
+ continue;
}
-
+ try
+ {
+ charge.charge(user);
+ }
+ catch (ChargeException ex)
+ {
+ user.sendMessage(ex.getMessage());
+ }
+ repaired.add(itemName.replace('_', ' '));
}
-
- return itemList.toString();
}
}
diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml
index 3f1778966..6884960c1 100644
--- a/Essentials/src/config.yml
+++ b/Essentials/src/config.yml
@@ -91,7 +91,7 @@ nether:
# Mob limit on spawnmob
spawnmob-limit: 10
-#Shall we notify users when using /lightning
+# Shall we notify users when using /lightning
warn-on-smite: true
# The message of the day, displayed on connect and by typing /motd.
@@ -207,7 +207,7 @@ backup:
# Interval in minutes
interval: 60
# Add a command that backups your data, e.g.
- # command: 'rdiff-backup World1 backups/World1'
+ #command: 'rdiff-backup World1 backups/World1'
# Set this true to enable permission per warp.
per-warp-permission: false
@@ -223,7 +223,7 @@ debug: false
# Don't forget to remove the # infront of the line
#locale: de_DE
-#turn off god mode when people exit
+# Turn off god mode when people exit
remove-god-on-disconnect: false
# Use the permission system of bukkit
@@ -231,8 +231,27 @@ remove-god-on-disconnect: false
use-bukkit-permissions: false
# Check for updates
+# We do not recommend to disable this unless you are using CraftbukkitUpToDate or Bukget.
+# If you don't like the notices in game, remove the permission
+# essentials.admin.notices.update from your user.
update-check: true
+# Auto-AFK
+# After this timeout in seconds, the user will be set as afk.
+# Set to -1 for no timeout.
+auto-afk: 300
+
+# Auto-AFK Kick
+# After this timeout in seconds, the user will be kicked from the server.
+# Set to -1 for no timeout.
+auto-afk-kick: -1
+
+# Set this to true, if you want to freeze the player, if he is afk.
+# Other players or monsters can't push him out of afk mode then.
+# This will also enable temporary god mode for the afk player.
+# The player has to use the command /afk to leave the afk mode.
+freeze-afk-players: false
+
############################################################
# +------------------------------------------------------+ #
# | EssentialsHome | #
@@ -246,7 +265,7 @@ respawn-at-home: false
# If you enable this and remove default user access to the /sethome command, you can make beds the only way for players to set their home location.
bed-sethome: false
-#if no home is set send you to spawn when /home is used
+# If no home is set send you to spawn when /home is used
spawn-if-no-home: false
# If users have essentials.sethome.multiple how many homes can they have
@@ -289,13 +308,13 @@ economy-log-enabled: false
# +------------------------------------------------------+ #
############################################################
-#Show other plugins commands in help
+# Show other plugins commands in help
non-ess-in-help: true
-#Hide plugins which dont give a permission
-#You can override a true value here for a single plugin by adding a permission to a user/group.
-#The indervidual permission is: essentials.help.<plugin>, anyone with essentials.* or '*' will see all help this setting reguardless.
-#You can use negitive permissions to remove access to just a single plugins help if the following is enabled.
+# Hide plugins which dont give a permission
+# You can override a true value here for a single plugin by adding a permission to a user/group.
+# The indervidual permission is: essentials.help.<plugin>, anyone with essentials.* or '*' will see all help this setting reguardless.
+# You can use negitive permissions to remove access to just a single plugins help if the following is enabled.
hide-permissionless-help: true
############################################################
@@ -427,10 +446,10 @@ protect:
# This only has an effect if "rails" or "signs" is also enabled.
block-below: true
- # Prevent placing blocks above protected rails, this is to stop a potential griefing
+ # Prevent placing blocks above protected rails, this is to stop a potential griefing
prevent-block-on-rails: false
- #Store blocks / signs in memory before writing
+ # Store blocks / signs in memory before writing
memstore: false
# Disable various default physics and behaviors
@@ -470,11 +489,11 @@ protect:
# Set true to disable useing for those people
use: true
- #Should we tell people they are not allowed to build
+ # Should we tell people they are not allowed to build
warn-on-build-disallow: false
- #disable weather options
+ # Disable weather options
weather:
storm: false
thunder: false
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index d68a889d7..775113e0f 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -8,6 +8,7 @@ alertBroke = broke:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} at: {3}
alertPlaced = placed:
alertUsed = used:
+autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Use the /back command to return to your death point.
backUsageMsg = \u00a77Returning to previous location.
backupFinished = Backup finished
@@ -96,9 +97,9 @@ helpConsole = To view help from the console, type ?.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
holeInFloor = Hole in floor
-homes = Homes: {0}
homeSet = \u00a77Home set.
homeSetToBed = \u00a77Your home is now set to this bed.
+homes = Homes: {0}
hour = hour
hours = hours
ignorePlayer = You ignore player {0} from now on.
@@ -184,6 +185,7 @@ mutedUserSpeaks = {0} tried to speak, but is muted.
needTpohere = You need access to /tpohere to teleport other players.
negativeBalanceError = User is not allowed to have a negative balance.
nickChanged = Nickname changed.
+nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
nickNoMore = \u00a77You no longer have a nickname.
@@ -216,6 +218,14 @@ numberRequired = A number goes there, silly.
onlyDayNight = /time only supports day/night.
onlyPlayers = Only in-game players can use {0}.
onlySunStorm = /weather only supports sun/storm.
+pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
+pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
+pTimePlayers = These players have their own time:
+pTimeReset = Player time has been reset for: \u00a7e{0}
+pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Error parsing {0} on line {1}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
@@ -240,14 +250,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
-pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
-pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
-pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
-pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
-pTimePlayers = These players have their own time:
-pTimeReset = Player time has been reset for: \u00a7e{0}
-pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
-pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Reloaded all plugins.
repair = You have successfully repaired your: \u00a7e{0}.
@@ -341,10 +343,10 @@ voiceSilenced = \u00a77Your voice has been silenced
warpDeleteError = Problem deleting the warp file.
warpListPermission = \u00a7cYou do not have Permission to list that warps.
warpNotExist = That warp does not exist.
-warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} set.
warpUsePermission = \u00a7cYou do not have Permission to use that warp.
warpingTo = \u00a77Warping to {0}.
+warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77You set the weather to storm in your world
weatherStormFor = \u00a77You set the weather to storm in your world for {0} seconds
weatherSun = \u00a77You set the weather to sun in your world
diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties
index 1c8681ed0..7c7258188 100644
--- a/Essentials/src/messages_da.properties
+++ b/Essentials/src/messages_da.properties
@@ -8,14 +8,15 @@ alertBroke = \u00f8delagde:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} ved: {3}
alertPlaced = placerede:
alertUsed = brugte:
+autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Brug /back kommandoen for at retunere til dit d\u00f8ds punkt.
backUsageMsg = \u00a77Returnere til tidligere placering.
backupFinished = Backup sluttede
backupStarted = Backup startede
balance = \u00a77Balance: {0}
balanceTop = \u00a77 Top {0} saldi
-banIpAddress = \u00a77Bannede IP addresse
banExempt = \u00a7cDu kan ikke forbyde den p\u00e5g\u00e6ldende spiller.
+banIpAddress = \u00a77Bannede IP addresse
bannedIpsFileError = Fejl i l\u00e6sning af banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt ikke fundet
bannedPlayersFileError = Fejl i l\u00e6sning af banned-players.txt
@@ -96,9 +97,9 @@ helpConsole = For at se hj\u00e6lp fra konsolen, skriv ?.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Side \u00a7c{0}\u00a7f af \u00a7c{1}\u00a7f:
holeInFloor = Hul i gulv
-homes = Homes: {0}
homeSet = \u00a77Hjem sat.
homeSetToBed = \u00a77Dit hjem er nu sat til denne seng.
+homes = Homes: {0}
hour = time
hours = timer
ignorePlayer = Du ignorere spiller {0} fra nu af.
@@ -183,6 +184,7 @@ mutedUserSpeaks = {0} pr\u00f8vede at snakke, men er muted.
needTpohere = Du skal have adgang til /tpohere for at teleporter andre spillere.
negativeBalanceError = Brugeren er ikke tilladt at have en negativ saldo.
nickChanged = Kaldenavn \u00e6ndret.
+nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cDet navn er allerede i brug.
nickNamesAlpha = \u00a7cKaldenavne skal v\u00e6re alfanumeriske.
nickNoMore = \u00a7Du har ikke l\u00e6ngere et kaldenavn.
@@ -215,6 +217,14 @@ numberRequired = Der skal v\u00e6re et nummer, fjolle.
onlyDayNight = /time underst\u00f8tter kun day/night.
onlyPlayers = Kun in-game spillere kan bruge {0}.
onlySunStorm = /weather only supports sun/storm.
+pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
+pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
+pTimePlayers = These players have their own time:
+pTimeReset = Player time has been reset for: \u00a7e{0}
+pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Fejl ved parsing {0} p\u00e5 linje {1}
pendingTeleportCancelled = \u00a7cVentende teleportations anmodning aflyst.
permissionsError = Mangler Permissions/GroupManager; chat pr\u00e6fikser/suffikser vil v\u00e6re sl\u00e5et fra.
@@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Beskyttelses ejer: {0}
-pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
-pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
-pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
-pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
-pTimePlayers = These players have their own time:
-pTimeReset = Player time has been reset for: \u00a7e{0}
-pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
-pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Sp\u00f8rgsm\u00e5l]\u00a7f {0}
reloadAllPlugins = \u00a77Genindl\u00e6ste alle tilf\u00f8jelser.
repair = You have successfully repaired your: \u00a7e{0}.
@@ -340,10 +342,10 @@ voiceSilenced = \u00a77Din stemme er blevet d\u00e6mpet
warpDeleteError = Problem ved sletning af warp filen.
warpListPermission = \u00a7cDu har ikke tilladelse til at liste de warps.
warpNotExist = Den warp eksisterer ikke.
-warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} sat.
warpUsePermission = \u00a7cDu har ikke tilladelse til at benytte den warp.
warpingTo = \u00a77Warper til {0}.
+warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77Du har sat vejret til storm i din verden
weatherStormFor = \u00a77Du har sat vejret til storm i din verden i {0} sekunder
weatherSun = \u00a77Du har sat vejret til sol
diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties
index d5baa6215..047e3df51 100644
--- a/Essentials/src/messages_de.properties
+++ b/Essentials/src/messages_de.properties
@@ -8,14 +8,15 @@ alertBroke = zerst\u00f6rt:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} bei: {3}
alertPlaced = platziert:
alertUsed = benutzt:
+autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Benutze den Befehl /back um zu deinem Todespunkt zur\u00fcck zu kehren.
backUsageMsg = \u00a77Kehre zur letzten Position zur\u00fcck.
backupFinished = Backup beendet
backupStarted = Backup gestartet
balance = \u00a77Geldb\u00f6rse: {0}
balanceTop = \u00a77 Top {0} Guthaben
-banIpAddress = \u00a77IP-Adresse gesperrt.
banExempt = \u00a7cDu kannst diesen Spieler nicht sperren.
+banIpAddress = \u00a77IP-Adresse gesperrt.
bannedIpsFileError = Fehler beim Lesen von banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt nicht gefunden
bannedPlayersFileError = Fehler beim Lesen von banned-players.txt
@@ -96,9 +97,9 @@ helpConsole = Um die Hilfe der Konsole zu sehen, schreibe ?.
helpOp = \u00a7c[Hilfe]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Seite \u00a7c{0}\u00a7f von \u00a7c{1}\u00a7f:
holeInFloor = Loch im Boden
-homes = Homes: {0}
homeSet = \u00a77Zuhause gesetzt.
homeSetToBed = \u00a77Dein Zuhause ist nun an diesem Bett.
+homes = Homes: {0}
hour = Stunde
hours = Stunden
ignorePlayer = Du ignorierst ab jetzt Spieler {0}.
@@ -183,6 +184,7 @@ mutedUserSpeaks = {0} versuchte zu sprechen, aber ist stumm geschalt.
needTpohere = Du brauchst Zugriff auf /tpohere um andere Spieler teleportieren zu k\u00f6nnen.
negativeBalanceError = Spieler darf keine Schulden machen.
nickChanged = Nickname ge\u00e4ndert.
+nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cDieser Name wird bereits verwendet.
nickNamesAlpha = \u00a7cNicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten.
nickNoMore = \u00a7Du hast keinen Nicknamen mehr.
@@ -215,6 +217,14 @@ numberRequired = Ein Zahl wird ben\u00f6tigt.
onlyDayNight = /time unterst\u00fctzt nur day und night.
onlyPlayers = Nur Spieler k\u00f6nnen {0} benutzen.
onlySunStorm = /weather unterst\u00fctzt nur sun und storm.
+pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
+pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
+pTimePlayers = These players have their own time:
+pTimeReset = Player time has been reset for: \u00a7e{0}
+pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Fehler beim Parsen von {0} in Zeile {1}
pendingTeleportCancelled = \u00a7cLaufende Teleportierung abgebrochen.
permissionsError = Permissions/GroupManager fehlt; Chat-Prefixe/-Suffixe sind ausgeschaltet.
@@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Besitzer dieses Blocks: {0}
-pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
-pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
-pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
-pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
-pTimePlayers = These players have their own time:
-pTimeReset = Player time has been reset for: \u00a7e{0}
-pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
-pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Frage]\u00a7f {0}
reloadAllPlugins = \u00a77Alle plugins neu geladen.
repair = You have successfully repaired your: \u00a7e{0}.
@@ -340,10 +342,10 @@ voiceSilenced = \u00a77Du bist stumm
warpDeleteError = Fehler beim L\u00f6schen der Warp-Datei.
warpListPermission = \u00a7cDu hast keine Berechtigung, die Warp-Punkte anzuzeigen.
warpNotExist = Warp-Punkt existiert nicht.
-warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp-Punkt {0} wurde erstellt.
warpUsePermission = \u00a7cDu hast keinen Zugriff f\u00fcr diesen Warp-Punkt.
warpingTo = \u00a77Teleportiere zu Warp-Punkt {0}.
+warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77In deiner Welt st\u00fcrmt es nun.
weatherStormFor = \u00a77In deiner Welt st\u00fcrmt es nun f\u00fcr {0} Sekunden.
weatherSun = \u00a77In deiner Welt scheint nun die Sonne.
diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties
index edf2ed94a..323228015 100644
--- a/Essentials/src/messages_en.properties
+++ b/Essentials/src/messages_en.properties
@@ -8,14 +8,15 @@ alertBroke = broke:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} at: {3}
alertPlaced = placed:
alertUsed = used:
+autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Use the /back command to return to your death point.
backUsageMsg = \u00a77Returning to previous location.
backupFinished = Backup finished
backupStarted = Backup started
balance = \u00a77Balance: {0}
balanceTop = \u00a77 Top {0} balances
-banIpAddress = \u00a77Banned IP address
banExempt = \u00a7cYou can not ban that player.
+banIpAddress = \u00a77Banned IP address
bannedIpsFileError = Error reading banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt not found
bannedPlayersFileError = Error reading banned-players.txt
@@ -96,9 +97,9 @@ helpConsole = To view help from the console, type ?.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
holeInFloor = Hole in floor
-homes = Homes: {0}
homeSet = \u00a77Home set.
homeSetToBed = \u00a77Your home is now set to this bed.
+homes = Homes: {0}
hour = hour
hours = hours
ignorePlayer = You ignore player {0} from now on.
@@ -183,6 +184,7 @@ mutedUserSpeaks = {0} tried to speak, but is muted.
needTpohere = You need access to /tpohere to teleport other players.
negativeBalanceError = User is not allowed to have a negative balance.
nickChanged = Nickname changed.
+nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
nickNoMore = \u00a77You no longer have a nickname.
@@ -215,6 +217,14 @@ numberRequired = A number goes there, silly.
onlyDayNight = /time only supports day/night.
onlyPlayers = Only in-game players can use {0}.
onlySunStorm = /weather only supports sun/storm.
+pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
+pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
+pTimePlayers = These players have their own time:
+pTimeReset = Player time has been reset for: \u00a7e{0}
+pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Error parsing {0} on line {1}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
@@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
-pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
-pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
-pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
-pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
-pTimePlayers = These players have their own time:
-pTimeReset = Player time has been reset for: \u00a7e{0}
-pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
-pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Reloaded all plugins.
repair = You have successfully repaired your: \u00a7e{0}.
@@ -340,10 +342,10 @@ voiceSilenced = \u00a77Your voice has been silenced
warpDeleteError = Problem deleting the warp file.
warpListPermission = \u00a7cYou do not have Permission to list that warps.
warpNotExist = That warp does not exist.
-warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} set.
warpUsePermission = \u00a7cYou do not have Permission to use that warp.
warpingTo = \u00a77Warping to {0}.
+warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77You set the weather to storm in your world
weatherStormFor = \u00a77You set the weather to storm in your world for {0} seconds
weatherSun = \u00a77You set the weather to sun in your world
diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties
index a038e0c8e..8934ea902 100644
--- a/Essentials/src/messages_fr.properties
+++ b/Essentials/src/messages_fr.properties
@@ -8,14 +8,15 @@ alertBroke = a cass\u00e9:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} \u00e0:{3}
alertPlaced = a plac\u00e9:
alertUsed = a utilis\u00e9:
+autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Utilisez la commande /back pour retourner \u00e0 l''endroit ou vous \u00eates mort.
backUsageMsg = \u00a77Retour a votre emplacement pr\u00e9c\u00e8dent.
backupFinished = Backup termin\u00e9
backupStarted = D\u00e9but du backup
balance = \u00a77Solde: {0}
balanceTop = \u00a77 Top {0} soldes
-banIpAddress = \u00a77Adresse IP banni
banExempt = \u00a77Vous ne pouvez pas interdire ce joueur.
+banIpAddress = \u00a77Adresse IP banni
bannedIpsFileError = Erreur de lecture de banned-ips.txt
bannedIpsFileNotFound = Fichier banned-ips.txt introuvable
bannedPlayersFileError = Erreur lors de la lecture de banned-players.txt
@@ -96,9 +97,9 @@ helpConsole = Pour voir l''aide tapez ?
helpOp = \u00a7c[Aide Admin]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Page \u00a7c{0}\u00a7f sur \u00a7c{1}\u00a7f.
holeInFloor = Trou dans le Sol.
-homes = Homes: {0}
homeSet = \u00a77Home d\u00e9fini.
homeSetToBed = \u00a77Votre home est d\u00e9sormais d\u00e9fini sur ce lit.
+homes = Homes: {0}
hour = heure
hours = heures
ignorePlayer = Vous ignorez d\u00e9sormais {0}.
@@ -183,6 +184,7 @@ mutedUserSpeaks = {0} a essay\u00e9 de parler mais est muet.
needTpohere = Vous avez besoin de l''acc\u00e8s \u00e0 /tpohere pour t\u00e9l\u00e9porter d''autres joueurs.
negativeBalanceError = L''utilisateur n''est pas autoris\u00e9 \u00e0 avoir un solde n\u00e9gatif.
nickChanged = Pseudo modifi\u00e9.
+nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cCe nom est d\u00e9j\u00e0 utilis\u00e9.
nickNamesAlpha = \u00a7cLes pseudos doivent \u00eatre alphanum\u00e9riques.
nickNoMore = \u00a7Vous n''avez plus de surnom.
@@ -215,6 +217,14 @@ numberRequired = On a besoin d''un nombre ici, idiot.
onlyDayNight = /time ne supporte que (jour) day/night (nuit).
onlyPlayers = Seulement les joueurs en jeu peuvent utiliser {0}.
onlySunStorm = /weather only supports sun/storm.
+pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
+pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
+pTimePlayers = These players have their own time:
+pTimeReset = Player time has been reset for: \u00a7e{0}
+pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \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.
@@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Propri\u00e9taire de la protection : {0}
-pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
-pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
-pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
-pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
-pTimePlayers = These players have their own time:
-pTimeReset = Player time has been reset for: \u00a7e{0}
-pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
-pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Tous les plugins ont \u00e9t\u00e9 recharg\u00e9s.
repair = You have successfully repaired your: \u00a7e{0}.
@@ -340,10 +342,10 @@ voiceSilenced = \u00a77Votre voix a \u00e9t\u00e9 r\u00e9duite au silence
warpDeleteError = Probl\u00e8me concernant la suppression du fichier warp.
warpListPermission = \u00a7cVous n''avez pas la permission d''afficher la liste des warps.
warpNotExist = Ce warp n''existe pas.
-warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
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 au warp {0}.
+warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77Vous avez d\u00e9fini l''orage dans votre monde
weatherStormFor = \u00a77Vous avez d\u00e9fini l''orage dans votre monde pour {0} secondes.
weatherSun = \u00a77Vous avez mis le beau temps dans votre monde
diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties
index 42a38807c..72478567f 100644
--- a/Essentials/src/messages_nl.properties
+++ b/Essentials/src/messages_nl.properties
@@ -8,14 +8,15 @@ alertBroke = gebroken:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} bij: {3}
alertPlaced = geplaatst:
alertUsed = gebruikt:
+autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Gebruik het /back command om terug te keren naar je sterfplaats.
backUsageMsg = \u00a77Naar de vorige locatie aan het gaan.
backupFinished = Backup voltooid
backupStarted = Backup gestart
balance = \u00a77Saldo: {0}
balanceTop = \u00a77 Top {0} saldi
-banIpAddress = \u00a77Verbannen IP-adres
banExempt = \u00a77Je kunt deze speler niet verbannen.
+banIpAddress = \u00a77Verbannen IP-adres
bannedIpsFileError = Fout bij het lezen van banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt werd niet gevonden
bannedPlayersFileError = Fout bij het lezen van banned-players.txt
@@ -96,9 +97,9 @@ helpConsole = type ? om de consolehelp weer te geven.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Pagina \u00a7c{0}\u00a7f van de \u00a7c{1}\u00a7f:
holeInFloor = Gat in de vloer
-homes = Homes: {0}
homeSet = \u00a77Home ingesteld.
homeSetToBed = \u00a77Je home is is nu verplaatst naar dit bed.
+homes = Homes: {0}
hour = uur
hours = uren
ignorePlayer = Je negeert {0} vanaf nu.
@@ -183,6 +184,7 @@ mutedUserSpeaks = {0} probeerde te praten, maar is gemute.
needTpohere = Je moet toegang krijgen tot /tpohere om naar andere spelers te teleporteren.
negativeBalanceError = Speler is niet toegestaan om een negatief saldo te hebben.
nickChanged = Nickname veranderd.
+nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cDie naam is al in gebruik.
nickNamesAlpha = \u00a7cNicknames moeten alfanumeriek zijn.
nickNoMore = \u00a7Je hebt geen nickname meer.
@@ -215,6 +217,14 @@ numberRequired = Er moet daar een nummer, grapjas.
onlyDayNight = /time ondersteund alleen day/night.
onlyPlayers = Alleen in-game spelers kunnen {0} gebruiken.
onlySunStorm = /weather only supports sun/storm.
+pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
+pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
+pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
+pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
+pTimePlayers = These players have their own time:
+pTimeReset = Player time has been reset for: \u00a7e{0}
+pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
+pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Fout bij ontleding {0} op regel {1}
pendingTeleportCancelled = \u00a7cAangevraagde teleportatie afgelast.
permissionsError = Permissions/GroupManager ontbreekt; chat prefixes/suffixes worden uitgeschakeld.
@@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Beschermingeigenaar: {0}
-pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
-pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
-pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
-pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
-pTimePlayers = These players have their own time:
-pTimeReset = Player time has been reset for: \u00a7e{0}
-pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
-pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Vraag]\u00a7f {0}
reloadAllPlugins = \u00a77Alle plugins zijn herladen.
repair = You have successfully repaired your: \u00a7e{0}.
@@ -340,10 +342,10 @@ voiceSilenced = \u00a77Je kan niet meer praten
warpDeleteError = Fout bij het verwijderen van het warp bestand.
warpListPermission = \u00a7cJe hebt geen toegang om die warp te maken.
warpNotExist = Die warp bestaat niet.
-warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} ingesteld.
warpUsePermission = \u00a7cOnbevoegd om die warp te gebruiken.
warpingTo = \u00a77Aan het warpen naar {0}.
+warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77Je hebt het weer naar storm gezet in de wereld
weatherStormFor = \u00a77Je hebt het weer in de wereld naar storm gezet voor {0} seconde
weatherSun = \u00a77Je hebt het weer naar zon gezet in de wereld
diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml
index d5ca133a9..2090e8484 100644
--- a/Essentials/src/plugin.yml
+++ b/Essentials/src/plugin.yml
@@ -208,7 +208,7 @@ commands:
aliases: [pong,eping,epong]
powertool:
description: Assigns a command to the item in hand, {player} will be replaced by the name of the player that you click.
- usage: /<command> [list|a:|r:][command] <arguments>
+ usage: /<command> [l:|a:|r:][command] <arguments>
aliases: [pt,epowertool,ept]
ptime:
description: Adjust player's client time. Add @ prefix to fix.
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
index 7b5f93d0e..8717825b3 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
@@ -61,7 +61,7 @@ public class EssentialsProtectBlockListener extends BlockListener
}
final Block below = blockPlaced.getRelative(BlockFace.DOWN);
- if (below.getType() == Material.RAILS
+ if ((below.getType() == Material.RAILS || below.getType() == Material.POWERED_RAIL || below.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.prevent_block_on_rail)
&& prot.getStorage().isProtected(below, user.getName()))
{
@@ -70,7 +70,7 @@ public class EssentialsProtectBlockListener extends BlockListener
}
final List<Block> protect = new ArrayList<Block>();
- if (blockPlaced.getType() == Material.RAILS
+ if ((blockPlaced.getType() == Material.RAILS || blockPlaced.getType() == Material.POWERED_RAIL || blockPlaced.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails)
&& user.isAuthorized("essentials.protect"))
{
@@ -103,8 +103,8 @@ public class EssentialsProtectBlockListener extends BlockListener
{
return;
}
- Block block = event.getBlock();
- if (block.getType() == Material.RAILS
+ final Block block = event.getBlock();
+ if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
@@ -155,7 +155,7 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
final Block toBlock = event.getToBlock();
- if (toBlock.getType() == Material.RAILS
+ if ((toBlock.getType() == Material.RAILS || toBlock.getType() == Material.POWERED_RAIL || toBlock.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
@@ -196,7 +196,7 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
final Block block = event.getBlock();
- if (block.getType() == Material.RAILS && prot.getSettingBool(ProtectConfig.protect_rails))
+ if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL) && prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
return;
@@ -257,10 +257,10 @@ public class EssentialsProtectBlockListener extends BlockListener
if (user.isAuthorized("essentials.protect.admin"))
{
- if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS)
+ if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
storage.unprotectBlock(block);
- if (type == Material.RAILS || type == Material.SIGN_POST)
+ if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
{
final Block below = block.getRelative(BlockFace.DOWN);
storage.unprotectBlock(below);
@@ -293,10 +293,10 @@ public class EssentialsProtectBlockListener extends BlockListener
}
else
{
- if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS)
+ if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
storage.unprotectBlock(block);
- if (type == Material.RAILS || type == Material.SIGN_POST)
+ if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
{
final Block below = block.getRelative(BlockFace.DOWN);
storage.unprotectBlock(below);
@@ -337,7 +337,11 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
- || block.getType() == Material.RAILS)
+ || block.getType() == Material.RAILS
+ || block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
+ || block.getType() == Material.POWERED_RAIL
+ || block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
+ || block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
@@ -385,7 +389,11 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
- || block.getType() == Material.RAILS)
+ || block.getType() == Material.RAILS
+ || block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
+ || block.getType() == Material.POWERED_RAIL
+ || block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
+ || block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);