summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/nbproject/project.properties4
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsConf.java84
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java109
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java18
-rw-r--r--Essentials/src/com/earth2me/essentials/ISettings.java30
-rw-r--r--Essentials/src/com/earth2me/essentials/IUser.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Jails.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/Kit.java7
-rw-r--r--Essentials/src/com/earth2me/essentials/OfflinePlayer.java29
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java94
-rw-r--r--Essentials/src/com/earth2me/essentials/Trade.java9
-rw-r--r--Essentials/src/com/earth2me/essentials/User.java27
-rw-r--r--Essentials/src/com/earth2me/essentials/UserData.java46
-rw-r--r--Essentials/src/com/earth2me/essentials/api/Economy.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandback.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandbalancetop.java10
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandeco.java9
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandkit.java8
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsudo.java3
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java24
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java62
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java33
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java8
-rw-r--r--Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java35
-rw-r--r--Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java31
-rw-r--r--Essentials/src/com/earth2me/essentials/user/User.java11
-rw-r--r--Essentials/src/config.yml6
-rw-r--r--Essentials/src/info.txt7
-rw-r--r--Essentials/src/messages.properties79
-rw-r--r--Essentials/src/messages_da.properties81
-rw-r--r--Essentials/src/messages_de.properties7
-rw-r--r--Essentials/src/messages_en.properties81
-rw-r--r--Essentials/src/messages_es.properties79
-rw-r--r--Essentials/src/messages_fr.properties81
-rw-r--r--Essentials/src/messages_nl.properties79
-rw-r--r--Essentials/src/plugin.yml34
-rw-r--r--Essentials/test/com/earth2me/essentials/FakeServer.java39
-rw-r--r--EssentialsGroupManager/src/Changelog.txt9
-rw-r--r--EssentialsGroupManager/src/config.yml4
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java3
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java92
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java73
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java2
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java5
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java3
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java5
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java30
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java36
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java22
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java16
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java19
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java2
-rw-r--r--EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java12
-rw-r--r--EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java2
-rw-r--r--EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java4
-rw-r--r--EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java4
-rw-r--r--lib/bpermissions2.jarbin0 -> 129139 bytes
-rw-r--r--lib/bukkit.jarbin4730197 -> 4620068 bytes
-rw-r--r--lib/craftbukkit.jarbin10709594 -> 10793996 bytes
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&ntilde;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
new file mode 100644
index 000000000..b6d344b82
--- /dev/null
+++ b/lib/bpermissions2.jar
Binary files differ
diff --git a/lib/bukkit.jar b/lib/bukkit.jar
index 40205c8b1..aa22b004e 100644
--- a/lib/bukkit.jar
+++ b/lib/bukkit.jar
Binary files differ
diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar
index a7dd67ee9..24d7801c3 100644
--- a/lib/craftbukkit.jar
+++ b/lib/craftbukkit.jar
Binary files differ