Merge branch 'master' of github.com:essentials/Essentials

This commit is contained in:
okamosy 2011-08-27 16:10:47 +01:00
commit 8249a961f6
19 changed files with 446 additions and 250 deletions

View File

@ -1,6 +1,8 @@
package com.earth2me.essentials;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@ -19,12 +21,12 @@ import org.bukkit.util.config.Configuration;
public class EssentialsConf extends Configuration
{
private static final Logger logger = Logger.getLogger("Minecraft");
private File configFile;
private String templateName = null;
private Class<?> resourceClass = EssentialsConf.class;
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient File configFile;
private transient String templateName = null;
private transient Class<?> resourceClass = EssentialsConf.class;
public EssentialsConf(File configFile)
public EssentialsConf(final File configFile)
{
super(configFile);
this.configFile = configFile;
@ -42,38 +44,84 @@ public class EssentialsConf extends Configuration
{
if (!configFile.getParentFile().mkdirs())
{
logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
if (configFile.exists() && configFile.length() == 0 && !configFile.delete())
{
LOGGER.log(Level.SEVERE, "Could not delete file " + configFile.toString());
}
// This will delete files where the first character is 0. In most cases they are broken.
if (configFile.exists() && configFile.length() != 0)
{
try
{
final InputStream input = new FileInputStream(configFile);
try
{
if (input.read() == 0)
{
input.close();
configFile.delete();
}
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
finally
{
try
{
input.close();
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
}
}
catch (FileNotFoundException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
}
if (!configFile.exists())
{
if (templateName != null)
{
logger.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
LOGGER.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
createFromTemplate();
}
else
{
try
{
logger.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
LOGGER.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
if (!configFile.createNewFile())
{
logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
catch (IOException ex)
{
logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
}
}
}
try {
try
{
super.load();
} catch(RuntimeException e) {
logger.log(Level.INFO, "File: " + configFile.toString());
}
catch (RuntimeException e)
{
LOGGER.log(Level.INFO, "File: " + configFile.toString());
throw e;
}
if (this.root == null)
{
this.root = new HashMap<String, Object>();
@ -89,7 +137,7 @@ public class EssentialsConf extends Configuration
istr = resourceClass.getResourceAsStream(templateName);
if (istr == null)
{
logger.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
LOGGER.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
return;
}
ostr = new FileOutputStream(configFile);
@ -104,7 +152,7 @@ public class EssentialsConf extends Configuration
}
catch (IOException ex)
{
logger.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
LOGGER.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
return;
}
finally
@ -129,12 +177,12 @@ public class EssentialsConf extends Configuration
}
catch (IOException ex)
{
logger.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
LOGGER.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
}
}
}
public void setTemplateName(String templateName)
public void setTemplateName(final String templateName)
{
this.templateName = templateName;
}
@ -144,48 +192,48 @@ public class EssentialsConf extends Configuration
return configFile;
}
public void setTemplateName(String templateName, Class<?> resClass)
public void setTemplateName(final String templateName, final Class<?> resClass)
{
this.templateName = templateName;
this.resourceClass = resClass;
}
public boolean hasProperty(String path)
public boolean hasProperty(final String path)
{
return getProperty(path) != null;
}
public Location getLocation(String path, Server server) throws Exception
public Location getLocation(final String path, final Server server) throws Exception
{
String worldName = getString((path != null ? path + "." : "") + "world");
final String worldName = getString((path == null ? "" : path + ".") + "world");
if (worldName == null || worldName.isEmpty())
{
return null;
}
World world = server.getWorld(worldName);
final World world = server.getWorld(worldName);
if (world == null)
{
throw new Exception(Util.i18n("invalidWorld"));
}
return new Location(world,
getDouble((path != null ? path + "." : "") + "x", 0),
getDouble((path != null ? path + "." : "") + "y", 0),
getDouble((path != null ? path + "." : "") + "z", 0),
(float)getDouble((path != null ? path + "." : "") + "yaw", 0),
(float)getDouble((path != null ? path + "." : "") + "pitch", 0));
getDouble((path == null ? "" : path + ".") + "x", 0),
getDouble((path == null ? "" : path + ".") + "y", 0),
getDouble((path == null ? "" : path + ".") + "z", 0),
(float)getDouble((path == null ? "" : path + ".") + "yaw", 0),
(float)getDouble((path == null ? "" : path + ".") + "pitch", 0));
}
public void setProperty(String path, Location loc)
public void setProperty(final String path, final Location loc)
{
setProperty((path != null ? path + "." : "") + "world", loc.getWorld().getName());
setProperty((path != null ? path + "." : "") + "x", loc.getX());
setProperty((path != null ? path + "." : "") + "y", loc.getY());
setProperty((path != null ? path + "." : "") + "z", loc.getZ());
setProperty((path != null ? path + "." : "") + "yaw", loc.getYaw());
setProperty((path != null ? path + "." : "") + "pitch", loc.getPitch());
setProperty((path == null ? "" : path + ".") + "world", loc.getWorld().getName());
setProperty((path == null ? "" : path + ".") + "x", loc.getX());
setProperty((path == null ? "" : path + ".") + "y", loc.getY());
setProperty((path == null ? "" : path + ".") + "z", loc.getZ());
setProperty((path == null ? "" : path + ".") + "yaw", loc.getYaw());
setProperty((path == null ? "" : path + ".") + "pitch", loc.getPitch());
}
public ItemStack getItemStack(String path)
public ItemStack getItemStack(final String path)
{
return new ItemStack(
Material.valueOf(getString(path + ".type", "AIR")),
@ -194,9 +242,9 @@ public class EssentialsConf extends Configuration
(byte)getInt(path + ".data", 0)*/);
}
public void setProperty(String path, ItemStack stack)
public void setProperty(final String path, final ItemStack stack)
{
Map<String, Object> map = new HashMap<String, Object>();
final Map<String, Object> map = new HashMap<String, Object>();
map.put("type", stack.getType().toString());
map.put("amount", stack.getAmount());
map.put("damage", stack.getDurability());
@ -205,40 +253,30 @@ public class EssentialsConf extends Configuration
setProperty(path, map);
}
public long getLong(String path, long def)
public long getLong(final String path, final long def)
{
Number num;
try
{
num = (Number)getProperty(path);
final Number num = (Number)getProperty(path);
return num == null ? def : num.longValue();
}
catch(ClassCastException ex)
catch (ClassCastException ex)
{
return def;
}
if (num == null)
{
return def;
}
return num.longValue();
}
@Override
public double getDouble(String path, double def)
public double getDouble(final String path, final double def)
{
Number num;
try
{
num = (Number)getProperty(path);
Number num = (Number)getProperty(path);
return num == null ? def : num.doubleValue();
}
catch(ClassCastException ex)
catch (ClassCastException ex)
{
return def;
}
if (num == null)
{
return def;
}
return num.doubleValue();
}
}

View File

@ -73,11 +73,7 @@ public class EssentialsPlayerListener extends PlayerListener
it.remove();
}
}
if (user.isAfk())
{
user.setAfk(false);
ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
}
user.updateActivity();
if (ess.getSettings().changeDisplayName())
{
user.setDisplayName(user.getNick());
@ -93,12 +89,26 @@ public class EssentialsPlayerListener extends PlayerListener
}
final User user = ess.getUser(event.getPlayer());
if (user.isAfk())
if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers())
{
user.setAfk(false);
ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
final Location from = event.getFrom();
final Location to = event.getTo().clone();
to.setX(from.getX());
to.setY(from.getY());
to.setZ(from.getZ());
try
{
event.setTo(Util.getSafeDestination(to));
}
catch (Exception ex)
{
event.setTo(to);
}
return;
}
user.updateActivity();
if (!ess.getSettings().getNetherPortalsEnabled())
{
return;
@ -216,6 +226,7 @@ public class EssentialsPlayerListener extends PlayerListener
user.getInventory().setContents(user.getSavedInventory());
user.setSavedInventory(null);
}
user.updateActivity();
user.dispose();
if (!ess.getSettings().getReclaimSetting())
{
@ -304,7 +315,8 @@ public class EssentialsPlayerListener extends PlayerListener
return;
}
User user = ess.getUser(event.getPlayer());
if (user == null) {
if (user == null)
{
user = new User(event.getPlayer(), ess);
}
user.setNPC(false);
@ -436,7 +448,7 @@ public class EssentialsPlayerListener extends PlayerListener
{
return;
}
// We need to loop through each command and execute
for (String command : commandList)
{
@ -479,10 +491,9 @@ public class EssentialsPlayerListener extends PlayerListener
}
}
}
if (user.isAfk())
if (!cmd.equalsIgnoreCase("afk"))
{
user.setAfk(false);
ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName()));
user.updateActivity();
}
}
}

