Merge remote-tracking branch 'remotes/origin/2.9' into groupmanager

This commit is contained in:
ElgarL 2012-10-01 17:51:56 +01:00
commit cd0fde05b7
56 changed files with 877 additions and 382 deletions

View file

@ -269,11 +269,11 @@ public final class DescParseTickFormat
// How many ingame days have passed since the server start?
final long days = ticks / ticksPerDay;
ticks = ticks - days * ticksPerDay;
ticks -= days * ticksPerDay;
// How many hours on the last day?
final long hours = ticks / ticksPerHour;
ticks = ticks - hours * ticksPerHour;
ticks -= hours * ticksPerHour;
// How many minutes on the last day?
final long minutes = (long)Math.floor(ticks / ticksPerMinute);

View file

@ -7,6 +7,7 @@ import java.util.logging.Logger;
import org.bukkit.Material;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@ -46,7 +47,7 @@ public class EssentialsEntityListener implements Listener
{
event.setCancelled(true);
}
if (attacker.isGodModeEnabled() && !attacker.isAuthorized("essentials.god.pvp"))
{
event.setCancelled(true);
@ -161,4 +162,16 @@ public class EssentialsEntityListener implements Listener
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPotionSplashEvent(final PotionSplashEvent event)
{
for (LivingEntity entity : event.getAffectedEntities())
{
if (entity instanceof Player && ess.getUser(entity).isGodModeEnabled())
{
event.setIntensity(entity, 0d);
}
}
}
}

View file

@ -347,7 +347,7 @@ public class EssentialsPlayerListener implements Listener
}
}
@EventHandler(priority = EventPriority.LOWEST)
@EventHandler(priority = EventPriority.LOW)
public void onPlayerChangedWorldHack(final PlayerChangedWorldEvent event)
{
final Player user = event.getPlayer();
@ -496,7 +496,7 @@ public class EssentialsPlayerListener implements Listener
}
}
@EventHandler(priority = EventPriority.LOWEST)
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onInventoryClickEvent(final InventoryClickEvent event)
{
if (event.getView().getTopInventory().getType() == InventoryType.PLAYER)

View file

@ -143,7 +143,7 @@ public class I18n implements II18n
{
private final transient File dataFolder;
public FileResClassLoader(final ClassLoader classLoader, final IEssentials ess)
FileResClassLoader(final ClassLoader classLoader, final IEssentials ess)
{
super(classLoader);
this.dataFolder = ess.getDataFolder();

View file

@ -92,10 +92,6 @@ public interface ISettings extends IConf
boolean isCommandOverridden(String name);
boolean isCommandRestricted(IEssentialsCommand cmd);
boolean isCommandRestricted(String label);
boolean isDebug();
boolean isEcoDisabled();

View file

@ -146,26 +146,6 @@ public class Settings implements ISettings
return disCommands;
}
@Override
public boolean isCommandRestricted(IEssentialsCommand cmd)
{
return isCommandRestricted(cmd.getName());
}
@Override
public boolean isCommandRestricted(String label)
{
for (String c : config.getStringList("restricted-commands"))
{
if (!c.equalsIgnoreCase(label))
{
continue;
}
return true;
}
return config.getBoolean("restrict-" + label.toLowerCase(Locale.ENGLISH), false);
}
@Override
public boolean isPlayerCommand(String label)
{
@ -387,6 +367,7 @@ public class Settings implements ISettings
format = format.replace("{WORLDNAME}", "{1}");
format = format.replace("{SHORTWORLDNAME}", "{2}");
format = format.replaceAll("\\{(\\D*?)\\}", "\\[$1\\]");
format = "§r".concat(format);
mFormat = new MessageFormat(format);
chatFormats.put(group, mFormat);
}

View file

@ -21,13 +21,13 @@ public class Teleport implements Runnable, ITeleport
private final Location location;
private final String name;
public Target(Location location)
Target(Location location)
{
this.location = location;
this.name = null;
}
public Target(Player entity)
Target(Player entity)
{
this.name = entity.getName();
this.location = null;
@ -37,13 +37,14 @@ public class Teleport implements Runnable, ITeleport
{
if (this.name != null)
{
return ess.getServer().getPlayerExact(name).getLocation();
}
return location;
}
}
private IUser user;
private IUser teleportUser;
private int teleTimer = -1;
private long started; // time this task was initiated
private long delay; // how long to delay the teleport
@ -61,13 +62,19 @@ public class Teleport implements Runnable, ITeleport
private TeleportCause cause;
private void initTimer(long delay, Target target, Trade chargeFor, TeleportCause cause)
{
initTimer(delay, user, target, chargeFor, cause);
}
private void initTimer(long delay, IUser teleportUser, Target target, Trade chargeFor, TeleportCause cause)
{
this.started = System.currentTimeMillis();
this.delay = delay;
this.health = user.getHealth();
this.initX = Math.round(user.getLocation().getX() * MOVE_CONSTANT);
this.initY = Math.round(user.getLocation().getY() * MOVE_CONSTANT);
this.initZ = Math.round(user.getLocation().getZ() * MOVE_CONSTANT);
this.health = teleportUser.getHealth();
this.initX = Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT);
this.initY = Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT);
this.initZ = Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT);
this.teleportUser = teleportUser;
this.teleportTarget = target;
this.chargeFor = chargeFor;
this.cause = cause;
@ -79,31 +86,38 @@ public class Teleport implements Runnable, ITeleport
if (user == null || !user.isOnline() || user.getLocation() == null)
{
cancel();
cancel(false);
return;
}
if (Math.round(user.getLocation().getX() * MOVE_CONSTANT) != initX
|| Math.round(user.getLocation().getY() * MOVE_CONSTANT) != initY
|| Math.round(user.getLocation().getZ() * MOVE_CONSTANT) != initZ
|| user.getHealth() < health)
{ // user moved, cancel teleport
if (teleportUser == null || !teleportUser.isOnline() || teleportUser.getLocation() == null)
{
cancel(false);
return;
}
if (!user.isAuthorized("essentials.teleport.timer.move")
&& (Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT) != initX
|| Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT) != initY
|| Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT) != initZ
|| teleportUser.getHealth() < health))
{
// user moved, cancel teleport
cancel(true);
return;
}
health = user.getHealth(); // in case user healed, then later gets injured
health = teleportUser.getHealth(); // in case user healed, then later gets injured
long now = System.currentTimeMillis();
if (now > started + delay)
{
try
{
cooldown(false);
user.sendMessage(_("teleportationCommencing"));
teleportUser.sendMessage(_("teleportationCommencing"));
try
{
now(teleportTarget, cause);
teleportUser.getTeleport().now(teleportTarget, cause);
cancel(false);
if (chargeFor != null)
{
chargeFor.charge(user);
@ -117,6 +131,10 @@ public class Teleport implements Runnable, ITeleport
catch (Exception ex)
{
user.sendMessage(_("cooldownWithMessage", ex.getMessage()));
if (user != teleportUser)
{
teleportUser.sendMessage(_("cooldownWithMessage", ex.getMessage()));
}
}
}
}
@ -127,22 +145,6 @@ public class Teleport implements Runnable, ITeleport
this.ess = ess;
}
public void respawn(final Trade chargeFor, TeleportCause cause) throws Exception
{
final Player player = user.getBase();
final Location bed = player.getBedSpawnLocation();
final PlayerRespawnEvent pre = new PlayerRespawnEvent(player, bed == null ? player.getWorld().getSpawnLocation() : bed, bed != null);
ess.getServer().getPluginManager().callEvent(pre);
teleport(new Target(pre.getRespawnLocation()), chargeFor, cause);
}
public void warp(String warp, Trade chargeFor, TeleportCause cause) throws Exception
{
Location loc = ess.getWarps().getWarp(warp);
teleport(new Target(loc), chargeFor, cause);
user.sendMessage(_("warpingTo", warp));
}
public void cooldown(boolean check) throws Exception
{
final Calendar time = new GregorianCalendar();
@ -181,6 +183,7 @@ public class Teleport implements Runnable, ITeleport
}
}
//If we need to cancel a pending teleport call this method
public void cancel(boolean notifyUser)
{
if (teleTimer == -1)
@ -193,6 +196,10 @@ public class Teleport implements Runnable, ITeleport
if (notifyUser)
{
user.sendMessage(_("pendingTeleportCancelled"));
if (teleportUser != user)
{
teleportUser.sendMessage(_("pendingTeleportCancelled"));
}
}
}
finally
@ -201,16 +208,40 @@ public class Teleport implements Runnable, ITeleport
}
}
public void cancel()
//The now function is used when you want to skip tp delay when teleporting someone to a location or player.
public void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception
{
if (cooldown)
{
cooldown(false);
}
now(new Target(loc), cause);
}
public void now(Player entity, boolean cooldown, TeleportCause cause) throws Exception
{
if (cooldown)
{
cooldown(false);
}
now(new Target(entity), cause);
}
private void now(Target target, TeleportCause cause) throws Exception
{
cancel(false);
user.setLastLocation();
user.getBase().teleport(Util.getSafeDestination(target.getLocation()), cause);
}
//The teleport function is used when you want to normally teleport someone to a location or player.
//This method is nolonger used internally and will be removed.
@Deprecated
public void teleport(Location loc, Trade chargeFor) throws Exception
{
teleport(new Target(loc), chargeFor, TeleportCause.PLUGIN);
teleport(loc, chargeFor, TeleportCause.PLUGIN);
}
public void teleport(Location loc, Trade chargeFor, TeleportCause cause) throws Exception
{
teleport(new Target(loc), chargeFor, cause);
@ -241,58 +272,82 @@ public class Teleport implements Runnable, ITeleport
return;
}
cancel();
Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, (int)delay);
c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
user.sendMessage(_("dontMoveMessage", Util.formatDateDiff(c.getTimeInMillis())));
cancel(false);
warnUser(user);
initTimer((long)(delay * 1000.0), target, chargeFor, cause);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
private void now(Target target, TeleportCause cause) throws Exception
//The teleportToMe function is a wrapper used to handle teleporting players to them, like /tphere
public void teleportToMe(User otherUser, Trade chargeFor, TeleportCause cause) throws Exception
{
cancel();
user.setLastLocation();
user.getBase().teleport(Util.getSafeDestination(target.getLocation()), cause);
}
Target target = new Target(user);
public void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception
{
if (cooldown)
double delay = ess.getSettings().getTeleportDelay();
if (chargeFor != null)
{
chargeFor.isAffordableFor(user);
}
cooldown(true);
if (delay <= 0 || user.isAuthorized("essentials.teleport.timer.bypass"))
{
cooldown(false);
otherUser.getTeleport().now(target, cause);
if (chargeFor != null)
{
chargeFor.charge(user);
}
return;
}
now(new Target(loc), cause);
cancel(false);
warnUser(otherUser);
initTimer((long)(delay * 1000.0), otherUser, target, chargeFor, cause);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
public void now(Location loc, Trade chargeFor, TeleportCause cause) throws Exception
private void warnUser(final IUser user)
{
cooldown(false);
chargeFor.charge(user);
now(new Target(loc), cause);
Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, (int)delay);
c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
user.sendMessage(_("dontMoveMessage", Util.formatDateDiff(c.getTimeInMillis())));
}
public void now(Player entity, boolean cooldown, TeleportCause cause) throws Exception
//The respawn function is a wrapper used to handle tp fallback, on /jail and /home
public void respawn(final Trade chargeFor, TeleportCause cause) throws Exception
{
if (cooldown)
{
cooldown(false);
}
now(new Target(entity), cause);
final Player player = user.getBase();
final Location bed = player.getBedSpawnLocation();
final PlayerRespawnEvent pre = new PlayerRespawnEvent(player, bed == null ? player.getWorld().getSpawnLocation() : bed, bed != null);
ess.getServer().getPluginManager().callEvent(pre);
teleport(new Target(pre.getRespawnLocation()), chargeFor, cause);
}
//The warp function is a wrapper used to teleport a player to a /warp
public void warp(String warp, Trade chargeFor, TeleportCause cause) throws Exception
{
Location loc = ess.getWarps().getWarp(warp);
teleport(new Target(loc), chargeFor, cause);
user.sendMessage(_("warpingTo", warp));
}
//The back function is a wrapper used to teleport a player /back to their previous location.
public void back(Trade chargeFor) throws Exception
{
teleport(new Target(user.getLastLocation()), chargeFor, TeleportCause.COMMAND);
}
//This function is used to throw a user back after a jail sentence
public void back() throws Exception
{
now(new Target(user.getLastLocation()), TeleportCause.COMMAND);
}
//This function handles teleporting to /home
public void home(Location loc, Trade chargeFor) throws Exception
{
teleport(new Target(loc), chargeFor, TeleportCause.COMMAND);

View file

@ -63,20 +63,22 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
@Override
public boolean isAuthorized(final String node)
{
final boolean result = isAuthorizedCheck(node);
if (ess.getSettings().isDebug())
{
ess.getLogger().log(Level.INFO, "checking if " + base.getName() + " has " + node);
ess.getLogger().log(Level.INFO, "checking if " + base.getName() + " has " + node + " - " + result);
}
return result;
}
private boolean isAuthorizedCheck(final String node)
{
if (base instanceof OfflinePlayer)
{
return false;
}
if (isOp())
{
return true;
}
if (isJailed())
{
return false;

View file

@ -28,8 +28,9 @@ public abstract class UserData extends PlayerExtension implements IConf
config = new EssentialsConf(new File(folder, Util.sanitizeFileName(base.getName()) + ".yml"));
reloadConfig();
}
public final void reset () {
public final void reset()
{
config.getFile().delete();
config = new EssentialsConf(new File(folder, Util.sanitizeFileName(base.getName()) + ".yml"));
reloadConfig();
@ -108,26 +109,25 @@ public abstract class UserData extends PlayerExtension implements IConf
return new HashMap<String, Object>();
}
public Location getHome(String name) throws Exception
private String getHomeName(String search)
{
Location loc = config.getLocation("homes." + name, getServer());
if (loc == null)
if (Util.isInt(search))
{
try
{
loc = config.getLocation("homes." + getHomes().get(Integer.parseInt(name) - 1), getServer());
search = getHomes().get(Integer.parseInt(search) - 1);
}
catch (IndexOutOfBoundsException e)
catch (Exception e)
{
return null;
}
catch (NumberFormatException e)
{
return null;
}
}
return loc;
return search;
}
public Location getHome(String name) throws Exception
{
String search = getHomeName(name);
return config.getLocation("homes." + search, getServer());
}
public Location getHome(final Location world)
@ -169,20 +169,20 @@ public abstract class UserData extends PlayerExtension implements IConf
public void delHome(String name) throws Exception
{
String search = name;
String search = getHomeName(name);
if (!homes.containsKey(search))
{
search = Util.sanitizeFileName(name);
search = Util.sanitizeFileName(search);
}
if (homes.containsKey(search))
{
homes.remove(name);
config.removeProperty("homes." + name);
homes.remove(search);
config.removeProperty("homes." + search);
config.save();
}
else
{
throw new Exception(_("invalidHome", name));
throw new Exception(_("invalidHome", search));
}
}

View file

@ -23,10 +23,13 @@ public class Util
private final static Logger logger = Logger.getLogger("Minecraft");
private final static Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9]");
private final static Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]");
private final static Pattern BADFILENAMES = Pattern.compile("^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\\.(.+))?$", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS);
public static String sanitizeFileName(final String name)
{
final String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
if(BADFILENAMES.matcher(newName).matches())
newName = "_" + newName;
return newName;
}

View file

@ -44,7 +44,7 @@ public class Commandban extends EssentialsCommand
}
else
{
if (user.isAuthorized("essentials.ban.exempt"))
if (user.isAuthorized("essentials.ban.exempt") && sender instanceof Player)
{
sender.sendMessage(_("banExempt"));
return;

View file

@ -53,10 +53,7 @@ public class Commandgc extends EssentialsCommand
break;
}
sender.sendMessage(
"\u00a76" + worldType + " \"" + w.getName() + "\": "
+ w.getLoadedChunks().length + _("gcchunks")
+ w.getEntities().size() + _("gcentities"));
sender.sendMessage(_("gcWorld", worldType, w.getName(), w.getLoadedChunks().length, w.getEntities().size()));
}
}

