diff options
63 files changed, 929 insertions, 699 deletions
diff --git a/Essentials/nbproject/project.properties b/Essentials/nbproject/project.properties index 71fea5cf9..7a5ffe7bb 100644 --- a/Essentials/nbproject/project.properties +++ b/Essentials/nbproject/project.properties @@ -66,6 +66,7 @@ endorsed.classpath= excludes= file.reference.BOSEconomy7.jar=../lib/BOSEconomy7.jar file.reference.bPermissions.jar=../lib/bPermissions.jar +file.reference.bpermissions2.jar=../lib/bpermissions2.jar file.reference.bukkit.jar=../lib/bukkit.jar file.reference.craftbukkit.jar=../lib/craftbukkit.jar file.reference.iCo4.jar=../lib/iCo4.jar @@ -97,7 +98,8 @@ javac.classpath=\ ${file.reference.bukkit.jar}:\ ${file.reference.craftbukkit.jar}:\ ${file.reference.Vault.jar}:\ - ${file.reference.Privileges.jar} + ${file.reference.Privileges.jar}:\ + ${file.reference.bpermissions2.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 3ee7c1777..ff082efa7 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -66,7 +66,7 @@ import org.yaml.snakeyaml.error.YAMLException; public class Essentials extends JavaPlugin implements IEssentials { - public static final int BUKKIT_VERSION = 1846; + public static final int BUKKIT_VERSION = 1958; private static final Logger LOGGER = Logger.getLogger("Minecraft"); private transient ISettings settings; private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this); diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java index ec6e27b53..9ffe7e5b6 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java @@ -3,7 +3,6 @@ package com.earth2me.essentials; import static com.earth2me.essentials.I18n._; import java.io.*; import java.util.HashMap; -import java.util.List; import java.util.Locale; import java.util.Map; import java.util.logging.Level; @@ -12,12 +11,14 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.World; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import org.bukkit.util.config.Configuration; -public class EssentialsConf extends Configuration +public class EssentialsConf extends YamlConfiguration { private static final Logger LOGGER = Logger.getLogger("Minecraft"); private transient File configFile; @@ -26,15 +27,10 @@ public class EssentialsConf extends Configuration public EssentialsConf(final File configFile) { - super(configFile); + super(); this.configFile = configFile; - if (this.root == null) - { - this.root = new HashMap<String, Object>(); - } } - @Override public void load() { configFile = configFile.getAbsoluteFile(); @@ -105,20 +101,24 @@ public class EssentialsConf extends Configuration } } + try { - super.load(); + super.load(configFile); } - catch (RuntimeException e) - { - File broken = new File(configFile.getAbsolutePath() + ".broken." + System.currentTimeMillis()); - configFile.renameTo(broken); - LOGGER.log(Level.SEVERE, "The file " + configFile.toString() + " is broken, it has been renamed to " + broken.toString(), e.getCause()); + catch (FileNotFoundException ex) + { + LOGGER.log(Level.SEVERE, null, ex); } - - if (this.root == null) + catch (IOException ex) { - this.root = new HashMap<String, Object>(); + LOGGER.log(Level.SEVERE, null, ex); + } + catch (InvalidConfigurationException ex) + { + File broken = new File(configFile.getAbsolutePath() + ".broken." + System.currentTimeMillis()); + configFile.renameTo(broken); + LOGGER.log(Level.SEVERE, "The file " + configFile.toString() + " is broken, it has been renamed to " + broken.toString(), ex.getCause()); } } @@ -193,7 +193,7 @@ public class EssentialsConf extends Configuration public boolean hasProperty(final String path) { - return getProperty(path) != null; + return isSet(path); } public Location getLocation(final String path, final Server server) throws Exception @@ -218,24 +218,25 @@ public class EssentialsConf extends Configuration 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()); + set((path == null ? "" : path + ".") + "world", loc.getWorld().getName()); + set((path == null ? "" : path + ".") + "x", loc.getX()); + set((path == null ? "" : path + ".") + "y", loc.getY()); + set((path == null ? "" : path + ".") + "z", loc.getZ()); + set((path == null ? "" : path + ".") + "yaw", loc.getYaw()); + set((path == null ? "" : path + ".") + "pitch", loc.getPitch()); } + @Override public ItemStack getItemStack(final String path) { final ItemStack stack = new ItemStack( Material.valueOf(getString(path + ".type", "AIR")), getInt(path + ".amount", 1), (short)getInt(path + ".damage", 0)); - final List<String> enchants = getKeys(path + ".enchant"); + final ConfigurationSection enchants = getConfigurationSection(path + ".enchant"); if (enchants != null) { - for (String enchant : enchants) + for (String enchant : enchants.getKeys(false)) { final Enchantment enchantment = Enchantment.getByName(enchant.toUpperCase(Locale.ENGLISH)); if (enchantment == null) @@ -271,14 +272,14 @@ public class EssentialsConf extends Configuration } // getData().getData() is broken //map.put("data", stack.getDurability()); - setProperty(path, map); + set(path, map); } public long getLong(final String path, final long def) { try { - final Number num = (Number)getProperty(path); + final Number num = (Number)get(path); return num == null ? def : num.longValue(); } catch (ClassCastException ex) @@ -292,7 +293,7 @@ public class EssentialsConf extends Configuration { try { - Number num = (Number)getProperty(path); + Number num = (Number)get(path); return num == null ? def : num.doubleValue(); } catch (ClassCastException ex) @@ -300,4 +301,27 @@ public class EssentialsConf extends Configuration return def; } } + + public void save() { + try + { + save(configFile); + } + catch (IOException ex) + { + LOGGER.log(Level.SEVERE, null, ex); + } + } + + public Object getProperty(String path) { + return get(path); + } + + public void setProperty(String path, Object object) { + set(path, object); + } + + public void removeProperty(String path) { + set(path, null); + } } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 8e151c3e9..9b964364b 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -282,44 +282,6 @@ public class EssentialsPlayerListener implements Listener { final User user = ess.getUser(event.getPlayer()); user.updateActivity(true); - if (event.getAnimationType() == PlayerAnimationType.ARM_SWING - && user.hasPowerTools() && user.arePowerToolsEnabled()) - { - usePowertools(user); - } - } - - private void usePowertools(final User user) - { - final ItemStack is = user.getItemInHand(); - int id; - if (is == null || (id = is.getTypeId()) == 0) - { - return; - } - final List<String> commandList = user.getPowertool(id); - if (commandList == null || commandList.isEmpty()) - { - return; - } - - // We need to loop through each command and execute - for (String command : commandList) - { - if (command.matches(".*\\{player\\}.*")) - { - //user.sendMessage("Click a player to use this command"); - continue; - } - else if (command.startsWith("c:")) - { - user.chat(command.substring(2)); - } - else - { - user.getServer().dispatchCommand(user.getBase(), command); - } - } } @EventHandler(priority = EventPriority.MONITOR) @@ -365,19 +327,76 @@ public class EssentialsPlayerListener implements Listener @EventHandler(priority = EventPriority.MONITOR) public void onPlayerInteract(final PlayerInteractEvent event) { - if (event.isCancelled()) + switch (event.getAction()) { - return; + case RIGHT_CLICK_BLOCK: + if (event.isCancelled()) + { + return; + } + if (ess.getSettings().getUpdateBedAtDaytime() && event.getClickedBlock().getType() == Material.BED_BLOCK) + { + event.getPlayer().setBedSpawnLocation(event.getClickedBlock().getLocation()); + } + break; + case LEFT_CLICK_AIR: + case LEFT_CLICK_BLOCK: + final User user = ess.getUser(event.getPlayer()); + if (user.hasPowerTools() && user.arePowerToolsEnabled()) + { + if (usePowertools(user)) + { + event.setCancelled(true); + } + } + break; + default: + break; } - if (event.getAction() != Action.RIGHT_CLICK_BLOCK) + } + + private boolean usePowertools(final User user) + { + final ItemStack is = user.getItemInHand(); + int id; + if (is == null || (id = is.getTypeId()) == 0) { - return; + return false; } - - if (ess.getSettings().getUpdateBedAtDaytime() && event.getClickedBlock().getType() == Material.BED_BLOCK) + final List<String> commandList = user.getPowertool(id); + if (commandList == null || commandList.isEmpty()) + { + return false; + } + boolean used = false; + // We need to loop through each command and execute + for (final String command : commandList) { - event.getPlayer().setBedSpawnLocation(event.getClickedBlock().getLocation()); + if (command.matches(".*\\{player\\}.*")) + { + //user.sendMessage("Click a player to use this command"); + continue; + } + else if (command.startsWith("c:")) + { + used = true; + user.chat(command.substring(2)); + } + else + { + used = true; + ess.scheduleSyncDelayedTask( + new Runnable() + { + @Override + public void run() + { + user.getServer().dispatchCommand(user.getBase(), command); + } + }); + } } + return used; } @EventHandler(priority = EventPriority.LOW) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java index ae444af2e..f70f0c091 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java @@ -95,7 +95,7 @@ public class EssentialsUpgrade } final EssentialsConf conf = new EssentialsConf(configFile); conf.load(); - List<String> lines = conf.getStringList(name, null); + List<String> lines = conf.getStringList(name); if (lines != null && !lines.isEmpty()) { if (!file.createNewFile()) @@ -271,18 +271,18 @@ public class EssentialsUpgrade if (config.hasProperty("powertools")) { @SuppressWarnings("unchecked") - final Map<Integer, Object> powertools = (Map<Integer, Object>)config.getProperty("powertools"); + final Map<String, Object> powertools = config.getConfigurationSection("powertools").getValues(false); if (powertools == null) { continue; } - for (Map.Entry<Integer, Object> entry : powertools.entrySet()) + for (Map.Entry<String, Object> entry : powertools.entrySet()) { if (entry.getValue() instanceof String) { List<String> temp = new ArrayList<String>(); temp.add((String)entry.getValue()); - ((Map<Integer, Object>)powertools).put(entry.getKey(), temp); + ((Map<String, Object>)powertools).put(entry.getKey(), temp); } } config.save(); @@ -332,7 +332,7 @@ public class EssentialsUpgrade config.setProperty("homes.home", defloc); } - List<String> worlds = config.getKeys("home.worlds"); + Set<String> worlds = config.getConfigurationSection("home.worlds").getKeys(false); Location loc; String worldName; @@ -381,7 +381,7 @@ public class EssentialsUpgrade } final EssentialsConf usersConfig = new EssentialsConf(usersFile); usersConfig.load(); - for (String username : usersConfig.getKeys(null)) + for (String username : usersConfig.getKeys(false)) { final User user = new User(new OfflinePlayer(username, ess), ess); final String nickname = usersConfig.getString(username + ".nickname"); @@ -389,7 +389,7 @@ public class EssentialsUpgrade { user.setNickname(nickname); } - final List<String> mails = usersConfig.getStringList(username + ".mail", null); + final List<String> mails = usersConfig.getStringList(username + ".mail"); if (mails != null && !mails.isEmpty()) { user.setMails(mails); @@ -701,7 +701,7 @@ public class EssentialsUpgrade if (!config.hasProperty("spawns")) { final Spawns spawns = new Spawns(); - List<String> keys = config.getKeys(); + Set<String> keys = config.getKeys(false); for (String group : keys) { Location loc = getFakeLocation(config, group); @@ -748,7 +748,7 @@ public class EssentialsUpgrade if (!config.hasProperty("jails")) { final com.earth2me.essentials.settings.Jails jails = new com.earth2me.essentials.settings.Jails(); - List<String> keys = config.getKeys(); + Set<String> keys = config.getKeys(false); for (String jailName : keys) { Location loc = getFakeLocation(config, jailName); diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 560eb6f79..6186736b4 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -2,11 +2,13 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; +import com.earth2me.essentials.textreader.IText; import java.text.MessageFormat; import java.util.List; import java.util.Map; import java.util.Set; import org.bukkit.ChatColor; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.event.EventPriority; @@ -14,9 +16,7 @@ public interface ISettings extends IConf { boolean areSignsDisabled(); - String format(String format, IUser user); - - String getAnnounceNewPlayerFormat(IUser user); + IText getAnnounceNewPlayerFormat(); boolean getAnnounceNewPlayers(); @@ -35,14 +35,14 @@ public interface ISettings extends IConf String getCurrencySymbol(); int getOversizedStackSize(); - + int getDefaultStackSize(); double getHealCooldown(); - Object getKit(String name); + Map<String, Object> getKit(String name); - Map<String, Object> getKits(); + ConfigurationSection getKits(); String getLocale(); @@ -66,7 +66,7 @@ public interface ISettings extends IConf boolean getRespawnAtHome(); - List getMultipleHomes(); + Set getMultipleHomes(); int getHomeLimit(String set); @@ -101,7 +101,7 @@ public interface ISettings extends IConf boolean isTradeInStacks(int id); List<Integer> itemSpawnBlacklist(); - + List<EssentialsSign> enabledSigns(); boolean permissionBasedItemSpawn(); @@ -115,8 +115,12 @@ public interface ISettings extends IConf boolean warnOnSmite(); double getMaxMoney(); + + double getMinMoney(); boolean isEcoLogEnabled(); + + boolean isEcoLogUpdateEnabled(); boolean removeGodOnDisconnect(); @@ -143,18 +147,18 @@ public interface ISettings extends IConf public void setDebug(boolean debug); Set<String> getNoGodWorlds(); - + boolean getUpdateBedAtDaytime(); - + boolean getRepairEnchanted(); - + boolean getIsWorldTeleportPermissions(); - + boolean registerBackInListener(); boolean getDisableItemPickupWhileAfk(); EventPriority getRespawnPriority(); - + long getTpaAcceptCancellation(); } diff --git a/Essentials/src/com/earth2me/essentials/IUser.java b/Essentials/src/com/earth2me/essentials/IUser.java index bff556ab4..df5401886 100644 --- a/Essentials/src/com/earth2me/essentials/IUser.java +++ b/Essentials/src/com/earth2me/essentials/IUser.java @@ -32,6 +32,8 @@ public interface IUser extends Player void takeMoney(double value); void giveMoney(double value); + + boolean canAfford(double value); String getGroup(); diff --git a/Essentials/src/com/earth2me/essentials/Jails.java b/Essentials/src/com/earth2me/essentials/Jails.java index 0011905ec..7217992ad 100644 --- a/Essentials/src/com/earth2me/essentials/Jails.java +++ b/Essentials/src/com/earth2me/essentials/Jails.java @@ -193,7 +193,7 @@ public class Jails extends AsyncStorageObjectHolder<com.earth2me.essentials.sett } } - @EventHandler(priority = EventPriority.HIGH) + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerRespawn(final PlayerRespawnEvent event) { final User user = ess.getUser(event.getPlayer()); @@ -246,7 +246,7 @@ public class Jails extends AsyncStorageObjectHolder<com.earth2me.essentials.sett user.sendMessage(_("jailMessage")); } - @EventHandler(priority = EventPriority.HIGH) + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerJoin(final PlayerJoinEvent event) { final User user = ess.getUser(event.getPlayer()); diff --git a/Essentials/src/com/earth2me/essentials/Kit.java b/Essentials/src/com/earth2me/essentials/Kit.java index 53d2e8784..88816368c 100644 --- a/Essentials/src/com/earth2me/essentials/Kit.java +++ b/Essentials/src/com/earth2me/essentials/Kit.java @@ -5,6 +5,7 @@ import com.earth2me.essentials.commands.NoChargeException; import com.earth2me.essentials.craftbukkit.InventoryWorkaround; import java.util.*; import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; @@ -15,16 +16,16 @@ public class Kit { try { - final Map<String, Object> kits = ess.getSettings().getKits(); + final ConfigurationSection kits = ess.getSettings().getKits(); final StringBuilder list = new StringBuilder(); - for (String kiteItem : kits.keySet()) + for (String kiteItem : kits.getKeys(false)) { if (user.isAuthorized("essentials.kit." + kiteItem.toLowerCase(Locale.ENGLISH))) { list.append(" ").append(kiteItem); } } - return list.toString(); + return list.toString().trim(); } catch (Exception ex) { diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index 18fc60cbc..ba5f97c71 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -172,11 +172,6 @@ public class OfflinePlayer implements Player return false; } - public boolean isPlayer() - { - return false; - } - @Override public int getRemainingAir() { @@ -667,18 +662,6 @@ public class OfflinePlayer implements Player } @Override - public int getExperience() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setExperience(int i) - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override public int getLevel() { throw new UnsupportedOperationException("Not supported yet."); @@ -913,4 +896,16 @@ public class OfflinePlayer implements Player { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public <T extends Projectile> T launchProjectile(Class<? extends T> arg0) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public EntityType getType() + { + return EntityType.PLAYER; + } } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 6b81753b6..732b5485c 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -4,12 +4,15 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.signs.Signs; +import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.textreader.SimpleTextInput; import java.io.File; import java.text.MessageFormat; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.ChatColor; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.event.EventPriority; import org.bukkit.inventory.ItemStack; @@ -41,15 +44,15 @@ public class Settings implements ISettings } @Override - public List<String> getMultipleHomes() + public Set<String> getMultipleHomes() { - return config.getKeys("sethome-multiple"); + return config.getConfigurationSection("sethome-multiple").getKeys(false); } @Override public int getHomeLimit(final User user) { - final List<String> homeList = getMultipleHomes(); + final Set<String> homeList = getMultipleHomes(); if (homeList == null) { //TODO: Replace this code to remove backwards compat, after settings are automatically updated @@ -112,7 +115,7 @@ public class Settings implements ISettings @Override public boolean isCommandDisabled(String label) { - for (String c : config.getStringList("disabled-commands", new ArrayList<String>(0))) + for (String c : config.getStringList("disabled-commands")) { if (!c.equalsIgnoreCase(label)) { @@ -132,7 +135,7 @@ public class Settings implements ISettings @Override public boolean isCommandRestricted(String label) { - for (String c : config.getStringList("restricted-commands", new ArrayList<String>(0))) + for (String c : config.getStringList("restricted-commands")) { if (!c.equalsIgnoreCase(label)) { @@ -146,7 +149,7 @@ public class Settings implements ISettings @Override public boolean isPlayerCommand(String label) { - for (String c : config.getStringList("player-commands", new ArrayList<String>(0))) + for (String c : config.getStringList("player-commands")) { if (!c.equalsIgnoreCase(label)) { @@ -160,9 +163,7 @@ public class Settings implements ISettings @Override public boolean isCommandOverridden(String name) { - List<String> defaultList = new ArrayList<String>(1); - defaultList.add("god"); - for (String c : config.getStringList("overridden-commands", defaultList)) + for (String c : config.getStringList("overridden-commands")) { if (!c.equalsIgnoreCase(name)) { @@ -209,23 +210,28 @@ public class Settings implements ISettings } @Override - public Object getKit(String name) + public Map<String, Object> getKit(String name) { - Map<String, Object> kits = (Map<String, Object>)config.getProperty("kits"); - for (Map.Entry<String, Object> entry : kits.entrySet()) + name = name.replace('.', '_').replace('/', '_'); + if (config.isConfigurationSection("kits")) { - if (entry.getKey().equalsIgnoreCase(name.replace('.', '_').replace('/', '_'))) + final ConfigurationSection kits = getKits(); + if (kits.isConfigurationSection(name)) { - return entry.getValue(); + return kits.getConfigurationSection(name).getValues(true); } } return null; } @Override - public Map<String, Object> getKits() + public ConfigurationSection getKits() { - return (Map<String, Object>)config.getProperty("kits"); + if (config.isConfigurationSection("kits")) + { + return config.getConfigurationSection("kits"); + } + return null; } @Override @@ -250,7 +256,7 @@ public class Settings implements ISettings { } - return ChatColor.getByCode(Integer.parseInt(colorName, 16)); + return ChatColor.getByChar(colorName); } @Override @@ -324,15 +330,9 @@ public class Settings implements ISettings } @Override - public String getAnnounceNewPlayerFormat(IUser user) + public IText getAnnounceNewPlayerFormat() { - return format(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"), user); - } - - @Override - public String format(String format, IUser user) - { - return format.replace('&', '§').replace("§§", "&").replace("{PLAYER}", user.getDisplayName()).replace("{DISPLAYNAME}", user.getDisplayName()).replace("{GROUP}", user.getGroup()).replace("{USERNAME}", user.getName()).replace("{ADDRESS}", user.getAddress().toString()); + return new SimpleTextInput(Util.replaceColor(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"))); } @Override @@ -357,24 +357,24 @@ public class Settings implements ISettings public void reloadConfig() { config.load(); - noGodWorlds = new HashSet<String>(config.getStringList("no-god-in-worlds", Collections.<String>emptyList())); + noGodWorlds = new HashSet<String>(config.getStringList("no-god-in-worlds")); enabledSigns = getEnabledSigns(); itemSpawnBl = getItemSpawnBlacklist(); chatFormats.clear(); } - private List<Integer> itemSpawnBl = new ArrayList<Integer>(); - + @Override public List<Integer> itemSpawnBlacklist() { return itemSpawnBl; } - + private List<Integer> getItemSpawnBlacklist() { final List<Integer> epItemSpwn = new ArrayList<Integer>(); - if (ess.getItemDb() == null) { + if (ess.getItemDb() == null) + { logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded."); return epItemSpwn; } @@ -384,7 +384,7 @@ public class Settings implements ISettings if (itemName.isEmpty()) { continue; - } + } try { final ItemStack iStack = ess.getItemDb().get(itemName); @@ -397,20 +397,19 @@ public class Settings implements ISettings } return epItemSpwn; } - private List<EssentialsSign> enabledSigns = new ArrayList<EssentialsSign>(); - + @Override public List<EssentialsSign> enabledSigns() { return enabledSigns; } - + private List<EssentialsSign> getEnabledSigns() { List<EssentialsSign> newSigns = new ArrayList<EssentialsSign>(); - - for (String signName : config.getStringList("enabledSigns", null)) + + for (String signName : config.getStringList("enabledSigns")) { signName = signName.trim().toUpperCase(Locale.ENGLISH); if (signName.isEmpty()) @@ -538,12 +537,34 @@ public class Settings implements ISettings } return max; } + private final static double MINMONEY = -10000000000000.0; + + @Override + public double getMinMoney() + { + double min = config.getDouble("min-money", MINMONEY); + if (min > 0) + { + min = -min; + } + if (min < MINMONEY) + { + min = MINMONEY; + } + return min; + } @Override public boolean isEcoLogEnabled() { return config.getBoolean("economy-log-enabled", false); } + + @Override + public boolean isEcoLogUpdateEnabled() + { + return config.getBoolean("economy-log-update-enabled", false); + } @Override public boolean removeGodOnDisconnect() @@ -604,7 +625,6 @@ public class Settings implements ISettings { return config.getBoolean("death-messages", true); } - private Set<String> noGodWorlds = new HashSet<String>(); @Override diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java index 933b54b3f..3594c3137 100644 --- a/Essentials/src/com/earth2me/essentials/Trade.java +++ b/Essentials/src/com/earth2me/essentials/Trade.java @@ -143,8 +143,7 @@ public class Trade { if (getMoney() != null) { - final double mon = user.getMoney(); - if (mon < getMoney() && getMoney() > 0 && !user.isAuthorized("essentials.eco.loan")) + if (!user.canAfford(getMoney()) && getMoney() > 0) { throw new ChargeException(_("notEnoughMoney")); } @@ -163,9 +162,8 @@ public class Trade && !user.isAuthorized("essentials.nocommandcost.all") && !user.isAuthorized("essentials.nocommandcost." + command)) { - final double mon = user.getMoney(); final double cost = ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command); - if (mon < cost && cost > 0 && !user.isAuthorized("essentials.eco.loan")) + if (!user.canAfford(cost) && cost > 0) { throw new ChargeException(_("notEnoughMoney")); } @@ -200,7 +198,8 @@ public class Trade public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, Location loc, IEssentials ess) { - if (!ess.getSettings().isEcoLogEnabled()) + if ((loc == null && !ess.getSettings().isEcoLogUpdateEnabled()) + || (loc != null && !ess.getSettings().isEcoLogEnabled())) { return; } diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index b289333aa..ba34548fe 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -7,7 +7,6 @@ import java.util.Calendar; import java.util.GregorianCalendar; import java.util.logging.Level; import java.util.logging.Logger; -import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -109,7 +108,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser sendMessage(_("addedToAccount", Util.formatCurrency(value, ess))); if (initiator != null) { - initiator.sendMessage(_("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName())); + initiator.sendMessage(_("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName(), Util.formatCurrency(getMoney(), ess))); } } @@ -148,14 +147,23 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser sendMessage(_("takenFromAccount", Util.formatCurrency(value, ess))); if (initiator != null) { - initiator.sendMessage(_("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName())); + initiator.sendMessage(_("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName(), Util.formatCurrency(getMoney(), ess))); } } public boolean canAfford(final double cost) { + return canAfford(cost, true); + } + + public boolean canAfford(final double cost, final boolean permcheck) + { final double mon = getMoney(); - return mon >= cost || isAuthorized("essentials.eco.loan"); + if (!permcheck || isAuthorized("essentials.eco.loan")) + { + return (mon - cost) >= ess.getSettings().getMinMoney(); + } + return cost <= mon; } public void dispose() @@ -377,8 +385,17 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser catch (Throwable ex) { } - } + } super.setMoney(value); + Trade.log("Update", "Set", "API", getName(), new Trade(value, ess), null, null, null, ess); + } + + public void updateMoneyCache(final double value) + { + if (ess.getPaymentMethod().hasMethod() && super.getMoney() != value) + { + super.setMoney(value); + } } @Override diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java index e2a365ad2..ea3201f28 100644 --- a/Essentials/src/com/earth2me/essentials/UserData.java +++ b/Essentials/src/com/earth2me/essentials/UserData.java @@ -94,17 +94,11 @@ public abstract class UserData extends PlayerExtension implements IConf private Map<String, Object> _getHomes() { - Object o = config.getProperty("homes"); - - if (o instanceof Map) + if (config.isConfigurationSection("homes")) { - return (Map<String, Object>)o; + return config.getConfigurationSection("homes").getValues(false); } - else - { - return new HashMap<String, Object>(); - } - + return new HashMap<String, Object>(); } public Location getHome(String name) throws Exception @@ -209,7 +203,7 @@ public abstract class UserData extends PlayerExtension implements IConf private List<Integer> _getUnlimited() { - return config.getIntList("unlimited", new ArrayList<Integer>()); + return config.getIntegerList("unlimited"); } public List<Integer> getUnlimited() @@ -235,22 +229,15 @@ public abstract class UserData extends PlayerExtension implements IConf config.setProperty("unlimited", unlimited); config.save(); } - private Map<Integer, Object> powertools; + private Map<String, Object> powertools; - @SuppressWarnings("unchecked") - private Map<Integer, Object> _getPowertools() + private Map<String, Object> _getPowertools() { - Object o = config.getProperty("powertools"); - - if (o instanceof Map) + if (config.isConfigurationSection("powertools")) { - return (Map<Integer, Object>)o; + return config.getConfigurationSection("powertools").getValues(false); } - else - { - return new HashMap<Integer, Object>(); - } - + return new HashMap<String, Object>(); } public void clearAllPowertools() @@ -262,23 +249,23 @@ public abstract class UserData extends PlayerExtension implements IConf public List<String> getPowertool(ItemStack stack) { - return (List<String>)powertools.get(stack.getTypeId()); + return (List<String>)powertools.get("" + stack.getTypeId()); } - + public List<String> getPowertool(int id) { - return (List<String>)powertools.get(id); + return (List<String>)powertools.get("" + id); } public void setPowertool(ItemStack stack, List<String> commandList) { if (commandList == null || commandList.isEmpty()) { - powertools.remove(stack.getTypeId()); + powertools.remove("" + stack.getTypeId()); } else { - powertools.put(stack.getTypeId(), commandList); + powertools.put("" + stack.getTypeId(), commandList); } config.setProperty("powertools", powertools); config.save(); @@ -383,7 +370,7 @@ public abstract class UserData extends PlayerExtension implements IConf private List<String> _getMails() { - return config.getStringList("mail", new ArrayList<String>()); + return config.getStringList("mail"); } public List<String> getMails() @@ -491,7 +478,7 @@ public abstract class UserData extends PlayerExtension implements IConf public List<String> getIgnoredPlayers() { - return config.getStringList("ignore", new ArrayList<String>()); + return config.getStringList("ignore"); } public void setIgnoredPlayers(List<String> players) @@ -739,7 +726,6 @@ public abstract class UserData extends PlayerExtension implements IConf return ret; } private boolean newplayer; - private String geolocation; private String _getGeoLocation() diff --git a/Essentials/src/com/earth2me/essentials/api/Economy.java b/Essentials/src/com/earth2me/essentials/api/Economy.java index 1d45c8df9..a1d421c38 100644 --- a/Essentials/src/com/earth2me/essentials/api/Economy.java +++ b/Essentials/src/com/earth2me/essentials/api/Economy.java @@ -115,6 +115,10 @@ public final class Economy { throw new UserDoesNotExistException(name); } + if (balance < ess.getSettings().getMinMoney()) + { + throw new NoLoanPermittedException(); + } if (balance < 0.0 && !user.isAuthorized("essentials.eco.loan")) { throw new NoLoanPermittedException(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandback.java b/Essentials/src/com/earth2me/essentials/commands/Commandback.java index 67698598a..2ad39ceea 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandback.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandback.java @@ -20,5 +20,6 @@ public class Commandback extends EssentialsCommand charge.isAffordableFor(user); user.sendMessage(_("backUsageMsg")); user.getTeleport().back(charge); + throw new NoChargeException(); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbalancetop.java b/Essentials/src/com/earth2me/essentials/commands/Commandbalancetop.java index 672f1c6ca..fffb69ea4 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbalancetop.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbalancetop.java @@ -105,14 +105,18 @@ public class Commandbalancetop extends EssentialsCommand { if (force || cacheage <= System.currentTimeMillis() - CACHETIME) { - cache.getLines().clear(); + cache.getLines().clear(); final Map<String, Double> balances = new HashMap<String, Double>(); + double totalMoney = 0d; for (String u : ess.getUserMap().getAllUniqueUsers()) { final User user = ess.getUserMap().getUser(u); if (user != null) { - balances.put(user.getDisplayName(), user.getMoney()); + final double userMoney = user.getMoney(); + user.updateMoneyCache(userMoney); + totalMoney += userMoney; + balances.put(user.getDisplayName(), userMoney); } } @@ -125,6 +129,8 @@ public class Commandbalancetop extends EssentialsCommand return -entry1.getValue().compareTo(entry2.getValue()); } }); + + cache.getLines().add(_("serverTotal", Util.formatCurrency(totalMoney, ess))); int pos = 1; for (Map.Entry<String, Double> entry : sortedEntries) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandeco.java b/Essentials/src/com/earth2me/essentials/commands/Commandeco.java index 8f432ca6e..b9694ee49 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandeco.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandeco.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.commands; +import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.User; import java.util.Locale; import org.bukkit.Server; @@ -45,6 +46,10 @@ public class Commandeco extends EssentialsCommand break; case TAKE: + if (!player.canAfford(amount, false)) + { + throw new Exception(_("notEnoughMoney")); + } player.takeMoney(amount); break; @@ -64,6 +69,10 @@ public class Commandeco extends EssentialsCommand break; case TAKE: + if (!player.canAfford(amount, false)) + { + throw new Exception(_("notEnoughMoney")); + } player.takeMoney(amount, sender); break; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java index c003d28ac..aee0af910 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java @@ -32,16 +32,16 @@ public class Commandkit extends EssentialsCommand else { final String kitName = args[0].toLowerCase(Locale.ENGLISH); - final Object kit = ess.getSettings().getKit(kitName); + final Map<String, Object> kit = ess.getSettings().getKit(kitName); if (!user.isAuthorized("essentials.kit." + kitName)) { throw new Exception(_("noKitPermission", "essentials.kit." + kitName)); } - final Map<String, Object> els = (Map<String, Object>)kit; - final List<String> items = Kit.getItems(user, els); + + final List<String> items = Kit.getItems(user, kit); - Kit.checkTime(user, kitName, els); + Kit.checkTime(user, kitName, kit); final Trade charge = new Trade("kit-" + kitName, ess); charge.isAffordableFor(user); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java b/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java index 86394e502..d43d486b9 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.User; +import com.earth2me.essentials.Util; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; @@ -36,7 +37,7 @@ public class Commandsudo extends EssentialsCommand } //TODO: Translate this. - sender.sendMessage("Forcing " + user.getDisplayName() + " to run: /" + command + " " + arguments); + sender.sendMessage("Forcing " + user.getDisplayName() + " to run: /" + command + " " + getFinalArg(arguments, 0)); final PluginCommand execCommand = ess.getServer().getPluginCommand(command); if (execCommand != null) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java index 64f7fe04a..d6afe707a 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java @@ -16,7 +16,7 @@ public class Commandsuicide extends EssentialsCommand @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - EntityDamageEvent ede = new EntityDamageEvent(user, EntityDamageEvent.DamageCause.SUICIDE, 1000); + EntityDamageEvent ede = new EntityDamageEvent(user.getBase(), EntityDamageEvent.DamageCause.SUICIDE, 1000); server.getPluginManager().callEvent(ede); user.damage(1000); user.setHealth(0); diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index 3fbb7874c..f39c6e451 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -232,12 +232,6 @@ public class FakeWorld implements World } @Override - public long getId() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override public Location getSpawnLocation() { throw new UnsupportedOperationException("Not supported yet."); @@ -578,4 +572,22 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public <T extends Entity> Collection<T> getEntitiesByClass(Class<T> type) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection<Entity> getEntitiesByClasses(Class<?>... types) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public LivingEntity spawnCreature(Location arg0, EntityType arg1) + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java b/Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java new file mode 100644 index 000000000..f4122bf53 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java @@ -0,0 +1,62 @@ +package com.earth2me.essentials.perm; + +import de.bananaco.bpermissions.api.ApiLayer; +import de.bananaco.bpermissions.api.World; +import de.bananaco.bpermissions.api.WorldManager; +import de.bananaco.bpermissions.api.util.Calculable; +import de.bananaco.bpermissions.api.util.CalculableType; +import java.util.Arrays; +import java.util.List; +import org.bukkit.entity.Player; + + +public class BPermissions2Handler extends SuperpermsHandler +{ + public BPermissions2Handler() + { + + } + + @Override + public String getGroup(final Player base) + { + final List<String> groups = getGroups(base); + if (groups == null || groups.isEmpty()) + { + return null; + } + return groups.get(0); + } + + @Override + public List<String> getGroups(final Player base) + { + final String[] groups = ApiLayer.getGroups(base.getWorld().getName(), CalculableType.USER, base.getName()); + return Arrays.asList(groups); + } + + @Override + public boolean inGroup(final Player base, final String group) + { + return ApiLayer.hasGroup(base.getWorld().getName(), CalculableType.USER, base.getName(), group); + } + + @Override + public boolean canBuild(final Player base, final String group) + { + return hasPermission(base, "essentials.build") || hasPermission(base, "bPermissions.build"); + } + + @Override + public String getPrefix(final Player base) + { + return ApiLayer.getValue(base.getWorld().getName(), CalculableType.USER, base.getName(), "prefix"); + } + + @Override + public String getSuffix(final Player base) + { + return ApiLayer.getValue(base.getWorld().getName(), CalculableType.USER, base.getName(), "suffix"); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index aa786934e..a344968c2 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.perm; +import com.earth2me.essentials.Util; import java.util.Collections; import java.util.List; import java.util.logging.Level; @@ -111,17 +112,6 @@ public class PermissionsHandler implements IPermissionsHandler return; } - final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); - if (bPermPlugin != null && bPermPlugin.isEnabled()) - { - if (!(handler instanceof BPermissionsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); - handler = new BPermissionsHandler(); - } - return; - } - final Plugin GMplugin = pluginManager.getPlugin("GroupManager"); if (GMplugin != null && GMplugin.isEnabled()) { @@ -155,6 +145,27 @@ public class PermissionsHandler implements IPermissionsHandler return; } + final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); + if (bPermPlugin != null && bPermPlugin.isEnabled()) + { + final String bVer = bPermPlugin.getDescription().getVersion().replace(".", ""); + if (Util.isInt(bVer) && Integer.parseInt(bVer) < 284) + { + if (!(handler instanceof BPermissionsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); + handler = new BPermissionsHandler(); + } + return; + } + if (!(handler instanceof BPermissions2Handler)) + { + LOGGER.log(Level.INFO, "Essentials: Using bPermissions2 based permissions."); + handler = new BPermissions2Handler(); + } + return; + + } final Plugin permPlugin = pluginManager.getPlugin("Permissions"); if (permPlugin != null && permPlugin.isEnabled()) { diff --git a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java index 70a118bcf..2e767cb72 100644 --- a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java @@ -27,7 +27,7 @@ public class SuperpermsHandler implements IPermissionsHandler @Override public boolean inGroup(final Player base, final String group) { - return false; + return hasPermission(base, "group." + group); } @Override diff --git a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java index d9e28becc..a0446179f 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java @@ -6,7 +6,7 @@ import org.bukkit.block.Block; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.EndermanPickupEvent; +import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityExplodeEvent; @@ -44,7 +44,7 @@ public class SignEntityListener implements Listener } @EventHandler(priority = EventPriority.LOW) - public void onEndermanPickup(final EndermanPickupEvent event) + public void onEntityChangeBlock(final EntityChangeBlockEvent event) { if (event.isCancelled() || ess.getSettings().areSignsDisabled()) { diff --git a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java index a7aab67ba..4c4e3364b 100644 --- a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java +++ b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java @@ -33,12 +33,14 @@ public class KeywordReplacer implements IText String displayName, ipAddress, balance, mails, world; String worlds, online, unique, playerlist, date, time; String worldTime12, worldTime24, worldDate, plugins; - String version; + String userName, address, version; if (sender instanceof Player) { final User user = ess.getUser(sender); displayName = user.getDisplayName(); + userName = user.getName(); ipAddress = user.getAddress().getAddress().toString(); + address = user.getAddress().toString(); balance = Double.toString(user.getMoney()); mails = Integer.toString(user.getMails().size()); world = user.getLocation().getWorld().getName(); @@ -107,8 +109,12 @@ public class KeywordReplacer implements IText for (int i = 0; i < input.getLines().size(); i++) { String line = input.getLines().get(i); + line = line.replace("{PLAYER}", displayName); + line = line.replace("{DISPLAYNAME}", displayName); + line = line.replace("{USERNAME}", displayName); line = line.replace("{IP}", ipAddress); + line = line.replace("{ADDRESS}", ipAddress); line = line.replace("{BALANCE}", balance); line = line.replace("{MAILS}", mails); line = line.replace("{WORLD}", world); diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java new file mode 100644 index 000000000..a9f9e1480 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java @@ -0,0 +1,35 @@ +package com.earth2me.essentials.textreader; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + + +public class SimpleTextInput implements IText +{ + private final transient List<String> lines = new ArrayList<String>(); + + public SimpleTextInput (final String input) { + lines.add(input); + } + + @Override + public List<String> getLines() + { + return lines; + } + + @Override + public List<String> getChapters() + { + return Collections.emptyList(); + } + + @Override + public Map<String, Integer> getBookmarks() + { + return Collections.emptyMap(); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java new file mode 100644 index 000000000..ea1b787d5 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java @@ -0,0 +1,31 @@ +package com.earth2me.essentials.textreader; + +import org.bukkit.command.CommandSender; + + +public class SimpleTextPager +{ + private final transient IText text; + + public SimpleTextPager(final IText text) + { + this.text = text; + } + + public void showPage(final CommandSender sender) + { + for (String line : text.getLines()) + { + sender.sendMessage(line); + } + } + + public String getString(int line) + { + if (text.getLines().size() < line) + { + return null; + } + return text.getLines().get(line); + } +} diff --git a/Essentials/src/com/earth2me/essentials/user/User.java b/Essentials/src/com/earth2me/essentials/user/User.java index 0e544ae06..0e77dd6a9 100644 --- a/Essentials/src/com/earth2me/essentials/user/User.java +++ b/Essentials/src/com/earth2me/essentials/user/User.java @@ -196,4 +196,15 @@ public class User extends UserBase implements IUser unlock(); } } + + @Override + public boolean canAfford(final double cost) + { + final double mon = getMoney(); + if (isAuthorized("essentials.eco.loan")) + { + return (mon - cost) >= ess.getSettings().getMinMoney(); + } + return cost <= mon; + } } diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 0c9f00f1e..81d911c82 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -279,10 +279,10 @@ spawn-if-no-home: true update-bed-at-daytime: true # Allow players to have multiple homes. +# Players need essentials.sethome.multiple before they can have more than 1 home, default to 'default' below. # Define different amounts of multiple homes for different permissions, e.g. essentials.sethome.multiple.vip # People with essentials.sethome.multiple.unlimited are not limited by these numbers. sethome-multiple: - # essentials.sethome.multiple default: 3 # essentials.sethome.multiple.vip vip: 5 @@ -319,6 +319,10 @@ currency-symbol: '$' # The amount is always limited to 10 trillions because of the limitations of a java double max-money: 10000000000000 +# Set the minimum amount of money a player can have +# Setting this to 0, will disable overdrafts/loans compeltely. Users need 'essentials.eco.loan' perm to go below 0. +min-money: -10000000000000 + # Enable this to log all interactions with trade/buy/sell signs and sell command economy-log-enabled: false diff --git a/Essentials/src/info.txt b/Essentials/src/info.txt index e05843dcb..efc629923 100644 --- a/Essentials/src/info.txt +++ b/Essentials/src/info.txt @@ -7,6 +7,10 @@ Name it info_username.txt or info_groupname.txt This also works with motd and rules. +Extra pages: +Type /info Colours +Type /info Tags + It can contain chapters like the Chapter1 below: #Chapter1 @@ -25,7 +29,9 @@ Minecraft colors: #Tags PLAYER: {PLAYER} +USERNAME: {PLAYER} IP: {IP} +ADDRESS: {ADDRESS} BALANCE: {BALANCE} MAILS: {MAILS} WORLD: {WORLD} @@ -39,3 +45,4 @@ WORLDTIME12: {WORLDTIME12} WORLDTIME24: {WORLDTIME24} WORLDDATE: {WORLDDATE} PLUGINS: {PLUGINS} +VERSION: {VERSION}
\ No newline at end of file diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties index ec55210b0..f7958319d 100644 --- a/Essentials/src/messages.properties +++ b/Essentials/src/messages.properties @@ -4,16 +4,16 @@ # by: action=* {0} {1} addedToAccount=\u00a7a{0} has been added to your account. -addedToOthersAccount=\u00a7a{0} has been added to {1} account. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} 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 +backUsageMsg=\u00a77Returning to previous location. balance=\u00a77Balance: {0} balanceTop=\u00a77Top balances ({0}) banExempt=\u00a7cYou can not ban that player. @@ -64,14 +64,14 @@ depth=\u00a77You are at sea level. depthAboveSea=\u00a77You are {0} block(s) above sea level. depthBelowSea=\u00a77You are {0} block(s) below sea level. destinationNotSet=Destination not set -disableUnlimited=\u00a77Disabled unlimited placing of {0} for {1}. disabled=disabled disabledToSpawnMob=Spawning this mob was disabled in the config file. +disableUnlimited=\u00a77Disabled unlimited placing of {0} for {1}. dontMoveMessage=\u00a77Teleportation will commence in {0}. Don''t move. downloadingGeoIp=Downloading GeoIP database ... this might take a while (country: 0.6 MB, city: 20MB) duplicatedUserdata=Duplicated userdata: {0} and {1} -enableUnlimited=\u00a77Giving unlimited amount of {0} to {1}. enabled=enabled +enableUnlimited=\u00a77Giving unlimited amount of {0} to {1}. enchantmentApplied = \u00a77The enchantment {0} has been applied to your item in hand. enchantmentNotFound = \u00a7cEnchantment not found enchantmentPerm = \u00a7cYou do not have the permission for {0} @@ -99,9 +99,9 @@ gcentities= entities gcfree=Free memory: {0} MB gcmax=Maximum memory: {0} MB gctotal=Allocated memory: {0} MB +geoipJoinFormat=Player {0} comes from {1} geoIpUrlEmpty=GeoIP download url is empty. geoIpUrlInvalid=GeoIP download url is invalid. -geoipJoinFormat=Player {0} comes from {1} godDisabledFor=disabled for {0} godEnabledFor=enabled for {0} godMode=\u00a77God mode {0}. @@ -112,9 +112,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. @@ -124,28 +124,28 @@ infoChapterPages=Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f: infoFileDoesNotExist=File info.txt does not exist. Creating one for you. infoPages=Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f: infoUnknownChapter=Unknown chapter. -invBigger=The other users inventory is bigger than yours. -invRestored=Your inventory has been restored. -invSee=You see the inventory of {0}. -invSeeHelp=Use /invsee to restore your inventory. invalidCharge=\u00a7cInvalid charge. invalidMob=Invalid mob type. invalidServer=Invalid server! invalidSignLine=Line {0} on sign is invalid. invalidWorld=\u00a7cInvalid world. +invBigger=The other users inventory is bigger than yours. inventoryCleared=\u00a77Inventory Cleared. inventoryClearedOthers=\u00a77Inventory of \u00a7c{0}\u00a77 cleared. +invRestored=Your inventory has been restored. +invSee=You see the inventory of {0}. +invSeeHelp=Use /invsee to restore your inventory. is=is itemCannotBeSold=That item cannot be sold to the server. itemMustBeStacked=Item must be traded in stacks. A quantity of 2s would be two stacks, etc. itemNotEnough1=\u00a7cYou do not have enough of that item to sell. itemNotEnough2=\u00a77If you meant to sell all of your items of that type, use /sell itemname itemNotEnough3=\u00a77/sell itemname -1 will sell all but one item, etc. +itemsCsvNotLoaded=Could not load items.csv. itemSellAir=You really tried to sell Air? Put an item in your hand. itemSold=\u00a77Sold for \u00a7c{0} \u00a77({1} {2} at {3} each) itemSoldConsole={0} sold {1} for \u00a77{2} \u00a77({3} items at {4} each) itemSpawn=\u00a77Giving {0} of {1} -itemsCsvNotLoaded=Could not load items.csv. jailAlreadyIncarcerated=\u00a7cPerson is already in jail: {0} jailMessage=\u00a7cYou do the crime, you do the time. jailNotExist=That jail does not exist. @@ -162,8 +162,8 @@ kitError=\u00a7cThere are no valid kits. kitErrorHelp=\u00a7cPerhaps an item is missing a quantity in the configuration? kitGive=\u00a77Giving kit {0}. kitInvFull=\u00a7cYour inventory was full, placing kit on the floor -kitTimed=\u00a7cYou can''t use that kit again for another {0}. kits=\u00a77Kits: {0} +kitTimed=\u00a7cYou can''t use that kit again for another {0}. lightningSmited=\u00a77You have just been smited lightningUse=\u00a77Smiting {0} listAfkTag = \u00a77[AFK]\u00a7f @@ -175,9 +175,9 @@ localFormat=Local: <{0}> {1} mailClear=\u00a7cTo mark your mail as read, type /mail clear mailCleared=\u00a77Mail Cleared! mailSent=\u00a77Mail sent! -markMailAsRead=\u00a7cTo mark your mail as read, type /mail clear markedAsAway=\u00a77You are now marked as away. markedAsNotAway=\u00a77You are no longer marked as away. +markMailAsRead=\u00a7cTo mark your mail as read, type /mail clear maxHomes=You cannot set more than {0} homes. mayNotJail=\u00a7cYou may not jail that person me=me @@ -185,10 +185,10 @@ minute=minute minutes=minutes missingItems=You do not have {0}x {1}. missingPrefixSuffix=Missing a prefix or suffix for {0} +mobsAvailable=\u00a77Mobs: {0} mobSpawnError=Error while changing mob spawner. mobSpawnLimit=Mob quantity limited to server limit mobSpawnTarget=Target block must be a mob spawner. -mobsAvailable=\u00a77Mobs: {0} moneyRecievedFrom=\u00a7a{0} has been received from {1} moneySentTo=\u00a7a{0} has been sent to {1} moneyTaken={0} taken from your bank account. @@ -196,10 +196,10 @@ month=month months=months moreThanZero=Quantities must be greater than 0. msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} -muteExempt=\u00a7cYou may not mute that player. mutedPlayer=Player {0} muted. mutedPlayerFor=Player {0} muted for {1}. mutedUserSpeaks={0} tried to speak, but is muted. +muteExempt=\u00a7cYou may not mute that player. nearbyPlayers=Players nearby: {0} needTpohere=You need access to /tpohere to teleport other players. negativeBalanceError=User is not allowed to have a negative balance. @@ -221,6 +221,7 @@ noKitPermission=\u00a7cYou need the \u00a7c{0}\u00a7c permission to use that kit noKits=\u00a77There are no kits available yet noMail=You do not have any mail noMotd=\u00a7cThere is no message of the day. +none=none noNewMail=\u00a77You have no new mail. noPendingRequest=You do not have a pending request. noPerm=\u00a7cYou do not have the \u00a7f{0}\u00a7c permission. @@ -228,30 +229,21 @@ noPermToSpawnMob=\u00a7cYou don''t have permission to spawn this mob. noPlacePermission=\u00a7cYou do not have permission to place a block near that sign. noPowerTools=You have no power tools assigned. noRules=\u00a7cThere are no rules specified yet. -noWarpsDefined=No warps defined -none=none notAllowedToQuestion=\u00a7cYou are not authorized to use question. notAllowedToShout=\u00a7cYou are not authorized to shout. notEnoughExperience=You do not have enough experience. notEnoughMoney=You do not have sufficient funds. +nothingInHand = \u00a7cYou have nothing in your hand. notRecommendedBukkit= * ! * Bukkit version is not the recommended build for Essentials. notSupportedYet=Not supported yet. -nothingInHand = \u00a7cYou have nothing in your hand. now=now +noWarpsDefined=No warps defined nuke=May death rain upon them 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. orderBalances=Ordering balances of {0} users, please wait ... -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. @@ -279,6 +271,14 @@ powerToolRemoveAll=All commands removed from {0}. powerToolsDisabled=All of your power tools have been disabled. powerToolsEnabled=All of your power tools have been enabled. 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} readNextPage=Type /{0} {1} to read the next page reloadAllPlugins=\u00a77Reloaded all plugins. @@ -301,6 +301,7 @@ seconds=seconds seenOffline=Player {0} is offline since {1} seenOnline=Player {0} is online since {1} serverFull=Server is full +serverTotal=Server Total: {0} setSpawner=Changed spawner type to {0} sheepMalformedColor=Malformed color. shoutFormat=\u00a77[Shout]\u00a7f {0} @@ -311,29 +312,29 @@ signProtectInvalidLocation=\u00a74You are not allowed to create sign here. similarWarpExist=A warp with a similar name already exists. slimeMalformedSize=Malformed size. soloMob=That mob likes to be alone -spawnSet=\u00a77Spawn location set for group {0}. spawned=spawned +spawnSet=\u00a77Spawn location set for group {0}. suicideMessage=\u00a77Goodbye Cruel World... suicideSuccess= \u00a77{0} took their own life survival=survival takenFromAccount=\u00a7c{0} has been taken from your account. -takenFromOthersAccount=\u00a7c{0} has been taken from {1} account. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Teleporting request sent to all players... teleportAll=\u00a77Teleporting all players... +teleportationCommencing=\u00a77Teleportation commencing... +teleportationDisabled=\u00a77Teleportation disabled. +teleportationEnabled=\u00a77Teleportation enabled. teleportAtoB=\u00a77{0}\u00a77 teleported you to {1}\u00a77. teleportDisabled={0} has teleportation disabled. teleportHereRequest=\u00a7c{0}\u00a7c has requested that you teleport to them. +teleporting=\u00a77Teleporting... +teleportingPortal=\u00a77Teleporting via portal. teleportNewPlayerError=Failed to teleport new player teleportRequest=\u00a7c{0}\u00a7c has requested to teleport to you. teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds. teleportTop=\u00a77Teleporting to top. -teleportationCommencing=\u00a77Teleportation commencing... -teleportationDisabled=\u00a77Teleportation disabled. -teleportationEnabled=\u00a77Teleportation enabled. -teleporting=\u00a77Teleporting... -teleportingPortal=\u00a77Teleporting via portal. -tempBanned=Temporarily banned from server for {0} tempbanExempt=\u00a77You may not tempban that player +tempBanned=Temporarily banned from server for {0} thunder= You {0} thunder in your world thunderDuration=You {0} thunder in your world for {1} seconds. timeBeforeHeal=Time before next heal: {0} @@ -364,25 +365,25 @@ unlimitedItemPermission=\u00a7cNo permission for unlimited item {0}. unlimitedItems=Unlimited items: unmutedPlayer=Player {0} unmuted. upgradingFilesError=Error while upgrading the files +userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1} +userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp userDoesNotExist=The user {0} does not exist. userIsAway={0} is now AFK userIsNotAway={0} is no longer AFK userJailed=\u00a77You have been jailed userUsedPortal={0} used an existing exit portal. -userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1} -userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp usingTempFolderForTesting=Using temp folder for testing: versionMismatch=Version mismatch! Please update {0} to the same version. versionMismatchAll=Version mismatch! Please update all Essentials jars to the same version. voiceSilenced=\u00a77Your voice has been silenced warpDeleteError=Problem deleting the warp file. +warpingTo=\u00a77Warping to {0}. warpListPermission=\u00a7cYou do not have Permission to list warps. warpNotExist=That warp does not exist. -warpSet=\u00a77Warp {0} set. -warpUsePermission=\u00a7cYou do not have Permission to use that warp. -warpingTo=\u00a77Warping to {0}. warps=Warps: {0} warpsCount=\u00a77There are {0} warps. Showing page {1} of {2}. +warpSet=\u00a77Warp {0} set. +warpUsePermission=\u00a7cYou do not have Permission to use that warp. weatherStorm=\u00a77You set the weather to storm in {0} weatherStormFor=\u00a77You set the weather to storm in {0} for {1} seconds weatherSun=\u00a77You set the weather to sun in {0} diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties index 03bbe6f78..0d8260947 100644 --- a/Essentials/src/messages_da.properties +++ b/Essentials/src/messages_da.properties @@ -4,18 +4,18 @@ # by: Dysp, dysperen@gmail.com action=* {0} {1} addedToAccount=\u00a7a{0} er blevet tilf\u00f8jet til din konto. -addedToOthersAccount=\u00a7a{0} er blevet tilf\u00f8jet til {1} konto. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} alertBroke=\u00f8delagde: alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} ved: {3} alertPlaced=placerede: alertUsed=brugte: autoAfkKickReason=Du er blevet kicked for at idle mere end {0} minutter. backAfterDeath=\u00a77Brug /back kommandoen for at teleportere til dit d\u00f8dspunkt. -backUsageMsg=\u00a77Teleporterer til tidligere placering. backupFinished=Backup sluttet backupStarted=Backup startet +backUsageMsg=\u00a77Teleporterer til tidligere placering. balance=\u00a77Saldo: {0} -balanceTop=\u00a77 Top saldoer ({0}) +balanceTop=\u00a77Top saldoer ({0}) banExempt=\u00a7cDu kan ikke banne den p\u00e5g\u00e6ldende spiller. banIpAddress=\u00a77Bannede IP addresse bannedIpsFileError=Fejl i afl\u00e6sning af banned-ips.txt @@ -64,14 +64,14 @@ depth=\u00a77Du er ved havoverfladen. depthAboveSea=\u00a77Du er {0} blok(ke) over havets overflade. depthBelowSea=\u00a77Du er {0} blok(ke) under havets overflade. destinationNotSet=Destination ikke sat -disableUnlimited=\u00a77Deaktiverede ubergr\u00e6nset placering af {0} for {1}. disabled=deaktiveret disabledToSpawnMob=Skabelse af denne mob er deaktiveret i configfilen. +disableUnlimited=\u00a77Deaktiverede ubergr\u00e6nset placering af {0} for {1}. dontMoveMessage=\u00a77Teleportering vil begynde om {0}. Bev\u00e6g dig ikke. downloadingGeoIp=Downloader GeoIP database... det her kan tage et stykke tid (land: 0.6 MB, by: 27MB) duplicatedUserdata=Duplikerede userdata: {0} og {1} -enableUnlimited=\u00a77Giver ubegr\u00e6nset m\u00e6ngde af {0} til {1}. enabled=aktiveret +enableUnlimited=\u00a77Giver ubegr\u00e6nset m\u00e6ngde af {0} til {1}. enchantmentApplied = \u00a77Enchantment {0} er blevet tilf\u00c3\u00b8jet til tingen i din h\u00c3\u00a5nd. enchantmentNotFound = \u00a7cEnchantment ikke fundet. enchantmentPerm = \u00a7cDu har ikke tilladelse til at {0} @@ -99,9 +99,9 @@ gcentities= entities gcfree=Free memory: {0} MB gcmax=Maximum memory: {0} MB gctotal=Allocated memory: {0} MB +geoipJoinFormat=Spilleren {0} kommer fra {1} geoIpUrlEmpty=GeoIP download url er tom. geoIpUrlInvalid=GeoIP download url er ugyldig. -geoipJoinFormat=Spilleren {0} kommer fra {1} godDisabledFor=deaktiveret for {0} godEnabledFor=aktiveret for {0} godMode=\u00a77Gud mode {0}. @@ -112,9 +112,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=Hjem: {0} homeSet=\u00a77Hjem sat. homeSetToBed=\u00a77Dit hjem er nu sat til denne seng. -homes=Hjem: {0} hour=time hours=timer ignorePlayer=Du ignorerer spiller {0} fra nu af. @@ -124,28 +124,28 @@ infoChapterPages=Kapitel {0}, side \u00a7c{1}\u00a7f af \u00a7c{2}\u00a7f: infoFileDoesNotExist=Fil info.txt eksisterer ikke. Fixer liiige en for dig. infoPages=Side \u00a7c{0}\u00a7f af \u00a7c{1}\u00a7f: infoUnknownChapter=Ukendt kapitel. -invBigger=Den anden brugers inventory er st\u00f8rre end din. -invRestored=Din inventory er blevet genoprettet. -invSee=Du ser {0}''s inventory. -invSeeHelp=Brug /invsee for at genoprette din inventory. invalidCharge=\u00a7cUgyldig opladning (korrekt oversat?). invalidMob=Ugyldig mob type. invalidServer=Ugyldig server! invalidSignLine=Linje {0} p\u00e5 skilt er ugyldig. invalidWorld=\u00a7cUgyldig verden. +invBigger=Den anden brugers inventory er st\u00f8rre end din. inventoryCleared=\u00a77Inventory ryddet. inventoryClearedOthers=\u00a7c{0}\u00a77''s inventory ryddet. +invRestored=Din inventory er blevet genoprettet. +invSee=Du ser {0}''s inventory. +invSeeHelp=Brug /invsee for at genoprette din inventory. is=er itemCannotBeSold=Denne ting kan ikke s\u00e6lges til serveren. itemMustBeStacked=Tingen skal handles i stakke. En m\u00e6ngde af 2s ville v\u00e6re to stakke, osv. itemNotEnough1=\u00a7cDu har ikke nok af denne ting til at kunne s\u00e6lge. itemNotEnough2=\u00a77Hvis du mente, at du ville s\u00c3\u00a6lge alle ting af den type, brug da /sell tingens-navn itemNotEnough3=\u00a77/sell ting-navn -1 vil s\u00e6lge alle enheder, undtagen \u00c3\u00a9n, osv. +itemsCsvNotLoaded=Kunne ikke loade items.csv. itemSellAir=Fors\u00f8gte du virkelig at s\u00e6lge luft? Kom en ting i h\u00e5nden, hattemand. itemSold=\u00a77Solgte til \u00a7c{0} \u00a77({1} {2} ting for {3} pr. stk.) itemSoldConsole={0} solgte {1} til \u00a77{2} \u00a77({3} ting for {4} pr. stk.) itemSpawn=\u00a77Giver {0} af {1} -itemsCsvNotLoaded=Kunne ikke loade items.csv. jailAlreadyIncarcerated=\u00a7cSpilleren er allerede i f\u00c3\u00a6ngsel: {0} jailMessage=\u00a7cDu bryder reglerne, du tager straffen. jailNotExist=Det f\u00e6ngsel eksisterer ikke. @@ -162,8 +162,8 @@ kitError=\u00a7cDer er ikke nogen gyldige kits. kitErrorHelp=\u00a7cM\u00e5ske mangler en ting en m\u00e6ngde i konfigurationen? Eller m\u00c3\u00a5ske er der nisser p\u00c3\u00a5 spil? kitGive=\u00a77Giver kit til {0} (oversat korrekt?). kitInvFull=\u00a7cDin inventory er fuld, placerer kit p\u00e5 gulvet. -kitTimed=\u00a7cDu kan ikke benytte dette kit igen i {0}. kits=\u00a77Kits: {0} +kitTimed=\u00a7cDu kan ikke benytte dette kit igen i {0}. lightningSmited=\u00a77Du er blevet ramt af Guds vrede (din admin) lightningUse=\u00a77Kaster lyn efter {0} listAfkTag = \u00a77[AFK]\u00a7f @@ -175,9 +175,9 @@ localFormat=Local: <{0}> {1} mailClear=\u00a7cFor at markere din flaskepost som l\u00e6st, skriv /mail clear mailCleared=\u00a77Flaskepot ryddet! mailSent=\u00a77Flaskepot sendt! -markMailAsRead=\u00a7cFor at markere din flaskepost som l\u00e6st, skriv /mail clear markedAsAway=\u00a77Du er nu markeret som v\u00c3\u00a6rende ikke tilstede. markedAsNotAway=\u00a77Du er ikke l\u00e6ngere markeret som v\u00c3\u00a6rende ikke tilstede. +markMailAsRead=\u00a7cFor at markere din flaskepost som l\u00e6st, skriv /mail clear maxHomes=Du kan ikke have mere end {0} hjem. mayNotJail=\u00a7cDu kan ikke smide denne person i f\u00c3\u00a6ngsel. me=mig @@ -185,10 +185,10 @@ minute=minut minutes=minutter missingItems=Du har ikke {0}x {1}. missingPrefixSuffix=Mangler et pr\u00e6fiks eller suffiks for {0} +mobsAvailable=\u00a77Mobs: {0} mobSpawnError=Fejl ved \u00e6ndring af mob spawner. mobSpawnLimit=Mob m\u00e6ngde begr\u00e6nset til serverens fastsatte gr\u00e6nse. mobSpawnTarget=M\u00e5l blok skal v\u00e6re en mob spawner. -mobsAvailable=\u00a77Mobs: {0} moneyRecievedFrom=\u00a7a{0} er modtaget fra {1} moneySentTo=\u00a7a{0} er sendt til {1} moneyTaken={0} blev taget fra din bankkonto. @@ -196,10 +196,10 @@ month=m\u00e5nede months=m\u00e5neder moreThanZero=M\u00e6ngder skal v\u00e6re st\u00f8rre end 0. msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} -muteExempt=\u00a7cDu kan ikke mute denne spiller. mutedPlayer=Spiller {0} muted. mutedPlayerFor=Spiller {0} muted i {1}. mutedUserSpeaks={0} pr\u00f8vede at snakke, men er muted. +muteExempt=\u00a7cDu kan ikke mute denne spiller. nearbyPlayers=Spillere i n\u00c3\u00a6rheden: {0} needTpohere=Du skal have adgang til /tpohere for at teleportere andre spillere. negativeBalanceError=Brugeren har ikke tilladelse til at have en negativ saldo. @@ -221,6 +221,7 @@ noKitPermission=\u00a7cDu har brug for \u00a7c{0}\u00a7c permission for at bruge noKits=\u00a77Der er ikke nogen kits tilg\u00e6ngelige endnu noMail=Du har ikke noget flaskepost. noMotd=\u00a7cDer er ingen Message of the day. +none=ingen noNewMail=\u00a77Du har ingen ny flaskepost. noPendingRequest=Du har ikke en ventende anmodning. noPerm=\u00a7cDu har ikke \u00a7f{0}\u00a7c permission. @@ -228,30 +229,21 @@ noPermToSpawnMob=\u00a7cDu har ikke tilladelse til at spawne denne mob. noPlacePermission=\u00a7cDu har ikke tiladelse til at placere en block n\u00c3\u00a6r det skilt. noPowerTools= Du har ingen power tools tilf\u00c3\u00b8jet. noRules=\u00a7cDer er ingen regler endnu. ANARKI! -noWarpsDefined=Ingen warps er defineret -none=ingen notAllowedToQuestion=\u00a7cDu har ikke tilladelse til at bruge sp\u00f8rgsm\u00e5l. notAllowedToShout=\u00a7cDu har ikke tilladelse til at r\u00e5be. notEnoughExperience=You do not have enough experience. notEnoughMoney=Du har ikke tilstr\u00e6kkeligt med penge. +nothingInHand = \u00a7cDu har intet i din h\u00c3\u00a5nd. notRecommendedBukkit=* ! * Bukkit version er ikke den anbefalede build til Essentials. notSupportedYet=Ikke underst\u00f8ttet endnu. -nothingInHand = \u00a7cDu har intet i din h\u00c3\u00a5nd. now=nu +noWarpsDefined=Ingen warps er defineret nuke=May death rain upon them numberRequired=Et nummer skal v\u00e6re, din tardo. onlyDayNight=/time underst\u00f8tter kun day/night. onlyPlayers=Kun in-game spillere kan bruge {0}. onlySunStorm=/weather underst\u00c3\u00b8tter kun sun/storm. orderBalances=Tjekker saldoer af {0} spillere, vent venligst... -pTimeCurrent=\u00a7e{0}''s\u00a7f Tiden er {1}. -pTimeCurrentFixed=\u00a7e{0}''s\u00a7f Tiden er fastsat til {1}. -pTimeNormal=\u00a7e{0}''s\u00a7f Tiden er normal og matcher serveren. -pTimeOthersPermission=\u00a7cDu har ikke tilladelse til at \u00c3\u00a6ndre andre spilleres tid. -pTimePlayers=Disse spillere har deres egen tid: -pTimeReset=Spiler-tid er blevet nulstillet for: \u00a7e{0} (oversat korrekt?) -pTimeSet=Spiller-tid er blevet sat til \u00a73{0}\u00a7f for: \u00a7e{1} (oversat korrekt?) -pTimeSetFixed=Spiller-tid er fastsat til \u00a73{0}\u00a7f for: \u00a7e{1} parseError=Fejl ved parsing af {0} p\u00e5 linje {1} pendingTeleportCancelled=\u00a7cAnmodning om teleport er blevet afvist. permissionsError=Mangler Permissions/GroupManager; chat pr\u00e6fikser/suffikser vil v\u00e6re deaktiveret. @@ -279,6 +271,14 @@ powerToolRemoveAll=Alle kommandoer fjernet fra {0}. powerToolsDisabled= Alle dine power tools er blevet deaktiveret. powerToolsEnabled= Alle dine power tools er blevet aktiveret. protectionOwner=\u00a76[EssentialsProtect] Protection owner: {0} +pTimeCurrent=\u00a7e{0}''s\u00a7f Tiden er {1}. +pTimeCurrentFixed=\u00a7e{0}''s\u00a7f Tiden er fastsat til {1}. +pTimeNormal=\u00a7e{0}''s\u00a7f Tiden er normal og matcher serveren. +pTimeOthersPermission=\u00a7cDu har ikke tilladelse til at \u00c3\u00a6ndre andre spilleres tid. +pTimePlayers=Disse spillere har deres egen tid: +pTimeReset=Spiler-tid er blevet nulstillet for: \u00a7e{0} (oversat korrekt?) +pTimeSet=Spiller-tid er blevet sat til \u00a73{0}\u00a7f for: \u00a7e{1} (oversat korrekt?) +pTimeSetFixed=Spiller-tid er fastsat til \u00a73{0}\u00a7f for: \u00a7e{1} questionFormat=\u00a77[Sp\u00f8rgsm\u00e5l]\u00a7f {0} readNextPage=Skriv /{0} {1} for at l\u00c3\u00a6se n\u00c3\u00a6ste side. reloadAllPlugins=\u00a77Reload alle plugins. @@ -301,6 +301,7 @@ seconds=sekunder seenOffline=Spilleren {0} har v\u00c3\u00a6ret offline i {1} seenOnline=Spilleren {0} har v\u00c3\u00a6ret online i {1} serverFull=Serveren er sgu fuld. Den b\u00c3\u00b8r melde sig til AA. +serverTotal=Server Total: {0} setSpawner=\u00c3\u0086ndrede spawner type til {0} sheepMalformedColor=Forkert farve. (Korrekt oversat?) shoutFormat=\u00a77[Shout]\u00a7f {0} @@ -311,29 +312,29 @@ signProtectInvalidLocation=\u00a74Du har ikke tilladelse til at lave et skilt he similarWarpExist=En warp med dette navn eksisterer allerede. slimeMalformedSize=Forkert st\u00f8rrelse. (Korrekt oversat?) soloMob=Denne mob kan godt lide at v\u00e6re alene. Den hygger sig. -spawnSet=\u00a77Spawnplacering fastsat for gruppe: {0}. spawned=spawnet +spawnSet=\u00a77Spawnplacering fastsat for gruppe: {0}. suicideMessage=\u00a77Farvel grusomme verden... suicideSuccess= \u00a77{0} tog sit eget liv survival=survival takenFromAccount=\u00a7c{0} er blevet taget fra din konto. -takenFromOthersAccount=\u00a7c{0} er blevet taget fra {1}''s konto. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Anmodning om teleport er sendt til alle spillere. teleportAll=\u00a77Teleporterer alle spillere... +teleportationCommencing=\u00a77Teleport begynder... +teleportationDisabled=\u00a77Teleport deaktiveret. +teleportationEnabled=\u00a77Teleport aktiveret. teleportAtoB=\u00a77{0}\u00a77 teleporterede dig til {1}\u00a77. teleportDisabled={0} har ikke teleportation aktiveret. teleportHereRequest=\u00a7c{0}\u00a7c har anmodet om, at du teleporterer dig til ham/hende. +teleporting=\u00a77Teleporterer... +teleportingPortal=\u00a77Teleporterede via portal. teleportNewPlayerError=Fejlede ved teleportering af ny spiller teleportRequest=\u00a7c{0}\u00a7c har anmodet om at teleportere til dig. teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds. teleportTop=\u00a77Teleporterer til toppen. -teleportationCommencing=\u00a77Teleport begynder... -teleportationDisabled=\u00a77Teleport deaktiveret. -teleportationEnabled=\u00a77Teleport aktiveret. -teleporting=\u00a77Teleporterer... -teleportingPortal=\u00a77Teleporterede via portal. -tempBanned=Midlertidigt bannet fra serveren for {0} tempbanExempt=\u00a77Du m\u00c3\u00a5 ikke tempbanne denne spiller! Slemme, slemme du! +tempBanned=Midlertidigt bannet fra serveren for {0} thunder= Du har nu {0} torden i din verden thunderDuration=Du har nu {0} torden i din verden i {1} sekunder. timeBeforeHeal=Tid f\u00c3\u00b8r du kan heale igen: {0} @@ -364,25 +365,25 @@ unlimitedItemPermission=\u00a7cIngen tilladelse til ubegr\u00e6nset ting {0}. unlimitedItems=Ubegr\u00c3\u00a6nsede ting: unmutedPlayer=Spilleren {0} unmuted. upgradingFilesError=Fejl under opgradering af filerne. +userdataMoveBackError=Kunne ikke flytte userdata/{0}.tmp til userdata/{1} +userdataMoveError=Kunne ikke flytte userdata/{0} til userdata/{1}.tmp userDoesNotExist=Brugeren {0} eksisterer ikke. userIsAway={0} er nu AFK. Skub ham i havet eller bur ham inde! userIsNotAway={0} er ikke l\u00e6ngere AFK. userJailed=\u00a77Du er blevet f\u00e6ngslet. userUsedPortal={0} brugte en eksisterende udgangsportal. -userdataMoveBackError=Kunne ikke flytte userdata/{0}.tmp til userdata/{1} -userdataMoveError=Kunne ikke flytte userdata/{0} til userdata/{1}.tmp usingTempFolderForTesting=Bruger temp-mappe til testing: versionMismatch=Versioner matcher ikke! Opdater venligst {0} til den nyeste version. versionMismatchAll=Versioner matcher ikke! Opdater venligst alle Essentials jar-filer til samme version. voiceSilenced=\u00a77Din stemme er blevet gjort stille. warpDeleteError=Ah, shit; kunne sgu ikke fjerne warp-filen. Jeg giver en \u00c3\u00b8l i lufthavnen. +warpingTo=\u00a77Warper til {0}. warpListPermission=\u00a7cDu har ikke tilladelse til at vise listen over warps. warpNotExist=Den warp eksisterer ikke. -warpSet=\u00a77Warp {0} sat. -warpUsePermission=\u00a7cDu har ikke tilladelse til at benytte den warp. -warpingTo=\u00a77Warper til {0}. warps=Warps: {0} warpsCount=\u00a77Der er {0} warps. Viser side {1} af {2}. +warpSet=\u00a77Warp {0} sat. +warpUsePermission=\u00a7cDu har ikke tilladelse til at benytte den warp. weatherStorm=\u00a77Du har sat vejret til ''storm'' i {0} weatherStormFor=\u00a77Du har sat vejret til ''storm'' i {0} i {1} sekunder weatherSun=\u00a77Du har sat vejret til ''sol'' i {0} diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties index edffe33ac..815972f03 100644 --- a/Essentials/src/messages_de.properties +++ b/Essentials/src/messages_de.properties @@ -4,7 +4,7 @@ # by: action=* {0} {1} addedToAccount=\u00a7a{0} wurden zu deiner Geldb\u00f6rse hinzugef\u00fcgt. -addedToOthersAccount=\u00a7a{0} wurden zu {1}s Konto hinzugef\u00fcgt. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} alertBroke=zerst\u00f6rt: alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} bei: {3} alertPlaced=platziert: @@ -15,7 +15,7 @@ backUsageMsg=\u00a77Kehre zur letzten Position zur\u00fcck. backupFinished=Backup beendet backupStarted=Backup gestartet balance=\u00a77Geldb\u00f6rse: {0} -balanceTop=\u00a77 Top Guthaben ({0}) +balanceTop=\u00a77Top Guthaben ({0}) banExempt=\u00a7cDu kannst diesen Spieler nicht sperren. banIpAddress=\u00a77IP-Adresse gesperrt. bannedIpsFileError=Fehler beim Lesen von banned-ips.txt @@ -301,6 +301,7 @@ seconds=Sekunden seenOffline=Spieler {0} ist offline seit {1} seenOnline=Spieler {0} ist online seit {1} serverFull=Server ist voll +serverTotal=Server Total: {0} setSpawner=\u00c4ndere Mob-Spawner zu {0} sheepMalformedColor=Ung\u00fcltige Farbe. shoutFormat=\u00a77[Schrei]\u00a7f {0} @@ -317,7 +318,7 @@ suicideMessage=\u00a77Lebewohl grausame Welt... suicideSuccess= \u00a77{0} hat sich das Leben genommen. survival=survival takenFromAccount=\u00a7c{0} wurden aus deiner Geldb\u00f6rse genommen. -takenFromOthersAccount=\u00a7c{0} wurde von {1} wurde Rechnung getragen. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Teleportierungsanfrage zu allen Spielern gesendet... teleportAll=\u00a77Teleportiere alle Spieler... teleportAtoB=\u00a77{0}\u00a77 teleportiert dich zu {1}\u00a77. diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties index b03a49812..dfc7600dc 100644 --- a/Essentials/src/messages_en.properties +++ b/Essentials/src/messages_en.properties @@ -4,18 +4,18 @@ # by: action=* {0} {1} addedToAccount=\u00a7a{0} has been added to your account. -addedToOthersAccount=\u00a7a{0} has been added to {1} account. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} 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 +backUsageMsg=\u00a77Returning to previous location. balance=\u00a77Balance: {0} -balanceTop=\u00a77 Top balances ({0}) +balanceTop=\u00a77Top balances ({0}) banExempt=\u00a7cYou can not ban that player. banIpAddress=\u00a77Banned IP address bannedIpsFileError=Error reading banned-ips.txt @@ -64,14 +64,14 @@ depth=\u00a77You are at sea level. depthAboveSea=\u00a77You are {0} block(s) above sea level. depthBelowSea=\u00a77You are {0} block(s) below sea level. destinationNotSet=Destination not set -disableUnlimited=\u00a77Disabled unlimited placing of {0} for {1}. disabled=disabled disabledToSpawnMob=Spawning this mob was disabled in the config file. +disableUnlimited=\u00a77Disabled unlimited placing of {0} for {1}. dontMoveMessage=\u00a77Teleportation will commence in {0}. Don''t move. downloadingGeoIp=Downloading GeoIP database ... this might take a while (country: 0.6 MB, city: 20MB) duplicatedUserdata=Duplicated userdata: {0} and {1} -enableUnlimited=\u00a77Giving unlimited amount of {0} to {1}. enabled=enabled +enableUnlimited=\u00a77Giving unlimited amount of {0} to {1}. enchantmentApplied = \u00a77The enchantment {0} has been applied to your item in hand. enchantmentNotFound = \u00a7cEnchantment not found enchantmentPerm = \u00a7cYou do not have the permission for {0} @@ -99,9 +99,9 @@ gcentities= entities gcfree=Free memory: {0} MB gcmax=Maximum memory: {0} MB gctotal=Allocated memory: {0} MB +geoipJoinFormat=Player {0} comes from {1} geoIpUrlEmpty=GeoIP download url is empty. geoIpUrlInvalid=GeoIP download url is invalid. -geoipJoinFormat=Player {0} comes from {1} godDisabledFor=disabled for {0} godEnabledFor=enabled for {0} godMode=\u00a77God mode {0}. @@ -112,9 +112,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. @@ -124,28 +124,28 @@ infoChapterPages=Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f: infoFileDoesNotExist=File info.txt does not exist. Creating one for you. infoPages=Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f: infoUnknownChapter=Unknown chapter. -invBigger=The other users inventory is bigger than yours. -invRestored=Your inventory has been restored. -invSee=You see the inventory of {0}. -invSeeHelp=Use /invsee to restore your inventory. invalidCharge=\u00a7cInvalid charge. invalidMob=Invalid mob type. invalidServer=Invalid server! invalidSignLine=Line {0} on sign is invalid. invalidWorld=\u00a7cInvalid world. +invBigger=The other users inventory is bigger than yours. inventoryCleared=\u00a77Inventory Cleared. inventoryClearedOthers=\u00a77Inventory of \u00a7c{0}\u00a77 cleared. +invRestored=Your inventory has been restored. +invSee=You see the inventory of {0}. +invSeeHelp=Use /invsee to restore your inventory. is=is itemCannotBeSold=That item cannot be sold to the server. itemMustBeStacked=Item must be traded in stacks. A quantity of 2s would be two stacks, etc. itemNotEnough1=\u00a7cYou do not have enough of that item to sell. itemNotEnough2=\u00a77If you meant to sell all of your items of that type, use /sell itemname itemNotEnough3=\u00a77/sell itemname -1 will sell all but one item, etc. +itemsCsvNotLoaded=Could not load items.csv. itemSellAir=You really tried to sell Air? Put an item in your hand. itemSold=\u00a77Sold for \u00a7c{0} \u00a77({1} {2} at {3} each) itemSoldConsole={0} sold {1} for \u00a77{2} \u00a77({3} items at {4} each) itemSpawn=\u00a77Giving {0} of {1} -itemsCsvNotLoaded=Could not load items.csv. jailAlreadyIncarcerated=\u00a7cPerson is already in jail: {0} jailMessage=\u00a7cYou do the crime, you do the time. jailNotExist=That jail does not exist. @@ -162,8 +162,8 @@ kitError=\u00a7cThere are no valid kits. kitErrorHelp=\u00a7cPerhaps an item is missing a quantity in the configuration? kitGive=\u00a77Giving kit {0}. kitInvFull=\u00a7cYour inventory was full, placing kit on the floor -kitTimed=\u00a7cYou can''t use that kit again for another {0}. kits=\u00a77Kits: {0} +kitTimed=\u00a7cYou can''t use that kit again for another {0}. lightningSmited=\u00a77You have just been smited lightningUse=\u00a77Smiting {0} listAfkTag = \u00a77[AFK]\u00a7f @@ -175,9 +175,9 @@ localFormat=Local: <{0}> {1} mailClear=\u00a7cTo mark your mail as read, type /mail clear mailCleared=\u00a77Mail Cleared! mailSent=\u00a77Mail sent! -markMailAsRead=\u00a7cTo mark your mail as read, type /mail clear markedAsAway=\u00a77You are now marked as away. markedAsNotAway=\u00a77You are no longer marked as away. +markMailAsRead=\u00a7cTo mark your mail as read, type /mail clear maxHomes=You cannot set more than {0} homes. mayNotJail=\u00a7cYou may not jail that person me=me @@ -185,10 +185,10 @@ minute=minute minutes=minutes missingItems=You do not have {0}x {1}. missingPrefixSuffix=Missing a prefix or suffix for {0} +mobsAvailable=\u00a77Mobs: {0} mobSpawnError=Error while changing mob spawner. mobSpawnLimit=Mob quantity limited to server limit mobSpawnTarget=Target block must be a mob spawner. -mobsAvailable=\u00a77Mobs: {0} moneyRecievedFrom=\u00a7a{0} has been received from {1} moneySentTo=\u00a7a{0} has been sent to {1} moneyTaken={0} taken from your bank account. @@ -196,10 +196,10 @@ month=month months=months moreThanZero=Quantities must be greater than 0. msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} -muteExempt=\u00a7cYou may not mute that player. mutedPlayer=Player {0} muted. mutedPlayerFor=Player {0} muted for {1}. mutedUserSpeaks={0} tried to speak, but is muted. +muteExempt=\u00a7cYou may not mute that player. nearbyPlayers=Players nearby: {0} needTpohere=You need access to /tpohere to teleport other players. negativeBalanceError=User is not allowed to have a negative balance. @@ -221,6 +221,7 @@ noKitPermission=\u00a7cYou need the \u00a7c{0}\u00a7c permission to use that kit noKits=\u00a77There are no kits available yet noMail=You do not have any mail noMotd=\u00a7cThere is no message of the day. +none=none noNewMail=\u00a77You have no new mail. noPendingRequest=You do not have a pending request. noPerm=\u00a7cYou do not have the \u00a7f{0}\u00a7c permission. @@ -228,30 +229,21 @@ noPermToSpawnMob=\u00a7cYou don''t have permission to spawn this mob. noPlacePermission=\u00a7cYou do not have permission to place a block near that sign. noPowerTools=You have no power tools assigned. noRules=\u00a7cThere are no rules specified yet. -noWarpsDefined=No warps defined -none=none notAllowedToQuestion=\u00a7cYou are not authorized to use question. notAllowedToShout=\u00a7cYou are not authorized to shout. notEnoughExperience=You do not have enough experience. notEnoughMoney=You do not have sufficient funds. +nothingInHand = \u00a7cYou have nothing in your hand. notRecommendedBukkit=* ! * Bukkit version is not the recommended build for Essentials. notSupportedYet=Not supported yet. -nothingInHand = \u00a7cYou have nothing in your hand. now=now +noWarpsDefined=No warps defined nuke=May death rain upon them 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. orderBalances=Ordering balances of {0} users, please wait ... -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. @@ -279,6 +271,14 @@ powerToolRemoveAll=All commands removed from {0}. powerToolsDisabled=All of your power tools have been enabled. powerToolsEnabled=All of your power tools have been enabled. 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} readNextPage=Type /{0} {1} to read the next page reloadAllPlugins=\u00a77Reloaded all plugins. @@ -301,6 +301,7 @@ seconds=seconds seenOffline=Player {0} is offline since {1} seenOnline=Player {0} is online since {1} serverFull=Server is full +serverTotal=Server Total: {0} setSpawner=Changed spawner type to {0} sheepMalformedColor=Malformed color. shoutFormat=\u00a77[Shout]\u00a7f {0} @@ -311,29 +312,29 @@ signProtectInvalidLocation=\u00a74You are not allowed to create sign here. similarWarpExist=A warp with a similar name already exists. slimeMalformedSize=Malformed size. soloMob=That mob likes to be alone -spawnSet=\u00a77Spawn location set for group {0}. spawned=spawned +spawnSet=\u00a77Spawn location set for group {0}. suicideMessage=\u00a77Goodbye Cruel World... suicideSuccess= \u00a77{0} took their own life survival=survival takenFromAccount=\u00a7c{0} has been taken from your account. -takenFromOthersAccount=\u00a7c{0} has been taken from {1} account. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Teleporting request sent to all players... teleportAll=\u00a77Teleporting all players... +teleportationCommencing=\u00a77Teleportation commencing... +teleportationDisabled=\u00a77Teleportation disabled. +teleportationEnabled=\u00a77Teleportation enabled. teleportAtoB=\u00a77{0}\u00a77 teleported you to {1}\u00a77. teleportDisabled={0} has teleportation disabled. teleportHereRequest=\u00a7c{0}\u00a7c has requested that you teleport to them. +teleporting=\u00a77Teleporting... +teleportingPortal=\u00a77Teleporting via portal. teleportNewPlayerError=Failed to teleport new player teleportRequest=\u00a7c{0}\u00a7c has requested to teleport to you. teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds. teleportTop=\u00a77Teleporting to top. -teleportationCommencing=\u00a77Teleportation commencing... -teleportationDisabled=\u00a77Teleportation disabled. -teleportationEnabled=\u00a77Teleportation enabled. -teleporting=\u00a77Teleporting... -teleportingPortal=\u00a77Teleporting via portal. -tempBanned=Temporarily banned from server for {0} tempbanExempt=\u00a77You may not tempban that player +tempBanned=Temporarily banned from server for {0} thunder= You {0} thunder in your world thunderDuration=You {0} thunder in your world for {1} seconds. timeBeforeHeal=Time before next heal: {0} @@ -364,25 +365,25 @@ unlimitedItemPermission=\u00a7cNo permission for unlimited item {0}. unlimitedItems=Unlimited items: unmutedPlayer=Player {0} unmuted. upgradingFilesError=Error while upgrading the files +userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1} +userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp userDoesNotExist=The user {0} does not exist. userIsAway={0} is now AFK userIsNotAway={0} is no longer AFK userJailed=\u00a77You have been jailed userUsedPortal={0} used an existing exit portal. -userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1} -userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp usingTempFolderForTesting=Using temp folder for testing: versionMismatch=Version mismatch! Please update {0} to the same version. versionMismatchAll=Version mismatch! Please update all Essentials jars to the same version. voiceSilenced=\u00a77Your voice has been silenced warpDeleteError=Problem deleting the warp file. +warpingTo=\u00a77Warping to {0}. warpListPermission=\u00a7cYou do not have Permission to list that warps. warpNotExist=That warp does not exist. -warpSet=\u00a77Warp {0} set. -warpUsePermission=\u00a7cYou do not have Permission to use that warp. -warpingTo=\u00a77Warping to {0}. warps=Warps: {0} warpsCount=\u00a77There are {0} warps. Showing page {1} of {2}. +warpSet=\u00a77Warp {0} set. +warpUsePermission=\u00a7cYou do not have Permission to use that warp. weatherStorm=\u00a77You set the weather to storm in {0} weatherStormFor=\u00a77You set the weather to storm in {0} for {1} seconds weatherSun=\u00a77You set the weather to sun in {0} diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties index 4f3da7738..909ec7434 100644 --- a/Essentials/src/messages_es.properties +++ b/Essentials/src/messages_es.properties @@ -4,16 +4,16 @@ # by: action=* {0} {1} addedToAccount=\u00a7a{0} ha sido agregado a tu cuenta. -addedToOthersAccount=\u00a7a{0} ha sido agregado a la cuenta de {1}. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} alertBroke=roto: alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} en: {3} alertPlaced=situado: alertUsed=usado: autoAfkKickReason=Has sido echado por ausentarte mas de {0} minutos. backAfterDeath=\u00a77Usa el comando /back para volver al punto en el que moriste. -backUsageMsg=\u00a77Volviendo a la localizacion anterior. backupFinished=Copia de seguridad completada backupStarted=Comenzando copia de seguridad +backUsageMsg=\u00a77Volviendo a la localizacion anterior. balance=\u00a77Cantidad: {0} balanceTop=\u00a77Top cantidades ({0}) banExempt=\u00a7cNo puedes banear a ese jugador @@ -64,14 +64,14 @@ depth=\u00a77Estas al nivel del mar. depthAboveSea=\u00a77Estas {0} bloque(s) por encima del mar. depthBelowSea=\u00a77Estas {0} bloque(s) por debajo del mar. destinationNotSet=Destino no establecido. -disableUnlimited=\u00a77Desactivando colocacion ilimitada de {0} para {1}. disabled=desactivado disabledToSpawnMob=Spawning this mob was disabled in the config file. +disableUnlimited=\u00a77Desactivando colocacion ilimitada de {0} para {1}. dontMoveMessage=\u00a77Teletransporte comenzara en {0}. No te muevas. downloadingGeoIp=Descargando base de datos de GeoIP ... puede llevar un tiempo (pais: 0.6 MB, ciudad: 20MB) duplicatedUserdata=Datos de usuario duplicados: {0} y {1} -enableUnlimited=\u00a77Dando cantidad ilimitada de {0} a {1}. enabled=activado +enableUnlimited=\u00a77Dando cantidad ilimitada de {0} a {1}. enchantmentApplied = \u00a77The enchantment {0} has been applied to your item in hand. enchantmentNotFound = \u00a7cEnchantment not found enchantmentPerm = \u00a7cYou do not have the permission for {0} @@ -99,9 +99,9 @@ gcentities= entidades gcfree=Memoria libre: {0} MB gcmax=Memoria maxima: {0} MB gctotal=Memoria localizada: {0} MB +geoipJoinFormat=El jugador {0} viene de {1} geoIpUrlEmpty=Link para descargar GeoIP esta vacio. geoIpUrlInvalid=Link para descargar GeoIP es invalido. -geoipJoinFormat=El jugador {0} viene de {1} godDisabledFor=Desactivado para {0} godEnabledFor=Activado para {0} godMode=\u00a77Modo Dios {0}. @@ -112,9 +112,9 @@ helpConsole=Para obtener ayuda de la consola, escribe ?. helpOp=\u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1} helpPages=Pagina \u00a7c{0}\u00a7f de \u00a7c{1}\u00a7f: holeInFloor=Agujero en el suelo +homes=Hogares: {0} homeSet=\u00a77Hogar establecido. homeSetToBed=\u00a77Tu hogar esta ahora establecido a esta cama. -homes=Hogares: {0} hour=hora hours=horas ignorePlayer=A partir de ahora ignoras al jugador {0}. @@ -124,28 +124,28 @@ infoChapterPages=Seccion {0}, pagina \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f: infoFileDoesNotExist=El archivo info.txt no existe. Creando uno para ti. infoPages=Pagina \u00a7c{0}\u00a7f de \u00a7c{1}\u00a7f: infoUnknownChapter=Seccion desconocida. -invBigger=El inventario del otro usuario es mas grande que el tuyo -invRestored=Tu inventario ha sido recuperado. -invSee=Estas viendo el inventario de {0}. -invSeeHelp=Usa /invsee para recuperar tu inventario. invalidCharge=\u00a7cCargo invalido. invalidMob=Mob invalido. invalidServer=Servidor invalido! invalidSignLine=Linea {0} en el signo es invalida. invalidWorld=\u00a7cMundo invalido. +invBigger=El inventario del otro usuario es mas grande que el tuyo inventoryCleared=\u00a77Inventario limpiado. inventoryClearedOthers=\u00a77Inventario de \u00a7c{0}\u00a77 limpiado. +invRestored=Tu inventario ha sido recuperado. +invSee=Estas viendo el inventario de {0}. +invSeeHelp=Usa /invsee para recuperar tu inventario. is=es itemCannotBeSold=Ese objeto no puede ser vendido al servidor. itemMustBeStacked=El objeto tiene que ser intercambiado en pilas. Una cantidad de 2s seria de dos pilas, etc. itemNotEnough1=\u00a7cNo tienes suficientes ejemplares de ese objeto para venderlo. itemNotEnough2=\u00a77Si pensabas en vender todos tus objetos de ese tipo, usa /sell nombredeobjeto itemNotEnough3=\u00a77/sell nombredeobjeto -1 vendera todos excepto un objeto, etc. +itemsCsvNotLoaded=Error al leer items.csv. itemSellAir=Realmente has intentado vender Aire? Pon un objeto en tu mano! itemSold=\u00a77Vendido para \u00a7c {0} \u00a77 ({1} {2} a {3} cada uno) itemSoldConsole={0} Vendido {1} para\u00a77 {2} \u00a77({3} objetos a {4} cada uno) itemSpawn=\u00a77Dando {0} de {1} -itemsCsvNotLoaded=Error al leer items.csv. jailAlreadyIncarcerated=\u00a7cLa persona ya esta en la carcel: {0} jailMessage=\u00a7cPor hacer el mal, tiempo en la carcel estaras. jailNotExist=Esa carcel no existe. @@ -162,8 +162,8 @@ kitError=\u00a7cNo hay ningun kit valido. kitErrorHelp=\u00a7cPerhaps an item is missing a quantity in the configuration? kitGive=\u00a77Dando kit a {0}. kitInvFull=\u00a7cTu inventario esta lleno, su kit se pondra en el suelo -kitTimed=\u00a7c No puedes usar ese kit de nuevo para otro{0}. kits=\u00a77Kits: {0} +kitTimed=\u00a7c No puedes usar ese kit de nuevo para otro{0}. lightningSmited=\u00a77Acabas de ser golpeado lightningUse=\u00a77Golpeando a {0} listAfkTag = \u00a77[AFK]\u00a7f @@ -175,9 +175,9 @@ localFormat=Local: <{0}> {1} mailClear=\u00a7cPara marcar tu email como leido, escribe /mail clear mailCleared=\u00a77Email limpiado! mailSent=\u00a77Email enviado!! -markMailAsRead=\u00a7cPara marcar tu email como leido, escribe /mail clear markedAsAway=\u00a77Has sido puesto como AFK. markedAsNotAway=\u00a77Ya no estas AFK. +markMailAsRead=\u00a7cPara marcar tu email como leido, escribe /mail clear maxHomes=No puedes establecer mas de {0} hogares. mayNotJail=\u00a7cNo puedes encarcelar a esa persona me=yo @@ -185,10 +185,10 @@ minute=minuto minutes=minutos missingItems=No tienes {0}x de {1}. missingPrefixSuffix=Falta un prefijo o un sufijo para {0} +mobsAvailable=\u00a77Mobs: {0} mobSpawnError=Error al cambiar la localizacion para el nacimiento de los mobs. mobSpawnLimit=Cantidad de Mobs limitados al limite del server mobSpawnTarget=El block seleccionado sera el lugar donde van a nacer los mobs. -mobsAvailable=\u00a77Mobs: {0} moneyRecievedFrom=\u00a7a{0} ha sido recivido de {1} moneySentTo=\u00a7a{0} ha sido enviado a {1} moneyTaken={0} han sido sacados de tu cuenta bancaria. @@ -196,10 +196,10 @@ month=mes months=meses moreThanZero=Las cantidades han de ser mayores que 0. msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} -muteExempt=\u00a7cNo puedes silenciar a ese jugador. mutedPlayer=Player {0} silenciado. mutedPlayerFor=Player {0} silenciado durante {1}. mutedUserSpeaks={0} intento hablar, pero esta silenciado. +muteExempt=\u00a7cNo puedes silenciar a ese jugador. nearbyPlayers=Players nearby: {0} needTpohere=Necesitas acceso a /tpohere para teletransportar a otros jugadores. negativeBalanceError=El usuario no tiene permitido tener un saldo negativo. @@ -221,6 +221,7 @@ noKitPermission=\u00a7cNecesitas los \u00a7c{0}\u00a7c permisos para usar ese ki noKits=\u00a77No hay kits disponibles todavia noMail=No tienes ningun email recivido noMotd=\u00a7cNo hay ningun mensaje del dia. +none=ninguno noNewMail=\u00a77No tienes ningun correo nuevo. noPendingRequest=No tienes ninguna peticion pendiente. noPerm=\u00a7cNo tienes el permiso de \u00a7f{0}\u00a7c. @@ -228,30 +229,21 @@ noPermToSpawnMob=\u00a7cYou don''t have permission to spawn this mob. noPlacePermission=\u00a7cNo tienes permiso para situar ese bloque en ese lugar. noPowerTools=You have no power tools assigned. noRules=\u00a7cNo hay reglas especificadas todavia. -noWarpsDefined=No hay teletransportes definidos aun -none=ninguno notAllowedToQuestion=\u00a7cYou estas autorizado para usar las preguntas. notAllowedToShout=\u00a7cNo estas autorizado para gritar. notEnoughExperience=You do not have enough experience. notEnoughMoney=No tienes el dinero suficiente. +nothingInHand = \u00a7cYou have nothing in your hand. notRecommendedBukkit=* ! * La version de bukkit no es la recomendada para esta version de Essentials. notSupportedYet=No esta soportado aun. -nothingInHand = \u00a7cYou have nothing in your hand. now=ahora +noWarpsDefined=No hay teletransportes definidos aun nuke=May death rain upon them numberRequired=Un numero es necesario, amigo. onlyDayNight=/time solo soporta day/night. (dia/noche) onlyPlayers=Solo los jugadores conectados pueden usar {0}. onlySunStorm=/weather solo soporta sun/storm. (sol/tormenta) orderBalances=Ordering balances of {0} users, please wait ... -pTimeCurrent=\u00a7e{0}''s\u00a7f la hora es {1}. -pTimeCurrentFixed=\u00a7e{0}''s\u00a7f la hora ha sido cambiada a {1}. -pTimeNormal=\u00a7e{0}''s\u00a7f el tiempo es normal y coincide con el servidor. -pTimeOthersPermission=\u00a7cNo estas autorizado para especificar'' la hora de otros usuarios. -pTimePlayers=Estos usuarios tienen su propia hora: -pTimeReset=La hora del usuario ha sido reiniciada a las: \u00a7e{0} -pTimeSet=La hora del jugador ha sido cambiada para las: \u00a73{0}\u00a7f for: \u00a7e{1} -pTimeSetFixed=La hora del jugador ha sido arreglada para las: \u00a73{0}\u00a7f for: \u00a7e{1} parseError=error analizando {0} en la linea {1} pendingTeleportCancelled=\u00a7cPeticion de teletransporte pendiente cancelado. permissionsError=Falta el plugin Permissions/GroupManager; Los prefijos/sufijos de chat seran desactivados. @@ -279,6 +271,14 @@ powerToolRemoveAll=Todos los comandos borrados desde {0}. powerToolsDisabled=All of your power tools have been disabled. powerToolsEnabled=All of your power tools have been enabled. protectionOwner=\u00a76[EssentialsProtect] Dueño de la proteccion: {0} +pTimeCurrent=\u00a7e{0}''s\u00a7f la hora es {1}. +pTimeCurrentFixed=\u00a7e{0}''s\u00a7f la hora ha sido cambiada a {1}. +pTimeNormal=\u00a7e{0}''s\u00a7f el tiempo es normal y coincide con el servidor. +pTimeOthersPermission=\u00a7cNo estas autorizado para especificar'' la hora de otros usuarios. +pTimePlayers=Estos usuarios tienen su propia hora: +pTimeReset=La hora del usuario ha sido reiniciada a las: \u00a7e{0} +pTimeSet=La hora del jugador ha sido cambiada para las: \u00a73{0}\u00a7f for: \u00a7e{1} +pTimeSetFixed=La hora del jugador ha sido arreglada para las: \u00a73{0}\u00a7f for: \u00a7e{1} questionFormat=\u00a77[Pregunta]\u00a7f {0} readNextPage=Type /{0} {1} to read the next page reloadAllPlugins=\u00a77Todos los plugins recargados. @@ -301,6 +301,7 @@ seconds=segundos seenOffline=El jugador {0} esta desconectado desde {1} seenOnline=El jugador {0} lleva conectado desde {1} serverFull=Servidor lleno +serverTotal=Server Total: {0} setSpawner=Cambiado tipo de lugar de nacimiento a {0} sheepMalformedColor=Color malformado. shoutFormat=\u00a77[Shout]\u00a7f {0} @@ -311,29 +312,29 @@ signProtectInvalidLocation=\u00a74No puedes poner carteles en ese sitio. similarWarpExist=Ya existe un teletransporte con ese nombre. slimeMalformedSize=Medidas malformadas. soloMob=A este mob le gusta estar solo -spawnSet=\u00a77El lugar de nacimiento ha sido puesto para el grupo {0}. spawned=nacido +spawnSet=\u00a77El lugar de nacimiento ha sido puesto para el grupo {0}. suicideMessage=\u00a77Adios mundo cruel... suicideSuccess= \u00a77{0} se quito su propia vida survival=survival takenFromAccount=\u00a7c{0} ha sido sacado de tu cuenta. -takenFromOthersAccount=\u00a7c{0} ha sido sacado de la cuenta de {1}. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Peticion de teletransporte enviada a todos los jugadores... teleportAll=\u00a77Teletransportando a todos los jugadores... +teleportationCommencing=\u00a77Comenzando teletransporte... +teleportationDisabled=\u00a77Teletransporte desactivado. +teleportationEnabled=\u00a77Teletransporte activado. teleportAtoB=\u00a77{0}\u00a77 te teletransporto a {1}\u00a77. teleportDisabled={0} tiene desactivado los teletransportes. teleportHereRequest=\u00a7c{0}\u00a7c ha pedido que te teletransportes con el. +teleporting=\u00a77Teletransportando... +teleportingPortal=\u00a77Teletransportando via portal. teleportNewPlayerError=Error al teletransportar al nuevo jugador teleportRequest=\u00a7c{0}\u00a7c te ha pedido teletransportarse contigo. teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds. teleportTop=\u00a77Teletransportandote a la cima. -teleportationCommencing=\u00a77Comenzando teletransporte... -teleportationDisabled=\u00a77Teletransporte desactivado. -teleportationEnabled=\u00a77Teletransporte activado. -teleporting=\u00a77Teletransportando... -teleportingPortal=\u00a77Teletransportando via portal. -tempBanned=Baneado temporalmente del servidor por {0} tempbanExempt=\u00a77No puedes banear temporalmente a ese jugador +tempBanned=Baneado temporalmente del servidor por {0} thunder= Tu has {0} los truenos en tu mundo. thunderDuration=Tu has {0} los truenos en tu mundo durante {1} seconds. timeBeforeHeal=Tiempo antes de la siguiente curacion: {0} @@ -364,25 +365,25 @@ unlimitedItemPermission=\u00a7cNo tienes permiso para objetos ilimitados {0}. unlimitedItems=Objetos ilimitados. unmutedPlayer=Jugador {0} desmuteado. upgradingFilesError=Error mientras se actualizaban los archivos +userdataMoveBackError=Error al mover userdata/{0}.tmp a userdata/{1} +userdataMoveError=Error al mover userdata/{0} a userdata/{1}.tmp userDoesNotExist=El usuario {0} no existe userIsAway={0} esta ahora ausente! userIsNotAway={0} ya no esta ausente! userJailed=\u00a77Has sido encarcelado! userUsedPortal={0} uso un portal de salida existente. -userdataMoveBackError=Error al mover userdata/{0}.tmp a userdata/{1} -userdataMoveError=Error al mover userdata/{0} a userdata/{1}.tmp usingTempFolderForTesting=Usando carpeta temporal para pruebas: versionMismatch=La version no coincide! Por favor actualiza {0} a la misma version. versionMismatchAll=La version no coincide! Por favor actualiza todos los jars de Essentials a la misma version. voiceSilenced=\u00a77Tu voz ha sido silenciada warpDeleteError=Problema al borrar el archivo de teletransporte. +warpingTo=\u00a77Teletransportandote a {0}. warpListPermission=\u00a7cNo tienes permiso para listar esos teletransportes. warpNotExist=Ese teletransporte no existe. -warpSet=\u00a77Teletransporte {0} establecido. -warpUsePermission=\u00a7cNo tienes permisos para usar ese teletransporte. -warpingTo=\u00a77Teletransportandote a {0}. warps=Warps: {0} warpsCount=\u00a77Hay {0} teletransportes. Mostrando pagina {1} de {2}. +warpSet=\u00a77Teletransporte {0} establecido. +warpUsePermission=\u00a7cNo tienes permisos para usar ese teletransporte. weatherStorm=\u00a77Has establecido el tiempo a tormenta en este mundo. weatherStormFor=\u00a77Has establecido el tiempo a tormenta en este {1} durante {0} segundos. weatherSun=\u00a77Has establecido el tiempo a sol en este mundo. diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties index 1649a552a..a74be475b 100644 --- a/Essentials/src/messages_fr.properties +++ b/Essentials/src/messages_fr.properties @@ -4,18 +4,18 @@ # by: L\u00e9a Gris action=* {0} {1} addedToAccount=\u00a7a{0} a \u00e9t\u00e9 rajout\u00e9 \u00e0 votre compte. -addedToOthersAccount=\u00a7a{0} a \u00e9t\u00e9 ajout\u00e9 \u00e0 {1} compte. +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} alertBroke=a cass\u00e9 : alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} \u00e0:{3} alertPlaced=a plac\u00e9 : alertUsed=a utilis\u00e9 : autoAfkKickReason=Vous avez \u00e9t\u00e9 \u00e9ject\u00e9 pour inactivit\u00e9e sup\u00e9rieure \u00e0 {0} minutes. backAfterDeath=\u00a77Utilisez la commande /back pour retourner \u00e0 l''endroit ou vous \u00eates mort. -backUsageMsg=\u00a77Retour \u00e0 votre emplacement pr\u00e9c\u00c3\u00a8dent. backupFinished=Sauvegarde termin\u00e9 backupStarted=D\u00e9but de la sauvegarde... +backUsageMsg=\u00a77Retour \u00e0 votre emplacement pr\u00e9c\u00c3\u00a8dent. balance=\u00a77Solde : {0} -balanceTop=\u00a77 Meilleurs soldes au ({0}) +balanceTop=\u00a77Meilleurs soldes au ({0}) banExempt=\u00a77Vous ne pouvez pas bannir ce joueur. banIpAddress=\u00a77Adresse IP bannie. bannedIpsFileError=Erreur de lecture de banned-ips.txt @@ -64,14 +64,14 @@ depth=\u00a77Vous \u00eates au niveau de la mer. depthAboveSea=\u00a77Vous \u00eates \u00e0 {0} bloc(s) au-dessus du niveau de la mer. depthBelowSea=\u00a77Vous \u00eates \u00e0 {0} bloc(s) en-dessous du niveau de la mer. destinationNotSet=Destination non d\u00e9finie -disableUnlimited=\u00a77D\u00e9sactivation du placement illimit\u00e9 de {0} pour {1}. disabled=d\u00e9sactiv\u00e9 disabledToSpawnMob=Spawning this mob was disabled in the config file. +disableUnlimited=\u00a77D\u00e9sactivation du placement illimit\u00e9 de {0} pour {1}. dontMoveMessage=\u00a77La t\u00e9l\u00e9portation commence dans {0}. Ne bougez pas. downloadingGeoIp=T\u00e9l\u00e9chargement de la base de donn\u00e9es GeoIP ... Cela peut prendre un moment (Pays : 0.6 Mo, villes : 20Mo) duplicatedUserdata=Donn\u00e9e utilisateur dupliqu\u00e9e : {0} et {1} -enableUnlimited=\u00a77Quantit\u00e9 illimit\u00e9e de {0} \u00e0 {1}. enabled=activ\u00e9 +enableUnlimited=\u00a77Quantit\u00e9 illimit\u00e9e de {0} \u00e0 {1}. enchantmentApplied = \u00a77L''enchantement {0} a \u00e9t\u00e9 appliqu\u00e9 \u00e0 l''objet dans votre main. enchantmentNotFound = \u00a7cEnchantement non-trouv\u00e9 enchantmentPerm = \u00a7cVous n''avez pas les droits pour {0}. @@ -99,9 +99,9 @@ gcentities=entit\u00e9s gcfree=M\u00e9moire libre : {0} Mo gcmax=M\u00e9moire maximale : {0} Mo gctotal=M\u00e9moire utilis\u00e9e : {0} Mo +geoipJoinFormat=Joueur {0} vient de {1} geoIpUrlEmpty=L''URL de t\u00e9l\u00e9chargement de GeoIP est vide. geoIpUrlInvalid=L''URL de t\u00e9l\u00e9chargement de GeoIP est invalide. -geoipJoinFormat=Joueur {0} vient de {1} godDisabledFor=d\u00e9sactiv\u00e9 pour {0} godEnabledFor=activ\u00e9 pour {0} godMode=\u00a77Mode Dieu {0}. @@ -112,9 +112,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=R\u00e9sidences : {0} homeSet=\u00a77R\u00e9sidence d\u00e9finie. homeSetToBed=\u00a77Votre r\u00e9sidence est d\u00e9sormais li\u00e9e \u00e0 ce lit. -homes=R\u00e9sidences : {0} hour=heure hours=heures ignorePlayer=Vous ignorez d\u00e9sormais {0}. @@ -124,28 +124,28 @@ infoChapterPages=Chapitre {0}, page \u00a7c{1}\u00a7f sur \u00a7c{2}\u00a7f: infoFileDoesNotExist=Le fichier info.txt n'existe pas. Le fichier est en cours de cr\u00e9ation pour vous. infoPages=Page \u00a7c{0}\u00a7f de \u00a7c{1}\u00a7f. infoUnknownChapter=Chapitre inconnu. -invBigger=Les inventaires des autres joueurs sont plus gros que le v\u00f4tre. -invRestored=Votre inventaire vous a \u00e9t\u00e9 rendu. -invSee=Vous voyez l''inventaire de {0}. -invSeeHelp=Utilisez /invsee pour revenir \u00e0 votre inventaire. invalidCharge=\u00a7cCharge invalide. invalidMob=Mauvias type de cr\u00e9ature. invalidServer=Serveur non valide. invalidSignLine=La ligne {0} du panneau est invalide. invalidWorld=\u00a7cMonde invalide. +invBigger=Les inventaires des autres joueurs sont plus gros que le v\u00f4tre. inventoryCleared=\u00a77Inventaire nettoy\u00e9. inventoryClearedOthers=\u00a77L''inventaire de \u00a7c{0}\u00a77 a \u00e9t\u00e9 nettoy\u00e9. +invRestored=Votre inventaire vous a \u00e9t\u00e9 rendu. +invSee=Vous voyez l''inventaire de {0}. +invSeeHelp=Utilisez /invsee pour revenir \u00e0 votre inventaire. is=est itemCannotBeSold=Cet objet ne peut \u00eatre vendu au serveur. itemMustBeStacked=Cet objet doit \u00eatre vendu par 64. Une quantit\u00e9 de 2 serait deux fois 64. itemNotEnough1=\u00a7cVous n'avez pas assez de cet objet pour le vendre. itemNotEnough2=\u00a77Si vous voulez vendre l'int\u00e9gralit\u00e9 de vos objets de ce type l\u00e0, utilisez /sell nomObjet itemNotEnough3=\u00a77/sell nomObjet -1 vendra tout sauf un objet, etc. +itemsCsvNotLoaded=N'a pas pu charger items.csv. itemSellAir=Vouliez-vous vraiment vendre de l'air ? Mettez un objet dans votre main. itemSold=\u00a77Vendu pour \u00a7c{0} \u00a77({1} {2} \u00e0 {3} chacun) itemSoldConsole={0} vendu {1} pour \u00a77{2} \u00a77({3} objet(s) \u00e0 {4} chacun) itemSpawn=\u00a77Donne {0} de {1} -itemsCsvNotLoaded=N'a pas pu charger items.csv. jailAlreadyIncarcerated=\u00a7cJoueur d\u00e9j\u00e0 emprisonn\u00e9 : {0} jailMessage=\u00a7cVous avez commis un crime, vous en payez le prix. jailNotExist=Cette prison n'existe pas. @@ -162,8 +162,8 @@ kitError=\u00a7cIl n'y a pas de kits valides. kitErrorHelp=\u00a7cPeut-\u00eatre qu'un objet manque d'une quantit\u00e9 dans la configuration ? kitGive=\u00a77Donner le kit {0}. kitInvFull=\u00a7cVotre inventaire \u00e9tait plein, le kit est parre-terre. -kitTimed=\u00a7cVous ne pouvez pas utiliser ce kit pendant encore {0}. kits=\u00a77Kits :{0} +kitTimed=\u00a7cVous ne pouvez pas utiliser ce kit pendant encore {0}. lightningSmited=\u00a77Vous venez d'\u00eatre foudroy\u00e9. lightningUse=\u00a77{0} a \u00e9t\u00e9 foudroy\u00e9. listAfkTag = \u00a77[AFK]\u00a7f @@ -175,9 +175,9 @@ localFormat=Locale : <{0}> {1} mailClear=\u00a7cPour marquer votre courrier en tant que lu, entrez /mail clear mailCleared=\u00a77Courrier supprim\u00e9 ! mailSent=\u00a77Courrier envoy\u00e9 ! -markMailAsRead=\u00a7cPour marquer votre courrier en tant que lu, entrez /mail clear markedAsAway=\u00a77Vous \u00eates d\u00e9sormais AFK. markedAsNotAway=\u00a77Vous n'\u00eates d\u00e9sormais plus AFK. +markMailAsRead=\u00a7cPour marquer votre courrier en tant que lu, entrez /mail clear maxHomes=Vous ne pouvez pas cr\u00e9er plus de {0} r\u00e9sidences. mayNotJail=\u00a7cVous ne pouvez pas emprisonner cette personne. me=moi @@ -185,10 +185,10 @@ minute=minute minutes=minutes missingItems=Vous n''avez pas {0} x {1}. missingPrefixSuffix=Pr\u00e9fixe ou Suffixe manquant pour {0} +mobsAvailable=\u00a77cr\u00e9atures : {0} mobSpawnError=Erreur lors du changement du g\u00e9n\u00e9rateur de cr\u00e9atures. mobSpawnLimit=Quantit\u00e9 de cr\u00e9atures limit\u00e9 \u00e0 au maximum du serveur. mobSpawnTarget=Le bloc cible doit \u00eatre un g\u00e9n\u00e9rateur de cr\u00e9atures. -mobsAvailable=\u00a77cr\u00e9atures : {0} moneyRecievedFrom=\u00a7a{0} a \u00e9t\u00e9 re\u00e7u de {1} moneySentTo=\u00a7a{0} a \u00e9t\u00e9 envoy\u00e9 \u00e0 {1} moneyTaken={0} pr\u00e9lev\u00e9(s) de votre compte. @@ -196,10 +196,10 @@ month=mois months=mois moreThanZero=Les quantit\u00e9s doivent \u00eatre sup\u00e9rieures \u00e0 z\u00e9ro. msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} -muteExempt=\u00a7cVous ne pouvez pas r\u00e9duire ce joueur au silence. mutedPlayer=Le joueur {0} est d\u00e9sormais muet. mutedPlayerFor={0} a \u00e9t\u00e9 muet pour {1}. mutedUserSpeaks={0} a essay\u00e9 de parler mais est muet. +muteExempt=\u00a7cVous ne pouvez pas r\u00e9duire ce joueur au silence. nearbyPlayers=Joueurs dans les environs : {0} needTpohere=Vous avez besoin de l'acc\u00c3\u00a8s \u00e0 /tpohere pour t\u00e9l\u00e9porter d'autres joueurs. negativeBalanceError=L'utilisateur n'est pas autoris\u00e9 \u00e0 avoir un solde n\u00e9gatif. @@ -221,6 +221,7 @@ noKitPermission=\u00a7cVous avez besoin de la permission \u00a7c{0}\u00a7c pour noKits=\u00a77Il n'y a pas encore de kits disponibles. noMail=Vous n'avez pas de courrier noMotd=\u00a7cIl n'y a pas de message su jour. +none=aucun noNewMail=\u00a77Vous n'avez pas de courrier. noPendingRequest=Vous n'avez pas de requ\u00eate non lue. noPerm=\u00a7cVous n''avez pas la permission \u00a7f{0}\u00a7c. @@ -228,30 +229,21 @@ noPermToSpawnMob=\u00a7cVous n'avez pas la permission d'invoquer cette cr\u00e9a noPlacePermission=\u00a7cVous n'avez pas la permission de placer un bloc pr\u00c3\u00a8 de cette pancarte. noPowerTools=Vous n'avez pas d'outil macro associ\u00e9. noRules=\u00a7cIl n'y a pas encore de r\u00e8gles d\u00e9finies. -noWarpsDefined=Aucun point de t\u00e9l\u00e9portation d\u00e9fini. -none=aucun notAllowedToQuestion=\u00a7cVous n'\u00eates pas autoris\u00e9 \u00e0 poser des questions. notAllowedToShout=\u00a7cVous n'\u00eates pas autoris\u00e9 \u00e0 crier. notEnoughExperience=Vous n'avez pas assez d'exp\u00e9rience. notEnoughMoney=Vous n'avez pas les fonds n\u00e9cessaires. +nothingInHand = \u00a7cVous n'avez rien en main. notRecommendedBukkit=* ! * La version de Bukkit n'est pas celle qui est recommand\u00e9 pour cette version de Essentials. notSupportedYet=Pas encore pris en charge. -nothingInHand = \u00a7cVous n'avez rien en main. now=maintenant +noWarpsDefined=Aucun point de t\u00e9l\u00e9portation d\u00e9fini. nuke=Que la mort s'abatte sur eux ! numberRequired=Il faut fournir un nombre ici. onlyDayNight=/time ne supporte que (jour) day/night (nuit). onlyPlayers=Seulement les joueurs en jeu peuvent utiliser {0}. onlySunStorm=/weather ne supporte que (soleil) sun/storm (temp\u00eate). orderBalances=Classement des balance de {0} utilisateurs, patientez ... -pTimeCurrent=Pour \u00a7e{0}\u00a7f l''heure est {1}. -pTimeCurrentFixed=L''heure de \u00a7e{0}\u00a7f est fix\u00e9e \u00e0 {1}. -pTimeNormal=\u00a7fPour \u00a7e{0}\u00a7f l'heure est normale et correspond au server. -pTimeOthersPermission=\u00a7cVous n'etes pas autoris\u00e9 \u00e0 changer l'heure des autres joueurs. -pTimePlayers=Ces joueurs ont leur propre horraire : -pTimeReset=l''heure a \u00e9t\u00e9 r\u00e9initialis\u00e9e \u00e0 : \u00a7e{0} -pTimeSet=l''heure du joueur a \u00e9t\u00e9 r\u00e9egl\u00e9ee \u00e0 \u00a73{0}\u00a7f pour : \u00a7e{1} -pTimeSetFixed=l''heure du joueur a \u00e9t\u00e9 fix\u00e9e \u00e0 : \u00a7e{1} parseError=Erreur de conversion {0} \u00e0 la ligne {1} pendingTeleportCancelled=\u00a7cRequete de t\u00e9l\u00e9portation annul\u00e9e. permissionsError=Permissions/GroupManager manquant, les pr\u00e9fixes et suffixes ne seront pas affich\u00e9s. @@ -279,6 +271,14 @@ powerToolRemoveAll=Toutes les commandes retir\u00e9es de {0}. powerToolsDisabled=Toutes vos commandes assign\u00e9es ont \u00e9t\u00e9 retir\u00e9es. powerToolsEnabled=Toutes vos commandes assign\u00e9es ont \u00e9t\u00e9 activ\u00e9es. protectionOwner=\u00a76[EssentialsProtect] Propri\u00e9taire de la protection : {0} +pTimeCurrent=Pour \u00a7e{0}\u00a7f l''heure est {1}. +pTimeCurrentFixed=L''heure de \u00a7e{0}\u00a7f est fix\u00e9e \u00e0 {1}. +pTimeNormal=\u00a7fPour \u00a7e{0}\u00a7f l'heure est normale et correspond au server. +pTimeOthersPermission=\u00a7cVous n'etes pas autoris\u00e9 \u00e0 changer l'heure des autres joueurs. +pTimePlayers=Ces joueurs ont leur propre horraire : +pTimeReset=l''heure a \u00e9t\u00e9 r\u00e9initialis\u00e9e \u00e0 : \u00a7e{0} +pTimeSet=l''heure du joueur a \u00e9t\u00e9 r\u00e9egl\u00e9ee \u00e0 \u00a73{0}\u00a7f pour : \u00a7e{1} +pTimeSetFixed=l''heure du joueur a \u00e9t\u00e9 fix\u00e9e \u00e0 : \u00a7e{1} questionFormat=\u00a77[Question]\u00a7f {0} readNextPage=Utilisez /{0} {1} pour lire la page suivante. reloadAllPlugins=\u00a77Toutes les extensions ont \u00e9t\u00e9 recharg\u00e9es. @@ -301,6 +301,7 @@ seconds=secondes seenOffline=Le joueur {0} est hors ligne depuis {1} seenOnline=Le joueur {0} est en ligne depuis {1} serverFull=Le serveur est plein. +serverTotal=Server Total: {0} setSpawner=Type de g\u00e9n\u00e9rateur chang\u00e9 en {0} sheepMalformedColor=Couleur mal form\u00e9e. shoutFormat=\u00a77[Crie]\u00a7f {0} @@ -311,29 +312,29 @@ signProtectInvalidLocation=\u00a74Vous n'avez pas l'autorisation de cr\u00e9er u similarWarpExist=Un point de t\u00e9l\u00e9portation avec un nom similaire existe d\u00e9j\u00e0. slimeMalformedSize=Taille mal form\u00e9e. soloMob=Ce cr\u00e9ature aime \u00eatre seul. -spawnSet=\u00a77Le point de d\u00e9part a \u00e9t\u00e9 d\u00e9fini pour le groupe {0}. spawned=invoqu\u00e9(s) +spawnSet=\u00a77Le point de d\u00e9part a \u00e9t\u00e9 d\u00e9fini pour le groupe {0}. suicideMessage=\u00a77Au revoir monde cruel... suicideSuccess=\u00a77{0} s''est suicid\u00e9. survival=survie takenFromAccount=\u00a7c{0} ont \u00e9t\u00e9 retir\u00e9 de votre compte. -takenFromOthersAccount=\u00a7c{0} a \u00e9t\u00e9 r\u00e9tir\u00e9 du compte de {1}. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Demande de t\u00e9l\u00e9portation envoy\u00e9e \u00e0 tous les joueurs... teleportAll=\u00a77T\u00e9l\u00e9poration de tous les joueurs. +teleportationCommencing=\u00a77D\u00e9but de la t\u00e9l\u00e9portation... +teleportationDisabled=\u00a77T\u00e9l\u00e9poration d\u00e9sactiv\u00e9. +teleportationEnabled=\u00a77T\u00e9l\u00e9portation activ\u00e9e. teleportAtoB=\u00a77{0}\u00a77 vous a t\u00e9l\u00e9port\u00e9 \u00e0 {1}\u00a77. teleportDisabled={0} a la t\u00e9l\u00e9portation d\u00e9sactiv\u00e9. teleportHereRequest=\u00a7c{0}\u00a7c Vous a demand\u00e9 de vous t\u00e9l\u00e9porter \u00e0 lui/elle. +teleporting=\u00a77T\u00e9l\u00e9poration en cours... +teleportingPortal=\u00a77T\u00e9l\u00e9portation via portail. teleportNewPlayerError=\u00c9chec de la t\u00e9l\u00e9portation du nouveau joueur. teleportRequest=\u00a7c{0}\u00a7c vous demande s''il peut se t\u00e9l\u00e9porter vers vous. teleportRequestTimeoutInfo=\u00a77Cette demande de t\u00e9l\u00e9portation expirera dans {0} secondes. teleportTop=\u00a77T\u00e9l\u00e9portation vers le haut. -teleportationCommencing=\u00a77D\u00e9but de la t\u00e9l\u00e9portation... -teleportationDisabled=\u00a77T\u00e9l\u00e9poration d\u00e9sactiv\u00e9. -teleportationEnabled=\u00a77T\u00e9l\u00e9portation activ\u00e9e. -teleporting=\u00a77T\u00e9l\u00e9poration en cours... -teleportingPortal=\u00a77T\u00e9l\u00e9portation via portail. -tempBanned=Banni temporairement du serveur pour {0} tempbanExempt=\u00a77Vous ne pouvez pas bannir temporairement ce joueur. +tempBanned=Banni temporairement du serveur pour {0} thunder=Vous avez {0} la foudre dans votre monde. thunderDuration=Vous avez {0} la foudre dans le serveur pendant {1} secondes. timeBeforeHeal=Temps avant le prochain soin : {0} @@ -364,25 +365,25 @@ unlimitedItemPermission=\u00a7cPas de permission pour l''objet illimit\u00e9 {0} unlimitedItems=Objets illimit\u00e9s: unmutedPlayer=Le joueur {0} n''est plus muet. upgradingFilesError=Erreur durant la mise \u00e0 jour des fichiers. +userdataMoveBackError=Echec du d\u00e9placement de userdata/{0}.tmp vers userdata/{1} +userdataMoveError=Echec du d\u00e9placement de userdata/{0} vers userdata/{1}.tmp userDoesNotExist=L''utilisateur {0} n''existe pas. userIsAway={0} s'est mis en AFK userIsNotAway={0} n'est plus AFK userJailed=\u00a77Vous avez \u00e9t\u00e9 emprisonn\u00e9. userUsedPortal={0} a utilis\u00e9 un portail existant. -userdataMoveBackError=Echec du d\u00e9placement de userdata/{0}.tmp vers userdata/{1} -userdataMoveError=Echec du d\u00e9placement de userdata/{0} vers userdata/{1}.tmp usingTempFolderForTesting=Utilise un fichier temporaire pour un test. versionMismatch=Versions diff\u00e9rentes ! Mettez s''il vous plait {0} \u00e0 la m\u00eame version. versionMismatchAll=Mauvaise version ! S'il vous plait mettez des jars Essentials de version identique. voiceSilenced=\u00a77Vous avez \u00e9t\u00e9 r\u00e9duit au silence. warpDeleteError=Probl\u00c3\u00a8me concernant la suppression du fichier warp. +warpingTo=\u00a77T\u00e9l\u00e9portation vers {0}. warpListPermission=\u00a7cVous n'avez pas la permission d'afficher la liste des points de t\u00e9l\u00e9portation. warpNotExist=Ce point de t\u00e9l\u00e9portation n'existe pas. -warpSet=\u00a77Le point de t\u00e9l\u00e9portation {0} a \u00e9t\u00e9 cr\u00e9\u00e9. -warpUsePermission=\u00a7cVous n'avez pas la permission d'utiliser ce point de t\u00e9l\u00e9portation. -warpingTo=\u00a77T\u00e9l\u00e9portation vers {0}. warps=point de t\u00e9l\u00e9portations : {0} warpsCount=\u00a77Il y a {0} points de t\u00e9l\u00e9portations. Page {1} sur {2}. +warpSet=\u00a77Le point de t\u00e9l\u00e9portation {0} a \u00e9t\u00e9 cr\u00e9\u00e9. +warpUsePermission=\u00a7cVous n'avez pas la permission d'utiliser ce point de t\u00e9l\u00e9portation. weatherStorm=\u00a77Vous avez programm\u00e9 l''orage dans {0} weatherStormFor=\u00a77Vous avez programm\u00e9 l''orage dans {0} pour {1} secondes. weatherSun=\u00a77Vous avez programm\u00e9 le beau temps dans {0} diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties index 16d942b0d..51bbe2bed 100644 --- a/Essentials/src/messages_nl.properties +++ b/Essentials/src/messages_nl.properties @@ -4,16 +4,16 @@ # by: Geertje123 action=* {0} {1} addedToAccount=\u00a7a{0} is gestort op je account. -addedToOthersAccount=\u00a7a{0} is overgemaakt naar {1}''s rekening +addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2} 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 +backUsageMsg=\u00a77Naar de vorige locatie aan het gaan. balance=\u00a77Saldo: {0} balanceTop=\u00a77 Top saldi ({0}) banExempt=\u00a77Je kunt deze speler niet verbannen. @@ -64,14 +64,14 @@ depth=\u00a77Je zit op zeeniveau. depthAboveSea=\u00a77Je zit {0} blok(ken) boven zeeniveau. depthBelowSea=\u00a77Je zit {0} blok(ken) onder zeeniveau. destinationNotSet=Bestemming niet ingesteld -disableUnlimited=\u00a77Oneindig plaatsen van {0} uitgeschakeld voor {1}. disabled=uitgeschakeld disabledToSpawnMob=Spawning this mob was disabled in the config file. +disableUnlimited=\u00a77Oneindig plaatsen van {0} uitgeschakeld voor {1}. dontMoveMessage=\u00a77Beginnen met teleporteren in {0}. Niet bewegen. downloadingGeoIp=Bezig met downloaden van GeoIP database ... Dit kan een tijdje duren (country: 0.6 MB, city: 20MB) duplicatedUserdata=Dubbele userdata: {0} en {1}. -enableUnlimited=\u00a77Oneindig aantal {0} aan {1} gegeven. enabled=ingeschakeld +enableUnlimited=\u00a77Oneindig aantal {0} aan {1} gegeven. enchantmentApplied = \u00a77The enchantment {0} has been applied to your item in hand. enchantmentNotFound = \u00a7cEnchantment not found enchantmentPerm = \u00a7cYou do not have the permission for {0} @@ -99,9 +99,9 @@ gcentities= entities gcfree=Vrij geheugen: {0} MB gcmax=Maximaal geheugen: {0} MB gctotal=Gealloceerd geheugen: {0} MB +geoipJoinFormat=Speler {0} komt uit {1} geoIpUrlEmpty=GeoIP download url is leeg. geoIpUrlInvalid=GeoIP download url is ongeldig. -geoipJoinFormat=Speler {0} komt uit {1} godDisabledFor=uitgeschakeld voor {0} godEnabledFor=ingeschakeld voor {0} godMode=\u00a77God mode {0}. @@ -112,9 +112,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. @@ -124,28 +124,28 @@ infoChapterPages=Hoofdstuk {0}, Pagina \u00a7c{1}\u00a7f van de \u00a7c{2}\u00a7 infoFileDoesNotExist=Bestand info.txt bestaat niet. Bezig met aanmaken. infoPages=Pagina \u00a7c{0}\u00a7f van de \u00a7c{1}\u00a7f: infoUnknownChapter=Onbekend hoofdstuk. -invBigger=De inventory van de andere speler is groter dan die van jou. -invRestored=Je inventory is hersteld. -invSee=Je kijkt naar de inventory van {0}. -invSeeHelp=Type /invsee om je inventory te herstellen. invalidCharge=\u00a7cOngeldig te laden. invalidMob=Ongeldig mob type. invalidServer=Ongeldige server! invalidSignLine=Regel {0} op het bordje is ongeldig. invalidWorld=\u00a7cOngeldige wereld. +invBigger=De inventory van de andere speler is groter dan die van jou. inventoryCleared=\u00a77inventory leeggemaakt. inventoryClearedOthers=\u00a77inventory van \u00a7c{0}\u00a77 leeggemaakt. +invRestored=Je inventory is hersteld. +invSee=Je kijkt naar de inventory van {0}. +invSeeHelp=Type /invsee om je inventory te herstellen. is=is itemCannotBeSold=Dat voorwerp kan niet aan de server worden verkocht. itemMustBeStacked=Voorwerp moet geruild worden als stapel. Een hoeveelheid van 2 moet dus geruild worden als twee stapels, etc. itemNotEnough1=\u00a7cJe hebt niet genoeg van dat voorwerp om te verkopen. itemNotEnough2=\u00a77Type /sell itemname Als je alles daarvan wilt verkopen itemNotEnough3=\u00a77/sell itemname -1 zorgt ervoor dat ze allemaal behalve 1 worden verkocht, etc. +itemsCsvNotLoaded=De item kunnen niet geladen worden.csv. itemSellAir=Je wilde serieus lucht verkopen? Plaats een voorwerp in je hand. itemSold=\u00a77Verkocht voor \u00a7c{0} \u00a77({1} {2} voorwerpen voor {3} per stuk) itemSoldConsole={0} verkocht {1} voor \u00a77{2} \u00a77({3} voorwerpen voor {4} per stuk) itemSpawn=\u00a77Geeft {0} {1} -itemsCsvNotLoaded=De item kunnen niet geladen worden.csv. jailAlreadyIncarcerated=\u00a7cPerson is already in jail: {0} jailMessage=\u00a7cYou do the crime, you do the time. jailNotExist=Die gevangenis bestaat niet. @@ -162,8 +162,8 @@ kitError=\u00a7cEr zijn geen geldige kits. kitErrorHelp=\u00a7cMisschien mist er een hoeveelheid van het item in de configuratie? kitGive=\u00a77Kit {0} wordt gegeven. kitInvFull=\u00a7cJe inventory was vol, de kit wordt op de grond geplaatst -kitTimed=\u00a7cJe kan die kit pas weer gebruiken over {0}. kits=\u00a77Kits: {0} +kitTimed=\u00a7cJe kan die kit pas weer gebruiken over {0}. lightningSmited=\u00a77Je bent zojuist verbrand lightningUse=\u00a77Brand {0} listAfkTag = \u00a77[AFK]\u00a7f @@ -175,9 +175,9 @@ localFormat=Local: <{0}> {1} mailClear=\u00a7cType /mail clear, om ej berichten als gelezen te markeren. mailCleared=\u00a77Bericht geklaard! mailSent=\u00a77Bericht verzonden! -markMailAsRead=\u00a7cType /mail clear, om je berichten als gelezen te markeren markedAsAway=\u00a77Je staat nu als afwezig gemeld. markedAsNotAway=\u00a77Je staat niet meer als afwezig gemeld. +markMailAsRead=\u00a7cType /mail clear, om je berichten als gelezen te markeren maxHomes=You cannot set more than {0} homes. mayNotJail=\u00a7cJe mag die speler niet in de gevangenis zetten. me=me @@ -185,10 +185,10 @@ minute=minuut minutes=minuten missingItems=Je hebt geen {0}x {1}. missingPrefixSuffix=Er mist een prefix of suffix voor {0} +mobsAvailable=\u00a77Mobs: {0} mobSpawnError=Fout bij het veranderen van de mob spawner. mobSpawnLimit=Grootte van de mob hang af van het server limiet mobSpawnTarget=Target blok moet een mob spawner zijn. -mobsAvailable=\u00a77Mobs: {0} moneyRecievedFrom=\u00a7a{0} is ontvangen van {1} moneySentTo=\u00a7a{0} is verzonden naar {1} moneyTaken={0} van je bankrekening afgehaald. @@ -196,10 +196,10 @@ month=maand months=maanden moreThanZero=Het aantal moet groter zijn dan 0. msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} -muteExempt=\u00a7cJe kan deze speler niet muten. mutedPlayer=Speler {0} gemute. mutedPlayerFor=Speler {0} is gemute voor {1}. mutedUserSpeaks={0} probeerde te praten, maar is gemute. +muteExempt=\u00a7cJe kan deze speler niet muten. nearbyPlayers=Players nearby: {0} needTpohere=Je moet toegang krijgen tot /tpohere om naar andere spelers te teleporteren. negativeBalanceError=Speler is niet toegestaan om een negatief saldo te hebben. @@ -221,6 +221,7 @@ noKitPermission=\u00a7cJe hebt de \u00a7c{0}\u00a7c toestemming nodig om die kit noKits=\u00a77Er zijn nog geen kits beschikbaar noMail=Je hebt geen berichten noMotd=\u00a7cEr is geen bericht van de dag. +none=geen noNewMail=\u00a77Je hebt geen nieuwe berichten. noPendingRequest=Je hebt geen aanvragen. noPerm=\u00a7cJe hebt de \u00a7f{0}\u00a7c toestemming niet. @@ -228,30 +229,21 @@ noPermToSpawnMob=\u00a7cYou don''t have permission to spawn this mob. noPlacePermission=\u00a7cJe hebt geen toestemming om een blok naast die sign te plaatsen. noPowerTools=You have no power tools assigned. noRules=\u00a7cEr zijn nog geen regels gegeven. -noWarpsDefined=Geen warps gedefinieerd -none=geen notAllowedToQuestion=\u00a7cJe bent niet bevoegd om de vraag functie te gebruiken. notAllowedToShout=\u00a7cJe bent niet bevoegd om de roep functie te gebruiken. notEnoughExperience=You do not have enough experience. notEnoughMoney=Je hebt niet voldoende middelen. +nothingInHand = \u00a7cYou have nothing in your hand. notRecommendedBukkit=* ! * De Bukkit versie is niet de aangeraden build voor Essentials. notSupportedYet=Nog niet ondersteund. -nothingInHand = \u00a7cYou have nothing in your hand. now=nu +noWarpsDefined=Geen warps gedefinieerd nuke=May death rain upon them 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. orderBalances=Ordering balances of {0} users, please wait ... -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. @@ -279,6 +271,14 @@ powerToolRemoveAll=All commands removed from {0}. powerToolsDisabled=All of your power tools have been disabled. powerToolsEnabled=All of your power tools have been enabled. 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} readNextPage=Type /{0} {1} to read the next page reloadAllPlugins=\u00a77Alle plugins zijn herladen. @@ -301,6 +301,7 @@ seconds=seconde seenOffline=Speler {0} is offline vanaf {1} seenOnline=Speler {0} is online vanaf {1} serverFull=Server is vol +serverTotal=Server Total: {0} setSpawner=Changed spawner type to {0} sheepMalformedColor=Misvoormde kleur. shoutFormat=\u00a77[Shout]\u00a7f {0} @@ -311,29 +312,29 @@ signProtectInvalidLocation=\u00a74You are not allowed to create sign here. similarWarpExist=Er bestaat al een warp met dezelfde naam. slimeMalformedSize=Misvoormde grootte. soloMob=Die mob is liever in zijn eentje -spawnSet=\u00a77Spawn locatie voor de groep {0} ingesteld. spawned=gespawned +spawnSet=\u00a77Spawn locatie voor de groep {0} ingesteld. suicideMessage=\u00a77Vaarwel vreedzame wereld... suicideSuccess= \u00a77{0} pleegde zelfmoord survival=survival takenFromAccount=\u00a7c{0} is van je bank rekening afgehaald. -takenFromOthersAccount=\u00a7c{0} is overgenomen uit {1} account. +takenFromOthersAccount=\u00a7c{0} taken from {1}\u00a7c account. New balance: {2} teleportAAll=\u00a77Teleporting request sent to all players... teleportAll=\u00a77Bezig met teleporteren van alle spelers... +teleportationCommencing=\u00a77Aan het beginnen met teleporteren... +teleportationDisabled=\u00a77Teleportatie uitgeschakeld. +teleportationEnabled=\u00a77Teleportatie ingeschakeld. teleportAtoB=\u00a77{0}\u00a77 is naar {1}\u00a77 geteleporteerd. teleportDisabled={0} heeft teleporteren uit gezet. teleportHereRequest=\u00a7c{0}\u00a7c Heeft gevraagd of hij/zij naar jou mag teleporteren. +teleporting=\u00a77Bezig met teleporteren... +teleportingPortal=\u00a77Bezig met teleporteren via de portal. teleportNewPlayerError=Fout bij het teleporteren van nieuwe speler. teleportRequest=\u00a7c{0}\u00a7c vraagt of hij jou kan teleporteren. teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds. teleportTop=\u00a77Bezig met teleporteren naar de top. -teleportationCommencing=\u00a77Aan het beginnen met teleporteren... -teleportationDisabled=\u00a77Teleportatie uitgeschakeld. -teleportationEnabled=\u00a77Teleportatie ingeschakeld. -teleporting=\u00a77Bezig met teleporteren... -teleportingPortal=\u00a77Bezig met teleporteren via de portal. -tempBanned=Tijdelijk geband voor {0} tempbanExempt=\u00a77Je mag deze speler niet een tempban geven +tempBanned=Tijdelijk geband voor {0} thunder= Je {0} onweert de wereld thunderDuration=Je {0} onweert de wereld voor {1} seconde. timeBeforeHeal=Afkoeltijd tot de volgende heal: {0} @@ -364,25 +365,25 @@ unlimitedItemPermission=\u00a7cOnbevoegd om oneindig {0} te hebben. unlimitedItems=Oneindige voorwerpen: unmutedPlayer=Speler {0} mag weer spreken. upgradingFilesError=Fout tijdens het upgraden van de bestanden +userdataMoveBackError=Fout bij het verplaasten van userdata/{0}.tmp naar userdata/{1} +userdataMoveError=Fout bij het verplaasten van userdata/{0} naar userdata/{1}.tmp userDoesNotExist=Speler {0} bestaat niet. userIsAway={0} is nu AFK userIsNotAway={0} is niet meer AFK userJailed=\u00a77Je bent in de gevangenis gezet. userUsedPortal={0} gebruikte een bestaande uitgangs portal. -userdataMoveBackError=Fout bij het verplaasten van userdata/{0}.tmp naar userdata/{1} -userdataMoveError=Fout bij het verplaasten van userdata/{0} naar userdata/{1}.tmp usingTempFolderForTesting=Tijdelijke map om te testen: versionMismatch=Verkeerde versie! Update {0} naar dezelfde versie. versionMismatchAll=Verkeerde versie! Update alle Essentials jars naar dezelfde versie. voiceSilenced=\u00a77Je kan niet meer praten warpDeleteError=Fout bij het verwijderen van het warp bestand. +warpingTo=\u00a77Aan het warpen naar {0}. warpListPermission=\u00a7cJe hebt geen toegang om die warp te maken. warpNotExist=Die warp bestaat niet. -warpSet=\u00a77Warp {0} ingesteld. -warpUsePermission=\u00a7cOnbevoegd om die warp te gebruiken. -warpingTo=\u00a77Aan het warpen naar {0}. warps=Warps: {0} warpsCount=\u00a77There are {0} warps. Showing page {1} of {2}. +warpSet=\u00a77Warp {0} ingesteld. +warpUsePermission=\u00a7cOnbevoegd om die warp te gebruiken. weatherStorm=\u00a77Je hebt het weer naar storm gezet in de {0} weatherStormFor=\u00a77Je hebt het weer in de {0} naar storm gezet voor {1} seconde weatherSun=\u00a77Je hebt het weer naar zon gezet in de {0} diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index b9cbd5227..9165febb2 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -26,7 +26,7 @@ commands: balance: description: States the current balance of a player. usage: /<command> [player] - aliases: [bal,emoney,ebalance,ebal] + aliases: [bal,money,emoney,ebalance,ebal] balancetop: description: Gets the top balance values. usage: /<command> <page> @@ -58,11 +58,11 @@ commands: clearinventory: description: Clear all items in your inventory. usage: /<command> - aliases: [ci,eci,eclearinventory] + aliases: [ci,eci,clearinvent,eclearinvent,eclearinventory] compass: description: Describes your current bearing. usage: /<command> - aliases: [ecompass] + aliases: [ecompass,direction,edirection] delhome: description: Removes a home usage: /<command> [player:]<name> @@ -97,7 +97,7 @@ commands: feed: description: Satisfy the hunger. usage: /<command> [player] - aliases: [efeed] + aliases: [efeed,eat,eeat] itemdb: description: Searches for an item. usage: /<command> <item> @@ -113,7 +113,7 @@ commands: getpos: description: Get your current coordinates or those of a player. usage: /<command> [player] - aliases: [coords,egetpos,whereami,ewhereami] + aliases: [coords,egetpos,position,eposition,whereami,ewhereami] gc: description: Reports garbage collection info; useful to developers. usage: /<command> @@ -141,7 +141,7 @@ commands: home: description: Teleport to your home. usage: /<command> [player:][name] - aliases: [ehome] + aliases: [ehome,homes,ehomes] ignore: description: Ignore other players. usage: /<command> <player> @@ -165,7 +165,7 @@ commands: jump: description: Jumps to the nearest block in the line of sight. usage: /<command> - aliases: [j,ejump] + aliases: [j,ej,jumpto,ejumpto,ejump] kick: description: Kicks a specified player with a reason. usage: /<command> <player> [reason] @@ -177,7 +177,7 @@ commands: kit: description: Obtains the specified kit or views all available kits. usage: /<command> [kit] - aliases: [ekit,kits] + aliases: [ekit,kits,ekits] kill: description: Kills specified player. usage: /<command> <player> @@ -189,7 +189,7 @@ commands: list: description: List all online players. usage: /<command> - aliases: [playerlist,who,online,elist,ewho,eplayerlist,eonline] + aliases: [playerlist,who,online,plist,eplist,elist,ewho,eplayerlist,eonline] lightning: description: The power of Thor. Strike at cursor or player. usage: /<command> [player] [power] @@ -237,7 +237,7 @@ commands: ping: description: Pong! usage: /<command> - aliases: [pong,eping,epong] + aliases: [pong,echo,echo,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> [l:|a:|r:|c:|d:][command] [arguments] @@ -245,7 +245,7 @@ commands: powertooltoggle: description: Enables or disables all current powertools usage: /<command> - aliases: [ptt,epowertooltoggle,eptt] + aliases: [ptt,epowertooltoggle,pttoggle,epttoggle,eptt] ptime: description: Adjust player's client time. Add @ prefix to fix. usage: /<command> [list|reset|day|night|dawn|17:30|4pm|4000ticks] [player|*] @@ -337,11 +337,11 @@ commands: tp: description: Teleport to a player. usage: /<command> <player> [otherplayer] - aliases: [tele,etele,etp,tp2p,etp2p] + aliases: [tele,teleport,eteleport,etele,etp,tp2p,etp2p] tpa: description: Request to teleport to the specified player. usage: /<command> <player> - aliases: [call,etpa,ecall] + aliases: [call,tpask,etpask,etpa,ecall] tpaall: description: Requests all players online to teleport to you. usage: /<command> <player> @@ -389,11 +389,11 @@ commands: unban: description: Unbans the specified player. usage: /<command> <player> - aliases: [pardon,eunban] + aliases: [pardon,eunban,epardon] unbanip: description: Unbans the specified IP address. usage: /<command> <address> - aliases: [eunbanip,pardonip] + aliases: [eunbanip,pardonip,epardonip] unlimited: description: Allows the unlimited placing of items. usage: /<command> <list|item|clear> [player] @@ -401,7 +401,7 @@ commands: warp: description: List all warps or warp to the specified location. usage: /<command> <pagenumber|warp> [player] - aliases: [ewarp,warps] + aliases: [ewarp,warps,ewarps] weather: description: Setting the weather. usage: /<command> <storm/sun> [duration] @@ -417,4 +417,4 @@ commands: worth: description: Calculates the worth of items in hand or as specified. usage: /<command> [item] [amount] - aliases: [eworth] + aliases: [eworth,price,eprice] diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java index 14f81b605..a7335a957 100644 --- a/Essentials/test/com/earth2me/essentials/FakeServer.java +++ b/Essentials/test/com/earth2me/essentials/FakeServer.java @@ -14,6 +14,7 @@ import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.PluginCommand; import org.bukkit.entity.Player; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Recipe; import org.bukkit.map.MapView; import org.bukkit.plugin.Plugin; @@ -250,7 +251,6 @@ public class FakeServer implements Server return worlds; } - @Override public World createWorld(String string, Environment e) { World w = new FakeWorld(string, e); @@ -258,7 +258,6 @@ public class FakeServer implements Server return w; } - @Override public World createWorld(String string, Environment e, long l) { World w = new FakeWorld(string, e); @@ -332,18 +331,6 @@ public class FakeServer implements Server } @Override - public World createWorld(String string, Environment e, ChunkGenerator cg) - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public World createWorld(String string, Environment e, long l, ChunkGenerator cg) - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override public World createWorld(WorldCreator creator) { throw new UnsupportedOperationException("Not supported yet."); @@ -666,4 +653,28 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public List<Recipe> getRecipesFor(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Iterator<Recipe> recipeIterator() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void clearRecipes() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void resetRecipes() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index b79d56d07..1159607ed 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -138,4 +138,11 @@ v 1.9: - Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures.
- Fix world mirroring so it correctly creates data files and data sources for partially mirrored worlds.
- Fixed world mirroring so it returns the correct data for the requested world.
- - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data.
\ No newline at end of file + - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data.
+ - Depreciate PlayerTeleportEvent, PlayerRespawnEvent and PlayerPortalEvent as it's all handled in PlayerChangedWorldEvent.
+ This also means we no longer update permissions before we change worlds.
+ - A command of '/manload' with no world arguments now performs a full reload of GM.
+ - Update for Bukkit R5 compatability.
+ - Removed BukkitPermsOverride as this is now the default with bukkit handling child nodes.
+ - Prevent adding inheritances and info nodes to globalgroups. These are permissions collections, not player groups.
+ - Prevent promoting players to, and demoting to GlobalGroups.
\ No newline at end of file diff --git a/EssentialsGroupManager/src/config.yml b/EssentialsGroupManager/src/config.yml index 13b59d343..cc90bea6f 100644 --- a/EssentialsGroupManager/src/config.yml +++ b/EssentialsGroupManager/src/config.yml @@ -4,10 +4,6 @@ settings: # The user will be able to promote players to the same group or even above. opOverrides: true - # If enabled any bukkit permissiosn which default to true will be left enabled. - # If the player is op any permissions set to Op will follow suit. - bukkit_perms_override: true - # Default setting for 'mantoglevalidate' # true will cause GroupManager to attempt name matching by default. validate_toggle: true diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java index d830696e7..98ff075dd 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java @@ -57,9 +57,6 @@ public class GMConfiguration { public boolean isOpOverride() { return GMconfig.getBoolean("settings.config.opOverrides", true); } - public boolean isBukkitPermsOverride() { - return GMconfig.getBoolean("settings.config.bukkit_perms_override", false); - } public boolean isToggleValidate() { return GMconfig.getBoolean("settings.config.validate_toggle", true); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index b87d1de8c..b0d46ca1a 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -25,7 +25,10 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder; +import org.anjocaido.groupmanager.events.GMSystemEvent; import org.anjocaido.groupmanager.events.GMWorldListener; +import org.anjocaido.groupmanager.events.GroupManagerEventHandler; +import org.anjocaido.groupmanager.events.GMGroupEvent.Action; import org.anjocaido.groupmanager.utils.GMLoggerHandler; import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.anjocaido.groupmanager.utils.Tasks; @@ -395,6 +398,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "Players may not be members of GlobalGroups directly."); + return false; + } // VALIDANDO PERMISSAO if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { @@ -1016,6 +1023,11 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group 2 does not exists!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support inheritance."); + return false; + } + // VALIDANDO PERMISSAO if (permissionHandler.searchGroupInInheritance(auxGroup, auxGroup2.getName(), null)) { sender.sendMessage(ChatColor.RED + "Group " + auxGroup.getName() + " already inherits " + auxGroup2.getName() + " (might not be directly)"); @@ -1049,6 +1061,11 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group 2 does not exists!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support inheritance."); + return false; + } + // VALIDANDO PERMISSAO if (!permissionHandler.searchGroupInInheritance(auxGroup, auxGroup2.getName(), null)) { sender.sendMessage(ChatColor.RED + "Group " + auxGroup.getName() + " does not inherits " + auxGroup2.getName() + "."); @@ -1219,6 +1236,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group does not exists!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); + return false; + } // VALIDANDO PERMISSAO // PARECE OK auxString = ""; @@ -1248,6 +1269,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group does not exists!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); + return false; + } // VALIDANDO PERMISSAO if (!auxGroup.getVariables().hasVar(args[1])) { sender.sendMessage(ChatColor.RED + "The group doesn't have directly that variable!"); @@ -1273,6 +1298,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group does not exists!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); + return false; + } // VALIDANDO PERMISSAO // PARECE OK auxString = ""; @@ -1310,6 +1339,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group does not exists!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); + return false; + } // VALIDANDO PERMISSAO auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, args[1], null); if (auxGroup2 == null) { @@ -1492,7 +1525,9 @@ public class GroupManager extends JavaPlugin { return true; case manload: - // THIS CASE DONT NEED SENDER + /** + * Attempt to reload a specific world + */ if (args.length > 0) { auxString = ""; for (int i = 0; i < args.length; i++) { @@ -1502,51 +1537,34 @@ public class GroupManager extends JavaPlugin { } } - isLoaded = false; // Disable Bukkit Perms update + isLoaded = false; // Disable Bukkit Perms update and event triggers globalGroups.load(); worldsHolder.loadWorld(auxString); - sender.sendMessage("The request to world '" + auxString + "' was sent."); + sender.sendMessage("The request to reload world '" + auxString + "' was attempted."); isLoaded = true; BukkitPermissions.updateAllPlayers(); - return true; - } - // VALIDANDO ESTADO DO SENDER - if (dataHolder == null || permissionHandler == null) { - if (!setDefaultWorldHandler(sender)) - return true; - } - // WORKING - config.load(); - globalGroups.load(); - worldsHolder.mirrorSetUp(); - - isLoaded = false; - - if (args.length > 0) { - auxString = ""; - for (int i = 0; i < args.length; i++) { - auxString += args[i]; - if ((i + 1) < args.length) { - auxString += " "; - } - } - worldsHolder.loadWorld(auxString); - sender.sendMessage("The request to world '" + auxString + "' was sent."); } else { - worldsHolder.reloadAll(); - sender.sendMessage(ChatColor.YELLOW + " All worlds were reloaded."); + + /** + * Reload all settings and data as no world was specified. + */ + onDisable(); + onEnable(); } - - isLoaded = true; - - BukkitPermissions.updateAllPlayers(); + + /** + * Fire an event as none will have been triggered in the reload. + */ + if (GroupManager.isLoaded()) + GroupManagerEventHandler.callEvent(GMSystemEvent.Action.RELOADED); return true; + case listgroups: // VALIDANDO ESTADO DO SENDER if (dataHolder == null || permissionHandler == null) { @@ -1590,6 +1608,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "Players may not be members of GlobalGroups directly."); + return false; + } // VALIDANDO PERMISSAO if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher."); @@ -1646,6 +1668,10 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } + if (auxGroup.isGlobal()) { + sender.sendMessage(ChatColor.RED + "Players may not be members of GlobalGroups directly."); + return false; + } // VALIDANDO PERMISSAO if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher."); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java index 5a39600b6..396240ec6 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java @@ -48,6 +48,15 @@ public class Group extends DataUnit implements Cloneable { public Group(String name) { super(name); } + + /** + * Is this a GlobalGroup + * + * @return + */ + public boolean isGlobal() { + return (getDataSource() == null); + } /** * Clone this group @@ -57,7 +66,7 @@ public class Group extends DataUnit implements Cloneable { public Group clone() { Group clone; - if (getDataSource() == null) { + if (isGlobal()) { clone = new Group(this.getName()); } else { clone = new Group(getDataSource(), this.getName()); @@ -85,7 +94,7 @@ public class Group extends DataUnit implements Cloneable { Group clone = dataSource.createGroup(this.getName()); // Don't add inheritance for GlobalGroups - if (getDataSource() != null) { + if (!isGlobal()) { clone.inherits = new ArrayList<String>(this.getInherits()); } for (String perm : this.getPermissionList()) { @@ -110,26 +119,30 @@ public class Group extends DataUnit implements Cloneable { * @param inherit the inherits to set */ public void addInherits(Group inherit) { - if (!this.getDataSource().groupExists(inherit.getName())) { - getDataSource().addGroup(inherit); - } - if (!inherits.contains(inherit.getName().toLowerCase())) { - inherits.add(inherit.getName().toLowerCase()); - } - flagAsChanged(); - if (GroupManager.isLoaded()) { - GroupManager.BukkitPermissions.updateAllPlayers(); - GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); - } + if (!isGlobal()) { + if (!this.getDataSource().groupExists(inherit.getName())) { + getDataSource().addGroup(inherit); + } + if (!inherits.contains(inherit.getName().toLowerCase())) { + inherits.add(inherit.getName().toLowerCase()); + } + flagAsChanged(); + if (GroupManager.isLoaded()) { + GroupManager.BukkitPermissions.updateAllPlayers(); + GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); + } + } } public boolean removeInherits(String inherit) { - if (this.inherits.contains(inherit.toLowerCase())) { - this.inherits.remove(inherit.toLowerCase()); - flagAsChanged(); - GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); - return true; - } + if (!isGlobal()) { + if (this.inherits.contains(inherit.toLowerCase())) { + this.inherits.remove(inherit.toLowerCase()); + flagAsChanged(); + GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); + return true; + } + } return false; } @@ -145,15 +158,17 @@ public class Group extends DataUnit implements Cloneable { * @param varList */ public void setVariables(Map<String, Object> varList) { - GroupVariables temp = new GroupVariables(this, varList); - variables.clearVars(); - for (String key : temp.getVarKeyList()) { - variables.addVar(key, temp.getVarObject(key)); - } - flagAsChanged(); - if (GroupManager.isLoaded()) { - GroupManager.BukkitPermissions.updateAllPlayers(); - GroupManagerEventHandler.callEvent(this, Action.GROUP_INFO_CHANGED); - } + if (!isGlobal()) { + GroupVariables temp = new GroupVariables(this, varList); + variables.clearVars(); + for (String key : temp.getVarKeyList()) { + variables.addVar(key, temp.getVarObject(key)); + } + flagAsChanged(); + if (GroupManager.isLoaded()) { + GroupManager.BukkitPermissions.updateAllPlayers(); + GroupManagerEventHandler.callEvent(this, Action.GROUP_INFO_CHANGED); + } + } } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 8115b1a75..e766b6c78 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -856,7 +856,7 @@ public class WorldDataHolder { PluginManager pm = server.getPluginManager(); Plugin[] plugins = pm.getPlugins(); for (int i = 0; i < plugins.length; i++) { - plugins[i].getConfiguration().load(); + //plugins[i].getConfiguration().load(); try { plugins[i].getClass().getMethod("setupPermissions").invoke(plugins[i]); } catch (Exception ex) { diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java index fdb740646..fc9b8433b 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java @@ -16,7 +16,6 @@ public class GMGroupEvent extends Event { /**
*
*/
- private static final long serialVersionUID = -5294917600434510451L;
private static final HandlerList handlers = new HandlerList();
@Override
@@ -37,7 +36,7 @@ public class GMGroupEvent extends Event { protected Action action;
public GMGroupEvent(Group group, Action action) {
- super(action.toString());
+ super();
this.group = group;
this.action = action;
@@ -45,7 +44,7 @@ public class GMGroupEvent extends Event { }
public GMGroupEvent(String groupName, Action action) {
- super(action.toString());
+ super();
this.groupName = groupName;
this.action = action;
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java index 1ff605d5c..210960876 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java @@ -15,7 +15,6 @@ public class GMSystemEvent extends Event { /**
*
*/
- private static final long serialVersionUID = -8786811924448821548L;
private static final HandlerList handlers = new HandlerList();
@Override
@@ -32,7 +31,7 @@ public class GMSystemEvent extends Event { protected Action action;
public GMSystemEvent(Action action) {
- super(action.toString());
+ super();
this.action = action;
}
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java index d40a7d63e..206de8c86 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java @@ -16,7 +16,6 @@ public class GMUserEvent extends Event { /**
*
*/
- private static final long serialVersionUID = -5294917600434510451L;
private static final HandlerList handlers = new HandlerList();
@Override
@@ -37,7 +36,7 @@ public class GMUserEvent extends Event { protected Action action;
public GMUserEvent(User user, Action action) {
- super(action.toString());
+ super();
this.user = user;
this.action = action;
@@ -45,7 +44,7 @@ public class GMUserEvent extends Event { }
public GMUserEvent(String userName, Action action) {
- super(action.toString());
+ super();
this.userName = userName;
this.action = action;
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 1409f774d..0b6148900 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -37,10 +37,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
-import org.bukkit.event.player.PlayerPortalEvent;
import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.event.player.PlayerRespawnEvent;
-import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.permissions.Permission;
@@ -346,6 +343,12 @@ public class BukkitPermissions { this.updatePermissions(player, null);
}
+ /**
+ * Player events tracked to cause Superperms updates
+ *
+ * @author ElgarL
+ *
+ */
protected class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
@@ -361,30 +364,11 @@ public class BukkitPermissions { }
@EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // will portal into another world
+ public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // has changed worlds
updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName());
}
@EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world
- if ((event.getTo() != null) && (!event.getFrom().getWorld().equals(event.getTo().getWorld()))) { // only if world actually changed
- updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
- }
- }
-
- @EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerRespawn(PlayerRespawnEvent event) { // can be respawned in another world
- updatePermissions(event.getPlayer(), event.getRespawnLocation().getWorld().getName());
- }
-
- @EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerTeleport(PlayerTeleportEvent event) { // can be teleported into another world
- if ((event.getTo() != null) && (event.getPlayer() != null) && (!event.getFrom().getWorld().equals(event.getTo().getWorld()))) { // only if world actually changed
- updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
- }
- }
-
- @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerQuit(PlayerQuitEvent event) {
if (!GroupManager.isLoaded())
return;
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java deleted file mode 100644 index 7ff17b381..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.block.BlockListener; - -@Deprecated -public class EmergencyBlockListener extends BlockListener -{ - - @Override - public void onBlockBurn(final BlockBurnEvent event) - { - event.setCancelled(true); - } - - @Override - public void onBlockIgnite(final BlockIgniteEvent event) - { - event.setCancelled(true); - } - - @Override - public void onBlockFromTo(final BlockFromToEvent event) - { - event.setCancelled(true); - } - - @Override - public void onBlockBreak(final BlockBreakEvent event) - { - event.setCancelled(true); - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java deleted file mode 100644 index 08b04aae1..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.entity.EntityListener; - -@Deprecated -public class EmergencyEntityListener extends EntityListener -{ - - @Override - public void onEntityExplode(final EntityExplodeEvent event) - { - event.setCancelled(true); - } - - @Override - public void onEntityDamage(final EntityDamageEvent event) - { - event.setCancelled(true); - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java deleted file mode 100644 index 169e9af79..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerListener; - -@Deprecated -public class EmergencyPlayerListener extends PlayerListener -{ - - @Override - public void onPlayerJoin(PlayerJoinEvent event) - { - event.getPlayer().sendMessage("Essentials Protect is in emergency mode. Check your log for errors."); - } - -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java index af80647a6..9c257662d 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java @@ -9,8 +9,6 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; import org.bukkit.entity.Player; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -65,21 +63,8 @@ public class EssentialsProtect extends JavaPlugin implements IProtect private void enableEmergencyMode(final PluginManager pm) { - //final EmergencyListener emListener = new EmergencyListener(); - //pm.registerEvents(emListener, this); - - //TODO: Remove deprecated listners in a few weeks. - - final EmergencyBlockListener emBlockListener = new EmergencyBlockListener(); - final EmergencyEntityListener emEntityListener = new EmergencyEntityListener(); - final EmergencyPlayerListener emPlayerListener = new EmergencyPlayerListener(); - pm.registerEvent(Type.PLAYER_JOIN, emPlayerListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_BURN, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_IGNITE, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_FROMTO, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_BREAK, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.ENTITY_DAMAGE, emEntityListener, Priority.Low, this); - pm.registerEvent(Type.ENTITY_EXPLODE, emEntityListener, Priority.Low, this); + final EmergencyListener emListener = new EmergencyListener(); + pm.registerEvents(emListener, this); for (Player player : getServer().getOnlinePlayers()) { diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java index 40167ec41..57302517f 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java @@ -328,7 +328,7 @@ public class EssentialsProtectEntityListener implements Listener } @EventHandler(priority = EventPriority.HIGHEST) - public void onEndermanPickup(EndermanPickupEvent event) + public void onEntityChangeBlock(EntityChangeBlockEvent event) { if (event.isCancelled()) { diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index b68b4e350..c7a17845a 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -4,6 +4,9 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.OfflinePlayer; import com.earth2me.essentials.User; +import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.textreader.KeywordReplacer; +import com.earth2me.essentials.textreader.SimpleTextPager; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; @@ -32,6 +35,11 @@ public class EssentialsSpawnPlayerListener implements Listener { final User user = ess.getUser(event.getPlayer()); + if (user.isJailed() && user.getJail() != null && !user.getJail().isEmpty()) + { + return; + } + if (ess.getSettings().getRespawnAtHome()) { Location home; @@ -73,7 +81,9 @@ public class EssentialsSpawnPlayerListener implements Listener if (ess.getSettings().getAnnounceNewPlayers()) { - ess.broadcastMessage(user, ess.getSettings().getAnnounceNewPlayerFormat(user)); + final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user, ess); + final SimpleTextPager pager = new SimpleTextPager(output); + ess.broadcastMessage(user, pager.getString(0)); } LOGGER.log(Level.FINE, "New player join"); diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java b/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java index 930a31bda..02b35c3d6 100644 --- a/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java @@ -7,6 +7,6 @@ public class InstallationFinishedEvent extends Event { public InstallationFinishedEvent() { - super(Type.CUSTOM_EVENT); + super(); } } diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java index 85ef50949..a35312129 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java @@ -36,7 +36,7 @@ public class UserManager implements IConf public final String getUserByAddress(final String search) { - final List<String> usernames = users.getKeys(null); + final Set<String> usernames = users.getKeys(false); for (String username : usernames) { final String address = users.getString(username + "." + ADDRESS, null); @@ -73,7 +73,7 @@ public class UserManager implements IConf { users.load(); spyusers.clear(); - final List<String> keys = users.getKeys(null); + final Set<String> keys = users.getKeys(false); for (String key : keys) { if (isSpy(key)) diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java index 72bdb113d..bb44d3127 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java @@ -183,7 +183,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager if (config.getBoolean("log-enabled", false)) { LOGGER.addHandler(this); - logUsers = config.getStringList("log-users", new ArrayList<String>()); + logUsers = config.getStringList("log-users"); final String level = config.getString("log-level", "info"); try { @@ -351,7 +351,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager private void sendCommand(final Chat chat, final String message) { - if (config.getStringList("op-users", new ArrayList<String>()).contains(StringUtils.parseBareAddress(chat.getParticipant()))) + if (config.getStringList("op-users").contains(StringUtils.parseBareAddress(chat.getParticipant()))) { try { diff --git a/lib/bpermissions2.jar b/lib/bpermissions2.jar Binary files differnew file mode 100644 index 000000000..b6d344b82 --- /dev/null +++ b/lib/bpermissions2.jar diff --git a/lib/bukkit.jar b/lib/bukkit.jar Binary files differindex 40205c8b1..aa22b004e 100644 --- a/lib/bukkit.jar +++ b/lib/bukkit.jar diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar Binary files differindex a7dd67ee9..24d7801c3 100644 --- a/lib/craftbukkit.jar +++ b/lib/craftbukkit.jar |