View File

@ -24,16 +24,17 @@ public class EssentialsTimer implements Runnable
{
final User user = ess.getUser(player);
onlineUsers.add(user);
user.setLastActivity(currentTime);
user.setLastOnlineActivity(currentTime);
user.checkActivity();
}
final Iterator<User> iterator = onlineUsers.iterator();
while (iterator.hasNext())
{
final User user = iterator.next();
if (user.getLastActivity() < currentTime && user.getLastActivity() > user.getLastLogout())
if (user.getLastOnlineActivity() < currentTime && user.getLastOnlineActivity() > user.getLastLogout())
{
user.setLastLogout(user.getLastActivity());
user.setLastLogout(user.getLastOnlineActivity());
iterator.remove();
continue;
}

View File

@ -109,8 +109,6 @@ public interface ISettings extends IConf
boolean permissionBasedItemSpawn();
void reloadConfig();
boolean showNonEssCommandsInHelp();
boolean spawnIfNoHome();
@ -136,4 +134,10 @@ public interface ISettings extends IConf
boolean addPrefixSuffix();
boolean isUpdateEnabled();
long getAutoAfk();
long getAutoAfkKick();
boolean getFreezeAfkPlayers();
}

View File

@ -485,4 +485,22 @@ public class Settings implements ISettings
{
return config.getBoolean("update-check", true);
}
@Override
public long getAutoAfk()
{
return config.getLong("auto-afk", 300);
}
@Override
public long getAutoAfkKick()
{
return config.getLong("auto-afk-kick", -1);
}
@Override
public boolean getFreezeAfkPlayers()
{
return config.getBoolean("freeze-afk-players", false);
}
}

View File

