diff options
48 files changed, 1601 insertions, 231 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index dc63d3020..13197aad7 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -17,34 +17,25 @@ */ package com.earth2me.essentials; -import com.earth2me.essentials.economy.Trade; -import com.earth2me.essentials.commands.EssentialsCommandHandler; -import com.earth2me.essentials.utils.ExecuteTimer; -import com.earth2me.essentials.economy.WorthHolder; -import com.earth2me.essentials.economy.Economy; -import com.earth2me.essentials.backup.Backup; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.api.*; -import com.earth2me.essentials.listener.*; +import com.earth2me.essentials.backup.Backup; +import com.earth2me.essentials.commands.EssentialsCommandHandler; +import com.earth2me.essentials.economy.Economy; +import com.earth2me.essentials.economy.Trade; +import com.earth2me.essentials.economy.WorthHolder; import com.earth2me.essentials.economy.register.Methods; +import com.earth2me.essentials.listener.*; +import com.earth2me.essentials.metrics.Metrics; +import com.earth2me.essentials.metrics.MetricsListener; +import com.earth2me.essentials.metrics.MetricsStarter; import com.earth2me.essentials.ranks.RanksStorage; import com.earth2me.essentials.settings.SettingsHolder; import com.earth2me.essentials.settings.SpawnsHolder; +import com.earth2me.essentials.user.IOfflinePlayer; +import com.earth2me.essentials.user.User; import com.earth2me.essentials.user.UserMap; -import com.earth2me.essentials.api.Economy; -import com.earth2me.essentials.api.IJails; -import com.earth2me.essentials.commands.EssentialsCommand; -import com.earth2me.essentials.commands.IEssentialsCommand; -import com.earth2me.essentials.commands.NoChargeException; -import com.earth2me.essentials.commands.NotEnoughArgumentsException; -import com.earth2me.essentials.metrics.Metrics; -import com.earth2me.essentials.metrics.MetricsListener; -import com.earth2me.essentials.metrics.MetricsStarter; -import com.earth2me.essentials.perm.PermissionsHandler; -import com.earth2me.essentials.register.payment.Methods; -import com.earth2me.essentials.signs.SignBlockListener; -import com.earth2me.essentials.signs.SignEntityListener; -import com.earth2me.essentials.signs.SignPlayerListener; +import com.earth2me.essentials.utils.ExecuteTimer; import java.io.File; import java.io.FileReader; import java.io.IOException; @@ -54,6 +45,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; +import lombok.Getter; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.command.Command; @@ -95,7 +87,9 @@ public class Essentials extends JavaPlugin implements IEssentials private transient Economy economy; public transient boolean testing; private transient Metrics metrics; + @Getter private transient EssentialsTimer timer; + @Getter private transient List<String> vanishedPlayers = new ArrayList<String>(); @Override @@ -256,7 +250,7 @@ public class Essentials extends JavaPlugin implements IEssentials final MetricsStarter metricsStarter = new MetricsStarter(this); if (metricsStarter.getStart() != null && metricsStarter.getStart() == true) { - getScheduler().scheduleAsyncDelayedTask(this, metricsStarter, 1); + getServer().getScheduler().scheduleAsyncDelayedTask(this, metricsStarter, 1); } else if (metricsStarter.getStart() != null && metricsStarter.getStart() == false) { @@ -345,8 +339,52 @@ public class Essentials extends JavaPlugin implements IEssentials { this.metrics = metrics; } - + @Override + public IUser getUser(final Object base) + { + if (base instanceof Player) + { + return getUser((Player)base); + } + if (base instanceof String) + { + final IUser user = userMap.getUser((String)base); + if (user != null && user.getBase() instanceof IOfflinePlayer) + { + ((IOfflinePlayer)user.getBase()).setName((String)base); + } + return user; + } + return null; + } + + private <T extends Player> IUser getUser(final T base) + { + if (base == null) + { + return null; + } + + if (base instanceof IUser) + { + return (IUser)base; + } + IUser user = userMap.getUser(base.getName()); + + if (user == null) + { + user = new User(base, this); + } + else + { + //todo - fix this + user.update(base); + } + return user; + } + + /*@Override public IUser getUser(final Player player) { return userMap.getUser(player); @@ -357,7 +395,7 @@ public class Essentials extends JavaPlugin implements IEssentials { return userMap.getUser(playerName); } - +*/ @Override public World getWorld(final String name) { diff --git a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java index 34aecddc0..6874c069c 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java @@ -9,6 +9,7 @@ import com.earth2me.essentials.user.UserData.TimestampType; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; +import java.util.List; import java.util.Set; import java.util.logging.Level; import org.bukkit.entity.Player; diff --git a/Essentials/src/com/earth2me/essentials/Jails.java b/Essentials/src/com/earth2me/essentials/Jails.java index 53bef54c4..b23e1bb10 100644 --- a/Essentials/src/com/earth2me/essentials/Jails.java +++ b/Essentials/src/com/earth2me/essentials/Jails.java @@ -240,112 +240,114 @@ public class Jails extends AsyncStorageObjectHolder<com.earth2me.essentials.sett final Entity damager = event.getDamager(); if (damager.getType() == EntityType.PLAYER) { - final User user = ess.getUser(damager); - if (user != null && user.isJailed()) + final IUser user = ess.getUser(damager); + if (user != null && user.getData().isJailed()) { event.setCancelled(true); } } } - private class JailPlayerListener implements Listener - { - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerInteract(final PlayerInteractEvent event) - { - @Cleanup - final IUser user = ess.getUser(event.getPlayer()); - user.acquireReadLock(); - if (user.getData().isJailed()) - { - event.setCancelled(true); - } - } - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerRespawn(final PlayerRespawnEvent event) + private class JailPlayerListener implements Listener { - @Cleanup - final IUser user = ess.getUser(event.getPlayer()); - user.acquireReadLock(); - if (!user.getData().isJailed() || user.getData().getJail() == null || user.getData().getJail().isEmpty()) + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerInteract(final PlayerInteractEvent event) { - return; + @Cleanup + final IUser user = ess.getUser(event.getPlayer()); + user.acquireReadLock(); + if (user.getData().isJailed()) + { + event.setCancelled(true); + } } - try + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerRespawn(final PlayerRespawnEvent event) { - event.setRespawnLocation(getJail(user.getData().getJail())); - } - catch (Exception ex) - { - if (ess.getSettings().isDebug()) + @Cleanup + final IUser user = ess.getUser(event.getPlayer()); + user.acquireReadLock(); + if (!user.getData().isJailed() || user.getData().getJail() == null || user.getData().getJail().isEmpty()) + { + return; + } + + try { - LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()), ex); + event.setRespawnLocation(getJail(user.getData().getJail())); } - else + catch (Exception ex) { - LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())); + if (ess.getSettings().isDebug()) + { + LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()), ex); + } + else + { + LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())); + } } } - } - @EventHandler(priority = EventPriority.HIGH) - public void onPlayerTeleport(final PlayerTeleportEvent event) - { - @Cleanup - final IUser user = ess.getUser(event.getPlayer()); - user.acquireReadLock(); - if (!user.getData().isJailed() || user.getData().getJail() == null || user.getData().getJail().isEmpty()) + @EventHandler(priority = EventPriority.HIGH) + public void onPlayerTeleport(final PlayerTeleportEvent event) { - return; - } + @Cleanup + final IUser user = ess.getUser(event.getPlayer()); + user.acquireReadLock(); + if (!user.getData().isJailed() || user.getData().getJail() == null || user.getData().getJail().isEmpty()) + { + return; + } - try - { - event.setTo(getJail(user.getData().getJail())); - } - catch (Exception ex) - { - if (ess.getSettings().isDebug()) + try { - LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()), ex); + event.setTo(getJail(user.getData().getJail())); } - else + catch (Exception ex) { - LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())); + if (ess.getSettings().isDebug()) + { + LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()), ex); + } + else + { + LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())); + } } + user.sendMessage(_("jailMessage")); } - user.sendMessage(_("jailMessage")); - } - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerJoin(final PlayerJoinEvent event) - { - @Cleanup - final IUser user = ess.getUser(event.getPlayer()); - user.acquireReadLock(); - if (!user.getData().isJailed() || user.getData().getJail() == null || user.getData().getJail().isEmpty()) + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerJoin(final PlayerJoinEvent event) { - return; - } + @Cleanup + final IUser user = ess.getUser(event.getPlayer()); + user.acquireReadLock(); + if (!user.getData().isJailed() || user.getData().getJail() == null || user.getData().getJail().isEmpty()) + { + return; + } - try - { - sendToJail(user, user.getData().getJail()); - } - catch (Exception ex) - { - if (ess.getSettings().isDebug()) + try { - LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()), ex); + sendToJail(user, user.getData().getJail()); } - else + catch (Exception ex) { - LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())); + if (ess.getSettings().isDebug()) + { + LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()), ex); + } + else + { + LOGGER.log(Level.INFO, _("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())); + } } + user.sendMessage(_("jailMessage")); } - user.sendMessage(_("jailMessage")); } } } diff --git a/Essentials/src/com/earth2me/essentials/Kits.java b/Essentials/src/com/earth2me/essentials/Kits.java index 3c3e61a5d..a9fd1fa2f 100644 --- a/Essentials/src/com/earth2me/essentials/Kits.java +++ b/Essentials/src/com/earth2me/essentials/Kits.java @@ -14,6 +14,8 @@ import org.bukkit.inventory.ItemStack; public class Kits extends AsyncStorageObjectHolder<com.earth2me.essentials.settings.Kits> implements IKits { + + public Kits(final IEssentials ess) { super(ess, com.earth2me.essentials.settings.Kits.class); @@ -87,4 +89,16 @@ public class Kits extends AsyncStorageObjectHolder<com.earth2me.essentials.setti { return getData().getKits().isEmpty(); } + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java index 7118ed1bb..0f3a8eebf 100644 --- a/Essentials/src/com/earth2me/essentials/Teleport.java +++ b/Essentials/src/com/earth2me/essentials/Teleport.java @@ -23,6 +23,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; public class Teleport implements Runnable, ITeleport { + private static final double MOVE_CONSTANT = 0.3; @@ -292,7 +293,7 @@ public class Teleport implements Runnable, ITeleport user.unlock(); } } - + public void home(Location loc, Trade chargeFor) throws Exception { teleport(new Target(loc), chargeFor, TeleportCause.COMMAND); diff --git a/Essentials/src/com/earth2me/essentials/api/IEssentials.java b/Essentials/src/com/earth2me/essentials/api/IEssentials.java index 42c9a964d..3972fb26a 100644 --- a/Essentials/src/com/earth2me/essentials/api/IEssentials.java +++ b/Essentials/src/com/earth2me/essentials/api/IEssentials.java @@ -1,9 +1,10 @@ package com.earth2me.essentials.api; -import com.earth2me.essentials.listener.TntExplodeListener; +import com.earth2me.essentials.EssentialsTimer; import com.earth2me.essentials.economy.register.Methods; +import com.earth2me.essentials.listener.TntExplodeListener; +import java.util.List; import org.bukkit.World; -import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -11,9 +12,7 @@ public interface IEssentials extends Plugin { void addReloadListener(IReload listener); - IUser getUser(Player player); - - IUser getUser(String playerName); + IUser getUser(final Object base); int broadcastMessage(IUser sender, String message); @@ -61,4 +60,8 @@ public interface IEssentials extends Plugin void removeReloadListener(IReload groups); IEconomy getEconomy(); + + List<String> getVanishedPlayers(); + + EssentialsTimer getTimer(); } diff --git a/Essentials/src/com/earth2me/essentials/api/ITeleport.java b/Essentials/src/com/earth2me/essentials/api/ITeleport.java index 3a5f25f78..16c05a917 100644 --- a/Essentials/src/com/earth2me/essentials/api/ITeleport.java +++ b/Essentials/src/com/earth2me/essentials/api/ITeleport.java @@ -18,7 +18,7 @@ public interface ITeleport void teleport(Entity entity, Trade chargeFor, TeleportCause cause) throws Exception; - void home(IUser player, String toLowerCase, Trade charge) throws Exception; + void home(Location loc, Trade chargeFor) throws Exception; void respawn(Trade charge, TeleportCause teleportCause) throws Exception; diff --git a/Essentials/src/com/earth2me/essentials/api/IUser.java b/Essentials/src/com/earth2me/essentials/api/IUser.java index 091b141df..6d225bce6 100644 --- a/Essentials/src/com/earth2me/essentials/api/IUser.java +++ b/Essentials/src/com/earth2me/essentials/api/IUser.java @@ -49,6 +49,8 @@ public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload, void updateActivity(boolean broadcast); void updateDisplayName(); + + void setDisplayNick(); boolean checkJailTimeout(long currentTime); @@ -107,4 +109,10 @@ public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload, public void updateMoneyCache(double userMoney); public boolean canAfford(double amount, boolean b); + + boolean isVanished(); + + void resetInvulnerabilityAfterTeleport(); + + void toggleVanished(); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandback.java b/Essentials/src/com/earth2me/essentials/commands/Commandback.java index e2c1b266a..2b112ffa9 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandback.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandback.java @@ -1,8 +1,9 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.economy.Trade; import com.earth2me.essentials.api.IUser; +import com.earth2me.essentials.economy.Trade; +import com.earth2me.essentials.permissions.WorldPermissions; public class Commandback extends EssentialsCommand @@ -10,12 +11,14 @@ public class Commandback extends EssentialsCommand @Override protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception { - if (user.getWorld() != user.getLastLocation().getWorld() && ess.getSettings().isWorldTeleportPermissions() - && !user.isAuthorized("essentials.world." + user.getLastLocation().getWorld().getName())) + final String worldName = user.getData().getLastLocation().getWorldName(); + if (user.getWorld() != user.getData().getLastLocation().getBukkitLocation().getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions() + && WorldPermissions.getPermission(worldName)) { - throw new Exception(_("noPerm", "essentials.world." + user.getLastLocation().getWorld().getName())); + throw new Exception(_("noPerm", "essentials.world." + worldName)); } - final Trade charge = new Trade(this.getName(), ess); + //tod - verify + final Trade charge = new Trade(this.toString(), ess); charge.isAffordableFor(user); user.sendMessage(_("backUsageMsg")); user.getTeleport().back(charge); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbackup.java b/Essentials/src/com/earth2me/essentials/commands/Commandbackup.java index c00a0d435..e620fa52d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbackup.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbackup.java @@ -10,12 +10,12 @@ public class Commandbackup extends EssentialsCommand @Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { - final Backup backup = ess.getBackup(); + final IBackup backup = ess.getBackup(); if (backup == null) { throw new Exception(_("backupDisabled")); } - final String command = ess.getSettings().getBackupCommand(); + final String command = ess.getSettings().getData().getCommands().getBackupCommand(); if (command == null || "".equals(command) || "save-all".equalsIgnoreCase(command)) { throw new Exception(_("backupDisabled")); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandban.java b/Essentials/src/com/earth2me/essentials/commands/Commandban.java index 88c605f4e..d9d080441 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandban.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandban.java @@ -50,7 +50,7 @@ public class Commandban extends EssentialsCommand else { banReason = _("defaultBanReason"); - user.setBanReason(""); + user.getData().getBan().setReason(""); } user.setBanned(true); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java index e2668e562..72aa66e99 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java @@ -197,5 +197,4 @@ public class Commandessentials extends EssentialsCommand { sender.sendMessage("Unable to modify 'plugins/PluginMetrics/config.yml': " + ex.getMessage()); } - } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandexp.java b/Essentials/src/com/earth2me/essentials/commands/Commandexp.java index 22976ff92..d0306d76f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandexp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandexp.java @@ -1,26 +1,22 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._;
-import com.earth2me.essentials.User;
-import com.earth2me.essentials.Util;
+import com.earth2me.essentials.user.User;
+import com.earth2me.essentials.utils.Util;
import com.earth2me.essentials.craftbukkit.SetExpFix;
-import org.bukkit.Server;
+import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandexp extends EssentialsCommand
{
- public Commandexp()
- {
- super("exp");
- }
-
+ //todo - fix this
@Override
- public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
+ public void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
- if (args.length == 0)
+ if (args.length == 0 && sender instanceof Player)
{
- showExp(user, user);
+ showExp((User)sender, (User)sender);
}
else if (args[0].equalsIgnoreCase("set") && user.isAuthorized("essentials.exp.set"))
{
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandfly.java b/Essentials/src/com/earth2me/essentials/commands/Commandfly.java index 22e3c4eea..46ae31a16 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandfly.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandfly.java @@ -1,9 +1,7 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.User; -import java.util.Locale; -import org.bukkit.GameMode; +import com.earth2me.essentials.api.IUser; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -11,13 +9,8 @@ import org.bukkit.entity.Player; public class Commandfly extends EssentialsCommand { - public Commandfly() - { - super("fly"); - } - @Override - protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception + protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { @@ -28,8 +21,9 @@ public class Commandfly extends EssentialsCommand } @Override - protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception + protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception { + //todo permissions if (args.length > 0 && args[0].trim().length() > 2 && user.isAuthorized("essentials.fly.others")) { flyOtherPlayers(server, user, args[0]); @@ -47,7 +41,7 @@ public class Commandfly extends EssentialsCommand { for (Player matchPlayer : server.matchPlayer(name)) { - final User player = ess.getUser(matchPlayer); + final IUser player = ess.getUser(matchPlayer); if (player.isHidden()) { continue; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java index 72153265e..83a2577d6 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java @@ -19,7 +19,7 @@ public class Commandgamemode extends EssentialsCommand throw new NotEnoughArgumentsException(); } - gamemodeOtherPlayers(sender, args[0]); + gamemodeOtherPlayers(sender, args); } @Override @@ -27,7 +27,7 @@ public class Commandgamemode extends EssentialsCommand { if (args.length > 0 && !args[0].trim().isEmpty() && Permissions.GAMEMODE_OTHERS.isAuthorized(user)) { - gamemodeOtherPlayers(user, args[0]); + gamemodeOtherPlayers(user, args); return; } @@ -35,7 +35,7 @@ public class Commandgamemode extends EssentialsCommand user.sendMessage(_("gameMode", _(user.getGameMode().toString().toLowerCase(Locale.ENGLISH)), user.getDisplayName())); } - private void gamemodeOtherPlayers(final CommandSender sender, final String name) + private void gamemodeOtherPlayers(final CommandSender sender, final String args[]) { for (Player matchPlayer : server.matchPlayer(args[0])) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java b/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java index dfccdd31c..3ffce7595 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java @@ -13,6 +13,7 @@ public class Commandgetpos extends EssentialsCommand { if (args.length > 0 && Permissions.GETPOS_OTHERS.isAuthorized(user)) { + //todo permissions final IUser otherUser = getPlayer(args, 0); if (!otherUser.isHidden() || user.isAuthorized("essentials.list.hidden")) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java index aea29cbf3..f0f0380ac 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgive.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgive.java @@ -1,9 +1,9 @@ package com.earth2me.essentials.commands; +import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.permissions.GivePermissions; -import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.Util; +import com.earth2me.essentials.utils.Util; import java.util.Locale; import org.bukkit.ChatColor; import org.bukkit.Material; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhat.java b/Essentials/src/com/earth2me/essentials/commands/Commandhat.java index ed82fd16d..7be212373 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhat.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhat.java @@ -1,22 +1,16 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.User; +import com.earth2me.essentials.api.IUser; import org.bukkit.Material; -import org.bukkit.Server; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; public class Commandhat extends EssentialsCommand { - public Commandhat() - { - super("hat"); - } - @Override - protected void run(Server server, User user, String commandLabel, String[] args) throws Exception + protected void run(IUser user, String commandLabel, String[] args) throws Exception { if (user.getItemInHand().getType() != Material.AIR) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java b/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java index e6fb2e2eb..b9989ddd5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java @@ -1,16 +1,14 @@ package com.earth2me.essentials.commands; -import com.earth2me.essentials.utils.textreader.TextInput; -import com.earth2me.essentials.utils.textreader.IText; -import com.earth2me.essentials.utils.textreader.TextPager; -import com.earth2me.essentials.utils.textreader.HelpInput; -import com.earth2me.essentials.utils.textreader.KeywordReplacer; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.utils.Util; import com.earth2me.essentials.api.IUser; -import com.earth2me.essentials.textreader.*; +import com.earth2me.essentials.utils.Util; +import com.earth2me.essentials.utils.textreader.HelpInput; +import com.earth2me.essentials.utils.textreader.IText; +import com.earth2me.essentials.utils.textreader.KeywordReplacer; +import com.earth2me.essentials.utils.textreader.TextInput; +import com.earth2me.essentials.utils.textreader.TextPager; import java.util.Locale; -import org.bukkit.Server; import org.bukkit.command.CommandSender; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java index 27e93d39e..645e8fd8b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java @@ -1,10 +1,10 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.economy.Trade; -import com.earth2me.essentials.utils.Util; import com.earth2me.essentials.api.IUser; +import com.earth2me.essentials.economy.Trade; import com.earth2me.essentials.permissions.Permissions; +import com.earth2me.essentials.utils.Util; import java.util.List; import java.util.Locale; import org.bukkit.Location; @@ -89,14 +89,14 @@ public class Commandhome extends EssentialsCommand throw new NoChargeException(); } - private void goHome(final User user, final User player, final String home, final Trade charge) throws Exception + private void goHome(final IUser user, final IUser player, final String home, final Trade charge) throws Exception { final Location loc = player.getHome(home); if (loc == null) { throw new NotEnoughArgumentsException(); } - if (user.getWorld() != loc.getWorld() && ess.getSettings().isWorldHomePermissions() + if (user.getWorld() != loc.getWorld() && ess.getSettings().getData().getGeneral().isWorldHomePermissions() && !user.isAuthorized("essentials.world." + loc.getWorld().getName())) { throw new Exception(_("noPerm", "essentials.world." + loc.getWorld().getName())); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java b/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java index fd6a6a167..349caaf63 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java @@ -1,10 +1,6 @@ package com.earth2me.essentials.commands; -import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.api.IUser; -import com.earth2me.essentials.user.Inventory; -import java.util.Arrays; -import org.bukkit.inventory.ItemStack; public class Commandinvsee extends EssentialsCommand @@ -16,7 +12,7 @@ public class Commandinvsee extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final User invUser = getPlayer(server, args, 0); + final IUser invUser = getPlayer(args, 0); user.setInvSee(true); user.openInventory(invUser.getInventory()); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java index 1ea96ff60..bf955fbb5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commanditem.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commanditem.java @@ -25,25 +25,21 @@ public class Commanditem extends EssentialsCommand { throw new Exception(_("cantSpawnItem", itemname)); } + try { - stack.setAmount(Integer.parseInt(args[1])); - } - - if (args.length > 2) - { - for (int i = 2; i < args.length; i++) + if (args.length > 1 && Integer.parseInt(args[1]) > 0) { stack.setAmount(Integer.parseInt(args[1])); } - else if (ess.getSettings().getDefaultStackSize() > 0) + else if (ess.getSettings().getData().getGeneral().getDefaultStacksize() > 0) { - stack.setAmount(ess.getSettings().getDefaultStackSize()); + stack.setAmount(ess.getSettings().getData().getGeneral().getDefaultStacksize()); } - else if (ess.getSettings().getOversizedStackSize() > 0 && user.isAuthorized("essentials.oversizedstacks")) + else if (ess.getSettings().getData().getGeneral().getOversizedStacksize()> 0 && user.isAuthorized("essentials.oversizedstacks")) { - stack.setAmount(ess.getSettings().getOversizedStackSize()); - } + stack.setAmount(ess.getSettings().getData().getGeneral().getOversizedStacksize()); + } if (args.length > 2) { for (int i = 2; i < args.length; i++) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java index bab73b196..2d71302b7 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java @@ -7,7 +7,9 @@ import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.permissions.KitPermissions; import com.earth2me.essentials.settings.Kit; import java.util.Collection; +import java.util.List; import java.util.Locale; +import java.util.Map; import org.bukkit.command.CommandSender; @@ -38,7 +40,7 @@ public class Commandkit extends EssentialsCommand } else if (args.length > 1 && user.isAuthorized("essentials.kit.others")) { - final User userTo = getPlayer(server, args, 1, true); + final IUser userTo = getPlayer(args, 1, true); final String kitName = Util.sanitizeString(args[0].toLowerCase(Locale.ENGLISH)); giveKit(userTo, user, kitName); } @@ -50,7 +52,7 @@ public class Commandkit extends EssentialsCommand } @Override - public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception + public void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 2) { @@ -59,14 +61,13 @@ public class Commandkit extends EssentialsCommand } else { - final User userTo = getPlayer(server, args, 1, true); + final IUser userTo = getPlayer(args, 1, true); final String kitName = args[0].toLowerCase(Locale.ENGLISH); final Kit kit = ess.getKits().getKit(kitName); + final List<String> items = Kit.getItems(userTo, kit); + Kit.expandItems(ess,userTo,items); - if (!KitPermissions.getPermission(kitName).isAuthorized(user)) - { - throw new Exception(_("noKitPermission", "essentials.kit." + kitName)); - } + //TODO: Check kit delay sender.sendMessage(_("kitGive", kitName)); @@ -86,7 +87,7 @@ public class Commandkit extends EssentialsCommand } } - private void giveKit(User userTo, User userFrom, String kitName) throws Exception + private void giveKit(IUser userTo, IUser userFrom, String kitName) throws Exception { final Map<String, Object> kit = ess.getSettings().getKit(kitName); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java b/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java index c68290c65..96670fa94 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java @@ -39,7 +39,7 @@ public class Commandspawner extends EssentialsCommand { throw new Exception(_("invalidMob")); } - if (ess.getSettings().getProtectPreventSpawn(mob.getType().toString().toLowerCase(Locale.ENGLISH))) + if (ess.getSettings().getData().getGeneral().getPreventSpawn(mob.getType().toString().toLowerCase(Locale.ENGLISH))) { throw new Exception(_("disabledToSpawnMob")); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtime.java b/Essentials/src/com/earth2me/essentials/commands/Commandtime.java index 9b28f5d6c..35ba8dedc 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtime.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtime.java @@ -1,10 +1,10 @@ package com.earth2me.essentials.commands; -import com.earth2me.essentials.utils.DescParseTickFormat; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.permissions.Permissions; -import com.earth2me.essentials.Util; +import com.earth2me.essentials.utils.DescParseTickFormat; +import com.earth2me.essentials.utils.Util; import java.util.*; import org.bukkit.World; import org.bukkit.command.CommandSender; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java index 56041fc3e..931f50202 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java @@ -17,7 +17,7 @@ public class Commandtpo extends EssentialsCommand throw new NotEnoughArgumentsException(); case 1: - final User player = getPlayer(server, args, 0, true); + final IUser player = getPlayer(args, 0, true); if (!player.isOnline() || (player.isHidden() && !user.isAuthorized("essentials.teleport.hidden"))) { throw new NoSuchFieldException(_("playerNotFound")); @@ -37,8 +37,8 @@ public class Commandtpo extends EssentialsCommand throw new Exception(_("noPerm", "essentials.tp.others")); } user.sendMessage(_("teleporting")); - final User target = getPlayer(server, args, 0, true); - final User toPlayer = getPlayer(server, args, 1, true); + final IUser target = getPlayer(args, 0, true); + final IUser toPlayer = getPlayer(args, 1, true); if (!target.isOnline() || !toPlayer.isOnline() || ((target.isHidden() || toPlayer.isHidden()) && !user.isAuthorized("essentials.teleport.hidden"))) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java b/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java index ca50a068d..80daf2b16 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java @@ -38,14 +38,14 @@ public class Commandtppos extends EssentialsCommand } @Override - public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception + public void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 4) { throw new NotEnoughArgumentsException(); } - User user = ess.getUser(server.getPlayer(args[0])); + IUser user = ess.getUser(server.getPlayer(args[0])); final int x = Integer.parseInt(args[1]); final int y = Integer.parseInt(args[2]); final int z = Integer.parseInt(args[3]); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandvanish.java b/Essentials/src/com/earth2me/essentials/commands/Commandvanish.java index b55bd76a4..032631056 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandvanish.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandvanish.java @@ -1,21 +1,14 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.User; -import org.bukkit.ChatColor; -import org.bukkit.Server; +import com.earth2me.essentials.api.IUser; import org.bukkit.entity.Player; public class Commandvanish extends EssentialsCommand { - public Commandvanish() - { - super("vanish"); - } - @Override - protected void run(Server server, User user, String commandLabel, String[] args) throws Exception + protected void run(IUser user, String commandLabel, String[] args) throws Exception { if (user.isVanished()) { diff --git a/Essentials/src/com/earth2me/essentials/commands/WarpNotFoundException.java b/Essentials/src/com/earth2me/essentials/commands/WarpNotFoundException.java index c5b592c2a..c2e9c5c44 100644 --- a/Essentials/src/com/earth2me/essentials/commands/WarpNotFoundException.java +++ b/Essentials/src/com/earth2me/essentials/commands/WarpNotFoundException.java @@ -1,4 +1,5 @@ package com.earth2me.essentials.commands; +import static com.earth2me.essentials.I18n._; public class WarpNotFoundException extends Exception diff --git a/Essentials/src/com/earth2me/essentials/economy/MoneyHolder.java b/Essentials/src/com/earth2me/essentials/economy/MoneyHolder.java index 179e09210..cdde3506e 100644 --- a/Essentials/src/com/earth2me/essentials/economy/MoneyHolder.java +++ b/Essentials/src/com/earth2me/essentials/economy/MoneyHolder.java @@ -8,6 +8,20 @@ import java.io.IOException; public class MoneyHolder extends AsyncStorageObjectHolder<Money> { + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + public MoneyHolder(IEssentials ess) { super(ess, Money.class); diff --git a/Essentials/src/com/earth2me/essentials/economy/WorthHolder.java b/Essentials/src/com/earth2me/essentials/economy/WorthHolder.java index 598c22c4c..499b92bac 100644 --- a/Essentials/src/com/earth2me/essentials/economy/WorthHolder.java +++ b/Essentials/src/com/earth2me/essentials/economy/WorthHolder.java @@ -15,6 +15,20 @@ import org.bukkit.material.MaterialData; public class WorthHolder extends AsyncStorageObjectHolder<com.earth2me.essentials.economy.Worth> implements IWorth { + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + public WorthHolder(final IEssentials ess) { super(ess, com.earth2me.essentials.economy.Worth.class); diff --git a/Essentials/src/com/earth2me/essentials/listener/TntExplodeListener.java b/Essentials/src/com/earth2me/essentials/listener/TntExplodeListener.java index 4710187f1..778469605 100644 --- a/Essentials/src/com/earth2me/essentials/listener/TntExplodeListener.java +++ b/Essentials/src/com/earth2me/essentials/listener/TntExplodeListener.java @@ -1,7 +1,6 @@ package com.earth2me.essentials.listener; import com.earth2me.essentials.api.IEssentials; -import com.earth2me.essentials.craftbukkit.FakeExplosion; import java.util.concurrent.atomic.AtomicBoolean; import org.bukkit.entity.LivingEntity; import org.bukkit.event.EventHandler; diff --git a/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java b/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java index 4af8f9173..5c71e54f9 100644 --- a/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java +++ b/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java @@ -1,7 +1,7 @@ package com.earth2me.essentials.metrics; -import com.earth2me.essentials.IEssentials; -import com.earth2me.essentials.User; +import com.earth2me.essentials.api.IEssentials; +import com.earth2me.essentials.api.IUser; import java.util.logging.Level; import org.bukkit.Server; import org.bukkit.entity.Player; @@ -27,7 +27,7 @@ public class MetricsListener implements Listener @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(final PlayerJoinEvent event) { - final User player = ess.getUser(event.getPlayer()); + final IUser player = ess.getUser(event.getPlayer()); if (ess.getSettings().isMetricsEnabled() == false && (player.isAuthorized("essentials.essentials") || player.isAuthorized("bukkit.broadcast.admin"))) { player.sendMessage("PluginMetrics collects minimal statistic data, starting in about 5 minutes."); diff --git a/Essentials/src/com/earth2me/essentials/metrics/MetricsStarter.java b/Essentials/src/com/earth2me/essentials/metrics/MetricsStarter.java index 0ea692cc9..867b9e876 100644 --- a/Essentials/src/com/earth2me/essentials/metrics/MetricsStarter.java +++ b/Essentials/src/com/earth2me/essentials/metrics/MetricsStarter.java @@ -1,6 +1,6 @@ package com.earth2me.essentials.metrics; -import com.earth2me.essentials.IEssentials; +import com.earth2me.essentials.api.IEssentials; import com.earth2me.essentials.metrics.Metrics.Graph; import com.earth2me.essentials.metrics.Metrics.Plotter; import com.earth2me.essentials.register.payment.Method; diff --git a/Essentials/src/com/earth2me/essentials/ranks/GMGroups.java b/Essentials/src/com/earth2me/essentials/ranks/GMGroups.java index 244ff8410..512df1e0d 100644 --- a/Essentials/src/com/earth2me/essentials/ranks/GMGroups.java +++ b/Essentials/src/com/earth2me/essentials/ranks/GMGroups.java @@ -91,7 +91,7 @@ public class GMGroups implements IRanks { public MessageFormat getChatFormat(final IUser player) { String format = getRawChatFormat(player); - format = Util.replaceColor(format); + format = Util.replaceFormat(format); format = format.replace("{DISPLAYNAME}", "%1$s"); format = format.replace("{GROUP}", "{0}"); format = format.replace("{MESSAGE}", "%2$s"); diff --git a/Essentials/src/com/earth2me/essentials/ranks/RanksStorage.java b/Essentials/src/com/earth2me/essentials/ranks/RanksStorage.java index 7f6e5dd84..85658863b 100644 --- a/Essentials/src/com/earth2me/essentials/ranks/RanksStorage.java +++ b/Essentials/src/com/earth2me/essentials/ranks/RanksStorage.java @@ -19,6 +19,18 @@ import lombok.Cleanup; public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRanks { + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } public RanksStorage(final IEssentials ess) { super(ess, Ranks.class); @@ -143,7 +155,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa public MessageFormat getChatFormat(final IUser player) { String format = getRawChatFormat(player); - format = Util.replaceColor(format); + format = Util.replaceFormat(format); format = format.replace("{DISPLAYNAME}", "%1$s"); format = format.replace("{GROUP}", "{0}"); format = format.replace("{MESSAGE}", "%2$s"); diff --git a/Essentials/src/com/earth2me/essentials/ranks/VaultGroups.java b/Essentials/src/com/earth2me/essentials/ranks/VaultGroups.java index 1d94b6089..36c9742cf 100644 --- a/Essentials/src/com/earth2me/essentials/ranks/VaultGroups.java +++ b/Essentials/src/com/earth2me/essentials/ranks/VaultGroups.java @@ -72,7 +72,7 @@ public class VaultGroups implements IRanks public MessageFormat getChatFormat(final IUser player) { String format = getRawChatFormat(player); - format = Util.replaceColor(format); + format = Util.replaceFormat(format); format = format.replace("{DISPLAYNAME}", "%1$s"); format = format.replace("{GROUP}", "{0}"); format = format.replace("{MESSAGE}", "%2$s"); diff --git a/Essentials/src/com/earth2me/essentials/settings/General.java b/Essentials/src/com/earth2me/essentials/settings/General.java index 85238977f..033a6ce31 100644 --- a/Essentials/src/com/earth2me/essentials/settings/General.java +++ b/Essentials/src/com/earth2me/essentials/settings/General.java @@ -2,6 +2,8 @@ package com.earth2me.essentials.settings; import com.earth2me.essentials.storage.Comment; import com.earth2me.essentials.storage.StorageObject; +import java.util.HashMap; +import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; @@ -17,6 +19,8 @@ public class General implements StorageObject @Comment("Turn this on, if you want to see more error messages, if something goes wrong.") private boolean debug = false; @Comment( + + { "Set the locale here, if you want to change the language of Essentials.", "If this is not set, Essentials will use the language of your computer.", @@ -24,6 +28,8 @@ public class General implements StorageObject }) private String locale; @Comment( + + { "The number of items given, if the quantity parameter is left out in /item or /give.", "If this number is below 1, the maximum stack size size is given. If oversized stacks", @@ -31,6 +37,8 @@ public class General implements StorageObject }) private int defaultStacksize = -1; @Comment( + + { "Oversized stacks are stacks that ignore the normal max stacksize.", "They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission.", @@ -44,6 +52,8 @@ public class General implements StorageObject FILE, GROUPMANAGER, VAULT } @Comment( + + { "Sets the place where group options should be stored:", " FILE: Options are stored inside groups.yml in the Essentials folder", @@ -51,4 +61,36 @@ public class General implements StorageObject " VAULT: Options are stored using a permissions plugin supported by Vault" }) private GroupStorage groupStorage = GroupStorage.FILE; + @Comment( + + { + "The delay, in seconds, a player can't be attacked by other players after he has been teleported by a command", + "This will also prevent that the player can attack other players" + }) + private long teleportInvulnerability = 0; + + public long getTeleportInvulnerability() + { + return teleportInvulnerability * 1000; + } + + @Comment( + { + "Set to true to enable per-world permissions for teleporting between worlds with essentials commands", + "This applies to /world, /back, /tp[a|o][here|all], but not warps.", + "Give someone permission to teleport to a world with essentials.world.<worldname>" + }) + private boolean worldTeleportPermissions = false; + + @Comment("Prevent creatures spawning") + private Map<String, Boolean> creatureSpawn = new HashMap<String, Boolean>(); + + public boolean getPreventSpawn(String creatureName) + { + if (creatureSpawn == null) + { + return false; + } + return creatureSpawn.get(creatureName); + } } diff --git a/Essentials/src/com/earth2me/essentials/settings/SettingsHolder.java b/Essentials/src/com/earth2me/essentials/settings/SettingsHolder.java index 434d9b922..56aecf378 100644 --- a/Essentials/src/com/earth2me/essentials/settings/SettingsHolder.java +++ b/Essentials/src/com/earth2me/essentials/settings/SettingsHolder.java @@ -9,6 +9,18 @@ import java.util.concurrent.atomic.AtomicBoolean; public class SettingsHolder extends AsyncStorageObjectHolder<Settings> implements ISettings { + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } private final transient AtomicBoolean debug = new AtomicBoolean(false); public SettingsHolder(final IEssentials ess) { diff --git a/Essentials/src/com/earth2me/essentials/settings/SpawnsHolder.java b/Essentials/src/com/earth2me/essentials/settings/SpawnsHolder.java index 19c9198da..c2dc0def2 100644 --- a/Essentials/src/com/earth2me/essentials/settings/SpawnsHolder.java +++ b/Essentials/src/com/earth2me/essentials/settings/SpawnsHolder.java @@ -29,6 +29,19 @@ import org.bukkit.plugin.EventExecutor; public class SpawnsHolder extends AsyncStorageObjectHolder<Spawns> implements IEssentialsModule { + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } + public SpawnsHolder(final IEssentials ess) { super(ess, Spawns.class); diff --git a/Essentials/src/com/earth2me/essentials/settings/WarpHolder.java b/Essentials/src/com/earth2me/essentials/settings/WarpHolder.java index b6a9f2879..a2facb824 100644 --- a/Essentials/src/com/earth2me/essentials/settings/WarpHolder.java +++ b/Essentials/src/com/earth2me/essentials/settings/WarpHolder.java @@ -10,6 +10,19 @@ import java.io.IOException; public class WarpHolder extends AsyncStorageObjectHolder<Warp> implements IWarp { + + @Override + public void finishRead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void finishWrite() + { + throw new UnsupportedOperationException("Not supported yet."); + } + private final String name; public WarpHolder(String name, IEssentials ess) diff --git a/Essentials/src/com/earth2me/essentials/settings/WorldOptions.java b/Essentials/src/com/earth2me/essentials/settings/WorldOptions.java index 33271b460..95228684b 100644 --- a/Essentials/src/com/earth2me/essentials/settings/WorldOptions.java +++ b/Essentials/src/com/earth2me/essentials/settings/WorldOptions.java @@ -5,10 +5,12 @@ import com.earth2me.essentials.storage.StorageObject; import lombok.Data; import lombok.EqualsAndHashCode; + @Data @EqualsAndHashCode(callSuper = false) public class WorldOptions implements StorageObject { @Comment("Disables godmode for all players if they teleport to this world.") - private boolean godmode = true; + private boolean godmode = true; + } diff --git a/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java b/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java index e7a93e7fe..037fa4292 100644 --- a/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java +++ b/Essentials/src/com/earth2me/essentials/storage/AbstractDelayedYamlFileReader.java @@ -9,11 +9,11 @@ import java.io.IOException; import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Level; import org.bukkit.Bukkit; -import org.bukkit.plugin.Plugin; public abstract class AbstractDelayedYamlFileReader<T extends StorageObject> implements Runnable { + private final transient Class<T> clazz; protected final transient IEssentials plugin; private final transient ReentrantLock lock = new ReentrantLock(); @@ -41,10 +41,11 @@ public abstract class AbstractDelayedYamlFileReader<T extends StorageObject> imp @Override public void run() { + File file = null; lock.lock(); try { - final File file = onStart(); + file = onStart(); try { final FileReader reader = new FileReader(file); @@ -81,7 +82,7 @@ public abstract class AbstractDelayedYamlFileReader<T extends StorageObject> imp } catch (IOException ex) { - onException(); + onException(ex); if (plugin.getSettings() == null || plugin.getSettings().isDebug()) { Bukkit.getLogger().log(Level.INFO, "File not found: " + file.toString()); diff --git a/Essentials/src/com/earth2me/essentials/user/IOfflinePlayer.java b/Essentials/src/com/earth2me/essentials/user/IOfflinePlayer.java index 65304e76a..18667c8ca 100644 --- a/Essentials/src/com/earth2me/essentials/user/IOfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/user/IOfflinePlayer.java @@ -15,4 +15,6 @@ public interface IOfflinePlayer void setBanned(boolean bln); boolean hasPermission(Permission perm); + + void setName(final String name); }
\ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/user/User.java b/Essentials/src/com/earth2me/essentials/user/User.java index 59319fb20..e181ac1e3 100644 --- a/Essentials/src/com/earth2me/essentials/user/User.java +++ b/Essentials/src/com/earth2me/essentials/user/User.java @@ -1,35 +1,74 @@ package com.earth2me.essentials.user; -import com.earth2me.essentials.api.ChargeException; import com.earth2me.essentials.Console; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.Teleport; -import com.earth2me.essentials.utils.Util; import com.earth2me.essentials.api.*; import com.earth2me.essentials.craftbukkit.InventoryWorkaround; -import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.economy.register.Method; +import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.utils.DateUtil; +import com.earth2me.essentials.utils.Util; +import java.net.InetSocketAddress; import java.util.Calendar; +import java.util.Collection; import java.util.GregorianCalendar; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Level; import java.util.logging.Logger; import lombok.Cleanup; import lombok.Getter; import lombok.Setter; +import org.bukkit.Achievement; import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.EntityEffect; +import org.bukkit.GameMode; +import org.bukkit.Instrument; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.Note; import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.Statistic; +import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.command.CommandSender; +import org.bukkit.conversations.Conversation; +import org.bukkit.conversations.ConversationAbandonedEvent; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Egg; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.Snowball; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.InventoryView.Property; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; +import org.bukkit.map.MapView; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.plugin.Plugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; public class User extends UserBase implements IUser { + private CommandSender replyTo = null; @Getter private transient IUser teleportRequester; @@ -46,6 +85,10 @@ public class User extends UserBase implements IUser @Getter @Setter private boolean hidden = false; + @Getter + private transient boolean vanished; + @Getter + private boolean invSee = false; private transient Location afkPosition; private static final Logger logger = Bukkit.getLogger(); private AtomicBoolean gotMailInfo = new AtomicBoolean(false); @@ -60,8 +103,8 @@ public class User extends UserBase implements IUser { super(offlinePlayer, ess); teleport = new Teleport(this, ess); - } - + } + public void example() { // Cleanup will call close at the end of the function @@ -687,24 +730,1099 @@ public class User extends UserBase implements IUser return cost <= mon; } + @Override public void updateMoneyCache(double userMoney) { if (super.getMoney() != userMoney) { super.setMoney(userMoney); } } + @Override public boolean canAfford(double amount, boolean b) { return true; + } + private transient long teleportInvulnerabilityTimestamp = 0; + + public void enableInvulnerabilityAfterTeleport() + { + @Cleanup + final ISettings settings = ess.getSettings(); + settings.acquireReadLock(); + + final long time = settings.getData().getGeneral().getTeleportInvulnerability(); + if (time > 0) + { + teleportInvulnerabilityTimestamp = System.currentTimeMillis() + time; + } } @Override - public boolean canAfford(final double cost) + public void resetInvulnerabilityAfterTeleport() { - final double mon = getMoney(); - if (isAuthorized("essentials.eco.loan")) + if (teleportInvulnerabilityTimestamp != 0 + && teleportInvulnerabilityTimestamp < System.currentTimeMillis()) { - return (mon - cost) >= ess.getSettings().getMinMoney(); + teleportInvulnerabilityTimestamp = 0; } - return cost <= mon; } + + public void toggleVanished() + { + vanished = !vanished; + if (vanished) + { + ess.getVanishedPlayers().add(getName()); + } + else + { + ess.getVanishedPlayers().remove(getName()); + } + } + + + //start// + @Override + public void setDisplayName(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getPlayerListName() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setPlayerListName(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setCompassTarget(Location lctn) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Location getCompassTarget() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public InetSocketAddress getAddress() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendRawMessage(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void kickPlayer(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void chat(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean performCommand(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isSneaking() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setSneaking(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isSprinting() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setSprinting(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void saveData() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void loadData() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setSleepingIgnored(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isSleepingIgnored() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void playNote(Location lctn, byte b, byte b1) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void playNote(Location lctn, Instrument i, Note note) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void playEffect(Location lctn, Effect effect, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public <T> void playEffect(Location lctn, Effect effect, T t) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendBlockChange(Location lctn, Material mtrl, byte b) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean sendChunkChange(Location lctn, int i, int i1, int i2, byte[] bytes) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendBlockChange(Location lctn, int i, byte b) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendMap(MapView mv) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void updateInventory() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void awardAchievement(Achievement a) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void incrementStatistic(Statistic ststc) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void incrementStatistic(Statistic ststc, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void incrementStatistic(Statistic ststc, Material mtrl) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void incrementStatistic(Statistic ststc, Material mtrl, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setPlayerTime(long l, boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public long getPlayerTime() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public long getPlayerTimeOffset() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isPlayerTimeRelative() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void resetPlayerTime() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void giveExp(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public float getExp() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setExp(float f) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getLevel() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setLevel(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getTotalExperience() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setTotalExperience(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public float getExhaustion() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setExhaustion(float f) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public float getSaturation() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setSaturation(float f) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getFoodLevel() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setFoodLevel(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setBedSpawnLocation(Location lctn) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean getAllowFlight() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setAllowFlight(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void hidePlayer(Player player) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void showPlayer(Player player) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean canSee(Player player) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isFlying() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setFlying(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public PlayerInventory getInventory() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean setWindowProperty(Property prprt, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public InventoryView getOpenInventory() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public InventoryView openInventory(Inventory invntr) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public InventoryView openWorkbench(Location lctn, boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public InventoryView openEnchanting(Location lctn, boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void openInventory(InventoryView iv) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void closeInventory() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public ItemStack getItemInHand() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setItemInHand(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public ItemStack getItemOnCursor() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setItemOnCursor(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isSleeping() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getSleepTicks() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public GameMode getGameMode() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setGameMode(GameMode gm) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isBlocking() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getHealth() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setHealth(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getMaxHealth() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public double getEyeHeight() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public double getEyeHeight(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Location getEyeLocation() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public List<Block> getLineOfSight(HashSet<Byte> hs, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Block getTargetBlock(HashSet<Byte> hs, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public List<Block> getLastTwoTargetBlocks(HashSet<Byte> hs, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Egg throwEgg() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Snowball throwSnowball() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Arrow shootArrow() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public <T extends Projectile> T launchProjectile(Class<? extends T> type) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getRemainingAir() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setRemainingAir(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getMaximumAir() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setMaximumAir(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void damage(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void damage(int i, Entity entity) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getMaximumNoDamageTicks() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setMaximumNoDamageTicks(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getLastDamage() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setLastDamage(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getNoDamageTicks() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setNoDamageTicks(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Player getKiller() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean addPotionEffect(PotionEffect pe) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean addPotionEffect(PotionEffect pe, boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean addPotionEffects(Collection<PotionEffect> clctn) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean hasPotionEffect(PotionEffectType pet) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void removePotionEffect(PotionEffectType pet) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection<PotionEffect> getActivePotionEffects() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Location getLocation() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setVelocity(Vector vector) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Vector getVelocity() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public World getWorld() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean teleport(Location lctn) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean teleport(Location lctn, TeleportCause tc) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean teleport(Entity entity) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean teleport(Entity entity, TeleportCause tc) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public List<Entity> getNearbyEntities(double d, double d1, double d2) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getEntityId() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getFireTicks() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getMaxFireTicks() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setFireTicks(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void remove() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isDead() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Server getServer() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Entity getPassenger() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean setPassenger(Entity entity) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isEmpty() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean eject() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public float getFallDistance() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setFallDistance(float f) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setLastDamageCause(EntityDamageEvent ede) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public EntityDamageEvent getLastDamageCause() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public UUID getUniqueId() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getTicksLived() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setTicksLived(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void playEffect(EntityEffect ee) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public EntityType getType() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isInsideVehicle() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean leaveVehicle() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Entity getVehicle() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setMetadata(String string, MetadataValue mv) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public List<MetadataValue> getMetadata(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean hasMetadata(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void removeMetadata(String string, Plugin plugin) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isPermissionSet(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isPermissionSet(Permission prmsn) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean hasPermission(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public PermissionAttachment addAttachment(Plugin plugin, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void removeAttachment(PermissionAttachment pa) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void recalculatePermissions() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Set<PermissionAttachmentInfo> getEffectivePermissions() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isOp() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setOp(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isConversing() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void acceptConversationInput(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean beginConversation(Conversation c) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void abandonConversation(Conversation c) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void abandonConversation(Conversation c, ConversationAbandonedEvent cae) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendMessage(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendMessage(String[] strings) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isOnline() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isBanned() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean isWhitelisted() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setWhitelisted(boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Player getPlayer() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public long getFirstPlayed() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public long getLastPlayed() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean hasPlayedBefore() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Map<String, Object> serialize() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void sendPluginMessage(Plugin plugin, String string, byte[] bytes) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Set<String> getListeningPluginChannels() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setName(String name) + { + throw new UnsupportedOperationException("Not supported yet."); + } + //end// } diff --git a/Essentials/src/com/earth2me/essentials/utils/Util.java b/Essentials/src/com/earth2me/essentials/utils/Util.java index 720376c66..889fd5bf8 100644 --- a/Essentials/src/com/earth2me/essentials/utils/Util.java +++ b/Essentials/src/com/earth2me/essentials/utils/Util.java @@ -3,6 +3,7 @@ package com.earth2me.essentials.utils; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.api.IEssentials; import com.earth2me.essentials.api.ISettings; +import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.InvalidNameException; import com.earth2me.essentials.utils.gnu.inet.encoding.Punycode; import com.earth2me.essentials.utils.gnu.inet.encoding.PunycodeException; @@ -178,7 +179,7 @@ public final class Util public static String formatAsCurrency(final double value) { - + String str = dFormat.format(value); if (str.endsWith(".00")) { @@ -333,26 +334,113 @@ public final class Util perm.recalculatePermissibles(); return perm; } - private static transient final Pattern VANILLA_COLOR_PATTERN = Pattern.compile("\u00A7+[0-9A-FKa-fk]"); - private static transient final Pattern EASY_COLOR_PATTERN = Pattern.compile("&([0-9a-fk])"); + private static transient final Pattern URL_PATTERN = Pattern.compile("((?:(?:https?)://)?[\\w-_\\.]{2,})\\.([a-z]{2,3}(?:/\\S+)?)"); + private static transient final Pattern VANILLA_PATTERN = Pattern.compile("\u00A7+[0-9A-FK-ORa-fk-or]"); + private static transient final Pattern REPLACE_PATTERN = Pattern.compile("&([0-9a-fk-or])"); + private static transient final Pattern VANILLA_COLOR_PATTERN = Pattern.compile("\u00A7+[0-9A-Fa-f]"); + private static transient final Pattern VANILLA_MAGIC_PATTERN = Pattern.compile("\u00A7+[Kk]"); + private static transient final Pattern VANILLA_FORMAT_PATTERN = Pattern.compile("\u00A7+[L-ORl-or]"); + private static transient final Pattern REPLACE_COLOR_PATTERN = Pattern.compile("&([0-9a-f])"); + private static transient final Pattern REPLACE_MAGIC_PATTERN = Pattern.compile("&(k)"); + private static transient final Pattern REPLACE_FORMAT_PATTERN = Pattern.compile("&([l-or])"); - public static String stripColor(final String input) + public static String stripFormat(final String input) { if (input == null) { return null; } + return VANILLA_PATTERN.matcher(input).replaceAll(""); + } - return VANILLA_COLOR_PATTERN.matcher(input).replaceAll(""); + public static String replaceFormat(final String input) + { + if (input == null) + { + return null; + } + return REPLACE_PATTERN.matcher(input).replaceAll("\u00a7$1"); + } + + public static String blockURL(final String input) + { + if (input == null) + { + return null; + } + String text = URL_PATTERN.matcher(input).replaceAll("$1 $2"); + while (URL_PATTERN.matcher(text).find()) + { + text = URL_PATTERN.matcher(text).replaceAll("$1 $2"); + } + return text; + } + + public static String formatString(final IUser user, final String permBase, final String input) + { + if (input == null) + { + return null; + } + String message; + if (user.isAuthorized(permBase + ".color")) + { + message = Util.replaceColor(input, REPLACE_COLOR_PATTERN); + } + else + { + message = Util.stripColor(input, VANILLA_COLOR_PATTERN); + } + if (user.isAuthorized(permBase + ".magic")) + { + message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN); + } + else + { + message = Util.stripColor(message, VANILLA_MAGIC_PATTERN); + } + if (user.isAuthorized(permBase + ".format")) + { + message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN); + } + else + { + message = Util.stripColor(message, VANILLA_FORMAT_PATTERN); + } + return message; } - public static String replaceColor(final String input) + public static String formatMessage(final IUser user, final String permBase, final String input) { if (input == null) { return null; } + String message = formatString(user, permBase, input); + if (!user.isAuthorized(permBase + ".url")) + { + message = Util.blockURL(message); + } + return message; + } - return EASY_COLOR_PATTERN.matcher(input).replaceAll("\u00a7$1"); + public static String stripColor(final String input) + { + if (input == null) + { + return null; + } + + return VANILLA_COLOR_PATTERN.matcher(input).replaceAll(""); + } + + private static String stripColor(final String input, final Pattern pattern) + { + return pattern.matcher(input).replaceAll(""); + } + + private static String replaceColor(final String input, final Pattern pattern) + { + return pattern.matcher(input).replaceAll("\u00a7$1"); } } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java index 6a86de1f1..acf08a5dd 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java @@ -9,6 +9,7 @@ import com.earth2me.essentials.api.IRanks; import com.earth2me.essentials.api.ISettings; import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.permissions.Permissions; +import com.earth2me.essentials.storage.Location; import java.util.Locale; import java.util.Map; import java.util.logging.Logger; @@ -74,7 +74,7 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <bukkit.version>1.2.5-R1.2-SNAPSHOT</bukkit.version> + <bukkit.version>1.2.5-R3.1-SNAPSHOT</bukkit.version> <build.number>Unknown</build.number> <org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs>true</org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs> <org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width>2</org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width> |