View file

@ -6,6 +6,8 @@ import java.util.List;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class Commandheal extends EssentialsCommand
@ -33,9 +35,7 @@ public class Commandheal extends EssentialsCommand
{
user.healCooldown();
}
user.setHealth(20);
user.setFoodLevel(20);
user.sendMessage(_("heal"));
healPlayer(user);
}
@Override
@ -63,10 +63,19 @@ public class Commandheal extends EssentialsCommand
{
continue;
}
p.setHealth(20);
p.setFoodLevel(20);
p.sendMessage(_("heal"));
healPlayer(p);
sender.sendMessage(_("healOther", p.getDisplayName()));
}
}
private void healPlayer(final Player p)
{
p.setHealth(20);
p.setFoodLevel(20);
p.sendMessage(_("heal"));
for (PotionEffect effect : p.getActivePotionEffects())
{
p.removePotionEffect(effect.getType());
}
}
}

View file

@ -2,7 +2,9 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.Locale;
import java.util.regex.Pattern;
import org.bukkit.Location;
import org.bukkit.Server;
@ -55,9 +57,10 @@ public class Commandsethome extends EssentialsCommand
{
name = "home";
}
if ("bed".equals(name))
if ("bed".equals(name) || Util.isInt(name))
{
throw new NotEnoughArgumentsException();
user.sendMessage(_("invalidHomeName"));
throw new NoChargeException();
}
usersHome.setHome(name, location);
user.sendMessage(_("homeSet", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ()));

View file

@ -7,6 +7,7 @@ import java.util.logging.Logger;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
public class Commandsudo extends EssentialsCommand
@ -26,6 +27,15 @@ public class Commandsudo extends EssentialsCommand
}
final User user = getPlayer(server, args, 0, false);
if(args[1].equalsIgnoreCase("say"))
{
if (user.isAuthorized("essentials.sudo.exempt"))
{
throw new Exception(_("sudoExempt"));
}
user.chat(getFinalArg(args, 2));
return;
}
final String command = args[1];
final String[] arguments = new String[args.length - 2];
if (arguments.length > 0)
@ -33,7 +43,7 @@ public class Commandsudo extends EssentialsCommand
System.arraycopy(args, 2, arguments, 0, args.length - 2);
}
if (user.isAuthorized("essentials.sudo.exempt"))
if (user.isAuthorized("essentials.sudo.exempt") && sender instanceof Player)
{
throw new Exception(_("sudoExempt"));
}

View file

@ -65,12 +65,13 @@ public class Commandtpaccept extends EssentialsCommand
if (user.isTpRequestHere())
{
user.getTeleport().teleport(target, charge, TeleportCause.COMMAND);
target.getTeleport().teleportToMe(user, charge, TeleportCause.COMMAND);
}
else
{
target.getTeleport().teleport(user, charge, TeleportCause.COMMAND);
}
user.requestTeleport(null, false);
throw new NoChargeException();
}
}

View file

@ -27,7 +27,7 @@ public class Commandtphere extends EssentialsCommand
{
throw new Exception(_("noPerm", "essentials.worlds." + user.getWorld().getName()));
}
player.getTeleport().teleport(user, new Trade(this.getName(), ess), TeleportCause.COMMAND);
user.getTeleport().teleportToMe(player, new Trade(this.getName(), ess), TeleportCause.COMMAND);
user.sendMessage(_("teleporting"));
player.sendMessage(_("teleporting"));
throw new NoChargeException();

View file

@ -223,7 +223,7 @@ public class Metrics
}
catch (IOException e)
{
Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage());
Bukkit.getLogger().log(Level.FINE, "[Metrics] " + e.getMessage());
}
}
}, 0, PING_INTERVAL * 1200);

View file

@ -1,12 +1,11 @@
package com.earth2me.essentials.perm;
import com.earth2me.essentials.IEssentials;
import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public class ConfigPermissionsHandler implements IPermissionsHandler
public class ConfigPermissionsHandler extends SuperpermsHandler
{
private final transient IEssentials ess;
@ -15,47 +14,17 @@ public class ConfigPermissionsHandler implements IPermissionsHandler
this.ess = (IEssentials)ess;
}
@Override
public String getGroup(final Player base)
{
return null;
}
@Override
public List<String> getGroups(final Player base)
{
return null;
}
@Override
public boolean canBuild(final Player base, final String group)
{
return true;
}
@Override
public boolean inGroup(final Player base, final String group)
{
return false;
}
@Override
public boolean hasPermission(final Player base, final String node)
{
final String[] cmds = node.split("\\.", 2);
return !ess.getSettings().isCommandRestricted(cmds[cmds.length - 1])
&& ess.getSettings().isPlayerCommand(cmds[cmds.length - 1]);
return ess.getSettings().isPlayerCommand(cmds[cmds.length - 1]) || super.hasPermission(base, node);
}
@Override
public String getPrefix(final Player base)
{
return null;
}
@Override
public String getSuffix(final Player base)
{
return null;
}
}

View file

@ -8,7 +8,7 @@ import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;
public class PermissionsExHandler implements IPermissionsHandler
public class PermissionsExHandler extends SuperpermsHandler
{
private final transient PermissionManager manager;
@ -66,7 +66,7 @@ public class PermissionsExHandler implements IPermissionsHandler
@Override
public boolean hasPermission(final Player base, final String node)
{
return manager.has(base.getName(), node, base.getWorld().getName());
return super.hasPermission(base, node);
}
@Override

View file

@ -200,7 +200,8 @@ public class PermissionsHandler implements IPermissionsHandler
{
if (!(handler instanceof ConfigPermissionsHandler))
{
LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config.");
LOGGER.log(Level.INFO, "Essentials: Using config file enhanced permissions.");
LOGGER.log(Level.INFO, "Permissions listed in as player-commands will be given to all users.");
handler = new ConfigPermissionsHandler(plugin);
}
}

View file

@ -31,25 +31,26 @@ public class SuperpermsHandler implements IPermissionsHandler
}
@Override
public boolean hasPermission(final Player base, final String node)
public boolean hasPermission(final Player base, String node)
{
if (base.hasPermission("-" + node))
String permCheck = node;
int index;
while (true)
{
return false;
}
final String[] parts = node.split("\\.");
final StringBuilder builder = new StringBuilder(node.length());
for (String part : parts)
{
builder.append('*');
if (base.hasPermission(builder.toString()))
if (base.isPermissionSet(permCheck))
{
return true;
return base.hasPermission(permCheck);
}
builder.deleteCharAt(builder.length() - 1);
builder.append(part).append('.');
index = node.lastIndexOf('.');
if (index < 1)
{
return base.hasPermission("*");
}
node = node.substring(0, index);
permCheck = node + ".*";
}
return base.hasPermission(node);
}
@Override

View file