@ -1,11 +1,9 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.IEssentialsCommand;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import com.earth2me.essentials.register.payment.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
@ -14,38 +12,43 @@ import org.bukkit.entity.Player;
public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
private static final Logger logger = Logger.getLogger("Minecraft");
private boolean justPortaled = false;
private CommandSender replyTo = null;
private User teleportRequester;
private boolean teleportRequestHere;
private final Teleport teleport;
private long lastActivity;
private transient User teleportRequester;
private transient boolean teleportRequestHere;
private transient final Teleport teleport;
private transient long lastOnlineActivity = System.currentTimeMillis();;
private transient long lastActivity;
private boolean hidden = false;
private transient boolean godStateBeforeAfk;
User(Player base, IEssentials ess)
User(final Player base, final IEssentials ess)
{
super(base, ess);
teleport = new Teleport(this, ess);
godStateBeforeAfk = isGodModeEnabled();
}
User update(Player base)
User update(final Player base)
{
setBase(base);
return this;
}
public boolean isAuthorized(IEssentialsCommand cmd)
@Override
public boolean isAuthorized(final IEssentialsCommand cmd)
{
return isAuthorized(cmd, "essentials.");
}
public boolean isAuthorized(IEssentialsCommand cmd, String permissionPrefix)
@Override
public boolean isAuthorized(final IEssentialsCommand cmd, final String permissionPrefix)
{
return isAuthorized(permissionPrefix + (cmd.getName().equals("r") ? "msg" : cmd.getName()));
}
public boolean isAuthorized(String node)
@Override
public boolean isAuthorized(final String node)
{
if (isOp())
{
@ -62,11 +65,11 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
public void healCooldown() throws Exception
{
Calendar now = new GregorianCalendar();
final Calendar now = new GregorianCalendar();
if (getLastHealTimestamp() > 0)
{
double cooldown = ess.getSettings().getHealCooldown();
Calendar cooldownTime = new GregorianCalendar();
final double cooldown = ess.getSettings().getHealCooldown();
final Calendar cooldownTime = new GregorianCalendar();
cooldownTime.setTimeInMillis(getLastHealTimestamp());
cooldownTime.add(Calendar.SECOND, (int)cooldown);
cooldownTime.add(Calendar.MILLISECOND, (int)((cooldown * 1000.0) % 1000.0));
@ -78,12 +81,13 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
setLastHealTimestamp(now.getTimeInMillis());
}
public void giveMoney(double value)
@Override
public void giveMoney(final double value)
{
giveMoney(value, null);
}
public void giveMoney(double value, CommandSender initiator)
public void giveMoney(final double value, final CommandSender initiator)
{
if (value == 0)
{
@ -93,35 +97,36 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
sendMessage(Util.format("addedToAccount", Util.formatCurrency(value, ess)));
if (initiator != null)
{
initiator.sendMessage((Util.format("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName())));
initiator.sendMessage(Util.format("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName()));
}
}
public void payUser(User reciever, double value) throws Exception
public void payUser(final User reciever, final double value) throws Exception
{
if (value == 0)
{
return;
}
if (!canAfford(value))
{
throw new Exception(Util.i18n("notEnoughMoney"));
}
else
if (canAfford(value))
{
setMoney(getMoney() - value);
reciever.setMoney(reciever.getMoney() + value);
sendMessage(Util.format("moneySentTo", Util.formatCurrency(value, ess), reciever.getDisplayName()));
reciever.sendMessage(Util.format("moneyRecievedFrom", Util.formatCurrency(value, ess), getDisplayName()));
}
else
{
throw new Exception(Util.i18n("notEnoughMoney"));
}
}
public void takeMoney(double value)
@Override
public void takeMoney(final double value)
{
takeMoney(value, null);
}
public void takeMoney(double value, CommandSender initiator)
public void takeMoney(final double value, final CommandSender initiator)
{
if (value == 0)
{
@ -131,13 +136,13 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
sendMessage(Util.format("takenFromAccount", Util.formatCurrency(value, ess)));
if (initiator != null)
{
initiator.sendMessage((Util.format("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName())));
initiator.sendMessage(Util.format("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName()));
}
}
public boolean canAfford(double cost)
public boolean canAfford(final double cost)
{
double mon = getMoney();
final double mon = getMoney();
return mon >= cost || isAuthorized("essentials.eco.loan");
}
@ -151,34 +156,37 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return justPortaled;
}
public void setJustPortaled(boolean value)
public void setJustPortaled(final boolean value)
{
justPortaled = value;
}
public void setReplyTo(CommandSender user)
@Override
public void setReplyTo(final CommandSender user)
{
replyTo = user;
}
@Override
public CommandSender getReplyTo()
{
return replyTo;
}
public int compareTo(User t)
@Override
public int compareTo(final User other)
{
return ChatColor.stripColor(this.getDisplayName()).compareToIgnoreCase(ChatColor.stripColor(t.getDisplayName()));
return ChatColor.stripColor(this.getDisplayName()).compareToIgnoreCase(ChatColor.stripColor(other.getDisplayName()));
}
@Override
public boolean equals(Object o)
public boolean equals(final Object object)
{
if (!(o instanceof User))
if (!(object instanceof User))
{
return false;
}
return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User)o).getDisplayName()));
return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User)object).getDisplayName()));
}
@ -188,7 +196,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return ChatColor.stripColor(this.getDisplayName()).hashCode();
}
public Boolean canSpawnItem(int itemId)
public Boolean canSpawnItem(final int itemId)
{
return !ess.getSettings().itemSpawnBlacklist().contains(itemId);
}
@ -203,17 +211,18 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
setHome("home", getLocation());
}
public void setHome(String name)
public void setHome(final String name)
{
setHome(name, getLocation());
}
@Override
public void setLastLocation()
{
setLastLocation(getLocation());
}
public void requestTeleport(User player, boolean here)
public void requestTeleport(final User player, final boolean here)
{
teleportRequester = player;
teleportRequestHere = here;
@ -274,14 +283,14 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return teleport;
}
public long getLastActivity()
public long getLastOnlineActivity()
{
return lastActivity;
return lastOnlineActivity;
}
public void setLastActivity(long timestamp)
public void setLastOnlineActivity(final long timestamp)
{
lastActivity = timestamp;
lastOnlineActivity = timestamp;
}
@Override
@ -291,12 +300,12 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
try
{
Method method = ess.getPaymentMethod().getMethod();
final Method method = ess.getPaymentMethod().getMethod();
if (!method.hasAccount(this.getName()))
{
throw new Exception();
}
Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
final Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
return account.balance();
}
catch (Throwable ex)
@ -307,18 +316,18 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
}
@Override
public void setMoney(double value)
public void setMoney(final double value)
{
if (ess.getPaymentMethod().hasMethod())
{
try
{
Method method = ess.getPaymentMethod().getMethod();
final Method method = ess.getPaymentMethod().getMethod();
if (!method.hasAccount(this.getName()))
{
throw new Exception();
}
Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
final Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
account.set(value);
}
catch (Throwable ex)
@ -329,16 +338,23 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
}
@Override
public void setAfk(boolean set)
public void setAfk(final boolean set)
{
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set);
if (set && !isAfk() && ess.getSettings().getFreezeAfkPlayers()) {
godStateBeforeAfk = isGodModeEnabled();
setGodModeEnabled(true);
}
if (!set && isAfk() && ess.getSettings().getFreezeAfkPlayers()) {
setGodModeEnabled(godStateBeforeAfk);
}
super.setAfk(set);
}
@Override
public boolean toggleAfk()
{
boolean now = super.toggleAfk();
final boolean now = super.toggleAfk();
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : now);
return now;
}
@ -348,7 +364,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
return hidden;
}
public void setHidden(boolean hidden)
public void setHidden(final boolean hidden)
{
this.hidden = hidden;
}
@ -389,4 +405,42 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
ess.getBans().unbanByName(getName());
}
}
public void updateActivity()
{
if (isAfk())
{
setAfk(false);
ess.broadcastMessage(getName(), Util.format("userIsNotAway", getDisplayName()));
return;
}
lastActivity = System.currentTimeMillis();
}
public void checkActivity()
{
final long autoafkkick = ess.getSettings().getAutoAfkKick();
if (autoafkkick > 0 && lastActivity + autoafkkick * 1000 < System.currentTimeMillis()
&& !isAuthorized("essentials.kick.exempt") && !isAuthorized("essentials.afk.kickexempt"))
{
final String kickReason = Util.format("autoAfkKickReason", autoafkkick/60.0);
kickPlayer(kickReason);
for (Player player : ess.getServer().getOnlinePlayers())
{
final User user = ess.getUser(player);
if (user.isAuthorized("essentials.kick.notify"))
{
player.sendMessage(Util.format("playerKicked", Console.NAME, getName(), kickReason));
}
}
}
final long autoafk = ess.getSettings().getAutoAfk();
if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis())
{
setAfk(true);
ess.broadcastMessage(getName(), Util.format("userIsAway", getDisplayName()));
}
}
}

