2.9 Release

This commit is contained in:
ementalo 2012-10-26 09:48:45 +01:00
commit ff6221f1a8
57 changed files with 1082 additions and 188 deletions

4
.gitignore vendored
View file

@ -42,4 +42,6 @@
/EssentialsGroupManager/.externalToolBuilders
/EssentialsAntiBuild/nbproject/private/
/EssentialsAntiBuild/dist/
/EssentialsAntiBuild/build/
/EssentialsAntiBuild/build/
/jars
/out

View file

@ -65,7 +65,7 @@ import org.yaml.snakeyaml.error.YAMLException;
public class Essentials extends JavaPlugin implements IEssentials
{
public static final int BUKKIT_VERSION = 2352;
public static final int BUKKIT_VERSION = 2396;
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient ISettings settings;
private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this);

View file

@ -344,6 +344,11 @@ public class EssentialsConf extends YamlConfiguration
}
}
public void saveWithError() throws IOException
{
save(configFile);
}
@Override
public synchronized void save(final File file) throws IOException
{

View file

@ -27,6 +27,7 @@ public class EssentialsEntityListener implements Listener
this.ess = ess;
}
// This method does something undocumented reguarding certain bucket types #EasterEgg
@EventHandler(priority = EventPriority.LOW)
public void onEntityDamage(final EntityDamageByEntityEvent event)
{
@ -53,6 +54,11 @@ public class EssentialsEntityListener implements Listener
event.setCancelled(true);
}
if (attacker.isHidden() && !attacker.isAuthorized("essentials.vanish.pvp"))
{
event.setCancelled(true);
}
attacker.updateActivity(true);
final List<String> commandList = attacker.getPowertool(attacker.getItemInHand());
if (commandList != null && !commandList.isEmpty())

View file

@ -213,6 +213,7 @@ public class EssentialsPlayerListener implements Listener
}
}
// Makes the compass item ingame always point to the first essentials home. #EasterEgg
private void updateCompass(final User user)
{
Location loc = user.getHome(user.getLocation());
@ -347,7 +348,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();
@ -414,6 +415,7 @@ public class EssentialsPlayerListener implements Listener
}
}
// This method allows the /jump lock feature to work, allows teleporting while flying #EasterEgg
private void useFlyClickJump(final User user)
{
try

View file

@ -20,6 +20,9 @@ public class EssentialsPluginListener implements Listener, IConf
@EventHandler(priority = EventPriority.MONITOR)
public void onPluginEnable(final PluginEnableEvent event)
{
if (event.getPlugin().getName().equals("EssentialsChat")) {
ess.getSettings().setEssentialsChatActive(true);
}
ess.getPermissionsHandler().checkPermissions();
ess.getAlternativeCommandsHandler().addPlugin(event.getPlugin());
if (!ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().setMethod(ess.getServer().getPluginManager()))
@ -31,6 +34,9 @@ public class EssentialsPluginListener implements Listener, IConf
@EventHandler(priority = EventPriority.MONITOR)
public void onPluginDisable(final PluginDisableEvent event)
{
if (event.getPlugin().getName().equals("EssentialsChat")) {
ess.getSettings().setEssentialsChatActive(false);
}
ess.getPermissionsHandler().checkPermissions();
ess.getAlternativeCommandsHandler().removePlugin(event.getPlugin());
// Check to see if the plugin thats being disabled is the one we are using

View file

@ -179,4 +179,8 @@ public interface ISettings extends IConf
double getMaxFlySpeed();
double getMaxWalkSpeed();
public int getMailsPerMinute();
public void setEssentialsChatActive(boolean b);
}

View file

@ -439,6 +439,7 @@ public class Settings implements ISettings
chatRadius = _getChatRadius();
commandCosts = _getCommandCosts();
warnOnBuildDisallow = _warnOnBuildDisallow();
mailsPerMinute = _getMailsPerMinute();
}
private List<Integer> itemSpawnBl = new ArrayList<Integer>();
@ -695,6 +696,7 @@ public class Settings implements ISettings
}
private boolean prefixsuffixconfigured = false;
private boolean addprefixsuffix = false;
private boolean essentialsChatActive = false;
private boolean _addPrefixSuffix()
{
@ -706,10 +708,16 @@ public class Settings implements ISettings
return config.hasProperty("add-prefix-suffix");
}
@Override
public void setEssentialsChatActive(boolean essentialsChatActive)
{
this.essentialsChatActive = essentialsChatActive;
}
@Override
public boolean addPrefixSuffix()
{
return prefixsuffixconfigured ? addprefixsuffix : ess.getServer().getPluginManager().isPluginEnabled("EssentialsChat");
return prefixsuffixconfigured ? addprefixsuffix : essentialsChatActive;
}
private boolean disablePrefix = false;
@ -928,10 +936,23 @@ public class Settings implements ISettings
return maxSpeed > 1.0 ? 1.0 : Math.abs(maxSpeed);
}
//This option does not exist in the config.yml because it wasn't yet implemented in bukkit
//The code was commented out in the /speed command
@Override
public double getMaxWalkSpeed()
{
double maxSpeed = config.getDouble("max-walk-speed", 0.8);
return maxSpeed > 1.0 ? 1.0 : Math.abs(maxSpeed);
}
private int mailsPerMinute;
private int _getMailsPerMinute() {
return config.getInt("mails-per-minute", 1000);
}
@Override
public int getMailsPerMinute()
{
return mailsPerMinute;
}
}

View file

@ -37,16 +37,17 @@ 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
private long tpdelay; // how long to delay the teleport
private int health;
// note that I initially stored a clone of the location for reference, but...
// when comparing locations, I got incorrect mismatches (rounding errors, looked like)
@ -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.tpdelay = delay;
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)
if (now > started + tpdelay)
{
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, delay);
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, delay);
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, final double delay)
{
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);
user.sendMessage(_("warpingTo", warp));
teleport(new Target(loc), chargeFor, cause);
}
//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