@ -438,11 +438,13 @@ public class EssentialsSign
{
private final transient SignChangeEvent event;
private final transient Block block;
private final transient Sign sign;
public EventSign(final SignChangeEvent event)
EventSign(final SignChangeEvent event)
{
this.event = event;
this.block = event.getBlock();
this.sign = (Sign)block.getState();
}
@Override
@ -455,6 +457,8 @@ public class EssentialsSign
public final void setLine(final int index, final String text)
{
event.setLine(index, text);
sign.setLine(index, text);
updateSign();
}
@Override
@ -466,6 +470,7 @@ public class EssentialsSign
@Override
public void updateSign()
{
sign.update();
}
}
@ -475,7 +480,7 @@ public class EssentialsSign
private final transient Sign sign;
private final transient Block block;
public BlockSign(final Block block)
BlockSign(final Block block)
{
this.block = block;
this.sign = (Sign)block.getState();

View file

@ -88,6 +88,16 @@ public class SignBlockListener implements Listener
{
event.setLine(i, Util.formatString(user, "essentials.signs", event.getLine(i)));
}
final String topLine = event.getLine(0);
for (Signs signs : Signs.values())
{
final EssentialsSign sign = signs.getSign();
if (topLine.equalsIgnoreCase(sign.getSuccessName()))
{
event.setLine(0, Util.stripFormat(topLine));
}
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@ -98,9 +108,8 @@ public class SignBlockListener implements Listener
return;
}
for (Signs signs : Signs.values())
for (EssentialsSign sign : ess.getSettings().enabledSigns())
{
final EssentialsSign sign = signs.getSign();
if (event.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
{
event.setCancelled(true);
@ -137,9 +146,8 @@ public class SignBlockListener implements Listener
{
return;
}
for (Signs signs : Signs.values())
for (EssentialsSign sign : ess.getSettings().enabledSigns())
{
final EssentialsSign sign = signs.getSign();
if (sign.getBlocks().contains(block.getType())
&& !sign.onBlockPlace(block, event.getPlayer(), ess))
{

View file

@ -21,11 +21,13 @@ public class SignEnchant extends EssentialsSign
final String[] enchantLevel = sign.getLine(2).split(":");
if (enchantLevel.length != 2)
{
sign.setLine(2, "§c<enchant>");
throw new SignException(_("invalidSignLine", 3));
}
final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]);
if (enchantment == null)
{
sign.setLine(2, "§c<enchant>");
throw new SignException(_("enchantmentNotFound"));
}
int level;
@ -35,6 +37,7 @@ public class SignEnchant extends EssentialsSign
}
catch (NumberFormatException ex)
{
sign.setLine(2, "§c<enchant>");
throw new SignException(ex.getMessage(), ex);
}
if (level < 1 || level > enchantment.getMaxLevel())

View file

@ -19,7 +19,14 @@ public class SignFree extends EssentialsSign
@Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
{
getItemStack(sign.getLine(1), 1, ess);
try {
getItemStack(sign.getLine(1), 1, ess);
}
catch (SignException ex)
{
sign.setLine(1, "§c<item>");
throw new SignException(ex.getMessage(), ex);
}
return true;
}

View file

@ -51,7 +51,7 @@ public class SignKit extends EssentialsSign
final String kitName = sign.getLine(1).toLowerCase(Locale.ENGLISH).trim();
final String group = sign.getLine(2);
if ((!group.isEmpty() && ("§2Everyone".equals(group) || player.inGroup(group)))
|| (group.isEmpty() && (player.isAuthorized("essentials.kit." + kitName))))
|| (group.isEmpty() && (player.isAuthorized("essentials.kits." + kitName))))
{
final Trade charge = getTrade(sign, 3, ess);
charge.isAffordableFor(player);

View file

@ -25,6 +25,7 @@ public class SignRepair extends EssentialsSign
}
else if (!repairTarget.equalsIgnoreCase("all") && !repairTarget.equalsIgnoreCase("hand") )
{
sign.setLine(1, "§c<hand|all>");
throw new SignException(_("invalidSignLine", 2));
}
validateTrade(sign, 2, ess);

View file

@ -1,6 +1,7 @@
package com.earth2me.essentials.signs;
import com.earth2me.essentials.ChargeException;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.IEssentials;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
@ -22,8 +23,8 @@ public class SignWarp extends EssentialsSign
if (warpName.isEmpty())
{
sign.setLine(1, "§dWarp name!");
return false;
sign.setLine(1, "§c<Warp name>");
throw new SignException(_("invalidSignLine", 1));
}
else
{
@ -52,7 +53,7 @@ public class SignWarp extends EssentialsSign
if ((!group.isEmpty()
&& ("§2Everyone".equals(group)
|| player.inGroup(group)))
|| (group.isEmpty() && (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warp." + warpName))))
|| (group.isEmpty() && (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warps." + warpName))))
{
final Trade charge = getTrade(sign, 3, ess);
try

View file

@ -29,6 +29,7 @@ public class SignWeather extends EssentialsSign
sign.setLine(1, "§2Storm");
return true;
}
sign.setLine(1, "§c<sun|storm>");
throw new SignException(_("onlySunStorm"));
}

View file

@ -89,7 +89,7 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
private class StorageObjectDataWriter extends AbstractDelayedYamlFileWriter
{
public StorageObjectDataWriter()
StorageObjectDataWriter()
{
super(ess, getStorageFile());
}
@ -112,7 +112,7 @@ public abstract class AsyncStorageObjectHolder<T extends StorageObject> implemen
private class StorageObjectDataReader extends AbstractDelayedYamlFileReader<T>
{
public StorageObjectDataReader()
StorageObjectDataReader()
{
super(ess, getStorageFile(), clazz);
}

View file

@ -1,9 +1,6 @@
package com.earth2me.essentials.textreader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
public class SimpleTextInput implements IText
@ -11,7 +8,7 @@ public class SimpleTextInput implements IText
private final transient List<String> lines = new ArrayList<String>();
public SimpleTextInput (final String input) {
lines.add(input);
lines.addAll(Arrays.asList(input.split("\\n")));
}
@Override

View file

@ -1,5 +1,6 @@
package com.earth2me.essentials.textreader;
import java.util.List;
import org.bukkit.command.CommandSender;
@ -20,7 +21,12 @@ public class SimpleTextPager
}
}
public String getString(int line)
public List<String> getLines()
{
return text.getLines();
}
public String getLine(int line)
{
if (text.getLines().size() < line)
{

View file

@ -70,7 +70,7 @@ public class TextPager
}
for (int i = start; i < lines.size() && i < start + (onePage ? 20 : 9); i++)
{
sender.sendMessage(lines.get(i));
sender.sendMessage("§r" + lines.get(i));
}
if (!onePage && page < pages && commandName != null)
{
@ -137,7 +137,7 @@ public class TextPager
}
for (int i = start; i < end && i < start + (onePage ? 20 : 9); i++)
{
sender.sendMessage(lines.get(i));
sender.sendMessage("§r" + lines.get(i));
}
if (!onePage && page < pages && commandName != null)
{
@ -189,7 +189,7 @@ public class TextPager
}
for (int i = start; i < chapterend && i < start + (onePage ? 20 : 9); i++)
{
sender.sendMessage(lines.get(i));
sender.sendMessage("§r" + lines.get(i));
}
if (!onePage && page < pages && commandName != null)
{

View file

@ -8,15 +8,10 @@
# If you receive an error when Essentials loads, ensure that:
# - No tabs are present: YAML only allows spaces
# - Indents are correct: YAML hierarchy is based entirely on indentation
# - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrphe)
# - List items are prefixed with a hyphen and indented:
# lists:
# - look like this
# not:
# - like this
# - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrophe)
# - Text with symbols is enclosed in single or double quotation marks
# - CraftBukkit and Permissions have been updated: CraftBukkit and Essentials almost always line up, but sometimes other plugins fall behind CraftBukkit's multiple daily updates
# - You have saved the document as UTF-8, NOT the default, ANSI
# If you have problems join the Essentials help support channel: http://tiny.cc/EssentialsChat
############################################################
# +------------------------------------------------------+ #
@ -96,18 +91,20 @@ overridden-commands:
disabled-commands:
# - nick
# Restricted commands have been removed.
# Now we have a whitelist, all commands not on this list are only available to ops.
# These will have NO EFFECT if you have Permissions installed!
# They are here only if you want something simpler than Permissions.
# If you do not wish to use a permission system, you can define a list of 'player perms' below.
# This list has no effect if your using a supported permissions system.
# If your using an unsupported permissions system simply delete this section.
# Whitelist the commands and permissions you wish to give players by default (everything else is op only).
# These are the permissions without the "essentials." part.
player-commands:
- afk
- afk.auto
- back
- back.ondeath
- balance
- balance.others
- balancetop
- build
- chat.color
- chat.format
- chat.shout
@ -138,8 +135,6 @@ player-commands:
- near
- pay
- ping
- powertool
- powertooltoggle
- protect
- r
- rules
@ -190,7 +185,7 @@ kits:
dtools:
delay: 10
items:
- 277 1 efficiency:1
- 277 1 efficiency:1 durability:1
- 278 1
- 279:780 1
tools:
@ -206,7 +201,6 @@ kits:
# To enable signs, remove # symbol. To disable all signs, comment/remove each sign.
# Essentials Colored sign support will be enabled when any sign types are enabled.
# Color is not an actual sign, its for enabling using color codes on signs, when the correct permissions are given.
# We recommend not enabling chest protection signs if you don't intend to use them, (or are using LWC/Lockette).
enabledSigns:
#- color
@ -226,9 +220,7 @@ enabledSigns:
#- spawnmob
#- repair
#- time
#- weather
#- protection
#- weather
# How many times per second can Essentials signs be interacted with per player.
# Values should be between 1-20, 20 being virtually no lag protection.
@ -254,16 +246,12 @@ debug: false
# Set the locale for all messages
# If you don't set this, the default locale of the server will be used.
# Don't forget to remove the # infront of the line
# Don't forget to remove the # in front of the line
#locale: de_DE
# Turn off god mode when people exit
remove-god-on-disconnect: false
# Use the permission system of bukkit
# This only works if no other permission plugins are installed
use-bukkit-permissions: false
# Auto-AFK
# After this timeout in seconds, the user will be set as afk.
# Set to -1 for no timeout.
@ -285,11 +273,11 @@ freeze-afk-players: false
disable-item-pickup-while-afk: false
# Should we automatically remove afk status when the player moves?
# Player will be removed from afk on chat/command reguardless of this setting.
# Player will be removed from afk on chat/command regardless of this setting.
# Disable this to reduce server lag.
cancel-afk-on-move: true
# You can disable the death messages of minecraft here
# You can disable the death messages of Minecraft here
death-messages: true
# Add worlds to this list, if you want to automatically disable god mode there
@ -299,17 +287,17 @@ no-god-in-worlds:
# Set to true to enable per-world permissions for teleporting between worlds with essentials commands
# This applies to /world, /back, /tp[a|o][here|all], but not warps.
# Give someone permission to teleport to a world with essentials.worlds.<worldname>
# This does not effect the /home command, there is a seperate toggle below for this.
# This does not effect the /home command, there is a separate toggle below for this.
world-teleport-permissions: false
# The number of items given if the quantity parameter is left out in /item or /give.
# If this number is below 1, the maximum stack size size is given. If oversized stacks
# is not enabled, any number higher then the maximum stack size results in more than one stack.
# If this number is below 1, the maximum stack size size is given. If over-sized stacks
# are not enabled, any number higher then the maximum stack size results in more than one stack.
default-stack-size: -1
# Oversized stacks are stacks that ignore the normal max stacksize.
# Over-sized stacks are stacks that ignore the normal max stack size.
# They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission.
# How many items should be in an oversized stack?
# How many items should be in an over-sized stack?
oversized-stacksize: 64
# Allow repair of enchanted weapons and armor.
@ -369,7 +357,7 @@ starting-balance: 0
# These are now defined in worth.yml
# Defines the cost to use the given commands PER USE
# Some commands like /repair have subcosts, check the wiki for more information.
# Some commands like /repair have sub-costs, check the wiki for more information.
command-costs:
# /example costs $1000 PER USE
#example: 1000
@ -564,15 +552,15 @@ protect:
storm: false
thunder: false
lightning: false
############################################################
# +------------------------------------------------------+ #
# | EssentialsAntiBuild | #
# +------------------------------------------------------+ #
############################################################
# Disable various default physics and behaviors
# Should people with build: false in permissions be allowed to build
# Set true to disable building for those people
# Setting to false means EssentialsAntiBuild will never prevent you from building
@ -585,7 +573,7 @@ protect:
# Should we tell people they are not allowed to build
warn-on-build-disallow: true
# For which block types would you like to be alerted?
# You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time.
# 10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket
@ -624,7 +612,7 @@ newbies:
# When we spawn for the first time, which spawnpoint do we use?
# Set to "none" if you want to use the spawn point of the world.
spawnpoint: newbies
# Do we want to give users anything on first join? Set to '' to disable
# This kit will be given regardless of cost, and permissions.
#kit: ''

View file

@ -25,28 +25,30 @@ when he does not select a chapter.
#Colors
Minecraft colors:
&0 &&0 &1 &&1 &2 &&2 &3 &&3
&4 &&4 &5 &&5 &6 &&6 &7 &&7
&8 &&8 &9 &&9 &a &&a &b &&b
&c &&c &d &&d &e &&e &f &&f
&&k &k Magic!
&0 &&0 &1 &&1 &2 &&2 &3 &&3
&4 &&4 &5 &&5 &6 &&6 &7 &&7
&8 &&8 &9 &&9 &a &&a &b &&b
&c &&c &d &&d &e &&e &f &&f
&&k &k Magic!&r &&l &l Bold!
&&m &m Strike!&r &&n &n Underline!
&&o &o Italic!&r &&r &r reset format codes!
#Tags
PLAYER: {PLAYER}
USERNAME: {PLAYER}
IP: {IP}
ADDRESS: {ADDRESS}
BALANCE: {BALANCE}
MAILS: {MAILS}
WORLD: {WORLD}
WORLDS: {WORLDS}
ONLINE: {ONLINE}
UNIQUE: {UNIQUE}
PLAYERLIST: {PLAYERLIST}
TIME: {TIME}
DATE: {DATE}
WORLDTIME12: {WORLDTIME12}
WORLDTIME24: {WORLDTIME24}
WORLDDATE: {WORLDDATE}
PLUGINS: {PLUGINS}
VERSION: {VERSION}
&6Player name:&r {PLAYER}
&6IP:&r {IP}
&6Address:&r {ADDRESS}
&6Balance:&r {BALANCE}
&6Unread mails:&r {MAILS}
&6Current world:&r {WORLD}
&6Worlds list:&r {WORLDS}
&6Number of online players:&r {ONLINE}
&6Number of unique players who joined the server:&r {UNIQUE}
&6Player list:&r {PLAYERLIST}
&6Time of server:&r {TIME}
&6Date of server:&r {DATE}
&6Time of world PM/AM:&r {WORLDTIME12}
&6Time of world:&r {WORLDTIME24}
&6Date of world:&r {WORLDDATE}
&6Plugin list:&r {PLUGINS}
&6Version of Craftbukkit:&r {VERSION}

View file

@ -1,4 +1,4 @@
#version: teamcity
#version: TeamCity
#If you change this file, it will not be automatically updated after the next release,
#item,id,metadata
stone,1,0
@ -1587,7 +1587,9 @@ tdoor,96,0
doort,96,0
trapd,96,0
dtrap,96,0
monsteregg,97,0
silverfish,97,0
monsteregg,97,0
monstereggsmoothstone,97,0
monstereggsstone,97,0
meggsmoothstone,97,0
@ -3396,6 +3398,7 @@ sign,323,0
woodendoor,324,0
wooddoor,324,0
wdoor,324,0
door,324,0
bucket,325,0
bukkit,325,0
waterbucket,326,0
@ -3945,14 +3948,98 @@ waterbottle,373,0
fullbottle,373,0
watervase,373,0
fullvase,373,0
clearpotion,373,6
clearpot,373,6
clearextendedpotion,373,7
clearexpotion,373,7
clear2potion,373,7
clearextendedpot,373,7
clearexpot,373,7
clear2pot,373,7
diffusepotion,373,11
diffusepot,373,11
artlesspotion,373,13
artlesspot,373,13
thinpotion,373,14
thinpot,373,14
thinextendedpotion,373,15
thinexpotion,373,15
thin2potion,373,15
thinextendedpot,373,15
thinexpot,373,15
thin2pot,373,15
awkwardpotion,373,16
awkwardpot,373,16
bunglingpotion,373,22
bunglingpot,373,22
bunglingextendedpotion,373,23
bunglingexpotion,373,23
bungling2potion,373,23
bunglingextendedpot,373,23
bunglingexpot,373,23
bungling2pot,373,23
smoothpotion,373,27
smoothpot,373,27
suavepotion,373,29
suavepot,373,29
debonairpotion,373,30
debonairpot,373,30
debonairextendedpotion,373,31
debonairexpotion,373,31
debonair2potion,373,31
debonairextendedpot,373,31
debonairexpot,373,31
debonair2pot,373,31
thickpotion,373,32
thickpot,373,32
mundaneexpotion,373,64
charmingpotion,373,38
charmingpot,373,38
charmingextendedpotion,373,39
charmingexpotion,373,39
charming2potion,373,39
charmingextendedpot,373,39
charmingexpot,373,39
charming2pot,373,39
refinedpotion,373,43
refinedpot,373,43
cordialpotion,373,45
cordialpot,373,45
sparklingpotion,373,46
sparklingpot,373,46
sparklingextendedpotion,373,47
sparklingexpotion,373,47
sparkling2potion,373,47
sparklingextendedpot,373,47
sparklingexpot,373,47
sparkling2pot,373,47
potentpotion,373,48
potentpot,373,48
rankpotion,373,54
rankpot,373,54
rankextendedpotion,373,55
rankexpotion,373,55
rank2potion,373,55
rankextendedpot,373,55
rankexpot,373,55
rank2pot,373,55
acridpotion,373,59
acridpot,373,59
grosspotion,373,61
grosspot,373,61
stinkypotion,373,62
stinkypot,373,62
stinkyextendedpotion,373,63
stinkyexpotion,373,63
stinky2potion,373,63
stinkyextendedpot,373,63
stinkyexpot,373,63
stinky2pot,373,63
mundaneextendedpotion,373,64
mundaneexpot,373,64
mundaneexpotion,373,64
mundane2potion,373,64
mundaneextendedpot,373,64
mundaneexpot,373,64
mundane2pot,373,64
mundanepotion,373,8192
mundanepot,373,8192
regenerationpotion,373,8193
@ -3964,8 +4051,10 @@ regenpot,373,8193
rpot,373,8193
swiftnesspotion,373,8194
swiftpotion,373,8194
speedpotion,373,8194
swiftnesspot,373,8194
swiftpot,373,8194
speedpot,373,8194
swpot,373,8194
fireresistancepotion,373,8195
fireresistpotion,373,8195
@ -3997,7 +4086,7 @@ strpotion,373,8201
strengthpot,373,8201
strongpot,373,8201
strpot,373,8201
spot,373,8201
stpot,373,8201
slownesspotion,373,8202
slowpotion,373,8202
slownesspot,373,8202
@ -4031,16 +4120,22 @@ regeniipot,373,8225
r2pot,373,8225
swiftnessleveliipotion,373,8226
swiftleveliipotion,373,8226
speedleveliipotion,373,8226
swiftnesslevel2potion,373,8226
swiftlevel2potion,373,8226
speedlevel2potion,373,8226
swiftnessiipotion,373,8226
swiftiipotion,373,8226
speediipotion,373,8226
swiftnessleveliipot,373,8226
swiftleveliipot,373,8226
speedleveliipot,373,8226
swiftnesslevel2pot,373,8226
swiftlevel2pot,373,8226
speedlevel2pot,373,8226
swiftnessiipot,373,8226
swiftiipot,373,8226
speediipot,373,8226
sw2pot,373,8226
posionleveliipotion,373,8228
acidleveliipotion,373,8228
@ -4086,7 +4181,7 @@ strlevel2pot,373,8233
strengthiipot,373,8233
strongiipot,373,8233
striipot,373,8233
s2pot,373,8233
st2pot,373,8233
harmingleveliipotion,373,8236
damageleveliipotion,373,8236
dmgleveliipotion,373,8236
@ -4121,12 +4216,16 @@ regenexpot,373,8257
repot,373,8257
swiftnessextendedpotion,373,8258
swiftextendedpotion,373,8258
speedextendedpotion,373,8258
swiftnessexpotion,373,8258
swiftexpotion,373,8258
speedexpotion,373,8258
swiftnessextendedpot,373,8258
swiftextendedpot,373,8258
speedextendedpot,373,8258
swiftnessexpot,373,8258
swiftexpot,373,8258
speedexpot,373,8258
swepot,373,8258
fireresistanceextendedpotion,373,8259
fireresistextendedpotion,373,8259
@ -4171,7 +4270,7 @@ strextendedpot,373,8265
strengthexpot,373,8265
strongexpot,373,8265
strexpot,373,8265
sepot,373,8265
stepot,373,8265
slownessextendedpotion,373,8266
slowextenedpotion,373,8266
slownessexpotion,373,8266
@ -4184,19 +4283,37 @@ slepot,373,8266
regenerationdualbitpotion,373,8289
regeneratedualbitpotion,373,8289
regendualbitpotion,373,8289
regenerationdbpotion,373,8289
regeneratedbpotion,373,8289
regendbpotion,373,8289
regenerationdualbitpot,373,8289
regeneratedualbitpot,373,8289
regendualbitpot,373,8289
regenerationdbpot,373,8289
regeneratedbpot,373,8289
regendbpot,373,8289
rdbpot,373,8289
swiftnessdualbitpotion,373,8290
swiftdualbitpotion,373,8290
speeddualbitpotion,373,8290
swiftnessdualbitpot,373,8290
swiftdualbitpot,373,8290
speeddualbitpot,373,8290
swiftnessdbpotion,373,8290
swiftdbpotion,373,8290
speeddbpotion,373,8290
swiftnessdbpot,373,8290
swiftdbpot,373,8290
speeddbpot,373,8290
swdbpot,373,8290
poisondualbitpotion,373,8292
aciddualbitpotion,373,8292
poisondualbitpot,373,8292
aciddualbitpot,373,8292
poisondbpotion,373,8292
aciddbpotion,373,8292
poisondbpot,373,8292
aciddbpot,373,8292
pdbpot,373,8292
strengthdualbitpotion,373,8297
strongdualbitpotion,373,8297
@ -4204,7 +4321,13 @@ strdualbitpotion,373,8297
strengthdualbitpot,373,8297
strongdualbitpot,373,8297
strdualbitpot,373,8297
sdbpot,373,8297
strengthdbpotion,373,8297
strongdbpotion,373,8297
strdbpotion,373,8297
strengthdbpot,373,8297
strongdbpot,373,8297
strdbpot,373,8297
stdbpot,373,8297
splashmundanepotion,373,16384
splmundanepotion,373,16384
splashregenerationpotion,373,16385
@ -4225,12 +4348,16 @@ splregenpot,373,16385
sprpot,373,16385
splashswiftnesspotion,373,16386
splashswiftpotion,373,16386
splashspeedpotion,373,16386
splashswiftnesspot,373,16386
splashswiftpot,373,16386
splashspeedpot,373,16386
splswiftnesspotion,373,16386
splswiftpotion,373,16386
splspeedpotion,373,16386
splswiftnesspot,373,16386
splswiftpot,373,16386
splspeedpot,373,16386
spswpot,373,16386
splashfireresistancepotion,373,16387
splashfireresistpotion,373,16387
@ -4267,6 +4394,22 @@ splhealingpot,373,16389
splhealpot,373,16389
spllifepot,373,16389
sphpot,373,16389
splashclearpotion,373,16390
splashclearpot,373,16390
splclearpotion,373,16390
splclearpot,373,16390
splashclearextendedpotion,373,16391
splashclearexpotion,373,16391
splashclear2potion,373,16391
splashclearextendedpot,373,16391
splashclearexpot,373,16391
splashclear2pot,373,16391
splclearextendedpotion,373,16391
splclearexpotion,373,16391
splclear2potion,373,16391
splclearextendedpot,373,16391
splclearexpot,373,16391
splclear2pot,373,16391
splashweaknesspotion,373,16392
splashweakpotion,373,16392
splashweaknesspot,373,16392
@ -4288,7 +4431,7 @@ splstrpotion,373,16393
splstrengthpot,373,16393
splstrongpot,373,16393
splstrpot,373,16393
spspot,373,16393
spstpot,373,16393
splashslownesspotion,373,16394
splashslowpotion,373,16394
splashslownesspot,373,16394
@ -4298,13 +4441,16 @@ splslowpotion,373,16394
splslownesspot,373,16394
splslowpot,373,16394
spslpot,373,16394
splashdiffusepotion,373,16395
splashdiffusepot,373,16395
spldiffusepotion,373,16395
spldiffusepot,373,16395
splashharmingpotion,373,16396
splashdamagepotion,373,16396
splashdmgpotion,373,16396
splashharmingpot,373,16396
splashdamagepot,373,16396
splashdmgpot,373,16396
dmgsplashpot,373,16396
splharmingpotion,373,16396
spldamagepotion,373,16396
spldmgpotion,373,16396
@ -4312,6 +4458,74 @@ splharmingpot,373,16396
spldamagepot,373,16396
spldmgpot,373,16396
spdpot,373,16396
splashartlesspotion,373,16397
splashartlesspot,373,16397
splartlesspotion,373,16397
splartlesspot,373,16397
splashthinpotion,373,16398
splashthinpot,373,16398
splthinpotion,373,16398
splthinpot,373,16398
splashthinextendedpotion,373,16399
splashthinexpotion,373,16399
splashthin2potion,373,16399
splashthinextendedpot,373,16399
splashthinexpot,373,16399
splashthin2pot,373,16399
splthinextendedpotion,373,16399
splthinexpotion,373,16399
splthin2potion,373,16399
splthinextendedpot,373,16399
splthinexpot,373,16399
splthin2pot,373,16399
splashawkwardpotion,373,16400
splashawkwardpot,373,16400
splawkwardpotion,373,16400
splawkwardpot,373,16400
splashbunglingpotion,373,16406
splashbunglingpot,373,16406
splbunglingpotion,373,16406
splbunglingpot,373,16406
splashbunglingextendedpotion,373,16407
splashbunglingexpotion,373,16407
splashbungling2potion,373,16407
splashbunglingextendedpot,373,16407
splashbunglingexpot,373,16407
splashbungling2pot,373,16407
splbunglingextendedpotion,373,16407
splbunglingexpotion,373,16407
splbungling2potion,373,16407
splbunglingextendedpot,373,16407
splbunglingexpot,373,16407
splbungling2pot,373,16407
splashsmoothpotion,373,16411
splashsmoothpot,373,16411
splsmoothpotion,373,16411
splsmoothpot,373,16411
splashsuavepotion,373,16413
splashsuavepot,373,16413
splsuavepotion,373,16413
splsuavepot,373,16413
splashdebonairpotion,373,16414
splashdebonairpot,373,16414
spldebonairpotion,373,16414
spldebonairpot,373,16414
splashdebonairextendedpotion,373,16415
splashdebonairexpotion,373,16415
splashdebonair2potion,373,16415
splashdebonairextendedpot,373,16415
splashdebonairexpot,373,16415
splashdebonair2pot,373,16415
spldebonairextendedpotion,373,16415
spldebonairexpotion,373,16415
spldebonair2potion,373,16415
spldebonairextendedpot,373,16415
spldebonairexpot,373,16415
spldebonair2pot,373,16415
splashthickpotion,373,16416
splashthickpot,373,16416
splthickpotion,373,16416
splthickpot,373,16416
splashregenerationleveliipotion,373,16417
splashregenerateleveliipotion,373,16417
splashregenleveliipotion,373,16417
@ -4351,28 +4565,40 @@ splregeniipot,373,16417
spr2pot,373,16417
splashswiftnessleveliipotion,373,16418
splashswiftleveliipotion,373,16418
splashspeedleveliipotion,373,16418
splashswiftnesslevel2potion,373,16418
splashswiftlevel2potion,373,16418
splashspeedlevel2potion,373,16418
splashswiftnessiipotion,373,16418
splashswiftiipotion,373,16418
splashspeediipotion,373,16418
splashswiftnessleveliipot,373,16418
splashswiftleveliipot,373,16418
splashspeedleveliipot,373,16418
splashswiftnesslevel2pot,373,16418
splashswiftlevel2pot,373,16418
splashspeedlevel2pot,373,16418
splashswiftnessiipot,373,16418
splashswiftiipot,373,16418
splashspeediipot,373,16418
splswiftnessleveliipotion,373,16418
splswiftleveliipotion,373,16418
splspeedleveliipotion,373,16418
splswiftnesslevel2potion,373,16418
splswiftlevel2potion,373,16418
splspeedlevel2potion,373,16418
splswiftnessiipotion,373,16418
splswiftiipotion,373,16418
splspeediipotion,373,16418
splswiftnessleveliipot,373,16418
splswiftleveliipot,373,16418
splspeedleveliipot,373,16418
splswiftnesslevel2pot,373,16418
splswiftlevel2pot,373,16418
splspeedlevel2pot,373,16418
splswiftnessiipot,373,16418
splswiftiipot,373,16418
splspeediipot,373,16418
spsw2pot,373,16418
splashposionleveliipotion,373,16420
splashacidleveliipotion,373,16420
@ -4424,6 +4650,22 @@ splheallevel2pot,373,16421
splhealingiipot,373,16421
splhealiipot,373,16421
sph2pot,373,16421
splashcharmingpotion,373,16422
splashcharmingpot,373,16422
splcharmingpotion,373,16422
splcharmingpot,373,16422
splashcharmingextendedpotion,373,16423
splashcharmingexpotion,373,16423
splashcharming2potion,373,16423
splashcharmingextendedpot,373,16423
splashcharmingexpot,373,16423
splashcharming2pot,373,16423
splcharmingextendedpotion,373,16423
splcharmingexpotion,373,16423
splcharming2potion,373,16423
splcharmingextendedpot,373,16423
splcharmingexpot,373,16423
splcharming2pot,373,16423
splashstrengthleveliipotion,373,16425
splashstrongleveliipotion,373,16425
splashstrleveliipotion,373,16425
@ -4460,7 +4702,11 @@ splstrlevel2pot,373,16425
splstrengthiipot,373,16425
splstrongiipot,373,16425
splstriipot,373,16425
sps2pot,373,16425
spst2pot,373,16425
splashrefinedpotion,373,16427
splashrefinedpot,373,16427
splrefinedpotion,373,16427
splrefinedpot,373,16427
splashharmingleveliipotion,373,16428
splashdamageleveliipotion,373,16428
splashdmgleveliipotion,373,16428
@ -4498,6 +4744,82 @@ splharmingiipot,373,16428
spldamageiipot,373,16428
spldmgiipot,373,16428
spd2pot,373,16428
splashcordialpotion,373,16429
splashcordialpot,373,16429
splcordialpotion,373,16429
splcordialpot,373,16429
splashsparklingpotion,373,16430
splashsparklingpot,373,16430
splsparklingpotion,373,16430
splsparklingpot,373,16430
splashsparklingextendedpotion,373,16431
splashsparklingexpotion,373,16431
splashsparkling2potion,373,16431
splashsparklingextendedpot,373,16431
splashsparklingexpot,373,16431
splashsparkling2pot,373,16431
splsparklingextendedpotion,373,16431
splsparklingexpotion,373,16431
splsparkling2potion,373,16431
splsparklingextendedpot,373,16431
splsparklingexpot,373,16431
splsparkling2pot,373,16431
splashpotentpotion,373,16432
splashpotentpot,373,16432
splpotentpotion,373,16432
splpotentpot,373,16432
splashrankpotion,373,16438
splashrankpot,373,16438
splrankpotion,373,16438
splrankpot,373,16438
splashrankextendedpotion,373,16439
splashrankexpotion,373,16439
splashrank2potion,373,16439
splashrankextendedpot,373,16439
splashrankexpot,373,16439
splashrank2pot,373,16439
splrankextendedpotion,373,16439
splrankexpotion,373,16439
splrank2potion,373,16439
splrankextendedpot,373,16439
splrankexpot,373,16439
splrank2pot,373,16439
splashacridpotion,373,16443
splashacridpot,373,16443
splacridpotion,373,16443
splacridpot,373,16443
splashgrosspotion,373,16445
splashgrosspot,373,16445
splgrosspotion,373,16445
splgrosspot,373,16445
splashstinkypotion,373,16446
splashstinkypot,373,16446
splstinkypotion,373,16446
splstinkypot,373,16446
splashstinkyextendedpotion,373,16447
splashstinkyexpotion,373,16447
splashstinky2potion,373,16447
splashstinkyextendedpot,373,16447
splashstinkyexpot,373,16447
splashstinky2pot,373,16447
splstinkyextendedpotion,373,16447
splstinkyexpotion,373,16447
splstinky2potion,373,16447
splstinkyextendedpot,373,16447
splstinkyexpot,373,16447
splstinky2pot,373,16447
splashmundaneextendedpotion,373,16448
splashmundaneexpotion,373,16448
splashmundane2potion,373,16448
splashmundaneextendedpot,373,16448
splashmundaneexpot,373,16448
splashmundane2pot,373,16448
splmundaneextendedpotion,373,16448
splmundaneexpotion,373,16448
splmundane2potion,373,16448
splmundaneextendedpot,373,16448
splmundaneexpot,373,16448
splmundane2pot,373,16448
splashregenerationextendedpotion,373,16449
splashregenerateextendedpotion,373,16449
splashregenextendepotion,373,16449
@ -4525,20 +4847,28 @@ splregenexpot,373,16449
sprepot,373,16449
splashswiftnessextendedpotion,373,16450
splashswiftextendedpotion,373,16450
splashspeedextendedpotion,373,16450
splashswiftnessexpotion,373,16450
splashswiftexpotion,373,16450
splashspeedexpotion,373,16450
splashswiftnessextendedpot,373,16450
splashswiftextendedpot,373,16450
splashspeedextendedpot,373,16450
splashswiftnessexpot,373,16450
splashswiftexpot,373,16450
splashspeedexpot,373,16450
splswiftnessextendedpotion,373,16450
splswiftextendedpotion,373,16450
splspeedextendedpotion,373,16450
splswiftnessexpotion,373,16450
splswiftexpotion,373,16450
splspeedexpotion,373,16450
splswiftnessextendedpot,373,16450
splswiftextendedpot,373,16450
splspeedextendedpot,373,16450
splswiftnessexpot,373,16450
splswiftexpot,373,16450
splspeedexpot,373,16450
spswepot,373,16450
splashfireresistanceextendedpotion,373,16451
splashfireresistextendedpotion,373,16451
@ -4623,7 +4953,7 @@ splstrextendedpot,373,16457
splstrengthexpot,373,16457
splstrongexpot,373,16457
splstrexpot,373,16457
spsepot,373,16457
spstepot,373,16457
splashslownessextendedpotion,373,16458
splashslowextenedpotion,373,16458
splashslownessexpotion,373,16458
@ -4653,15 +4983,43 @@ splregendualbitpotion,373,16481
splregenerationdualbitpot,373,16481
splregeneratedualbitpot,373,16481
splregendualbitpot,373,16481
splashregenerationdbpotion,373,16481
splashregeneratedbpotion,373,16481
splashregendbpotion,373,16481
splashregenerationdbpot,373,16481
splashregeneratedbpot,373,16481
splashregendbpot,373,16481
splregenerationdbpotion,373,16481
splregeneratedbpotion,373,16481
splregendbpotion,373,16481
splregenerationdbpot,373,16481
splregeneratedbpot,373,16481
splregendbpot,373,16481
sprdbpot,373,16481
splashswiftnessdualbitpotion,373,16482
splashswiftdualbitpotion,373,16482
splashspeeddualbitpotion,373,16482
splashswiftnessdualbitpot,373,16482
splashswiftdualbitpot,373,16482
splashspeeddualbitpot,373,16482
splswiftnessdualbitpotion,373,16482
splswiftdualbitpotion,373,16482
splspeeddualbitpotion,373,16482
splswiftnessdualbitpot,373,16482
splswiftdualbitpot,373,16482
splspeeddualbitpot,373,16482
splashswiftnessdbpotion,373,16482
splashswiftdbpotion,373,16482
splashspeeddbpotion,373,16482
splashswiftnessdbpot,373,16482
splashswiftdbpot,373,16482
splashspeeddbpot,373,16482
splswiftnessdbpotion,373,16482
splswiftdbpotion,373,16482
splspeeddbpotion,373,16482
splswiftnessdbpot,373,16482
splswiftdbpot,373,16482
splspeeddbpot,373,16482
spswdbpot,373,16482
splashpoisondualbitpotion,373,16484
splashaciddualbitpotion,373,16484
@ -4671,6 +5029,14 @@ splpoisondualbitpotion,373,16484
splaciddualbitpotion,373,16484
splpoisondualbitpot,373,16484
splaciddualbitpot,373,16484
splashpoisondbpotion,373,16484
splashaciddbpotion,373,16484
splashpoisondbpot,373,16484
splashaciddbpot,373,16484
splpoisondbpotion,373,16484
splaciddbpotion,373,16484
splpoisondbpot,373,16484
splaciddbpot,373,16484
sppdbpot,373,16484
splashstrengthdualbitpotion,373,16489
splashstrongdualbitpotion,373,16489
@ -4684,7 +5050,19 @@ splstrdualbitpotion,373,16489
splstrengthdualbitpot,373,16489
splstrongdualbitpot,373,16489
splstrdualbitpot,373,16489
spsdbpot,373,16489
splashstrengthdbpotion,373,16489
splashstrongdbpotion,373,16489
splashstrdbpotion,373,16489
splashstrengthdbpot,373,16489
splashstrongdbpot,373,16489
splashstrdbpot,373,16489
splstrengthdbpotion,373,16489
splstrongdbpotion,373,16489
splstrdbpotion,373,16489
splstrengthdbpot,373,16489
splstrongdbpot,373,16489
splstrdbpot,373,16489
spstdbpot,373,16489
glassbottle,374,0
bottle,374,0
gbottle,374,0

1 #version: teamcity #version: TeamCity
2 #If you change this file, it will not be automatically updated after the next release,
3 #item,id,metadata
4 stone,1,0
1587 doort,96,0
1588 trapd,96,0
1589 dtrap,96,0
1590 monsteregg,97,0
1591 silverfish,97,0
1592 monsteregg,97,0
1593 monstereggsmoothstone,97,0
1594 monstereggsstone,97,0
1595 meggsmoothstone,97,0
3398 woodendoor,324,0
3399 wooddoor,324,0
3400 wdoor,324,0
3401 door,324,0
3402 bucket,325,0
3403 bukkit,325,0
3404 waterbucket,326,0
3948 fullbottle,373,0
3949 watervase,373,0
3950 fullvase,373,0
3951 clearpotion,373,6
3952 clearpot,373,6
3953 clearextendedpotion,373,7
3954 clearexpotion,373,7
3955 clear2potion,373,7
3956 clearextendedpot,373,7
3957 clearexpot,373,7
3958 clear2pot,373,7
3959 diffusepotion,373,11
3960 diffusepot,373,11
3961 artlesspotion,373,13
3962 artlesspot,373,13
3963 thinpotion,373,14
3964 thinpot,373,14
3965 thinextendedpotion,373,15
3966 thinexpotion,373,15
3967 thin2potion,373,15
3968 thinextendedpot,373,15
3969 thinexpot,373,15
3970 thin2pot,373,15
3971 awkwardpotion,373,16
3972 awkwardpot,373,16
3973 bunglingpotion,373,22
3974 bunglingpot,373,22
3975 bunglingextendedpotion,373,23
3976 bunglingexpotion,373,23
3977 bungling2potion,373,23
3978 bunglingextendedpot,373,23
3979 bunglingexpot,373,23
3980 bungling2pot,373,23
3981 smoothpotion,373,27
3982 smoothpot,373,27
3983 suavepotion,373,29
3984 suavepot,373,29
3985 debonairpotion,373,30
3986 debonairpot,373,30
3987 debonairextendedpotion,373,31
3988 debonairexpotion,373,31
3989 debonair2potion,373,31
3990 debonairextendedpot,373,31
3991 debonairexpot,373,31
3992 debonair2pot,373,31
3993 thickpotion,373,32
3994 thickpot,373,32
3995 mundaneexpotion,373,64 charmingpotion,373,38
3996 charmingpot,373,38
3997 charmingextendedpotion,373,39
3998 charmingexpotion,373,39
3999 charming2potion,373,39
4000 charmingextendedpot,373,39
4001 charmingexpot,373,39
4002 charming2pot,373,39
4003 refinedpotion,373,43
4004 refinedpot,373,43
4005 cordialpotion,373,45
4006 cordialpot,373,45
4007 sparklingpotion,373,46
4008 sparklingpot,373,46
4009 sparklingextendedpotion,373,47
4010 sparklingexpotion,373,47
4011 sparkling2potion,373,47
4012 sparklingextendedpot,373,47
4013 sparklingexpot,373,47
4014 sparkling2pot,373,47
4015 potentpotion,373,48
4016 potentpot,373,48
4017 rankpotion,373,54
4018 rankpot,373,54
4019 rankextendedpotion,373,55
4020 rankexpotion,373,55
4021 rank2potion,373,55
4022 rankextendedpot,373,55
4023 rankexpot,373,55
4024 rank2pot,373,55
4025 acridpotion,373,59
4026 acridpot,373,59
4027 grosspotion,373,61
4028 grosspot,373,61
4029 stinkypotion,373,62
4030 stinkypot,373,62
4031 stinkyextendedpotion,373,63
4032 stinkyexpotion,373,63
4033 stinky2potion,373,63
4034 stinkyextendedpot,373,63
4035 stinkyexpot,373,63
4036 stinky2pot,373,63
4037 mundaneextendedpotion,373,64
4038 mundaneexpot,373,64 mundaneexpotion,373,64
4039 mundane2potion,373,64
4040 mundaneextendedpot,373,64
4041 mundaneexpot,373,64
4042 mundane2pot,373,64
4043 mundanepotion,373,8192
4044 mundanepot,373,8192
4045 regenerationpotion,373,8193
4051 rpot,373,8193
4052 swiftnesspotion,373,8194
4053 swiftpotion,373,8194
4054 speedpotion,373,8194
4055 swiftnesspot,373,8194
4056 swiftpot,373,8194
4057 speedpot,373,8194
4058 swpot,373,8194
4059 fireresistancepotion,373,8195
4060 fireresistpotion,373,8195
4086 strengthpot,373,8201
4087 strongpot,373,8201
4088 strpot,373,8201
4089 spot,373,8201 stpot,373,8201
4090 slownesspotion,373,8202
4091 slowpotion,373,8202
4092 slownesspot,373,8202
4120 r2pot,373,8225
4121 swiftnessleveliipotion,373,8226
4122 swiftleveliipotion,373,8226
4123 speedleveliipotion,373,8226
4124 swiftnesslevel2potion,373,8226
4125 swiftlevel2potion,373,8226
4126 speedlevel2potion,373,8226
4127 swiftnessiipotion,373,8226
4128 swiftiipotion,373,8226
4129 speediipotion,373,8226
4130 swiftnessleveliipot,373,8226
4131 swiftleveliipot,373,8226
4132 speedleveliipot,373,8226
4133 swiftnesslevel2pot,373,8226
4134 swiftlevel2pot,373,8226
4135 speedlevel2pot,373,8226
4136 swiftnessiipot,373,8226
4137 swiftiipot,373,8226
4138 speediipot,373,8226
4139 sw2pot,373,8226
4140 posionleveliipotion,373,8228
4141 acidleveliipotion,373,8228
4181 strengthiipot,373,8233
4182 strongiipot,373,8233
4183 striipot,373,8233
4184 s2pot,373,8233 st2pot,373,8233
4185 harmingleveliipotion,373,8236
4186 damageleveliipotion,373,8236
4187 dmgleveliipotion,373,8236
4216 repot,373,8257
4217 swiftnessextendedpotion,373,8258
4218 swiftextendedpotion,373,8258
4219 speedextendedpotion,373,8258
4220 swiftnessexpotion,373,8258
4221 swiftexpotion,373,8258
4222 speedexpotion,373,8258
4223 swiftnessextendedpot,373,8258
4224 swiftextendedpot,373,8258
4225 speedextendedpot,373,8258
4226 swiftnessexpot,373,8258
4227 swiftexpot,373,8258
4228 speedexpot,373,8258
4229 swepot,373,8258
4230 fireresistanceextendedpotion,373,8259
4231 fireresistextendedpotion,373,8259
4270 strengthexpot,373,8265
4271 strongexpot,373,8265
4272 strexpot,373,8265
4273 sepot,373,8265 stepot,373,8265
4274 slownessextendedpotion,373,8266
4275 slowextenedpotion,373,8266
4276 slownessexpotion,373,8266
4283 regenerationdualbitpotion,373,8289
4284 regeneratedualbitpotion,373,8289
4285 regendualbitpotion,373,8289
4286 regenerationdbpotion,373,8289
4287 regeneratedbpotion,373,8289
4288 regendbpotion,373,8289
4289 regenerationdualbitpot,373,8289
4290 regeneratedualbitpot,373,8289
4291 regendualbitpot,373,8289
4292 regenerationdbpot,373,8289
4293 regeneratedbpot,373,8289
4294 regendbpot,373,8289
4295 rdbpot,373,8289
4296 swiftnessdualbitpotion,373,8290
4297 swiftdualbitpotion,373,8290
4298 speeddualbitpotion,373,8290
4299 swiftnessdualbitpot,373,8290
4300 swiftdualbitpot,373,8290
4301 speeddualbitpot,373,8290
4302 swiftnessdbpotion,373,8290
4303 swiftdbpotion,373,8290
4304 speeddbpotion,373,8290
4305 swiftnessdbpot,373,8290
4306 swiftdbpot,373,8290
4307 speeddbpot,373,8290
4308 swdbpot,373,8290
4309 poisondualbitpotion,373,8292
4310 aciddualbitpotion,373,8292
4311 poisondualbitpot,373,8292
4312 aciddualbitpot,373,8292
4313 poisondbpotion,373,8292
4314 aciddbpotion,373,8292
4315 poisondbpot,373,8292
4316 aciddbpot,373,8292
4317 pdbpot,373,8292
4318 strengthdualbitpotion,373,8297
4319 strongdualbitpotion,373,8297
4321 strengthdualbitpot,373,8297
4322 strongdualbitpot,373,8297
4323 strdualbitpot,373,8297
4324 sdbpot,373,8297 strengthdbpotion,373,8297
4325 strongdbpotion,373,8297
4326 strdbpotion,373,8297
4327 strengthdbpot,373,8297
4328 strongdbpot,373,8297
4329 strdbpot,373,8297
4330 stdbpot,373,8297
4331 splashmundanepotion,373,16384
4332 splmundanepotion,373,16384
4333 splashregenerationpotion,373,16385
4348 sprpot,373,16385
4349 splashswiftnesspotion,373,16386
4350 splashswiftpotion,373,16386
4351 splashspeedpotion,373,16386
4352 splashswiftnesspot,373,16386
4353 splashswiftpot,373,16386
4354 splashspeedpot,373,16386
4355 splswiftnesspotion,373,16386
4356 splswiftpotion,373,16386
4357 splspeedpotion,373,16386
4358 splswiftnesspot,373,16386
4359 splswiftpot,373,16386
4360 splspeedpot,373,16386
4361 spswpot,373,16386
4362 splashfireresistancepotion,373,16387
4363 splashfireresistpotion,373,16387
4394 splhealpot,373,16389
4395 spllifepot,373,16389
4396 sphpot,373,16389
4397 splashclearpotion,373,16390
4398 splashclearpot,373,16390
4399 splclearpotion,373,16390
4400 splclearpot,373,16390
4401 splashclearextendedpotion,373,16391
4402 splashclearexpotion,373,16391
4403 splashclear2potion,373,16391
4404 splashclearextendedpot,373,16391
4405 splashclearexpot,373,16391
4406 splashclear2pot,373,16391
4407 splclearextendedpotion,373,16391
4408 splclearexpotion,373,16391
4409 splclear2potion,373,16391
4410 splclearextendedpot,373,16391
4411 splclearexpot,373,16391
4412 splclear2pot,373,16391
4413 splashweaknesspotion,373,16392
4414 splashweakpotion,373,16392
4415 splashweaknesspot,373,16392
4431 splstrengthpot,373,16393
4432 splstrongpot,373,16393
4433 splstrpot,373,16393
4434 spspot,373,16393 spstpot,373,16393
4435 splashslownesspotion,373,16394
4436 splashslowpotion,373,16394
4437 splashslownesspot,373,16394
4441 splslownesspot,373,16394
4442 splslowpot,373,16394
4443 spslpot,373,16394
4444 splashdiffusepotion,373,16395
4445 splashdiffusepot,373,16395
4446 spldiffusepotion,373,16395
4447 spldiffusepot,373,16395
4448 splashharmingpotion,373,16396
4449 splashdamagepotion,373,16396
4450 splashdmgpotion,373,16396
4451 splashharmingpot,373,16396
4452 splashdamagepot,373,16396
4453 splashdmgpot,373,16396
dmgsplashpot,373,16396
4454 splharmingpotion,373,16396
4455 spldamagepotion,373,16396
4456 spldmgpotion,373,16396
4458 spldamagepot,373,16396
4459 spldmgpot,373,16396
4460 spdpot,373,16396
4461 splashartlesspotion,373,16397
4462 splashartlesspot,373,16397
4463 splartlesspotion,373,16397
4464 splartlesspot,373,16397
4465 splashthinpotion,373,16398
4466 splashthinpot,373,16398
4467 splthinpotion,373,16398
4468 splthinpot,373,16398
4469 splashthinextendedpotion,373,16399
4470 splashthinexpotion,373,16399
4471 splashthin2potion,373,16399
4472 splashthinextendedpot,373,16399
4473 splashthinexpot,373,16399
4474 splashthin2pot,373,16399
4475 splthinextendedpotion,373,16399
4476 splthinexpotion,373,16399
4477 splthin2potion,373,16399
4478 splthinextendedpot,373,16399
4479 splthinexpot,373,16399
4480 splthin2pot,373,16399
4481 splashawkwardpotion,373,16400
4482 splashawkwardpot,373,16400
4483 splawkwardpotion,373,16400
4484 splawkwardpot,373,16400
4485 splashbunglingpotion,373,16406
4486 splashbunglingpot,373,16406
4487 splbunglingpotion,373,16406
4488 splbunglingpot,373,16406
4489 splashbunglingextendedpotion,373,16407
4490 splashbunglingexpotion,373,16407
4491 splashbungling2potion,373,16407
4492 splashbunglingextendedpot,373,16407
4493 splashbunglingexpot,373,16407
4494 splashbungling2pot,373,16407
4495 splbunglingextendedpotion,373,16407
4496 splbunglingexpotion,373,16407
4497 splbungling2potion,373,16407
4498 splbunglingextendedpot,373,16407
4499 splbunglingexpot,373,16407
4500 splbungling2pot,373,16407
4501 splashsmoothpotion,373,16411
4502 splashsmoothpot,373,16411
4503 splsmoothpotion,373,16411
4504 splsmoothpot,373,16411
4505 splashsuavepotion,373,16413
4506 splashsuavepot,373,16413
4507 splsuavepotion,373,16413
4508 splsuavepot,373,16413
4509 splashdebonairpotion,373,16414
4510 splashdebonairpot,373,16414
4511 spldebonairpotion,373,16414
4512 spldebonairpot,373,16414
4513 splashdebonairextendedpotion,373,16415
4514 splashdebonairexpotion,373,16415
4515 splashdebonair2potion,373,16415
4516 splashdebonairextendedpot,373,16415
4517 splashdebonairexpot,373,16415
4518 splashdebonair2pot,373,16415
4519 spldebonairextendedpotion,373,16415
4520 spldebonairexpotion,373,16415
4521 spldebonair2potion,373,16415
4522 spldebonairextendedpot,373,16415
4523 spldebonairexpot,373,16415
4524 spldebonair2pot,373,16415
4525 splashthickpotion,373,16416
4526 splashthickpot,373,16416
4527 splthickpotion,373,16416
4528 splthickpot,373,16416
4529 splashregenerationleveliipotion,373,16417
4530 splashregenerateleveliipotion,373,16417
4531 splashregenleveliipotion,373,16417
4565 spr2pot,373,16417
4566 splashswiftnessleveliipotion,373,16418
4567 splashswiftleveliipotion,373,16418
4568 splashspeedleveliipotion,373,16418
4569 splashswiftnesslevel2potion,373,16418
4570 splashswiftlevel2potion,373,16418
4571 splashspeedlevel2potion,373,16418
4572 splashswiftnessiipotion,373,16418
4573 splashswiftiipotion,373,16418
4574 splashspeediipotion,373,16418
4575 splashswiftnessleveliipot,373,16418
4576 splashswiftleveliipot,373,16418
4577 splashspeedleveliipot,373,16418
4578 splashswiftnesslevel2pot,373,16418
4579 splashswiftlevel2pot,373,16418
4580 splashspeedlevel2pot,373,16418
4581 splashswiftnessiipot,373,16418
4582 splashswiftiipot,373,16418
4583 splashspeediipot,373,16418
4584 splswiftnessleveliipotion,373,16418
4585 splswiftleveliipotion,373,16418
4586 splspeedleveliipotion,373,16418
4587 splswiftnesslevel2potion,373,16418
4588 splswiftlevel2potion,373,16418
4589 splspeedlevel2potion,373,16418
4590 splswiftnessiipotion,373,16418
4591 splswiftiipotion,373,16418
4592 splspeediipotion,373,16418
4593 splswiftnessleveliipot,373,16418
4594 splswiftleveliipot,373,16418
4595 splspeedleveliipot,373,16418
4596 splswiftnesslevel2pot,373,16418
4597 splswiftlevel2pot,373,16418
4598 splspeedlevel2pot,373,16418
4599 splswiftnessiipot,373,16418
4600 splswiftiipot,373,16418
4601 splspeediipot,373,16418
4602 spsw2pot,373,16418
4603 splashposionleveliipotion,373,16420
4604 splashacidleveliipotion,373,16420
4650 splhealingiipot,373,16421
4651 splhealiipot,373,16421
4652 sph2pot,373,16421
4653 splashcharmingpotion,373,16422
4654 splashcharmingpot,373,16422
4655 splcharmingpotion,373,16422
4656 splcharmingpot,373,16422
4657 splashcharmingextendedpotion,373,16423
4658 splashcharmingexpotion,373,16423
4659 splashcharming2potion,373,16423
4660 splashcharmingextendedpot,373,16423
4661 splashcharmingexpot,373,16423
4662 splashcharming2pot,373,16423
4663 splcharmingextendedpotion,373,16423
4664 splcharmingexpotion,373,16423
4665 splcharming2potion,373,16423
4666 splcharmingextendedpot,373,16423
4667 splcharmingexpot,373,16423
4668 splcharming2pot,373,16423
4669 splashstrengthleveliipotion,373,16425
4670 splashstrongleveliipotion,373,16425
4671 splashstrleveliipotion,373,16425
4702 splstrengthiipot,373,16425
4703 splstrongiipot,373,16425
4704 splstriipot,373,16425
4705 sps2pot,373,16425 spst2pot,373,16425
4706 splashrefinedpotion,373,16427
4707 splashrefinedpot,373,16427
4708 splrefinedpotion,373,16427
4709 splrefinedpot,373,16427
4710 splashharmingleveliipotion,373,16428
4711 splashdamageleveliipotion,373,16428
4712 splashdmgleveliipotion,373,16428
4744 spldamageiipot,373,16428
4745 spldmgiipot,373,16428
4746 spd2pot,373,16428
4747 splashcordialpotion,373,16429
4748 splashcordialpot,373,16429
4749 splcordialpotion,373,16429
4750 splcordialpot,373,16429
4751 splashsparklingpotion,373,16430
4752 splashsparklingpot,373,16430
4753 splsparklingpotion,373,16430
4754 splsparklingpot,373,16430
4755 splashsparklingextendedpotion,373,16431
4756 splashsparklingexpotion,373,16431
4757 splashsparkling2potion,373,16431
4758 splashsparklingextendedpot,373,16431
4759 splashsparklingexpot,373,16431
4760 splashsparkling2pot,373,16431
4761 splsparklingextendedpotion,373,16431
4762 splsparklingexpotion,373,16431
4763 splsparkling2potion,373,16431
4764 splsparklingextendedpot,373,16431
4765 splsparklingexpot,373,16431
4766 splsparkling2pot,373,16431
4767 splashpotentpotion,373,16432
4768 splashpotentpot,373,16432
4769 splpotentpotion,373,16432
4770 splpotentpot,373,16432
4771 splashrankpotion,373,16438
4772 splashrankpot,373,16438
4773 splrankpotion,373,16438
4774 splrankpot,373,16438
4775 splashrankextendedpotion,373,16439
4776 splashrankexpotion,373,16439
4777 splashrank2potion,373,16439
4778 splashrankextendedpot,373,16439
4779 splashrankexpot,373,16439
4780 splashrank2pot,373,16439
4781 splrankextendedpotion,373,16439
4782 splrankexpotion,373,16439
4783 splrank2potion,373,16439
4784 splrankextendedpot,373,16439
4785 splrankexpot,373,16439
4786 splrank2pot,373,16439
4787 splashacridpotion,373,16443
4788 splashacridpot,373,16443
4789 splacridpotion,373,16443
4790 splacridpot,373,16443
4791 splashgrosspotion,373,16445
4792 splashgrosspot,373,16445
4793 splgrosspotion,373,16445
4794 splgrosspot,373,16445
4795 splashstinkypotion,373,16446
4796 splashstinkypot,373,16446
4797 splstinkypotion,373,16446
4798 splstinkypot,373,16446
4799 splashstinkyextendedpotion,373,16447
4800 splashstinkyexpotion,373,16447
4801 splashstinky2potion,373,16447
4802 splashstinkyextendedpot,373,16447
4803 splashstinkyexpot,373,16447
4804 splashstinky2pot,373,16447
4805 splstinkyextendedpotion,373,16447
4806 splstinkyexpotion,373,16447
4807 splstinky2potion,373,16447
4808 splstinkyextendedpot,373,16447
4809 splstinkyexpot,373,16447
4810 splstinky2pot,373,16447
4811 splashmundaneextendedpotion,373,16448
4812 splashmundaneexpotion,373,16448
4813 splashmundane2potion,373,16448
4814 splashmundaneextendedpot,373,16448
4815 splashmundaneexpot,373,16448
4816 splashmundane2pot,373,16448
4817 splmundaneextendedpotion,373,16448
4818 splmundaneexpotion,373,16448
4819 splmundane2potion,373,16448
4820 splmundaneextendedpot,373,16448
4821 splmundaneexpot,373,16448
4822 splmundane2pot,373,16448
4823 splashregenerationextendedpotion,373,16449
4824 splashregenerateextendedpotion,373,16449
4825 splashregenextendepotion,373,16449
4847 sprepot,373,16449
4848 splashswiftnessextendedpotion,373,16450
4849 splashswiftextendedpotion,373,16450
4850 splashspeedextendedpotion,373,16450
4851 splashswiftnessexpotion,373,16450
4852 splashswiftexpotion,373,16450
4853 splashspeedexpotion,373,16450
4854 splashswiftnessextendedpot,373,16450
4855 splashswiftextendedpot,373,16450
4856 splashspeedextendedpot,373,16450
4857 splashswiftnessexpot,373,16450
4858 splashswiftexpot,373,16450
4859 splashspeedexpot,373,16450
4860 splswiftnessextendedpotion,373,16450
4861 splswiftextendedpotion,373,16450
4862 splspeedextendedpotion,373,16450
4863 splswiftnessexpotion,373,16450
4864 splswiftexpotion,373,16450
4865 splspeedexpotion,373,16450
4866 splswiftnessextendedpot,373,16450
4867 splswiftextendedpot,373,16450
4868 splspeedextendedpot,373,16450
4869 splswiftnessexpot,373,16450
4870 splswiftexpot,373,16450
4871 splspeedexpot,373,16450
4872 spswepot,373,16450
4873 splashfireresistanceextendedpotion,373,16451
4874 splashfireresistextendedpotion,373,16451
4953 splstrengthexpot,373,16457
4954 splstrongexpot,373,16457
4955 splstrexpot,373,16457
4956 spsepot,373,16457 spstepot,373,16457
4957 splashslownessextendedpotion,373,16458
4958 splashslowextenedpotion,373,16458
4959 splashslownessexpotion,373,16458
4983 splregenerationdualbitpot,373,16481
4984 splregeneratedualbitpot,373,16481
4985 splregendualbitpot,373,16481
4986 splashregenerationdbpotion,373,16481
4987 splashregeneratedbpotion,373,16481
4988 splashregendbpotion,373,16481
4989 splashregenerationdbpot,373,16481
4990 splashregeneratedbpot,373,16481
4991 splashregendbpot,373,16481
4992 splregenerationdbpotion,373,16481
4993 splregeneratedbpotion,373,16481
4994 splregendbpotion,373,16481
4995 splregenerationdbpot,373,16481
4996 splregeneratedbpot,373,16481
4997 splregendbpot,373,16481
4998 sprdbpot,373,16481
4999 splashswiftnessdualbitpotion,373,16482
5000 splashswiftdualbitpotion,373,16482
5001 splashspeeddualbitpotion,373,16482
5002 splashswiftnessdualbitpot,373,16482
5003 splashswiftdualbitpot,373,16482
5004 splashspeeddualbitpot,373,16482
5005 splswiftnessdualbitpotion,373,16482
5006 splswiftdualbitpotion,373,16482
5007 splspeeddualbitpotion,373,16482
5008 splswiftnessdualbitpot,373,16482
5009 splswiftdualbitpot,373,16482
5010 splspeeddualbitpot,373,16482
5011 splashswiftnessdbpotion,373,16482
5012 splashswiftdbpotion,373,16482
5013 splashspeeddbpotion,373,16482
5014 splashswiftnessdbpot,373,16482
5015 splashswiftdbpot,373,16482
5016 splashspeeddbpot,373,16482
5017 splswiftnessdbpotion,373,16482
5018 splswiftdbpotion,373,16482
5019 splspeeddbpotion,373,16482
5020 splswiftnessdbpot,373,16482
5021 splswiftdbpot,373,16482
5022 splspeeddbpot,373,16482
5023 spswdbpot,373,16482
5024 splashpoisondualbitpotion,373,16484
5025 splashaciddualbitpotion,373,16484
5029 splaciddualbitpotion,373,16484
5030 splpoisondualbitpot,373,16484
5031 splaciddualbitpot,373,16484
5032 splashpoisondbpotion,373,16484
5033 splashaciddbpotion,373,16484
5034 splashpoisondbpot,373,16484
5035 splashaciddbpot,373,16484
5036 splpoisondbpotion,373,16484
5037 splaciddbpotion,373,16484
5038 splpoisondbpot,373,16484
5039 splaciddbpot,373,16484
5040 sppdbpot,373,16484
5041 splashstrengthdualbitpotion,373,16489
5042 splashstrongdualbitpotion,373,16489
5050 splstrengthdualbitpot,373,16489
5051 splstrongdualbitpot,373,16489
5052 splstrdualbitpot,373,16489
5053 spsdbpot,373,16489 splashstrengthdbpotion,373,16489
5054 splashstrongdbpotion,373,16489
5055 splashstrdbpotion,373,16489
5056 splashstrengthdbpot,373,16489
5057 splashstrongdbpot,373,16489
5058 splashstrdbpot,373,16489
5059 splstrengthdbpotion,373,16489
5060 splstrongdbpotion,373,16489
5061 splstrdbpotion,373,16489
5062 splstrengthdbpot,373,16489
5063 splstrongdbpot,373,16489
5064 splstrdbpot,373,16489
5065 spstdbpot,373,16489
5066 glassbottle,374,0
5067 bottle,374,0
5068 gbottle,374,0

View file

@ -28,7 +28,7 @@ banIpAddress=\u00a76Banned IP address
bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt.
bigTreeSuccess= \u00a76Big tree spawned.
blockList=\u00a76Essentials relayed the following commands to another plugin:
broadcast=\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
buildAlert=\u00a74You are not permitted to build
bukkitFormatChanged=Bukkit version format changed. Version not checked.
burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76.
@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a74You have nobody to whom you can reply.
freedMemory=Freed {0} MB.
gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for {1}\u00a76.
gcchunks= chunks,
gcentities= entities
gcfree=\u00a76Free memory:\u00a7c {0} MB
gcmax=\u00a76Maximum memory:\u00a7c {0} MB
gctotal=\u00a76Allocated memory:\u00a7c {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -108,8 +108,6 @@ flying=flying
foreverAlone=\u00a7cNemas komu odepsat.
freedMemory=Uvolneno {0} MB.
gameMode=\u00a77Nastavil jsi herni mod z {0} na {1}.
gcchunks= chunky,
gcentities= entity
gcfree=Volna pamet: {0} MB
gcmax=Dostupna pamet: {0} MB
gctotal=Vyuzita pamet: {0} MB
@ -459,3 +457,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cDu har ingen til hvem du kan svare.
freedMemory=Frigjorde {0} MB.
gameMode=\u00a77Satte game mode {0} for {1}.
gcchunks= chunks,
gcentities= entities
gcfree=Free memory: {0} MB
gcmax=Maximum memory: {0} MB
gctotal=Allocated memory: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cDu hast niemanden, dem du antworten kannst.
freedMemory={0} MB frei gemacht.
gameMode=\u00a77Set game mode {0} for {1}.
gcchunks= Chunks,
gcentities= Einheiten
gcfree=Freier Speicher: {0} MB
gcmax=Maximaler Speicher: {0} MB
gctotal=Reservierter Speicher: {0} MB
@ -232,7 +230,7 @@ nickChanged=Nickname ge\u00e4ndert.
nickDisplayName=\u00a77Du musst \u00a7fchange-displayname\u00a7c in der Essentials-Config aktivieren.
nickInUse=\u00a7cDieser Name wird bereits verwendet.
nickNamesAlpha=\u00a7cNicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten.
nickNoMore=\u00a7Du hast keinen Nicknamen mehr.
nickNoMore=\u00a7cDu hast keinen Nicknamen mehr.
nickOthersPermission=\u00a7cDu hast keine Rechte um den Nicknamen von anderen zu \u00e4ndern.
nickSet=\u00a77Dein Nickname ist nun \u00a7c{0}
noAccessCommand=\u00a7cDu hast keinen Zugriff auf diesen Befehl.
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -28,7 +28,7 @@ banIpAddress=\u00a76Banned IP address
bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt.
bigTreeSuccess= \u00a76Big tree spawned.
blockList=\u00a76Essentials relayed the following commands to another plugin:
broadcast=\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
buildAlert=\u00a74You are not permitted to build
bukkitFormatChanged=Bukkit version format changed. Version not checked.
burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76.
@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a74You have nobody to whom you can reply.
freedMemory=Freed {0} MB.
gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for {1}\u00a76.
gcchunks= chunks,
gcentities= entities
gcfree=\u00a76Free memory:\u00a7c {0} MB
gcmax=\u00a76Maximum memory:\u00a7c {0} MB
gctotal=\u00a76Allocated memory:\u00a7c {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=volando
foreverAlone=\u00a7cNo tienes nadie a quien puedas responder.
freedMemory= {0} MB libres.
gameMode=\u00a77Modo de juego {0} activado para {1}.
gcchunks= pixeles
gcentities= entidades
gcfree=Memoria libre: {0} MB
gcmax=Memoria maxima: {0} MB
gctotal=Memoria localizada: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cSinulla ei ole ket\u00e4\u00e4n kenelle vastata.
freedMemory=Vapaata muistia {0} MB.
gameMode=\u00a77Asetit pelimuodon "{0}" pelaajalle {1}.
gcchunks= chunkkia,
gcentities= kokonaisuutta
gcfree=Vapaa muisti: {0} MB
gcmax=Maksimi muisti: {0} MB
gctotal=Sallittu muisti: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cVous n''avez personne \u00e0 qui r\u00e9pondre
freedMemory=A lib\u00e9r\u00e9 {0} Mo.
gameMode=\u00a77Mode de jeu {0} pour {1}.
gcchunks=portions,
gcentities=entit\u00e9s
gcfree=M\u00e9moire libre : {0} Mo
gcmax=M\u00e9moire maximale : {0} Mo
gctotal=M\u00e9moire utilis\u00e9e : {0} Mo
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cNon c''e'' nessuno a cui rispondere.
freedMemory=Liberati {0} MB.
gameMode=\u00a77Modalita''di gioco {0} impostata per {1}.
gcchunks= blocchi,
gcentities= entita''
gcfree=Memoria libera: {0} MB
gcmax=Memoria massima: {0} MB
gctotal=Memoria allocata: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=vliegen
foreverAlone=\u00a7cJe hebt niemand waarnaar je kan reageren.
freedMemory={0} MB gelost.
gameMode=\u00a77Zet spel modus {0} voor {1}.
gcchunks= chunks,
gcentities= entiteiten
gcfree=Vrij geheugen: {0} MB
gcmax=Maximaal geheugen: {0} MB
gctotal=Gealloceerd geheugen: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cNie masz komu odpisac.
freedMemory=Zwolniono {0} MB.
gameMode=\u00a77Ustawiono tryb gry {0} dla {1}.
gcchunks= chunki
gcentities= jednostki
gcfree=Wolna pamiec: {0} MB
gcmax=Maksymalna pamiec: {0} MB
gctotal=Alokowana pamiec: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cVoc\u00ea nao tem ninguem a quem responder.
freedMemory=Livre {0} MB.
gameMode=\u00a77Gamemode {0} definido para {1}.
gcchunks= chunks,
gcentities= entidades
gcfree=Memoria livre: {0} MB
gcmax=Mem\u00f3ria Maxima: {0} MB
gctotal=Mem\u00f3ria alocada: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -105,8 +105,6 @@ flying=flying
foreverAlone=\u00a7cDu har ingen att svara.
freedMemory=Befriade {0} MB.
gameMode=\u00a77Satte {0}s spell\u00e4ge till {1}.
gcchunks= bitar,
gcentities= enheter
gcfree=Ledigt minne: {0} MB
gcmax=Maximalt minne: {0} MB
gctotal=Tilldelat minne: {0} MB
@ -456,3 +454,7 @@ distance=\u00a76Distance: {0}
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
warpList={0}
uptime=\u00a76Uptime:\u00a7c {0}
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76": \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities
invalidHomeName=\u00a74Invalid home name

View file

@ -128,9 +128,9 @@ commands:
usage: /<command> [player]
aliases: [coords,egetpos,position,eposition,whereami,ewhereami]
gc:
description: Reports garbage collection and tick info; useful to developers.
description: Reports memory, uptime and tick info.
usage: /<command>
aliases: [elag,lag,mem,memory,egc,emem,ememory]
aliases: [elag,lag,mem,memory,egc,emem,ememory,uptime,euptime]
give:
description: Give a player an item.
usage: /<command> <player> <item|numeric> [amount <enchantmentname[:level]> ...]
@ -351,7 +351,7 @@ commands:
usage: /<command> [day|night|dawn|17:30|4pm|4000ticks] [worldname|all]
aliases: [etime, day, night, eday, enight]
togglejail:
description: Jails/Unjails a player and tp them to the jail specified.
description: Jails/Unjails a player, TPs them to the jail specified.
usage: /<command> <player> <jailname> [datediff]
aliases: [tjail,jail,ejail,unjail,eunjail,etogglejail]
top:
@ -450,3 +450,8 @@ commands:
description: Calculates the worth of items in hand or as specified.
usage: /<command> [item] [amount]
aliases: [eworth,price,eprice]
permissions:
essentials.*:
default: op
description: Give players with op everything by default

View file

@ -7,13 +7,17 @@ import java.util.logging.Level;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.*;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
@ -28,7 +32,7 @@ public class EssentialsAntiBuildListener implements Listener
this.ess = prot.getEssentialsConnect().getEssentials();
}
private boolean metaPermCheck(User user, String action, Block block)
private boolean metaPermCheck(final User user, final String action, final Block block)
{
if (block == null)
{
@ -37,13 +41,13 @@ public class EssentialsAntiBuildListener implements Listener
return metaPermCheck(user, action, block.getTypeId(), block.getData());
}
private boolean metaPermCheck(User user, String action, int blockId)
private boolean metaPermCheck(final User user, final String action, final int blockId)
{
final String blockPerm = "essentials.build." + action + "." + blockId;
return user.isAuthorized(blockPerm);
}
private boolean metaPermCheck(User user, String action, int blockId, byte data)
private boolean metaPermCheck(final User user, final String action, final int blockId, final byte data)
{
final String blockPerm = "essentials.build." + action + "." + blockId;
final String dataPerm = blockPerm + ":" + data;
@ -137,7 +141,7 @@ public class EssentialsAntiBuildListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPaintingBreak(PaintingBreakByEntityEvent event)
public void onPaintingBreak(final PaintingBreakByEntityEvent event)
{
final Entity entity = event.getRemover();
if (entity instanceof Player)
@ -156,7 +160,7 @@ public class EssentialsAntiBuildListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPistonExtend(BlockPistonExtendEvent event)
public void onBlockPistonExtend(final BlockPistonExtendEvent event)
{
for (Block block : event.getBlocks())
{
@ -169,7 +173,7 @@ public class EssentialsAntiBuildListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPistonRetract(BlockPistonRetractEvent event)
public void onBlockPistonRetract(final BlockPistonRetractEvent event)
{
if (!event.isSticky())
{
@ -230,4 +234,66 @@ public class EssentialsAntiBuildListener implements Listener
}
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onCraftItemEvent(final CraftItemEvent event)
{
HumanEntity entity = event.getWhoClicked();
if (entity instanceof Player)
{
final User user = ess.getUser(entity);
final ItemStack item = event.getRecipe().getResult();
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (!metaPermCheck(user, "craft", item.getTypeId(), item.getData().getData()))
{
event.setCancelled(true);
if (ess.getSettings().warnOnBuildDisallow())
{
user.sendMessage(_("antiBuildCraft", item.getType().toString()));
}
}
}
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerPickupItem(PlayerPickupItemEvent event)
{
final User user = ess.getUser(event.getPlayer());
final ItemStack item = event.getItem().getItemStack();
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (!metaPermCheck(user, "pickup", item.getTypeId(), item.getData().getData()))
{
event.setCancelled(true);
event.getItem().setPickupDelay(50);
}
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerDropItem(final PlayerDropItemEvent event)
{
final User user = ess.getUser(event.getPlayer());
final ItemStack item = event.getItemDrop().getItemStack();
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (!metaPermCheck(user, "drop", item.getTypeId(), item.getData().getData()))
{
event.setCancelled(true);
user.updateInventory();
if (ess.getSettings().warnOnBuildDisallow())
{
user.sendMessage(_("antiBuildDrop", item.getType().toString()));
}
}
}
}
}

View file

@ -25,14 +25,9 @@ public class EssentialsProtectBlockListener implements Listener
this.ess = prot.getEssentialsConnect().getEssentials();
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(final BlockPlaceEvent event)
{
if (event.isCancelled())
{
return;
}
final User user = ess.getUser(event.getPlayer());
final Block blockPlaced = event.getBlockPlaced();
@ -79,13 +74,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockIgnite(BlockIgniteEvent event)
{
if (event.isCancelled())
{
return;
}
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))
@ -130,13 +121,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockFromTo(final BlockFromToEvent event)
{
if (event.isCancelled())
{
return;
}
final Block toBlock = event.getToBlock();
if ((toBlock.getType() == Material.RAILS || toBlock.getType() == Material.POWERED_RAIL || toBlock.getType() == Material.DETECTOR_RAIL)
&& prot.getSettingBool(ProtectConfig.protect_rails))
@ -171,13 +158,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBurn(final BlockBurnEvent event)
{
if (event.isCancelled())
{
return;
}
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))
{
@ -207,13 +190,9 @@ public class EssentialsProtectBlockListener implements Listener
BlockFace.SELF
};
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(final BlockBreakEvent event)
{
if (event.isCancelled())
{
return;
}
final User user = ess.getUser(event.getPlayer());
final Block block = event.getBlock();
@ -290,13 +269,9 @@ public class EssentialsProtectBlockListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPistonExtend(BlockPistonExtendEvent event)
{
if (event.isCancelled())
{
return;
}
for (Block block : event.getBlocks())
{
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
@ -338,10 +313,10 @@ public class EssentialsProtectBlockListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPistonRetract(BlockPistonRetractEvent event)
{
if (event.isCancelled() || !event.isSticky())
if (!event.isSticky())
{
return;
}

View file

@ -26,13 +26,9 @@ public class EssentialsProtectEntityListener implements Listener
this.ess = prot.getEssentialsConnect().getEssentials();
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityDamage(final EntityDamageEvent event)
{
if (event.isCancelled())
{
return;
}
final Entity target = event.getEntity();
if (target instanceof Villager && prot.getSettingBool(ProtectConfig.prevent_villager_death))
@ -191,10 +187,10 @@ public class EssentialsProtectEntityListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityExplode(final EntityExplodeEvent event)
{
if (event.isCancelled() || event.getEntity() == null)
if (event.getEntity() == null)
{
return;
}
@ -263,17 +259,13 @@ public class EssentialsProtectEntityListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onCreatureSpawn(final CreatureSpawnEvent event)
{
if (event.getEntity() instanceof Player)
{
return;
}
if (event.isCancelled())
{
return;
}
final EntityType creature = event.getEntityType();
if (creature == null)
{
@ -290,13 +282,9 @@ public class EssentialsProtectEntityListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityTarget(final EntityTargetEvent event)
{
if (event.isCancelled())
{
return;
}
if (!(event.getTarget() instanceof Player))
{
return;
@ -316,7 +304,7 @@ public class EssentialsProtectEntityListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onExplosionPrime(ExplosionPrimeEvent event)
{
if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
@ -326,13 +314,9 @@ public class EssentialsProtectEntityListener implements Listener
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityChangeBlock(EntityChangeBlockEvent event)
{
if (event.isCancelled())
{
return;
}
if (event.getEntityType() == EntityType.ENDERMAN && prot.getSettingBool(ProtectConfig.prevent_enderman_pickup))
{
event.setCancelled(true);

View file

@ -17,11 +17,10 @@ public class EssentialsProtectWeatherListener implements Listener
this.prot = prot;
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onWeatherChange(final WeatherChangeEvent event)
{
if (!event.isCancelled()
&& prot.getSettingBool(ProtectConfig.disable_weather_storm)
if (prot.getSettingBool(ProtectConfig.disable_weather_storm)
&& event.toWeatherState())
{
event.setCancelled(true);
@ -29,21 +28,19 @@ public class EssentialsProtectWeatherListener implements Listener
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onLightningStrike(final LightningStrikeEvent event)
{
if (!event.isCancelled()
&& prot.getSettingBool(ProtectConfig.disable_weather_lightning))
if (prot.getSettingBool(ProtectConfig.disable_weather_lightning))
{
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onThunderChange(final ThunderChangeEvent event)
{
if (!event.isCancelled()
&& prot.getSettingBool(ProtectConfig.disable_weather_thunder)
if (prot.getSettingBool(ProtectConfig.disable_weather_thunder)
&& event.toThunderState())
{
event.setCancelled(true);

View file

@ -101,7 +101,11 @@ public class EssentialsSpawnPlayerListener implements Listener
{
final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user, ess);
final SimpleTextPager pager = new SimpleTextPager(output);
ess.broadcastMessage(user, pager.getString(0));
for (String line : pager.getLines())
{
ess.broadcastMessage(user, line);
}
}
final String kitName = ess.getSettings().getNewPlayerKit();