View File

@ -9,6 +9,7 @@ import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.GregorianCalendar;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@ -124,7 +125,7 @@ public class Commandkit extends EssentialsCommand
for (String d : items)
{
String[] parts = d.split("[^0-9]+", 3);
int id = Integer.parseInt(parts[0]);
int id = Material.getMaterial(Integer.parseInt(parts[0])).getId();
int amount = parts.length > 1 ? Integer.parseInt(parts[parts.length > 2 ? 2 : 1]) : 1;
short data = parts.length > 2 ? Short.parseShort(parts[1]) : 0;
HashMap<Integer,ItemStack> overfilled = user.getInventory().addItem(new ItemStack(id, amount, data));

View File

@ -21,6 +21,11 @@ public class Commandnick extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
if (!ess.getSettings().changeDisplayName()) {
user.sendMessage(Util.i18n("nickDisplayName"));
return;
}
if (args.length > 1)
{
@ -80,6 +85,11 @@ public class Commandnick extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
if (!ess.getSettings().changeDisplayName()) {
sender.sendMessage(Util.i18n("nickDisplayName"));
return;
}
setOthersNickname(server, sender, args);
}

View File

@ -31,7 +31,7 @@ public class Commandpowertool extends EssentialsCommand
String command = getFinalArg(args, 0);
if (command != null && !command.isEmpty())
{
if (command.equalsIgnoreCase("list"))
if (command.equalsIgnoreCase("l:"))
{
if (powertools == null || powertools.isEmpty())
{
@ -90,6 +90,7 @@ public class Commandpowertool extends EssentialsCommand
}
else
{
powertools.clear();
user.sendMessage(Util.format("powerToolRemoveAll", itemName));
}

View File

@ -1,21 +1,17 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.earth2me.essentials.commands;
import com.earth2me.essentials.ChargeException;
import com.earth2me.essentials.IUser;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
/**
*
* @author Seiji
*/
public class Commandrepair extends EssentialsCommand
{
public Commandrepair()
@ -24,7 +20,7 @@ public class Commandrepair extends EssentialsCommand
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
@ -33,7 +29,20 @@ public class Commandrepair extends EssentialsCommand
if (args[0].equalsIgnoreCase("hand"))
{
ItemStack item = user.getItemInHand();
final ItemStack item = user.getItemInHand();
final String itemName = item.getType().toString().toLowerCase();
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess);
try
{
charge.isAffordableFor(user);
}
catch (Exception ex)
{
user.sendMessage(ex.getMessage());
return;
}
try
{
repairItem(item);
@ -43,26 +52,26 @@ public class Commandrepair extends EssentialsCommand
user.sendMessage(e.getMessage());
return;
}
charge.charge(user);
String itemName = item.getType().toString().toLowerCase().replace('_', ' ');
charge(user);
user.sendMessage(Util.format("repair", itemName));
user.sendMessage(Util.format("repair", itemName.replace('_', ' ')));
}
else if (args[0].equalsIgnoreCase("all"))
{
StringBuilder itemList = new StringBuilder();
itemList.append(repairItems(user.getInventory().getContents()));
final List<String> repaired = new ArrayList<String>();
repairItems(user.getInventory().getContents(), user, repaired);
String armor = repairItems(user.getInventory().getArmorContents());
repairItems(user.getInventory().getArmorContents(), user, repaired);
if (itemList.length() == 0)
if (repaired.isEmpty())
{
user.sendMessage(Util.format("repairNone"));
}
else
{
charge(user);
user.sendMessage(Util.format("repair", Util.joinList(itemList)));
user.sendMessage(Util.format("repair", Util.joinList(repaired)));
}
}
@ -72,10 +81,9 @@ public class Commandrepair extends EssentialsCommand
}
}
private void repairItem(ItemStack item) throws Exception
private void repairItem(final ItemStack item) throws Exception
{
Material material = Material.getMaterial(item.getTypeId());
String error = null;
final Material material = Material.getMaterial(item.getTypeId());
if (material.isBlock() || material.getMaxDurability() < 0)
{
throw new Exception(Util.i18n("repairInvalidType"));
@ -89,28 +97,39 @@ public class Commandrepair extends EssentialsCommand
item.setDurability((short)0);
}
private String repairItems(ItemStack[] items)
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired)
{
StringBuilder itemList = new StringBuilder();
for (ItemStack item : items)
{
final String itemName = item.getType().toString().toLowerCase();
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess);
try
{
charge.isAffordableFor(user);
}
catch (ChargeException ex)
{
user.sendMessage(ex.getMessage());
continue;
}
try
{
repairItem(item);
if (itemList.length() > 0)
{
itemList.append(", ");
}
String itemName = item.getType().toString().toLowerCase().replace('_', ' ');
itemList.append(itemName);
}
catch (Exception e)
{
continue;
}
try
{
charge.charge(user);
}
catch (ChargeException ex)
{
user.sendMessage(ex.getMessage());
}
repaired.add(itemName.replace('_', ' '));
}
return itemList.toString();
}
}

View File