@ -234,6 +234,9 @@ public class Trade
public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, Location loc, IEssentials ess)
{
//isEcoLogUpdateEnabled() - This refers to log entries with no location, ie API updates #EasterEgg
//isEcoLogEnabled() - This refers to log entries with with location, ie /pay /sell and eco signs.
if ((loc == null && !ess.getSettings().isEcoLogUpdateEnabled())
|| (loc != null && !ess.getSettings().isEcoLogEnabled()))
{

View file

@ -306,6 +306,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
if (ess.getSettings().addPrefixSuffix())
{
//These two extra toggles are not documented, because they are mostly redundant #EasterEgg
if (!ess.getSettings().disablePrefix())
{
final String ptext = ess.getPermissionsHandler().getPrefix(base).replace('&', '§');

View file

@ -161,7 +161,7 @@ public abstract class UserData extends PlayerExtension implements IConf
public void setHome(String name, Location loc)
{
//Invalid names will corrupt the yaml
name = Util.sanitizeFileName(name);
name = Util.safeString(name);
homes.put(name, loc);
config.setProperty("homes." + name, loc);
config.save();
@ -172,7 +172,7 @@ public abstract class UserData extends PlayerExtension implements IConf
String search = getHomeName(name);
if (!homes.containsKey(search))
{
search = Util.sanitizeFileName(search);
search = Util.safeString(search);
}
if (homes.containsKey(search))
{
@ -635,7 +635,10 @@ public abstract class UserData extends PlayerExtension implements IConf
public void setLastLogin(long time)
{
_setLastLogin(time);
_setLastLoginAddress(base.getAddress().getAddress().getHostAddress());
if (base.getAddress() != null && base.getAddress().getAddress() != null)
{
_setLastLoginAddress(base.getAddress().getAddress().getHostAddress());
}
config.save();
}
private long lastLogout;

View file

@ -24,12 +24,19 @@ public class Util
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]");
//Used to clean file names before saving to disk
public static String sanitizeFileName(final String name)
{
final String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
return newName;
return safeString(name);
}
//Used to clean strings/names before saving as filenames/permissions
public static String safeString(final String string)
{
return INVALIDFILECHARS.matcher(string.toLowerCase(Locale.ENGLISH)).replaceAll("_");
}
//Less restrictive string sanitizing, when not used as perm or filename
public static String sanitizeString(final String string)
{
return INVALIDCHARS.matcher(string).replaceAll("");

View file

@ -3,6 +3,7 @@ package com.earth2me.essentials;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.commands.WarpNotFoundException;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -70,7 +71,14 @@ public class Warps implements IConf
}
conf.setProperty(null, loc);
conf.setProperty("name", name);
conf.save();
try
{
conf.saveWithError();
}
catch (IOException ex)
{
throw new IOException(_("invalidWarpName"));
}
}
public void delWarp(String name) throws Exception

View file

@ -6,7 +6,7 @@ import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.entity.TNTPrimed;
// This command has a in theme message that only shows if you supply a parameter #EasterEgg
public class Commandantioch extends EssentialsCommand
{
public Commandantioch()

View file

@ -27,6 +27,7 @@ public class Commandbalance extends EssentialsCommand
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
//TODO: Remove 'other' perm
final double bal = (args.length < 1
|| !(user.isAuthorized("essentials.balance.others")
|| user.isAuthorized("essentials.balance.other"))

View file

@ -20,6 +20,7 @@ public class Commandban extends EssentialsCommand
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
boolean nomatch = false;
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
@ -31,6 +32,7 @@ public class Commandban extends EssentialsCommand
}
catch (NoSuchFieldException e)
{
nomatch = true;
user = ess.getUser(new OfflinePlayer(args[0], ess));
}
if (!user.isOnline())
@ -44,7 +46,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;
@ -65,13 +67,17 @@ public class Commandban extends EssentialsCommand
user.setBanReason(banReason);
user.setBanned(true);
user.kickPlayer(banReason);
server.getLogger().log(Level.INFO, _("playerBanned", senderName, user.getName(), banReason));
if (nomatch) {
sender.sendMessage(_("userUnknown", user.getName()));
}
for (Player onlinePlayer : server.getOnlinePlayers())
{
final User player = ess.getUser(onlinePlayer);
if (player.isAuthorized("essentials.ban.notify"))
if (onlinePlayer == sender || player.isAuthorized("essentials.ban.notify"))
{
onlinePlayer.sendMessage(_("playerBanned", senderName, user.getName(), banReason));
}

View file

@ -14,7 +14,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
// This command has 4 undocumented behaviours #EasterEgg
public class Commandessentials extends EssentialsCommand
{
public Commandessentials()
@ -55,6 +55,7 @@ public class Commandessentials extends EssentialsCommand
}
}
//If you do not supply an argument this command will list 'overridden' commands.
private void run_disabled(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
sender.sendMessage("Essentials " + ess.getDescription().getVersion());

View file

@ -41,18 +41,25 @@ public class Commandgamemode extends EssentialsCommand
gamemodeOtherPlayers(server, user, gameMode, args[1]);
return;
}
else
else
{
try {
try
{
gameMode = matchGameMode(args[0].toLowerCase(Locale.ENGLISH));
}
catch (NotEnoughArgumentsException e) {
gameMode = matchGameMode(commandLabel);
gamemodeOtherPlayers(server, user, gameMode, args[0]);
return;
catch (NotEnoughArgumentsException e)
{
if (user.isAuthorized("essentials.gamemode.others"))
{
gameMode = matchGameMode(commandLabel);
gamemodeOtherPlayers(server, user, gameMode, args[0]);
return;
}
throw new NotEnoughArgumentsException();
}
}
if (gameMode == null) {
if (gameMode == null)
{
gameMode = user.getGameMode() == GameMode.SURVIVAL ? GameMode.CREATIVE : user.getGameMode() == GameMode.CREATIVE ? GameMode.ADVENTURE : GameMode.SURVIVAL;
}
user.setGameMode(gameMode);
@ -104,11 +111,12 @@ public class Commandgamemode extends EssentialsCommand
mode = GameMode.ADVENTURE;
}
else if (modeString.equalsIgnoreCase("gmt") || modeString.equalsIgnoreCase("egmt")
|| modeString.contains("toggle") || modeString.contains("cycle") || modeString.equalsIgnoreCase("t"))
|| modeString.contains("toggle") || modeString.contains("cycle") || modeString.equalsIgnoreCase("t"))
{
mode = null;
}
else {
else
{
throw new NotEnoughArgumentsException();
}
return mode;

View file

@ -23,7 +23,6 @@ public class Commandhome extends EssentialsCommand
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
final Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
User player = user;
String homeName = "";
String[] nameParts;
@ -45,7 +44,7 @@ public class Commandhome extends EssentialsCommand
}
try
{
if ("bed".equalsIgnoreCase(homeName))
if ("bed".equalsIgnoreCase(homeName) && user.isAuthorized("essentials.home.bed"))
{
final Location bed = player.getBedSpawnLocation();
if (bed != null && bed.getBlock().getType() == Material.BED_BLOCK)

View file

@ -8,7 +8,7 @@ import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
// This method contains an undocumented sub command #EasterEgg
public class Commandjump extends EssentialsCommand
{
public Commandjump()

View file

@ -24,23 +24,29 @@ public class Commandkick extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final User user = getPlayer(server, args, 0);
if (sender instanceof Player && user.isAuthorized("essentials.kick.exempt"))
{
throw new Exception(_("kickExempt"));
final User target = getPlayer(server, args, 0, true);
if (sender instanceof Player) {
User user = ess.getUser(sender);
if (target.isHidden() && !user.isAuthorized("essentials.list.hidden")) {
throw new PlayerNotFoundException();
}
if (target.isAuthorized("essentials.kick.exempt"))
{
throw new Exception(_("kickExempt"));
}
}
final String kickReason = args.length > 1 ? getFinalArg(args, 1) : _("kickDefault");
user.kickPlayer(kickReason);
target.kickPlayer(kickReason);
final String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, _("playerKicked", senderName, user.getName(), kickReason));
server.getLogger().log(Level.INFO, _("playerKicked", senderName, target.getName(), kickReason));
for (Player onlinePlayer : server.getOnlinePlayers())
{
User player = ess.getUser(onlinePlayer);
if (player.isAuthorized("essentials.kick.notify"))
{
onlinePlayer.sendMessage(_("playerKicked", senderName, user.getName(), kickReason));
onlinePlayer.sendMessage(_("playerKicked", senderName, target.getName(), kickReason));
}
}
}

View file

@ -21,7 +21,7 @@ public class Commandkill extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
//TODO: TL this
if (args[0].trim().length() < 2)
{
@ -32,12 +32,18 @@ public class Commandkill extends EssentialsCommand
{
final EntityDamageEvent ede = new EntityDamageEvent(matchPlayer, sender instanceof Player && ((Player)sender).getName().equals(matchPlayer.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, Short.MAX_VALUE);
server.getPluginManager().callEvent(ede);
if (ede.isCancelled() && !sender.hasPermission("essentials.kill.force"))
if (ede.isCancelled() && sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.kill.force"))
{
continue;
}
matchPlayer.damage(Short.MAX_VALUE);
if (matchPlayer.getHealth() > 0)
{
matchPlayer.setHealth(0);
}
sender.sendMessage(_("kill", matchPlayer.getDisplayName()));
}
}

View file

@ -7,7 +7,7 @@ import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.entity.Ocelot;
// This command is not documented on the wiki #EasterEgg
public class Commandkittycannon extends EssentialsCommand
{
private static Random random = new Random();

View file

@ -11,6 +11,9 @@ import org.bukkit.entity.Player;
public class Commandmail extends EssentialsCommand
{
private static int mailsPerMinute = 0;
private static long timestamp = 0;
public Commandmail()
{
super("mail");
@ -58,8 +61,22 @@ public class Commandmail extends EssentialsCommand
}
if (!u.isIgnoredPlayer(user))
{
final String mail = Util.sanitizeString(Util.stripFormat(getFinalArg(args, 2)));
u.addMail(user.getName() + ": " + mail);
final String mail = user.getName() + ": " + Util.sanitizeString(Util.stripFormat(getFinalArg(args, 2)));
if (mail.length() > 1000)
{
throw new Exception("Mail message too long. Try to keep it below 1000");
}
if (Math.abs(System.currentTimeMillis() - timestamp) > 60000)
{
timestamp = System.currentTimeMillis();
mailsPerMinute = 0;
}
mailsPerMinute++;
if (mailsPerMinute > ess.getSettings().getMailsPerMinute())
{
throw new Exception("Too many mails have been send within the last minute. Maximum: " + ess.getSettings().getMailsPerMinute());
}
u.addMail(mail);
}
user.sendMessage(_("mailSent"));
return;

View file

@ -5,7 +5,7 @@ import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
// This command can be used to echo messages to the users screen, mostly useless but also an #EasterEgg
public class Commandping extends EssentialsCommand
{
public Commandping()

View file

@ -2,6 +2,7 @@ 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 org.bukkit.Location;
import org.bukkit.Server;
@ -45,7 +46,7 @@ public class Commandsethome extends EssentialsCommand
}
if (usersHome == null)
{
throw new Exception(_("playerNotFound"));
throw new NoSuchFieldException(_("playerNotFound"));
}
name = args[1].toLowerCase(Locale.ENGLISH);
}
@ -55,9 +56,9 @@ public class Commandsethome extends EssentialsCommand
{
name = "home";
}
if ("bed".equals(name))
if ("bed".equals(name) || Util.isInt(name))
{
throw new NotEnoughArgumentsException();
throw new NoSuchFieldException(_("invalidHomeName"));
}
usersHome.setHome(name, location);
user.sendMessage(_("homeSet", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ()));

View file

@ -22,9 +22,10 @@ public class Commandsetwarp extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
if (args[0].matches("[0-9]+")) {
throw new NotEnoughArgumentsException();
if (Util.isInt(args[0]))
{
throw new NoSuchFieldException(_("invalidWarpName"));
}
final Location loc = user.getLocation();
@ -39,7 +40,7 @@ public class Commandsetwarp extends EssentialsCommand
{
}
if (warpLoc == null || user.isAuthorized("essentials.warp.overwrite." + Util.sanitizeFileName(args[0])))
if (warpLoc == null || user.isAuthorized("essentials.warp.overwrite." + Util.safeString(args[0])))
{
warps.setWarp(args[0], loc);
}

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].toLowerCase().startsWith("c:"))
{
if (user.isAuthorized("essentials.sudo.exempt") && sender instanceof Player)
{
throw new Exception(_("sudoExempt"));
}
user.chat(getFinalArg(args, 1).substring(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,7 +65,7 @@ public class Commandtpaccept extends EssentialsCommand
if (user.isTpRequestHere())
{
user.getTeleport().teleport(target, charge, TeleportCause.COMMAND);
target.getTeleport().teleportToMe(user, charge, TeleportCause.COMMAND);
}
else
{

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

@ -37,8 +37,9 @@ public class Commandwarp extends EssentialsCommand
}
if (args.length > 0)
{
//TODO: Remove 'otherplayers' permission.
User otherUser = null;
if (args.length == 2 && user.isAuthorized("essentials.warp.otherplayers"))
if (args.length == 2 && (user.isAuthorized("essentials.warp.otherplayers") || user.isAuthorized("essentials.warp.others")))
{
otherUser = ess.getUser(server.getPlayer(args[1]));
if (otherUser == null)

View file

@ -56,14 +56,14 @@ public abstract class EssentialsCommand implements IEssentialsCommand
}
if (args[pos].isEmpty())
{
throw new NoSuchFieldException(_("playerNotFound"));
throw new PlayerNotFoundException();
}
final User user = ess.getUser(args[pos]);
if (user != null)
{
if (!getOffline && (!user.isOnline() || user.isHidden()))
{
throw new NoSuchFieldException(_("playerNotFound"));
throw new PlayerNotFoundException();
}
return user;
}
@ -85,7 +85,7 @@ public abstract class EssentialsCommand implements IEssentialsCommand
return userMatch;
}
}
throw new NoSuchFieldException(_("playerNotFound"));
throw new PlayerNotFoundException();
}
@Override

View file

@ -0,0 +1,11 @@
package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._;
public class PlayerNotFoundException extends NoSuchFieldException
{
public PlayerNotFoundException()
{
super(_("playerNotFound"));
}
}

View file

@ -21,6 +21,11 @@ public class SignPlayerListener implements Listener
this.ess = ess;
}
//This following code below listens to cancelled events to fix a bukkit issue
//Right clicking signs with a block in hand, can now fire cancelled events.
//This is because when the block place is cancelled (for example not enough space for the block to be placed),
//the event will be marked as cancelled, thus preventing 30% of sign purchases.
@EventHandler(priority = EventPriority.LOW)
public void onPlayerInteract(final PlayerInteractEvent event)
{

View file

@ -10,7 +10,7 @@ import org.bukkit.block.BlockFace;
import org.bukkit.block.Sign;
import org.bukkit.inventory.ItemStack;
@Deprecated // This sign will be removed soon
public class SignProtection extends EssentialsSign
{
private final transient Set<Material> protectedBlocks = EnumSet.noneOf(Material.class);

View file

@ -315,6 +315,9 @@ login-attack-delay: 5
#Set the max fly speed, values range from 0.1 to 1.0
max-fly-speed: 0.8
#Set the maximum amount of mails that can be send within a minute.
mails-per-minute: 1000
############################################################
# +------------------------------------------------------+ #
# | EssentialsHome | #

View file

@ -1163,13 +1163,13 @@ smoothstonehalfblock,44,0
stonehalfblock,44,0
shalfblock,44,0
halfblock,44,0
sanddstonestep,44,1
sandstonestep,44,1
sstonestep,44,1
ssstep,44,1
sanddstoneslab,44,1
sandstoneslab,44,1
sstoneslab,44,1
ssslab,44,1
sanddstonehalfblock,44,1
sandstonehalfblock,44,1
sstonehalfblock,44,1
sshalfblock,44,1
woodenplankstonestep,44,2
@ -1329,7 +1329,6 @@ burningfurnace,62,0
bfurnace,62,0
signpost,63,0
spost,63,0
door,64,0
woodendoorhalf,64,0
wooddoorhalf,64,0
wdoorhalf,64,0
@ -1589,6 +1588,7 @@ doort,96,0
trapd,96,0
dtrap,96,0
silverfish,97,0
monsteregg,97,0
monstereggsmoothstone,97,0
monstereggsstone,97,0
meggsmoothstone,97,0
@ -3397,6 +3397,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
@ -3946,14 +3947,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
@ -4076,7 +4161,7 @@ healinglevel2pot,373,8229
heallevel2pot,373,8229
healingiipot,373,8229
healiipot,373,8229
h2potpot,373,8229
h2pot,373,8229
strengthleveliipotion,373,8233
strongleveliipotion,373,8233
strleveliipotion,373,8233
@ -4308,6 +4393,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
@ -4339,6 +4440,10 @@ 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
@ -4352,6 +4457,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
@ -4476,6 +4649,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
@ -4513,6 +4702,10 @@ splstrengthiipot,373,16425
splstrongiipot,373,16425
splstriipot,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
@ -4550,6 +4743,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

1 #version: TeamCity
1163 stonehalfblock,44,0
1164 shalfblock,44,0
1165 halfblock,44,0
1166 sanddstonestep,44,1 sandstonestep,44,1
1167 sstonestep,44,1
1168 ssstep,44,1
1169 sanddstoneslab,44,1 sandstoneslab,44,1
1170 sstoneslab,44,1
1171 ssslab,44,1
1172 sanddstonehalfblock,44,1 sandstonehalfblock,44,1
1173 sstonehalfblock,44,1
1174 sshalfblock,44,1
1175 woodenplankstonestep,44,2
1329 bfurnace,62,0
1330 signpost,63,0
1331 spost,63,0
door,64,0
1332 woodendoorhalf,64,0
1333 wooddoorhalf,64,0
1334 wdoorhalf,64,0
1588 trapd,96,0
1589 dtrap,96,0
1590 silverfish,97,0
1591 monsteregg,97,0
1592 monstereggsmoothstone,97,0
1593 monstereggsstone,97,0
1594 meggsmoothstone,97,0
3397 woodendoor,324,0
3398 wooddoor,324,0
3399 wdoor,324,0
3400 door,324,0
3401 bucket,325,0
3402 bukkit,325,0
3403 waterbucket,326,0
3947 fullbottle,373,0
3948 watervase,373,0
3949 fullvase,373,0
3950 clearpotion,373,6
3951 clearpot,373,6
3952 clearextendedpotion,373,7
3953 clearexpotion,373,7
3954 clear2potion,373,7
3955 clearextendedpot,373,7
3956 clearexpot,373,7
3957 clear2pot,373,7
3958 diffusepotion,373,11
3959 diffusepot,373,11
3960 artlesspotion,373,13
3961 artlesspot,373,13
3962 thinpotion,373,14
3963 thinpot,373,14
3964 thinextendedpotion,373,15
3965 thinexpotion,373,15
3966 thin2potion,373,15
3967 thinextendedpot,373,15
3968 thinexpot,373,15
3969 thin2pot,373,15
3970 awkwardpotion,373,16
3971 awkwardpot,373,16
3972 bunglingpotion,373,22
3973 bunglingpot,373,22
3974 bunglingextendedpotion,373,23
3975 bunglingexpotion,373,23
3976 bungling2potion,373,23
3977 bunglingextendedpot,373,23
3978 bunglingexpot,373,23
3979 bungling2pot,373,23
3980 smoothpotion,373,27
3981 smoothpot,373,27
3982 suavepotion,373,29
3983 suavepot,373,29
3984 debonairpotion,373,30
3985 debonairpot,373,30
3986 debonairextendedpotion,373,31
3987 debonairexpotion,373,31
3988 debonair2potion,373,31
3989 debonairextendedpot,373,31
3990 debonairexpot,373,31
3991 debonair2pot,373,31
3992 thickpotion,373,32
3993 thickpot,373,32
3994 mundaneexpotion,373,64 charmingpotion,373,38
3995 charmingpot,373,38
3996 charmingextendedpotion,373,39
3997 charmingexpotion,373,39
3998 charming2potion,373,39
3999 charmingextendedpot,373,39
4000 charmingexpot,373,39
4001 charming2pot,373,39
4002 refinedpotion,373,43
4003 refinedpot,373,43
4004 cordialpotion,373,45
4005 cordialpot,373,45
4006 sparklingpotion,373,46
4007 sparklingpot,373,46
4008 sparklingextendedpotion,373,47
4009 sparklingexpotion,373,47
4010 sparkling2potion,373,47
4011 sparklingextendedpot,373,47
4012 sparklingexpot,373,47
4013 sparkling2pot,373,47
4014 potentpotion,373,48
4015 potentpot,373,48
4016 rankpotion,373,54
4017 rankpot,373,54
4018 rankextendedpotion,373,55
4019 rankexpotion,373,55
4020 rank2potion,373,55
4021 rankextendedpot,373,55
4022 rankexpot,373,55
4023 rank2pot,373,55
4024 acridpotion,373,59
4025 acridpot,373,59
4026 grosspotion,373,61
4027 grosspot,373,61
4028 stinkypotion,373,62
4029 stinkypot,373,62
4030 stinkyextendedpotion,373,63
4031 stinkyexpotion,373,63
4032 stinky2potion,373,63
4033 stinkyextendedpot,373,63
4034 stinkyexpot,373,63
4035 stinky2pot,373,63
4036 mundaneextendedpotion,373,64
4037 mundaneexpot,373,64 mundaneexpotion,373,64
4038 mundane2potion,373,64
4039 mundaneextendedpot,373,64
4040 mundaneexpot,373,64
4041 mundane2pot,373,64
4042 mundanepotion,373,8192
4043 mundanepot,373,8192
4044 regenerationpotion,373,8193
4161 heallevel2pot,373,8229
4162 healingiipot,373,8229
4163 healiipot,373,8229
4164 h2potpot,373,8229 h2pot,373,8229
4165 strengthleveliipotion,373,8233
4166 strongleveliipotion,373,8233
4167 strleveliipotion,373,8233
4393 splhealpot,373,16389
4394 spllifepot,373,16389
4395 sphpot,373,16389
4396 splashclearpotion,373,16390
4397 splashclearpot,373,16390
4398 splclearpotion,373,16390
4399 splclearpot,373,16390
4400 splashclearextendedpotion,373,16391
4401 splashclearexpotion,373,16391
4402 splashclear2potion,373,16391
4403 splashclearextendedpot,373,16391
4404 splashclearexpot,373,16391
4405 splashclear2pot,373,16391
4406 splclearextendedpotion,373,16391
4407 splclearexpotion,373,16391
4408 splclear2potion,373,16391
4409 splclearextendedpot,373,16391
4410 splclearexpot,373,16391
4411 splclear2pot,373,16391
4412 splashweaknesspotion,373,16392
4413 splashweakpotion,373,16392
4414 splashweaknesspot,373,16392
4440 splslownesspot,373,16394
4441 splslowpot,373,16394
4442 spslpot,373,16394
4443 splashdiffusepotion,373,16395
4444 splashdiffusepot,373,16395
4445 spldiffusepotion,373,16395
4446 spldiffusepot,373,16395
4447 splashharmingpotion,373,16396
4448 splashdamagepotion,373,16396
4449 splashdmgpotion,373,16396
4457 spldamagepot,373,16396
4458 spldmgpot,373,16396
4459 spdpot,373,16396
4460 splashartlesspotion,373,16397
4461 splashartlesspot,373,16397
4462 splartlesspotion,373,16397
4463 splartlesspot,373,16397
4464 splashthinpotion,373,16398
4465 splashthinpot,373,16398
4466 splthinpotion,373,16398
4467 splthinpot,373,16398
4468 splashthinextendedpotion,373,16399
4469 splashthinexpotion,373,16399
4470 splashthin2potion,373,16399
4471 splashthinextendedpot,373,16399
4472 splashthinexpot,373,16399
4473 splashthin2pot,373,16399
4474 splthinextendedpotion,373,16399
4475 splthinexpotion,373,16399
4476 splthin2potion,373,16399
4477 splthinextendedpot,373,16399
4478 splthinexpot,373,16399
4479 splthin2pot,373,16399
4480 splashawkwardpotion,373,16400
4481 splashawkwardpot,373,16400
4482 splawkwardpotion,373,16400
4483 splawkwardpot,373,16400
4484 splashbunglingpotion,373,16406
4485 splashbunglingpot,373,16406
4486 splbunglingpotion,373,16406
4487 splbunglingpot,373,16406
4488 splashbunglingextendedpotion,373,16407
4489 splashbunglingexpotion,373,16407
4490 splashbungling2potion,373,16407
4491 splashbunglingextendedpot,373,16407
4492 splashbunglingexpot,373,16407
4493 splashbungling2pot,373,16407
4494 splbunglingextendedpotion,373,16407
4495 splbunglingexpotion,373,16407
4496 splbungling2potion,373,16407
4497 splbunglingextendedpot,373,16407
4498 splbunglingexpot,373,16407
4499 splbungling2pot,373,16407
4500 splashsmoothpotion,373,16411
4501 splashsmoothpot,373,16411
4502 splsmoothpotion,373,16411
4503 splsmoothpot,373,16411
4504 splashsuavepotion,373,16413
4505 splashsuavepot,373,16413
4506 splsuavepotion,373,16413
4507 splsuavepot,373,16413
4508 splashdebonairpotion,373,16414
4509 splashdebonairpot,373,16414
4510 spldebonairpotion,373,16414
4511 spldebonairpot,373,16414
4512 splashdebonairextendedpotion,373,16415
4513 splashdebonairexpotion,373,16415
4514 splashdebonair2potion,373,16415
4515 splashdebonairextendedpot,373,16415
4516 splashdebonairexpot,373,16415
4517 splashdebonair2pot,373,16415
4518 spldebonairextendedpotion,373,16415
4519 spldebonairexpotion,373,16415
4520 spldebonair2potion,373,16415
4521 spldebonairextendedpot,373,16415
4522 spldebonairexpot,373,16415
4523 spldebonair2pot,373,16415
4524 splashthickpotion,373,16416
4525 splashthickpot,373,16416
4526 splthickpotion,373,16416
4527 splthickpot,373,16416
4528 splashregenerationleveliipotion,373,16417
4529 splashregenerateleveliipotion,373,16417
4530 splashregenleveliipotion,373,16417
4649 splhealingiipot,373,16421
4650 splhealiipot,373,16421
4651 sph2pot,373,16421
4652 splashcharmingpotion,373,16422
4653 splashcharmingpot,373,16422
4654 splcharmingpotion,373,16422
4655 splcharmingpot,373,16422
4656 splashcharmingextendedpotion,373,16423
4657 splashcharmingexpotion,373,16423
4658 splashcharming2potion,373,16423
4659 splashcharmingextendedpot,373,16423
4660 splashcharmingexpot,373,16423
4661 splashcharming2pot,373,16423
4662 splcharmingextendedpotion,373,16423
4663 splcharmingexpotion,373,16423
4664 splcharming2potion,373,16423
4665 splcharmingextendedpot,373,16423
4666 splcharmingexpot,373,16423
4667 splcharming2pot,373,16423
4668 splashstrengthleveliipotion,373,16425
4669 splashstrongleveliipotion,373,16425
4670 splashstrleveliipotion,373,16425
4702 splstrongiipot,373,16425
4703 splstriipot,373,16425
4704 spst2pot,373,16425
4705 splashrefinedpotion,373,16427
4706 splashrefinedpot,373,16427
4707 splrefinedpotion,373,16427
4708 splrefinedpot,373,16427
4709 splashharmingleveliipotion,373,16428
4710 splashdamageleveliipotion,373,16428
4711 splashdmgleveliipotion,373,16428
4743 spldamageiipot,373,16428
4744 spldmgiipot,373,16428
4745 spd2pot,373,16428
4746 splashcordialpotion,373,16429
4747 splashcordialpot,373,16429
4748 splcordialpotion,373,16429
4749 splcordialpot,373,16429
4750 splashsparklingpotion,373,16430
4751 splashsparklingpot,373,16430
4752 splsparklingpotion,373,16430
4753 splsparklingpot,373,16430
4754 splashsparklingextendedpotion,373,16431
4755 splashsparklingexpotion,373,16431
4756 splashsparkling2potion,373,16431
4757 splashsparklingextendedpot,373,16431
4758 splashsparklingexpot,373,16431
4759 splashsparkling2pot,373,16431
4760 splsparklingextendedpotion,373,16431
4761 splsparklingexpotion,373,16431
4762 splsparkling2potion,373,16431
4763 splsparklingextendedpot,373,16431
4764 splsparklingexpot,373,16431
4765 splsparkling2pot,373,16431
4766 splashpotentpotion,373,16432
4767 splashpotentpot,373,16432
4768 splpotentpotion,373,16432
4769 splpotentpot,373,16432
4770 splashrankpotion,373,16438
4771 splashrankpot,373,16438
4772 splrankpotion,373,16438
4773 splrankpot,373,16438
4774 splashrankextendedpotion,373,16439
4775 splashrankexpotion,373,16439
4776 splashrank2potion,373,16439
4777 splashrankextendedpot,373,16439
4778 splashrankexpot,373,16439
4779 splashrank2pot,373,16439
4780 splrankextendedpotion,373,16439
4781 splrankexpotion,373,16439
4782 splrank2potion,373,16439
4783 splrankextendedpot,373,16439
4784 splrankexpot,373,16439
4785 splrank2pot,373,16439
4786 splashacridpotion,373,16443
4787 splashacridpot,373,16443
4788 splacridpotion,373,16443
4789 splacridpot,373,16443
4790 splashgrosspotion,373,16445
4791 splashgrosspot,373,16445
4792 splgrosspotion,373,16445
4793 splgrosspot,373,16445
4794 splashstinkypotion,373,16446
4795 splashstinkypot,373,16446
4796 splstinkypotion,373,16446
4797 splstinkypot,373,16446
4798 splashstinkyextendedpotion,373,16447
4799 splashstinkyexpotion,373,16447
4800 splashstinky2potion,373,16447
4801 splashstinkyextendedpot,373,16447
4802 splashstinkyexpot,373,16447
4803 splashstinky2pot,373,16447
4804 splstinkyextendedpotion,373,16447
4805 splstinkyexpotion,373,16447
4806 splstinky2potion,373,16447
4807 splstinkyextendedpot,373,16447
4808 splstinkyexpot,373,16447
4809 splstinky2pot,373,16447
4810 splashmundaneextendedpotion,373,16448
4811 splashmundaneexpotion,373,16448
4812 splashmundane2potion,373,16448
4813 splashmundaneextendedpot,373,16448
4814 splashmundaneexpot,373,16448
4815 splashmundane2pot,373,16448
4816 splmundaneextendedpotion,373,16448
4817 splmundaneexpotion,373,16448
4818 splmundane2potion,373,16448
4819 splmundaneextendedpot,373,16448
4820 splmundaneexpot,373,16448
4821 splmundane2pot,373,16448
4822 splashregenerationextendedpotion,373,16449
4823 splashregenerateextendedpotion,373,16449
4824 splashregenextendepotion,373,16449

View file

@ -2,7 +2,7 @@
# Single quotes have to be doubled: ''
# Translations start here
# by:
action=\u00a7d* {0} {1}
action=\u00a75* {0} \u00a75{1}
addedToAccount=\u00a7a{0} has been added to your account.
addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2}
adventure= adventure
@ -264,7 +264,7 @@ notRecommendedBukkit= \u00a74* ! * Bukkit version is not the recommended build f
notSupportedYet=Not supported yet.
nothingInHand=\u00a74You have nothing in your hand.
now=now
nuke=\u00a7dMay death rain upon them
nuke=\u00a75May death rain upon them
numberRequired=A number goes there, silly.
onlyDayNight=/time only supports day/night.
onlyPlayers=\u00a74Only in-game players can use {0}.
@ -397,8 +397,8 @@ unvanished=\u00a76You are once again visible.
unvanishedReload=\u00a74A reload has forced you to become visible.
upgradingFilesError=Error while upgrading the files
userDoesNotExist=\u00a74The user\u00a7c {0} \u00a74does not exist.
userIsAway=\u00a7d{0} \u00a7dis now AFK
userIsNotAway=\u00a7d{0} \u00a7dis no longer AFK
userIsAway=\u00a75{0} \u00a75is now AFK
userIsNotAway=\u00a75{0} \u00a75is no longer AFK
userJailed=\u00a76You have been jailed
userUsedPortal={0} used an existing exit portal.
userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}
@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -460,3 +460,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -230,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.
@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -2,7 +2,7 @@
# Single quotes have to be doubled: ''
# Translations start here
# by:
action=\u00a7d* {0} {1}
action=\u00a75* {0} \u00a75{1}
addedToAccount=\u00a7a{0} has been added to your account.
addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance: {2}
adventure= adventure
@ -264,7 +264,7 @@ notRecommendedBukkit= \u00a74* ! * Bukkit version is not the recommended build f
notSupportedYet=Not supported yet.
nothingInHand=\u00a74You have nothing in your hand.
now=now
nuke=\u00a7dMay death rain upon them
nuke=\u00a75May death rain upon them
numberRequired=A number goes there, silly.
onlyDayNight=/time only supports day/night.
onlyPlayers=\u00a74Only in-game players can use {0}.
@ -397,8 +397,8 @@ unvanished=\u00a76You are once again visible.
unvanishedReload=\u00a74A reload has forced you to become visible.
upgradingFilesError=Error while upgrading the files
userDoesNotExist=\u00a74The user\u00a7c {0} \u00a74does not exist.
userIsAway=\u00a7d{0} \u00a7dis now AFK
userIsNotAway=\u00a7d{0} \u00a7dis no longer AFK
userIsAway=\u00a75{0} \u00a75is now AFK
userIsNotAway=\u00a75{0} \u00a75is no longer AFK
userJailed=\u00a76You have been jailed
userUsedPortal={0} used an existing exit portal.
userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}
@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -457,3 +457,6 @@ 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
invalidWarpName=\u00a74Invalid warp name
userUnknown=\u00a74Warning: The user '\u00a7c{0}\u00a74' has never joined this server.

View file

@ -240,6 +240,42 @@ public class FakeServer implements Server
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BukkitTask runTask(Plugin plugin, Runnable r) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BukkitTask runTaskAsynchronously(Plugin plugin, Runnable r) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BukkitTask runTaskLater(Plugin plugin, Runnable r, long l) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BukkitTask runTaskLaterAsynchronously(Plugin plugin, Runnable r, long l) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BukkitTask runTaskTimer(Plugin plugin, Runnable r, long l, long l1) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BukkitTask runTaskTimerAsynchronously(Plugin plugin, Runnable r, long l, long l1) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
};
}

View file

@ -12,9 +12,9 @@ is divided into following sections:
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- test compilation
- test execution
- test debugging
- applet
- cleanup
@ -181,6 +181,7 @@ is divided into following sections:
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="run.jvmargs.ide" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
@ -225,6 +226,27 @@ is divided into following sections:
<property name="jar.index.metainf" value="${jar.index}"/>
<property name="copylibs.rebase" value="true"/>
<available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
<condition property="junit.available">
<or>
<available classname="org.junit.Test" classpath="${run.test.classpath}"/>
<available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
</or>
</condition>
<condition property="testng.available">
<available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
</condition>
<condition property="junit+testng.available">
<and>
<istrue value="${junit.available}"/>
<istrue value="${testng.available}"/>
</and>
</condition>
<condition else="testng" property="testng.mode" value="mixed">
<istrue value="${junit+testng.available}"/>
</condition>
<condition else="" property="testng.debug.mode" value="-mixed">
<istrue value="${junit+testng.available}"/>
</condition>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
@ -357,11 +379,52 @@ is divided into following sections:
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<target if="${junit.available}" name="-init-macrodef-junit-init">
<condition else="false" property="nb.junit.batch" value="true">
<and>
<istrue value="${junit.available}"/>
<not>
<isset property="test.method"/>
</not>
</and>
</condition>
<condition else="false" property="nb.junit.single" value="true">
<and>
<istrue value="${junit.available}"/>
<isset property="test.method"/>
</and>
</condition>
</target>
<target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element name="customize" optional="true"/>
<sequential>
<property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
<test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg value="-ea"/>
<customize/>
</junit>
</sequential>
</macrodef>
</target>
<target if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element name="customize" optional="true"/>
<sequential>
<property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
@ -370,32 +433,270 @@ is divided into following sections:
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg value="-ea"/>
<jvmarg line="${run.jvmargs}"/>
<customize/>
</junit>
</sequential>
</macrodef>
</target>
<target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" name="profile-init"/>
<target name="-profile-pre-init">
<target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
<target if="${testng.available}" name="-init-macrodef-testng">
<macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element name="customize" optional="true"/>
<sequential>
<condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
<isset property="test.method"/>
</condition>
<union id="test.set">
<fileset dir="${test.src.dir}" excludes="@{excludes},**/*.xml,${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</union>
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
<testng classfilesetref="test.set" failureProperty="tests.failed" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="EssentialsAntiBuild" testname="TestNG tests" workingDir="${work.dir}">
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
<propertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</propertyset>
<customize/>
</testng>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-test-impl">
<macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element implicit="true" name="customize" optional="true"/>
<sequential>
<echo>No tests executed.</echo>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
<macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element implicit="true" name="customize" optional="true"/>
<sequential>
<j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
<customize/>
</j2seproject3:junit>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
<macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element implicit="true" name="customize" optional="true"/>
<sequential>
<j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
<customize/>
</j2seproject3:testng>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
<macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<sequential>
<j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
<customize>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${run.jvmargs}"/>
<jvmarg line="${run.jvmargs.ide}"/>
</customize>
</j2seproject3:test-impl>
</sequential>
</macrodef>
</target>
<target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
<macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element name="customize" optional="true"/>
<sequential>
<property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
<test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg value="-ea"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
<customize/>
</junit>
</sequential>
</macrodef>
</target>
<target if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
<macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element name="customize" optional="true"/>
<sequential>
<property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg value="-ea"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
<customize/>
</junit>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
<macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<element implicit="true" name="customize" optional="true"/>
<sequential>
<j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
<customize/>
</j2seproject3:junit-debug>
</sequential>
</macrodef>
</target>
<target if="${testng.available}" name="-init-macrodef-testng-debug">
<macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="testClass"/>
<attribute default="" name="testMethod"/>
<element name="customize2" optional="true"/>
<sequential>
<condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
<isset property="test.method"/>
</condition>
<condition else="-suitename EssentialsAntiBuild -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
<matches pattern=".*\.xml" string="@{testClass}"/>
</condition>
<delete dir="${build.test.results.dir}" quiet="true"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
<customize>
<customize2/>
<jvmarg value="-ea"/>
<arg line="${testng.debug.mode}"/>
<arg line="-d ${build.test.results.dir}"/>
<arg line="-listener org.testng.reporters.VerboseReporter"/>
<arg line="${testng.cmd.args}"/>
</customize>
</j2seproject3:debug>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
<macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="testClass"/>
<attribute default="" name="testMethod"/>
<element implicit="true" name="customize2" optional="true"/>
<sequential>
<j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
<customize2/>
</j2seproject3:testng-debug>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
<macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<attribute default="${main.class}" name="testClass"/>
<attribute default="" name="testMethod"/>
<sequential>
<j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
<customize>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${run.jvmargs}"/>
<jvmarg line="${run.jvmargs.ide}"/>
</customize>
</j2seproject3:test-debug-impl>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
<macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<attribute default="" name="testmethods"/>
<attribute default="${main.class}" name="testClass"/>
<attribute default="" name="testMethod"/>
<sequential>
<j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
<customize2>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
</customize2>
</j2seproject3:testng-debug-impl>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
<!--
pre NB7.2 profiling section; consider it deprecated
-->
<target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
<target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target name="-profile-post-init">
<target if="profiler.info.jvmargs.agent" name="-profile-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target name="-profile-init-macrodef-profile">
<target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
<macrodef name="resolve">
<attribute name="name"/>
<attribute name="value"/>
@ -427,10 +728,13 @@ is divided into following sections:
</sequential>
</macrodef>
</target>
<target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" name="-profile-init-check">
<target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
<fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
<fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
</target>
<!--
end of pre NB7.2 profiling section
-->
<target depends="-init-debug-args" name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
@ -488,6 +792,7 @@ is divided into following sections:
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<jvmarg line="${run.jvmargs.ide}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
@ -504,6 +809,7 @@ is divided into following sections:
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<attribute default="${run.classpath}" name="classpath"/>
<attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
@ -511,6 +817,7 @@ is divided into following sections:
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<jvmarg line="${run.jvmargs.ide}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
@ -537,6 +844,9 @@ is divided into following sections:
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<filtermapper>
<replacestring from=" " to="%20"/>
</filtermapper>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
@ -582,7 +892,7 @@ is divided into following sections:
<target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
<property name="ap.cmd.line.internal" value=""/>
</target>
<target depends="-pre-init,-init-private,-init-libraries,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
<target depends="-pre-init,-init-private,-init-libraries,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
<!--
===================
COMPILATION SECTION
@ -805,7 +1115,11 @@ is divided into following sections:
PROFILING SECTION
=================
-->
<target depends="profile-init,compile" description="Profile a project in the IDE." if="netbeans.home" name="profile">
<!--
pre NB7.2 profiler integration
-->
<target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
<fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
<nbprofiledirect>
<classpath>
<path path="${run.classpath}"/>
@ -813,8 +1127,9 @@ is divided into following sections:
</nbprofiledirect>
<profile/>
</target>
<target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="netbeans.home" name="profile-single">
<target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
<fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
<fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
<nbprofiledirect>
<classpath>
<path path="${run.classpath}"/>
@ -822,12 +1137,8 @@ is divided into following sections:
</nbprofiledirect>
<profile classname="${profile.class}"/>
</target>
<!--
=========================
APPLET PROFILING SECTION
=========================
-->
<target depends="profile-init,compile-single" if="netbeans.home" name="profile-applet">
<target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
<fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
<nbprofiledirect>
<classpath>
<path path="${run.classpath}"/>
@ -839,12 +1150,8 @@ is divided into following sections:
</customize>
</profile>
</target>
<!--
=========================
TESTS PROFILING SECTION
=========================
-->
<target depends="profile-init,compile-test-single" if="netbeans.home" name="profile-test-single">
<target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
<fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
<nbprofiledirect>
<classpath>
<path path="${run.test.classpath}"/>
@ -866,6 +1173,42 @@ is divided into following sections:
<formatter type="xml"/>
</junit>
</target>
<!--
end of pre NB72 profiling section
-->
<target if="netbeans.home" name="-profile-check">
<condition property="profiler.configured">
<or>
<contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
<contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
</or>
</condition>
</target>
<target depends="-profile-check,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
<startprofiler/>
<antcall target="run"/>
</target>
<target depends="-profile-check,-profile-single-pre72" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-single" unless="profiler.info.jvmargs.agent">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<startprofiler/>
<antcall target="run-single"/>
</target>
<target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
<target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<startprofiler/>
<antcall target="test-single"/>
</target>
<target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<startprofiler/>
<antcal target="run-test-with-main"/>
</target>
<target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<startprofiler/>
<antcall target="run-applet"/>
</target>
<!--
===============
JAVADOC SECTION
@ -909,7 +1252,7 @@ is divided into following sections:
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
TEST COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
@ -952,14 +1295,14 @@ is divided into following sections:
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
TEST EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
<j2seproject3:test testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
@ -972,39 +1315,40 @@ is divided into following sections:
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
<j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
<fail unless="test.class">Must select some files in the IDE or set test.class</fail>
<fail unless="test.method">Must select some method in the IDE or set test.method</fail>
<j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
<!--
=======================
JUNIT DEBUGGING SECTION
TEST DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
<j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<fail unless="test.method">Must select some method in the IDE or set test.method</fail>
<j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
@ -1076,9 +1420,12 @@ is divided into following sections:
<target name="-check-call-dep">
<property file="${call.built.properties}" prefix="already.built."/>
<condition property="should.call.dep">
<not>
<isset property="already.built.${call.subproject}"/>
</not>
<and>
<not>
<isset property="already.built.${call.subproject}"/>
</not>
<available file="${call.script}"/>
</and>
</condition>
</target>
<target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">

View file

@ -4,5 +4,5 @@ build.xml.stylesheet.CRC32=28e38971@1.38.3.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=ddb4519c
nbproject/build-impl.xml.script.CRC32=cfb9443d
nbproject/build-impl.xml.stylesheet.CRC32=fcddb364@1.50.3.46
nbproject/build-impl.xml.script.CRC32=00e1454b
nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46

View file

@ -36,6 +36,10 @@ public class EssentialsAntiBuildListener implements Listener
{
if (block == null)
{
if (ess.getSettings().isDebug())
{
ess.getLogger().log(Level.INFO, "AntiBuild permission check failed, invalid block.");
}
return false;
}
return metaPermCheck(user, action, block.getTypeId(), block.getData());

Binary file not shown.

Binary file not shown.