From 00050d08d430b32493708a342374c1081bafd727 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 27 Aug 2011 02:54:45 +0100 Subject: [PATCH 01/10] Powertool fix. --- .../src/com/earth2me/essentials/commands/Commandpowertool.java | 3 ++- Essentials/src/plugin.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) 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/plugin.yml b/Essentials/src/plugin.yml index 9a9d5ffd2..63e9b9aa8 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: / [list|a:|r:][command] + usage: / [l:|a:|r:][command] aliases: [pt,epowertool,ept] ptime: description: Adjust player's client time. Add @ prefix to fix. From 8998168ec2f7053485a8fc64c18cd1479b36c88b Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 13:59:39 +0200 Subject: [PATCH 02/10] Auto-AFK, AFK-Kick and freeze afk players --- .../essentials/EssentialsPlayerListener.java | 27 ++- .../earth2me/essentials/EssentialsTimer.java | 7 +- .../com/earth2me/essentials/ISettings.java | 8 +- .../src/com/earth2me/essentials/Settings.java | 18 ++ .../src/com/earth2me/essentials/User.java | 156 ++++++++++++------ Essentials/src/config.yml | 45 +++-- 6 files changed, 176 insertions(+), 85 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 62c0ac47a..ffdefb663 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,11 +89,12 @@ public class EssentialsPlayerListener extends PlayerListener } final User user = ess.getUser(event.getPlayer()); - if (user.isAfk()) - { - user.setAfk(false); - ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName())); + if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers()) { + event.setCancelled(true); + return; } + + user.updateActivity(); if (!ess.getSettings().getNetherPortalsEnabled()) { @@ -216,6 +213,7 @@ public class EssentialsPlayerListener extends PlayerListener user.getInventory().setContents(user.getSavedInventory()); user.setSavedInventory(null); } + user.updateActivity(); user.dispose(); if (!ess.getSettings().getReclaimSetting()) { @@ -304,7 +302,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 +435,7 @@ public class EssentialsPlayerListener extends PlayerListener { return; } - + // We need to loop through each command and execute for (String command : commandList) { @@ -479,10 +478,6 @@ public class EssentialsPlayerListener extends PlayerListener } } } - if (user.isAfk()) - { - 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 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..722cfadb1 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, 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; + 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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.i18n("autoAfkKickReason"); + 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 (autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis()) + { + setAfk(true); + ess.broadcastMessage(getName(), Util.format("userIsAway", getDisplayName())); + } + } } diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 3f1778966..6f4447f2b 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-player: 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., 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., 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 From 631583aef06fd00e41253a68b872b48f05c76eb9 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 15:30:30 +0200 Subject: [PATCH 03/10] Cleanup of EssentialsConf and delete empty files or files that are corrupt. --- .../earth2me/essentials/EssentialsConf.java | 148 +++++++++++------- 1 file changed, 93 insertions(+), 55 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(); @@ -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 map = new HashMap(); + final Map map = new HashMap(); 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); + Number num = (Number)getProperty(path); + return num == null ? def : num.doubleValue(); } - catch(ClassCastException ex) + catch (ClassCastException ex) { return def; } - if (num == null) - { - return def; - } - return num.doubleValue(); } } From 34987d6e07380c22bd643011ad48e9c8bc81c7cb Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 15:30:56 +0200 Subject: [PATCH 04/10] Fixes for afk --- .../essentials/EssentialsPlayerListener.java | 17 +++++++++++++---- .../src/com/earth2me/essentials/User.java | 4 ++-- Essentials/src/config.yml | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index ffdefb663..e6a7f3d3d 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -89,11 +89,17 @@ public class EssentialsPlayerListener extends PlayerListener } final User user = ess.getUser(event.getPlayer()); - if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers()) { - event.setCancelled(true); + if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers()) + { + final Location from = event.getFrom(); + final Location to = event.getTo().clone(); + to.setX(from.getX()); + to.setY(from.getY()); + to.setZ(from.getZ()); + event.setTo(to); return; } - + user.updateActivity(); if (!ess.getSettings().getNetherPortalsEnabled()) @@ -478,6 +484,9 @@ public class EssentialsPlayerListener extends PlayerListener } } } - user.updateActivity(); + if (!cmd.equalsIgnoreCase("afk")) + { + user.updateActivity(); + } } } diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 722cfadb1..3af6a5a4e 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -17,7 +17,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser private transient User teleportRequester; private transient boolean teleportRequestHere; private transient final Teleport teleport; - private transient long lastOnlineActivity; + private transient long lastOnlineActivity = System.currentTimeMillis();; private transient long lastActivity; private boolean hidden = false; private transient boolean godStateBeforeAfk; @@ -437,7 +437,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser } } final long autoafk = ess.getSettings().getAutoAfk(); - if (autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis()) + if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis()) { setAfk(true); ess.broadcastMessage(getName(), Util.format("userIsAway", getDisplayName())); diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 6f4447f2b..6884960c1 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -250,7 +250,7 @@ auto-afk-kick: -1 # 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-player: false +freeze-afk-players: false ############################################################ # +------------------------------------------------------+ # From 0543a8f8ba60548376bf4cff6f0dc673a98ecb73 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 15:43:26 +0200 Subject: [PATCH 05/10] Prevent kick for floating while afk & frozen --- .../earth2me/essentials/EssentialsPlayerListener.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index e6a7f3d3d..fbd6995c5 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -96,7 +96,14 @@ public class EssentialsPlayerListener extends PlayerListener to.setX(from.getX()); to.setY(from.getY()); to.setZ(from.getZ()); - event.setTo(to); + try + { + event.setTo(Util.getSafeDestination(to)); + } + catch (Exception ex) + { + event.setTo(to); + } return; } From 14030deb164f82978a2778daa330a74af82309dc Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 16:19:23 +0200 Subject: [PATCH 06/10] Cleanup of repair command and allow different charges for each item. --- .../essentials/commands/Commandrepair.java | 91 ++++++++++++------- 1 file changed, 57 insertions(+), 34 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java index df0509f94..ea1d1fc9e 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 repaired = new ArrayList(); + 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,43 @@ 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 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); + boolean canBeRepaired = true; try { - repairItem(item); - if (itemList.length() > 0) - { - itemList.append(", "); - } - - String itemName = item.getType().toString().toLowerCase().replace('_', ' '); - itemList.append(itemName); + charge.isAffordableFor(user); } - catch (Exception e) + catch (ChargeException ex) { + canBeRepaired = false; + } + + if (canBeRepaired) + { + 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(); } } From 394a786044055b8ebaba1c6046ce3de6e96ccb50 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 16:21:29 +0200 Subject: [PATCH 07/10] Another fix for /repair --- .../essentials/commands/Commandrepair.java | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java index ea1d1fc9e..d41f5580f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java @@ -103,37 +103,33 @@ public class Commandrepair extends EssentialsCommand { final String itemName = item.getType().toString().toLowerCase(); final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess); - boolean canBeRepaired = true; try { charge.isAffordableFor(user); } catch (ChargeException ex) { - canBeRepaired = false; + user.sendMessage(ex.getMessage()); + continue; } - if (canBeRepaired) + try { - try - { - repairItem(item); - } - catch (Exception e) - { - continue; - } - try - { - charge.charge(user); - } - catch (ChargeException ex) - { - user.sendMessage(ex.getMessage()); - } - repaired.add(itemName.replace('_', ' ')); + repairItem(item); } - + catch (Exception e) + { + continue; + } + try + { + charge.charge(user); + } + catch (ChargeException ex) + { + user.sendMessage(ex.getMessage()); + } + repaired.add(itemName.replace('_', ' ')); } } } From f18c3c7e1de14beffb85bcf45840a64c9544b282 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 16:56:45 +0200 Subject: [PATCH 08/10] Disable /nick if change-displayname is disabled Some translations --- .../src/com/earth2me/essentials/User.java | 2 +- .../essentials/commands/Commandnick.java | 10 ++++++++ Essentials/src/messages.properties | 22 +++++++++-------- Essentials/src/messages_da.properties | 24 ++++++++++--------- Essentials/src/messages_de.properties | 24 ++++++++++--------- Essentials/src/messages_en.properties | 24 ++++++++++--------- Essentials/src/messages_fr.properties | 24 ++++++++++--------- Essentials/src/messages_nl.properties | 24 ++++++++++--------- 8 files changed, 88 insertions(+), 66 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 3af6a5a4e..d160a6f07 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -423,7 +423,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser if (autoafkkick > 0 && lastActivity + autoafkkick * 1000 < System.currentTimeMillis() && !isAuthorized("essentials.kick.exempt") && !isAuthorized("essentials.afk.kickexempt")) { - final String kickReason = Util.i18n("autoAfkKickReason"); + final String kickReason = Util.format("autoAfkKickReason", autoafkkick/60.0); kickPlayer(kickReason); 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/messages.properties b/Essentials/src/messages.properties index 52cefd453..5190c6968 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. @@ -179,6 +180,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. @@ -211,6 +213,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. @@ -235,14 +245,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}. @@ -332,10 +334,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 2000c0c3b..b27154190 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. @@ -179,6 +180,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. @@ -211,6 +213,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. @@ -235,14 +245,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}. @@ -332,10 +334,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 02e015b15..a38ba3d6e 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}. @@ -179,6 +180,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. @@ -211,6 +213,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. @@ -235,14 +245,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}. @@ -332,10 +334,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 c96c9ecb7..6f1809c05 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. @@ -179,6 +180,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. @@ -211,6 +213,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. @@ -235,14 +245,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}. @@ -332,10 +334,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 79016f02d..c564d0d76 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}. @@ -179,6 +180,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. @@ -211,6 +213,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. @@ -235,14 +245,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}. @@ -332,10 +334,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 c9fa21273..cd214b5d4 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. @@ -179,6 +180,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. @@ -211,6 +213,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. @@ -235,14 +245,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}. @@ -332,10 +334,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 From 087e600d6d6d9e6192f62d25d76f541fd14740b5 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 17:01:01 +0200 Subject: [PATCH 09/10] Prevent that wrong ids are used in /kit --- .../src/com/earth2me/essentials/commands/Commandkit.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 overfilled = user.getInventory().addItem(new ItemStack(id, amount, data)); From 65be2dba9927d971066948f01e97ebbda79fe5a1 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 27 Aug 2011 17:09:43 +0200 Subject: [PATCH 10/10] Protect detector/powered rails --- .../EssentialsProtectBlockListener.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) 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 protect = new ArrayList(); - 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);