@ -91,7 +91,7 @@ nether:
# Mob limit on spawnmob
spawnmob-limit: 10
#Shall we notify users when using /lightning
# Shall we notify users when using /lightning
warn-on-smite: true
# The message of the day, displayed on connect and by typing /motd.
@ -207,7 +207,7 @@ backup:
# Interval in minutes
interval: 60
# Add a command that backups your data, e.g.
# command: 'rdiff-backup World1 backups/World1'
#command: 'rdiff-backup World1 backups/World1'
# Set this true to enable permission per warp.
per-warp-permission: false
@ -223,7 +223,7 @@ debug: false
# Don't forget to remove the # infront of the line
#locale: de_DE
#turn off god mode when people exit
# Turn off god mode when people exit
remove-god-on-disconnect: false
# Use the permission system of bukkit
@ -231,8 +231,27 @@ remove-god-on-disconnect: false
use-bukkit-permissions: false
# Check for updates
# We do not recommend to disable this unless you are using CraftbukkitUpToDate or Bukget.
# If you don't like the notices in game, remove the permission
# essentials.admin.notices.update from your user.
update-check: true
# Auto-AFK
# After this timeout in seconds, the user will be set as afk.
# Set to -1 for no timeout.
auto-afk: 300
# Auto-AFK Kick
# After this timeout in seconds, the user will be kicked from the server.
# Set to -1 for no timeout.
auto-afk-kick: -1
# Set this to true, if you want to freeze the player, if he is afk.
# Other players or monsters can't push him out of afk mode then.
# This will also enable temporary god mode for the afk player.
# The player has to use the command /afk to leave the afk mode.
freeze-afk-players: false
############################################################
# +------------------------------------------------------+ #
# | EssentialsHome | #
@ -246,7 +265,7 @@ respawn-at-home: false
# If you enable this and remove default user access to the /sethome command, you can make beds the only way for players to set their home location.
bed-sethome: false
#if no home is set send you to spawn when /home is used
# If no home is set send you to spawn when /home is used
spawn-if-no-home: false
# If users have essentials.sethome.multiple how many homes can they have
@ -289,13 +308,13 @@ economy-log-enabled: false
# +------------------------------------------------------+ #
############################################################
#Show other plugins commands in help
# Show other plugins commands in help
non-ess-in-help: true
#Hide plugins which dont give a permission
#You can override a true value here for a single plugin by adding a permission to a user/group.
#The indervidual permission is: essentials.help.<plugin>, anyone with essentials.* or '*' will see all help this setting reguardless.
#You can use negitive permissions to remove access to just a single plugins help if the following is enabled.
# Hide plugins which dont give a permission
# You can override a true value here for a single plugin by adding a permission to a user/group.
# The indervidual permission is: essentials.help.<plugin>, anyone with essentials.* or '*' will see all help this setting reguardless.
# You can use negitive permissions to remove access to just a single plugins help if the following is enabled.
hide-permissionless-help: true
############################################################
@ -427,10 +446,10 @@ protect:
# This only has an effect if "rails" or "signs" is also enabled.
block-below: true
# Prevent placing blocks above protected rails, this is to stop a potential griefing
# Prevent placing blocks above protected rails, this is to stop a potential griefing
prevent-block-on-rails: false
#Store blocks / signs in memory before writing
# Store blocks / signs in memory before writing
memstore: false
# Disable various default physics and behaviors
@ -470,11 +489,11 @@ protect:
# Set true to disable useing for those people
use: true
#Should we tell people they are not allowed to build
# Should we tell people they are not allowed to build
warn-on-build-disallow: false
#disable weather options
# Disable weather options
weather:
storm: false
thunder: false

View File

@ -8,6 +8,7 @@ alertBroke = broke:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} at: {3}
alertPlaced = placed:
alertUsed = used:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Use the /back command to return to your death point.
backUsageMsg = \u00a77Returning to previous location.
backupFinished = Backup finished
@ -96,9 +97,9 @@ helpConsole = To view help from the console, type ?.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
holeInFloor = Hole in floor
homes = Homes: {0}
homeSet = \u00a77Home set.
homeSetToBed = \u00a77Your home is now set to this bed.
homes = Homes: {0}
hour = hour
hours = hours
ignorePlayer = You ignore player {0} from now on.
@ -184,6 +185,7 @@ mutedUserSpeaks = {0} tried to speak, but is muted.
needTpohere = You need access to /tpohere to teleport other players.
negativeBalanceError = User is not allowed to have a negative balance.
nickChanged = Nickname changed.
nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
nickNoMore = \u00a77You no longer have a nickname.
@ -216,6 +218,14 @@ numberRequired = A number goes there, silly.
onlyDayNight = /time only supports day/night.
onlyPlayers = Only in-game players can use {0}.
onlySunStorm = /weather only supports sun/storm.
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Error parsing {0} on line {1}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
@ -240,14 +250,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Reloaded all plugins.
repair = You have successfully repaired your: \u00a7e{0}.
@ -341,10 +343,10 @@ voiceSilenced = \u00a77Your voice has been silenced
warpDeleteError = Problem deleting the warp file.
warpListPermission = \u00a7cYou do not have Permission to list that warps.
warpNotExist = That warp does not exist.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} set.
warpUsePermission = \u00a7cYou do not have Permission to use that warp.
warpingTo = \u00a77Warping to {0}.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77You set the weather to storm in your world
weatherStormFor = \u00a77You set the weather to storm in your world for {0} seconds
weatherSun = \u00a77You set the weather to sun in your world

View File

@ -8,14 +8,15 @@ alertBroke = \u00f8delagde:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} ved: {3}
alertPlaced = placerede:
alertUsed = brugte:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Brug /back kommandoen for at retunere til dit d\u00f8ds punkt.
backUsageMsg = \u00a77Returnere til tidligere placering.
backupFinished = Backup sluttede
backupStarted = Backup startede
balance = \u00a77Balance: {0}
balanceTop = \u00a77 Top {0} saldi
banIpAddress = \u00a77Bannede IP addresse
banExempt = \u00a7cDu kan ikke forbyde den p\u00e5g\u00e6ldende spiller.
banIpAddress = \u00a77Bannede IP addresse
bannedIpsFileError = Fejl i l\u00e6sning af banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt ikke fundet
bannedPlayersFileError = Fejl i l\u00e6sning af banned-players.txt
@ -96,9 +97,9 @@ helpConsole = For at se hj\u00e6lp fra konsolen, skriv ?.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Side \u00a7c{0}\u00a7f af \u00a7c{1}\u00a7f:
holeInFloor = Hul i gulv
homes = Homes: {0}
homeSet = \u00a77Hjem sat.
homeSetToBed = \u00a77Dit hjem er nu sat til denne seng.
homes = Homes: {0}
hour = time
hours = timer
ignorePlayer = Du ignorere spiller {0} fra nu af.
@ -183,6 +184,7 @@ mutedUserSpeaks = {0} pr\u00f8vede at snakke, men er muted.
needTpohere = Du skal have adgang til /tpohere for at teleporter andre spillere.
negativeBalanceError = Brugeren er ikke tilladt at have en negativ saldo.
nickChanged = Kaldenavn \u00e6ndret.
nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cDet navn er allerede i brug.
nickNamesAlpha = \u00a7cKaldenavne skal v\u00e6re alfanumeriske.
nickNoMore = \u00a7Du har ikke l\u00e6ngere et kaldenavn.
@ -215,6 +217,14 @@ numberRequired = Der skal v\u00e6re et nummer, fjolle.
onlyDayNight = /time underst\u00f8tter kun day/night.
onlyPlayers = Kun in-game spillere kan bruge {0}.
onlySunStorm = /weather only supports sun/storm.
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Fejl ved parsing {0} p\u00e5 linje {1}
pendingTeleportCancelled = \u00a7cVentende teleportations anmodning aflyst.
permissionsError = Mangler Permissions/GroupManager; chat pr\u00e6fikser/suffikser vil v\u00e6re sl\u00e5et fra.
@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Beskyttelses ejer: {0}
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Sp\u00f8rgsm\u00e5l]\u00a7f {0}
reloadAllPlugins = \u00a77Genindl\u00e6ste alle tilf\u00f8jelser.
repair = You have successfully repaired your: \u00a7e{0}.
@ -340,10 +342,10 @@ voiceSilenced = \u00a77Din stemme er blevet d\u00e6mpet
warpDeleteError = Problem ved sletning af warp filen.
warpListPermission = \u00a7cDu har ikke tilladelse til at liste de warps.
warpNotExist = Den warp eksisterer ikke.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} sat.
warpUsePermission = \u00a7cDu har ikke tilladelse til at benytte den warp.
warpingTo = \u00a77Warper til {0}.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77Du har sat vejret til storm i din verden
weatherStormFor = \u00a77Du har sat vejret til storm i din verden i {0} sekunder
weatherSun = \u00a77Du har sat vejret til sol

View File

@ -8,14 +8,15 @@ alertBroke = zerst\u00f6rt:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} bei: {3}
alertPlaced = platziert:
alertUsed = benutzt:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Benutze den Befehl /back um zu deinem Todespunkt zur\u00fcck zu kehren.
backUsageMsg = \u00a77Kehre zur letzten Position zur\u00fcck.
backupFinished = Backup beendet
backupStarted = Backup gestartet
balance = \u00a77Geldb\u00f6rse: {0}
balanceTop = \u00a77 Top {0} Guthaben
banIpAddress = \u00a77IP-Adresse gesperrt.
banExempt = \u00a7cDu kannst diesen Spieler nicht sperren.
banIpAddress = \u00a77IP-Adresse gesperrt.
bannedIpsFileError = Fehler beim Lesen von banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt nicht gefunden
bannedPlayersFileError = Fehler beim Lesen von banned-players.txt
@ -96,9 +97,9 @@ helpConsole = Um die Hilfe der Konsole zu sehen, schreibe ?.
helpOp = \u00a7c[Hilfe]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Seite \u00a7c{0}\u00a7f von \u00a7c{1}\u00a7f:
holeInFloor = Loch im Boden
homes = Homes: {0}
homeSet = \u00a77Zuhause gesetzt.
homeSetToBed = \u00a77Dein Zuhause ist nun an diesem Bett.
homes = Homes: {0}
hour = Stunde
hours = Stunden
ignorePlayer = Du ignorierst ab jetzt Spieler {0}.
@ -183,6 +184,7 @@ mutedUserSpeaks = {0} versuchte zu sprechen, aber ist stumm geschalt.
needTpohere = Du brauchst Zugriff auf /tpohere um andere Spieler teleportieren zu k\u00f6nnen.
negativeBalanceError = Spieler darf keine Schulden machen.
nickChanged = Nickname ge\u00e4ndert.
nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cDieser Name wird bereits verwendet.
nickNamesAlpha = \u00a7cNicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten.
nickNoMore = \u00a7Du hast keinen Nicknamen mehr.
@ -215,6 +217,14 @@ numberRequired = Ein Zahl wird ben\u00f6tigt.
onlyDayNight = /time unterst\u00fctzt nur day und night.
onlyPlayers = Nur Spieler k\u00f6nnen {0} benutzen.
onlySunStorm = /weather unterst\u00fctzt nur sun und storm.
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Fehler beim Parsen von {0} in Zeile {1}
pendingTeleportCancelled = \u00a7cLaufende Teleportierung abgebrochen.
permissionsError = Permissions/GroupManager fehlt; Chat-Prefixe/-Suffixe sind ausgeschaltet.
@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Besitzer dieses Blocks: {0}
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Frage]\u00a7f {0}
reloadAllPlugins = \u00a77Alle plugins neu geladen.
repair = You have successfully repaired your: \u00a7e{0}.
@ -340,10 +342,10 @@ voiceSilenced = \u00a77Du bist stumm
warpDeleteError = Fehler beim L\u00f6schen der Warp-Datei.
warpListPermission = \u00a7cDu hast keine Berechtigung, die Warp-Punkte anzuzeigen.
warpNotExist = Warp-Punkt existiert nicht.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp-Punkt {0} wurde erstellt.
warpUsePermission = \u00a7cDu hast keinen Zugriff f\u00fcr diesen Warp-Punkt.
warpingTo = \u00a77Teleportiere zu Warp-Punkt {0}.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77In deiner Welt st\u00fcrmt es nun.
weatherStormFor = \u00a77In deiner Welt st\u00fcrmt es nun f\u00fcr {0} Sekunden.
weatherSun = \u00a77In deiner Welt scheint nun die Sonne.

View File

@ -8,14 +8,15 @@ alertBroke = broke:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} at: {3}
alertPlaced = placed:
alertUsed = used:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Use the /back command to return to your death point.
backUsageMsg = \u00a77Returning to previous location.
backupFinished = Backup finished
backupStarted = Backup started
balance = \u00a77Balance: {0}
balanceTop = \u00a77 Top {0} balances
banIpAddress = \u00a77Banned IP address
banExempt = \u00a7cYou can not ban that player.
banIpAddress = \u00a77Banned IP address
bannedIpsFileError = Error reading banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt not found
bannedPlayersFileError = Error reading banned-players.txt
@ -96,9 +97,9 @@ helpConsole = To view help from the console, type ?.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
holeInFloor = Hole in floor
homes = Homes: {0}
homeSet = \u00a77Home set.
homeSetToBed = \u00a77Your home is now set to this bed.
homes = Homes: {0}
hour = hour
hours = hours
ignorePlayer = You ignore player {0} from now on.
@ -183,6 +184,7 @@ mutedUserSpeaks = {0} tried to speak, but is muted.
needTpohere = You need access to /tpohere to teleport other players.
negativeBalanceError = User is not allowed to have a negative balance.
nickChanged = Nickname changed.
nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cThat name is already in use.
nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
nickNoMore = \u00a77You no longer have a nickname.
@ -215,6 +217,14 @@ numberRequired = A number goes there, silly.
onlyDayNight = /time only supports day/night.
onlyPlayers = Only in-game players can use {0}.
onlySunStorm = /weather only supports sun/storm.
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Error parsing {0} on line {1}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Reloaded all plugins.
repair = You have successfully repaired your: \u00a7e{0}.
@ -340,10 +342,10 @@ voiceSilenced = \u00a77Your voice has been silenced
warpDeleteError = Problem deleting the warp file.
warpListPermission = \u00a7cYou do not have Permission to list that warps.
warpNotExist = That warp does not exist.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} set.
warpUsePermission = \u00a7cYou do not have Permission to use that warp.
warpingTo = \u00a77Warping to {0}.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77You set the weather to storm in your world
weatherStormFor = \u00a77You set the weather to storm in your world for {0} seconds
weatherSun = \u00a77You set the weather to sun in your world

View File

@ -8,14 +8,15 @@ alertBroke = a cass\u00e9:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} \u00e0:{3}
alertPlaced = a plac\u00e9:
alertUsed = a utilis\u00e9:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Utilisez la commande /back pour retourner \u00e0 l''endroit ou vous \u00eates mort.
backUsageMsg = \u00a77Retour a votre emplacement pr\u00e9c\u00e8dent.
backupFinished = Backup termin\u00e9
backupStarted = D\u00e9but du backup
balance = \u00a77Solde: {0}
balanceTop = \u00a77 Top {0} soldes
banIpAddress = \u00a77Adresse IP banni
banExempt = \u00a77Vous ne pouvez pas interdire ce joueur.
banIpAddress = \u00a77Adresse IP banni
bannedIpsFileError = Erreur de lecture de banned-ips.txt
bannedIpsFileNotFound = Fichier banned-ips.txt introuvable
bannedPlayersFileError = Erreur lors de la lecture de banned-players.txt
@ -96,9 +97,9 @@ helpConsole = Pour voir l''aide tapez ?
helpOp = \u00a7c[Aide Admin]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Page \u00a7c{0}\u00a7f sur \u00a7c{1}\u00a7f.
holeInFloor = Trou dans le Sol.
homes = Homes: {0}
homeSet = \u00a77Home d\u00e9fini.
homeSetToBed = \u00a77Votre home est d\u00e9sormais d\u00e9fini sur ce lit.
homes = Homes: {0}
hour = heure
hours = heures
ignorePlayer = Vous ignorez d\u00e9sormais {0}.
@ -183,6 +184,7 @@ mutedUserSpeaks = {0} a essay\u00e9 de parler mais est muet.
needTpohere = Vous avez besoin de l''acc\u00e8s \u00e0 /tpohere pour t\u00e9l\u00e9porter d''autres joueurs.
negativeBalanceError = L''utilisateur n''est pas autoris\u00e9 \u00e0 avoir un solde n\u00e9gatif.
nickChanged = Pseudo modifi\u00e9.
nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cCe nom est d\u00e9j\u00e0 utilis\u00e9.
nickNamesAlpha = \u00a7cLes pseudos doivent \u00eatre alphanum\u00e9riques.
nickNoMore = \u00a7Vous n''avez plus de surnom.
@ -215,6 +217,14 @@ numberRequired = On a besoin d''un nombre ici, idiot.
onlyDayNight = /time ne supporte que (jour) day/night (nuit).
onlyPlayers = Seulement les joueurs en jeu peuvent utiliser {0}.
onlySunStorm = /weather only supports sun/storm.
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Erreur de conversion {0} \u00e0 la ligne {1}
pendingTeleportCancelled = \u00a7cRequete de t\u00e9l\u00e9portation annul\u00e9e.
permissionsError = Permissions/GroupManager manquant, les pr\u00e9fixes et suffixes ne seront pas affich\u00e9s.
@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Propri\u00e9taire de la protection : {0}
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Question]\u00a7f {0}
reloadAllPlugins = \u00a77Tous les plugins ont \u00e9t\u00e9 recharg\u00e9s.
repair = You have successfully repaired your: \u00a7e{0}.
@ -340,10 +342,10 @@ voiceSilenced = \u00a77Votre voix a \u00e9t\u00e9 r\u00e9duite au silence
warpDeleteError = Probl\u00e8me concernant la suppression du fichier warp.
warpListPermission = \u00a7cVous n''avez pas la permission d''afficher la liste des warps.
warpNotExist = Ce warp n''existe pas.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Le warp {0} a \u00e9t\u00e9 cr\u00e9\u00e9.
warpUsePermission = \u00a7cVous n''avez pas la permission d''utiliser ce warp.
warpingTo = \u00a77T\u00e9l\u00e9portation au warp {0}.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77Vous avez d\u00e9fini l''orage dans votre monde
weatherStormFor = \u00a77Vous avez d\u00e9fini l''orage dans votre monde pour {0} secondes.
weatherSun = \u00a77Vous avez mis le beau temps dans votre monde

View File

@ -8,14 +8,15 @@ alertBroke = gebroken:
alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} bij: {3}
alertPlaced = geplaatst:
alertUsed = gebruikt:
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath = \u00a77Gebruik het /back command om terug te keren naar je sterfplaats.
backUsageMsg = \u00a77Naar de vorige locatie aan het gaan.
backupFinished = Backup voltooid
backupStarted = Backup gestart
balance = \u00a77Saldo: {0}
balanceTop = \u00a77 Top {0} saldi
banIpAddress = \u00a77Verbannen IP-adres
banExempt = \u00a77Je kunt deze speler niet verbannen.
banIpAddress = \u00a77Verbannen IP-adres
bannedIpsFileError = Fout bij het lezen van banned-ips.txt
bannedIpsFileNotFound = banned-ips.txt werd niet gevonden
bannedPlayersFileError = Fout bij het lezen van banned-players.txt
@ -96,9 +97,9 @@ helpConsole = type ? om de consolehelp weer te geven.
helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages = Pagina \u00a7c{0}\u00a7f van de \u00a7c{1}\u00a7f:
holeInFloor = Gat in de vloer
homes = Homes: {0}
homeSet = \u00a77Home ingesteld.
homeSetToBed = \u00a77Je home is is nu verplaatst naar dit bed.
homes = Homes: {0}
hour = uur
hours = uren
ignorePlayer = Je negeert {0} vanaf nu.
@ -183,6 +184,7 @@ mutedUserSpeaks = {0} probeerde te praten, maar is gemute.
needTpohere = Je moet toegang krijgen tot /tpohere om naar andere spelers te teleporteren.
negativeBalanceError = Speler is niet toegestaan om een negatief saldo te hebben.
nickChanged = Nickname veranderd.
nickDisplayName=\u00a77You have to enable change-displayname in Essentials config.
nickInUse = \u00a7cDie naam is al in gebruik.
nickNamesAlpha = \u00a7cNicknames moeten alfanumeriek zijn.
nickNoMore = \u00a7Je hebt geen nickname meer.
@ -215,6 +217,14 @@ numberRequired = Er moet daar een nummer, grapjas.
onlyDayNight = /time ondersteund alleen day/night.
onlyPlayers = Alleen in-game spelers kunnen {0} gebruiken.
onlySunStorm = /weather only supports sun/storm.
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
parseError = Fout bij ontleding {0} op regel {1}
pendingTeleportCancelled = \u00a7cAangevraagde teleportatie afgelast.
permissionsError = Permissions/GroupManager ontbreekt; chat prefixes/suffixes worden uitgeschakeld.
@ -239,14 +249,6 @@ powerToolNoSuchCommandAssigned = Command \u00a7c{0}\u00a7f has not been assigned
powerToolRemove = Command \u00a7c{0}\u00a7f removed from {1}.
powerToolRemoveAll = All commands removed from {0}.
protectionOwner = \u00a76[EssentialsProtect] Beschermingeigenaar: {0}
pTimeCurrent = \u00a7e{0}''s\u00a7f time is {1}.
pTimeCurrentFixed = \u00a7e{0}''s\u00a7f time is fixed to {1}.
pTimeNormal = \u00a7e{0}''s\u00a7f time is normal and matches the server.
pTimeOthersPermission = \u00a7cYou are not authorized to set other players'' time.
pTimePlayers = These players have their own time:
pTimeReset = Player time has been reset for: \u00a7e{0}
pTimeSet = Player time is set to \u00a73{0}\u00a7f for: \u00a7e{1}
pTimeSetFixed = Player time is fixed to \u00a73{0}\u00a7f for: \u00a7e{1}
questionFormat = \u00a77[Vraag]\u00a7f {0}
reloadAllPlugins = \u00a77Alle plugins zijn herladen.
repair = You have successfully repaired your: \u00a7e{0}.
@ -340,10 +342,10 @@ voiceSilenced = \u00a77Je kan niet meer praten
warpDeleteError = Fout bij het verwijderen van het warp bestand.
warpListPermission = \u00a7cJe hebt geen toegang om die warp te maken.
warpNotExist = Die warp bestaat niet.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
warpSet = \u00a77Warp {0} ingesteld.
warpUsePermission = \u00a7cOnbevoegd om die warp te gebruiken.
warpingTo = \u00a77Aan het warpen naar {0}.
warpsCount = \u00a77There are {0} warps. Showing page {1} of {2}.
weatherStorm = \u00a77Je hebt het weer naar storm gezet in de wereld
weatherStormFor = \u00a77Je hebt het weer in de wereld naar storm gezet voor {0} seconde
weatherSun = \u00a77Je hebt het weer naar zon gezet in de wereld

View File

@ -208,7 +208,7 @@ commands:
aliases: [pong,eping,epong]
powertool:
description: Assigns a command to the item in hand, {player} will be replaced by the name of the player that you click.
usage: /<command> [list|a:|r:][command] <arguments>
usage: /<command> [l:|a:|r:][command] <arguments>
aliases: [pt,epowertool,ept]
ptime:
description: Adjust player's client time. Add @ prefix to fix.

View File

@ -61,7 +61,7 @@ public class EssentialsProtectBlockListener extends BlockListener
}
final Block below = blockPlaced.getRelative(BlockFace.DOWN);
if (below.getType() == Material.RAILS
if ((below.getType() == Material.RAILS || below.getType() == Material.POWERED_RAIL || below.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.prevent_block_on_rail)
&& prot.getStorage().isProtected(below, user.getName()))
{
@ -70,7 +70,7 @@ public class EssentialsProtectBlockListener extends BlockListener
}
final List<Block> protect = new ArrayList<Block>();
if (blockPlaced.getType() == Material.RAILS
if ((blockPlaced.getType() == Material.RAILS || blockPlaced.getType() == Material.POWERED_RAIL || blockPlaced.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails)
&& user.isAuthorized("essentials.protect"))
{
@ -103,8 +103,8 @@ public class EssentialsProtectBlockListener extends BlockListener
{
return;
}
Block block = event.getBlock();
if (block.getType() == Material.RAILS
final Block block = event.getBlock();
if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
@ -155,7 +155,7 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
final Block toBlock = event.getToBlock();
if (toBlock.getType() == Material.RAILS
if ((toBlock.getType() == Material.RAILS || toBlock.getType() == Material.POWERED_RAIL || toBlock.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
@ -196,7 +196,7 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
final Block block = event.getBlock();
if (block.getType() == Material.RAILS && prot.getSettingBool(ProtectConfig.protect_rails))
if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL) && prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
return;
@ -257,10 +257,10 @@ public class EssentialsProtectBlockListener extends BlockListener
if (user.isAuthorized("essentials.protect.admin"))
{
if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS)
if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
storage.unprotectBlock(block);
if (type == Material.RAILS || type == Material.SIGN_POST)
if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
{
final Block below = block.getRelative(BlockFace.DOWN);
storage.unprotectBlock(below);
@ -293,10 +293,10 @@ public class EssentialsProtectBlockListener extends BlockListener
}
else
{
if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS)
if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
storage.unprotectBlock(block);
if (type == Material.RAILS || type == Material.SIGN_POST)
if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
{
final Block below = block.getRelative(BlockFace.DOWN);
storage.unprotectBlock(below);
@ -337,7 +337,11 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
|| block.getType() == Material.RAILS)
|| block.getType() == Material.RAILS
|| block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
|| block.getType() == Material.POWERED_RAIL
|| block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
|| block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
@ -385,7 +389,11 @@ public class EssentialsProtectBlockListener extends BlockListener
return;
}
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
|| block.getType() == Material.RAILS)
|| block.getType() == Material.RAILS
|| block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
|| block.getType() == Material.POWERED_RAIL
|| block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
|| block.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);