1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-09-02 19:22:37 +02:00

Fix more stuff in 3.0

This commit is contained in:
snowleo
2012-07-22 11:28:14 +02:00
parent ff39c63f83
commit dd8ddd15a1
39 changed files with 484 additions and 174 deletions

View File

@@ -18,8 +18,8 @@
package net.ess3;
import net.ess3.api.server.Player;
import net.ess3.api.server.IPlugin;
import net.ess3.api.server.IServer;
import net.ess3.api.server.Plugin;
import net.ess3.api.server.Server;
import net.ess3.api.server.World;
import java.io.File;
import java.io.IOException;
@@ -76,11 +76,11 @@ public class Essentials implements IEssentials
private transient ICommandHandler commandHandler;
private transient Economy economy;
@Getter
private final IServer server;
private final Server server;
@Getter
private final Logger logger;
@Getter
private final IPlugin plugin;
private final Plugin plugin;
public static boolean testing;
private transient Metrics metrics;
@Getter
@@ -88,7 +88,7 @@ public class Essentials implements IEssentials
@Getter
private transient List<String> vanishedPlayers = new ArrayList<String>();
public Essentials(final IServer server, final Logger logger, final IPlugin plugin)
public Essentials(final Server server, final Logger logger, final Plugin plugin)
{
this.server = server;
this.logger = logger;

View File

@@ -2,10 +2,10 @@ package net.ess3;
import java.util.*;
import java.util.logging.Level;
import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.api.server.Player;
import net.ess3.permissions.Permissions;
import net.ess3.user.UserData.TimestampType;

View File

@@ -1,7 +1,7 @@
package net.ess3.api;
import net.ess3.api.server.IPlugin;
import net.ess3.api.server.IServer;
import net.ess3.api.server.Plugin;
import net.ess3.api.server.Server;
import net.ess3.api.server.World;
import net.ess3.economy.register.Methods;
import net.ess3.listener.TntExplodeListener;
@@ -59,11 +59,11 @@ public interface IEssentials extends IComponent
IEconomy getEconomy();
IServer getServer();
Server getServer();
Logger getLogger();
IPlugin getPlugin();
Plugin getPlugin();
List<String> getVanishedPlayers();

View File

@@ -1,5 +0,0 @@
package net.ess3.api.server;
public interface IPlayer {
}

View File

@@ -2,9 +2,10 @@ package net.ess3.api.server;
import java.io.File;
import java.io.InputStream;
import java.util.logging.Logger;
public interface IPlugin
public interface Plugin
{
int scheduleAsyncDelayedTask(final Runnable run);
@@ -14,6 +15,8 @@ public interface IPlugin
int scheduleSyncRepeatingTask(final Runnable run, final long delay, final long period);
int scheduleAsyncRepeatingTask(final Runnable run, final long delay, final long period);
File getRootFolder();
File getDataFolder();
@@ -29,4 +32,6 @@ public interface IPlugin
Location callRespawnEvent(Player player, Location loc, boolean bedSpawn);
void callSuicideEvent(Player player);
Logger getLogger();
}

View File

@@ -4,7 +4,7 @@ import java.util.Collection;
import java.util.List;
public interface IServer
public interface Server
{
List<World> getWorlds();

View File

@@ -24,5 +24,5 @@ public interface World {
long getTime();
void setSpawnLocation(int blockX, int blockY, int blockZ);
boolean setSpawnLocation(int blockX, int blockY, int blockZ);
}

View File

@@ -5,7 +5,7 @@ import net.ess3.api.IBackup;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.IServer;
import net.ess3.api.server.Server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -16,7 +16,7 @@ import lombok.Cleanup;
public class Backup implements Runnable, IBackup
{
private transient final IServer server;
private transient final Server server;
private transient final IEssentials ess;
private transient final AtomicBoolean running = new AtomicBoolean(false);
private transient int taskId = -1;

View File

@@ -1,9 +1,9 @@
package net.ess3.bukkit;
import net.ess3.api.server.Permission;
import java.util.regex.Pattern;
import lombok.Delegate;
import lombok.Getter;
import net.ess3.api.server.Permission;
import org.bukkit.Bukkit;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.PluginManager;

View File

@@ -1,9 +1,12 @@
package net.ess3.bukkit;
import net.ess3.api.IUser;
import net.ess3.api.server.*;
import lombok.Delegate;
import lombok.Getter;
import net.ess3.api.IUser;
import net.ess3.api.server.IInventory;
import net.ess3.api.server.Location;
import net.ess3.api.server.Player;
import net.ess3.api.server.World;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.LivingEntity;
@@ -46,9 +49,9 @@ public class BukkitPlayer extends BukkitCommandSender implements Player
})
@Getter
private transient OfflinePlayer safePlayer;
private final transient IServer server;
private final transient BukkitServer server;
public BukkitPlayer(final OfflinePlayer player, final IServer server)
public BukkitPlayer(final OfflinePlayer player, final BukkitServer server)
{
super(player.getPlayer());
this.server = server;
@@ -157,10 +160,10 @@ public class BukkitPlayer extends BukkitCommandSender implements Player
}
}
private int getExpToLevel()
/*private int getExpToLevel()
{
return getExpToLevel(onlinePlayer.getLevel());
}
}*/
private static int getExpToLevel(final int level)
{

View File

@@ -1,7 +1,7 @@
package net.ess3.bukkit;
import net.ess3.api.server.Player;
import net.ess3.api.server.IPlugin;
import net.ess3.api.server.Plugin;
import net.ess3.api.server.Location;
import java.io.File;
import lombok.Delegate;
@@ -10,12 +10,12 @@ import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.plugin.java.JavaPluginLoader;
public class Plugin implements IPlugin
public class BukkitPlugin implements Plugin
{
@Delegate
private final org.bukkit.plugin.Plugin plugin;
public Plugin(final org.bukkit.plugin.Plugin plugin)
public BukkitPlugin(final org.bukkit.plugin.Plugin plugin)
{
this.plugin = plugin;
}
@@ -44,6 +44,12 @@ public class Plugin implements IPlugin
return plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, run, delay, period);
}
@Override
public int scheduleAsyncRepeatingTask(final Runnable run, final long delay, final long period)
{
return plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, run, delay, period);
}
@Override
public File getRootFolder()
{

View File

@@ -1,13 +1,13 @@
package net.ess3.bukkit;
import net.ess3.api.IEssentials;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.IServer;
import net.ess3.api.server.World;
import java.util.*;
import lombok.Delegate;
import lombok.Getter;
import net.ess3.api.IEssentials;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.Server;
import net.ess3.api.server.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -18,7 +18,7 @@ import org.bukkit.event.world.WorldUnloadEvent;
import org.bukkit.plugin.RegisteredServiceProvider;
public class Server implements IServer, Listener
public class BukkitServer implements Server, Listener
{
private IEssentials ess;
private interface Excludes
@@ -38,11 +38,11 @@ public class Server implements IServer, Listener
private Map<String, World> worldsMap;
@Getter
private Collection<Player> onlinePlayers;
private Map<org.bukkit.entity.Player, Player> onlinePlayersMap;
private Map<String, Player> onlinePlayersMap;
@Getter
private CommandSender consoleSender;
public Server(final org.bukkit.Server server)
public BukkitServer(final org.bukkit.Server server)
{
this.server = server;
consoleSender = new BukkitCommandSender(server.getConsoleSender());
@@ -79,9 +79,9 @@ public class Server implements IServer, Listener
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public synchronized void onPlayerLoginEvent(final PlayerLoginEvent event)
{
final HashMap<org.bukkit.entity.Player, Player> oplayersMap = new HashMap<org.bukkit.entity.Player, Player>(onlinePlayersMap);
final HashMap<String, Player> oplayersMap = new HashMap<String, Player>(onlinePlayersMap);
BukkitPlayer p = new BukkitPlayer(event.getPlayer(), this);
oplayersMap.put(event.getPlayer(), p);
oplayersMap.put(event.getPlayer().getName(), p);
onlinePlayersMap = Collections.unmodifiableMap(oplayersMap);
onlinePlayers = Collections.unmodifiableCollection(oplayersMap.values());
}
@@ -90,8 +90,8 @@ public class Server implements IServer, Listener
public synchronized void onPlayerQuitEvent(final PlayerQuitEvent event)
{
final ArrayList<Player> oplayers = new ArrayList<Player>(onlinePlayers);
final HashMap<org.bukkit.entity.Player, Player> oplayersMap = new HashMap<org.bukkit.entity.Player, Player>(onlinePlayersMap);
oplayersMap.remove(event.getPlayer());
final HashMap<String, Player> oplayersMap = new HashMap<String, Player>(onlinePlayersMap);
oplayersMap.remove(event.getPlayer().getName());
onlinePlayersMap = Collections.unmodifiableMap(oplayersMap);
onlinePlayers = Collections.unmodifiableCollection(oplayersMap.values());
}

View File

@@ -1,5 +1,6 @@
package net.ess3.bukkit;
import java.util.List;
import net.ess3.api.server.World;
import net.ess3.api.server.ItemStack;
import net.ess3.api.server.Location;
@@ -8,14 +9,23 @@ import lombok.Getter;
import org.bukkit.TreeType;
public class BukkitWorld implements World {
@Delegate
private interface Excludes
{
boolean generateTree(Location safeLocation, TreeType tree);
ItemStack dropItem(Location loc, ItemStack stack);
Location getSpawnLocation();
void dropItemNaturally(Location location, ItemStack overflowStack);
}
@Delegate(excludes = Excludes.class)
@Getter
private final org.bukkit.World bukkitWorld;
public BukkitWorld(final org.bukkit.World world)
{
this.bukkitWorld = world;
world.getT
}
@Override
@@ -41,5 +51,4 @@ public class BukkitWorld implements World {
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -30,10 +30,10 @@ public class EssentialsPlugin extends JavaPlugin
public void onEnable()
{
Server server = new Server(getServer());
BukkitServer server = new BukkitServer(getServer());
final PluginManager pm = this.getServer().getPluginManager();
pm.registerEvents(server, this);
ess = new Essentials(server, getLogger(), new Plugin(this));
ess = new Essentials(server, getLogger(), new BukkitPlugin(this));
if (VersionCheck.checkVersion(this))
{
try
@@ -86,7 +86,7 @@ public class EssentialsPlugin extends JavaPlugin
{
CommandSender commandSender;
if (sender instanceof org.bukkit.entity.Player) {
commandSender = ((Server)ess.getServer()).getPlayer((org.bukkit.entity.Player)sender);
commandSender = ((BukkitServer)ess.getServer()).getPlayer((org.bukkit.entity.Player)sender);
} else {
commandSender = new BukkitCommandSender(sender);
}

View File

@@ -45,4 +45,10 @@ public class Inventory implements IInventory {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Map<Integer, ItemStack> addItem(ItemStack itemStack)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -6,7 +6,7 @@ import net.ess3.utils.LocationUtil;
import org.bukkit.entity.TNTPrimed;
//TODO: Remove this?
public class Commandantioch extends EssentialsCommand
{
@Override

View File

@@ -1,10 +1,10 @@
package net.ess3.commands;
import static net.ess3.I18n._;
import net.ess3.utils.Util;
import net.ess3.api.IUser;
import net.ess3.api.server.CommandSender;
import net.ess3.permissions.Permissions;
import net.ess3.utils.Util;
public class Commandbalance extends EssentialsCommand
@@ -16,7 +16,7 @@ public class Commandbalance extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
sender.sendMessage(_("balance", Util.displayCurrency(getPlayer(args, 0, true).getMoney(), ess)));
sender.sendMessage(_("balance", Util.displayCurrency(ess.getUserMap().matchUser(args[0], true, false).getMoney(), ess)));
}
@Override
@@ -25,7 +25,7 @@ public class Commandbalance extends EssentialsCommand
final double bal = (args.length < 1
|| !Permissions.BALANCE_OTHERS.isAuthorized(user)
? user
: getPlayer(args, 0, true)).getMoney();
: ess.getUserMap().matchUser(args[0], true, false)).getMoney();
user.sendMessage(_("balance", Util.displayCurrency(bal, ess)));
}
}

View File

@@ -4,7 +4,7 @@ import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.IServer;
import net.ess3.api.server.Server;
import net.ess3.permissions.Permissions;
@@ -39,7 +39,7 @@ public class Commandfly extends EssentialsCommand
user.sendMessage(_("flyMode", _(user.getAllowFlight() ? "enabled" : "disabled"), user.getDisplayName()));
}
private void flyOtherPlayers(final IServer server, final CommandSender sender, final String[] args)
private void flyOtherPlayers(final Server server, final CommandSender sender, final String[] args)
{
for (Player matchPlayer : ess.getUserMap().matchUsers(args[0],true,true))
{

View File

@@ -7,7 +7,7 @@ import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.IServer;
import net.ess3.api.server.Server;
import net.ess3.permissions.Permissions;
import net.ess3.utils.Util;
@@ -78,7 +78,7 @@ public class Commandnick extends EssentialsCommand
}
}
private void resetAllNicknames(final IServer server)
private void resetAllNicknames(final Server server)
{
for (Player player : server.getOnlinePlayers())
{

View File

@@ -5,6 +5,7 @@ import net.ess3.Console;
import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.api.server.CommandSender;
import net.ess3.economy.Trade;
import net.ess3.permissions.Permissions;
import net.ess3.permissions.WorldPermissions;

View File

@@ -12,6 +12,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
//TODO: remove bukkit
import net.ess3.api.server.CommandSender;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -36,7 +37,7 @@ public class Commandwarp extends EssentialsCommand
IUser otherUser = null;
if (args.length == 2 && Permissions.WARP_OTHERS.isAuthorized(user))
{
otherUser = ess.getUserMap().getUser(server.getPlayer(args[1]));
otherUser = ess.getUserMap().matchUser(args[1],Permissions.WARP_HIDDEN.isAuthorized(user), true);
if (otherUser == null)
{
throw new Exception(_("playerNotFound"));
@@ -57,7 +58,7 @@ public class Commandwarp extends EssentialsCommand
warpList(sender, args);
throw new NoChargeException();
}
IUser otherUser = ess.getUserMap().getUser(server.getPlayer(args[1]));
IUser otherUser = ess.getUserMap().matchUser(args[1],Permissions.WARP_HIDDEN.isAuthorized(sender), true);
if (otherUser == null)
{
throw new Exception(_("playerNotFound"));

View File

@@ -5,7 +5,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IEssentialsModule;
import net.ess3.api.IUser;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.IServer;
import net.ess3.api.server.Server;
import net.ess3.api.server.Player;
import net.ess3.economy.Trade;
import net.ess3.permissions.AbstractSuperpermsPermission;
@@ -19,7 +19,7 @@ public abstract class EssentialsCommand extends AbstractSuperpermsPermission imp
protected transient String commandName;
protected transient IEssentials ess;
protected transient IEssentialsModule module;
protected transient IServer server;
protected transient Server server;
protected transient Logger logger;
private transient String permission;
@@ -38,7 +38,7 @@ public abstract class EssentialsCommand extends AbstractSuperpermsPermission imp
this.module = module;
}
protected IUser getPlayer(final String[] args, final int pos) throws NoSuchFieldException, NotEnoughArgumentsException
/*protected IUser getPlayer(final String[] args, final int pos) throws NoSuchFieldException, NotEnoughArgumentsException
{
return getPlayer(args, pos, false);
}
@@ -81,7 +81,7 @@ public abstract class EssentialsCommand extends AbstractSuperpermsPermission imp
}
}
throw new NoSuchFieldException(_("playerNotFound"));
}
}*/
@Override
public final void run(final IUser user, final Command cmd, final String commandLabel, final String[] args) throws Exception

View File

@@ -5,13 +5,14 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import static net.ess3.I18n._;
import net.ess3.api.*;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.Plugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.PluginCommandYamlParser;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public class EssentialsCommandHandler implements ICommandHandler
@@ -63,6 +64,7 @@ public class EssentialsCommandHandler implements ICommandHandler
{
settings.unlock();
}
// TODO: Move this stuff to bukkit workarounds
// Allow plugins to override the command via onCommand
if (!overridden && (!commandLabel.startsWith("e") || commandLabel.equalsIgnoreCase(command.getName())))
{
@@ -102,7 +104,7 @@ public class EssentialsCommandHandler implements ICommandHandler
IUser user = null;
if (sender instanceof Player)
{
user = ess.getUserMap().getUser((Player)sender);
user = ((Player)sender).getUser();
LOGGER.log(Level.INFO, String.format("[PLAYER_COMMAND] %s: /%s %s ", ((Player)sender).getName(), commandLabel, EssentialsCommand.getFinalArg(args, 0)));
}
@@ -202,6 +204,7 @@ public class EssentialsCommandHandler implements ICommandHandler
{
}
//TODO: Move this stuff to bukkit workarounds
public final void addPlugin(final Plugin plugin)
{
if (plugin.getDescription().getMain().contains("com.earth2me.essentials"))

View File

@@ -1,14 +1,5 @@
package net.ess3.economy;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.api.server.ItemStack;
import net.ess3.api.server.Location;
import net.ess3.permissions.NoCommandCostPermissions;
import net.ess3.permissions.Permissions;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
@@ -19,6 +10,15 @@ import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import lombok.Cleanup;
import static net.ess3.I18n._;
import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.api.server.ItemStack;
import net.ess3.api.server.Location;
import net.ess3.permissions.NoCommandCostPermissions;
import net.ess3.permissions.Permissions;

View File

@@ -30,11 +30,7 @@ import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.*;
import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import net.ess3.api.server.Plugin;
/**
@@ -193,7 +189,7 @@ public class Metrics
}
// Begin hitting the server with glorious data
taskId = plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable()
taskId = plugin.scheduleAsyncRepeatingTask(new Runnable()
{
private boolean firstPost = true;
@@ -207,7 +203,7 @@ public class Metrics
// Disable Task, if it is running and the server owner decided to opt-out
if (isOptOut() && taskId > 0)
{
plugin.getServer().getScheduler().cancelTask(taskId);
plugin.cancelTask(taskId);
taskId = -1;
}
}
@@ -223,7 +219,7 @@ public class Metrics
}
catch (IOException e)
{
Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage());
plugin.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage());
}
}
}, 0, PING_INTERVAL * 1200);
@@ -246,12 +242,12 @@ public class Metrics
}
catch (IOException ex)
{
Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage());
plugin.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage());
return true;
}
catch (InvalidConfigurationException ex)
{
Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage());
plugin.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage());
return true;
}
return configuration.getBoolean("opt-out", false);
@@ -304,7 +300,7 @@ public class Metrics
// Disable Task, if it is running
if (taskId >= 0)
{
this.plugin.getServer().getScheduler().cancelTask(taskId);
this.plugin.cancelTask(taskId);
taskId = -1;
}
}
@@ -323,7 +319,7 @@ public class Metrics
data.append(encode("guid")).append('=').append(encode(guid));
encodeDataPair(data, "version", description.getVersion());
encodeDataPair(data, "server", Bukkit.getVersion());
encodeDataPair(data, "players", Integer.toString(Bukkit.getServer().getOnlinePlayers().length));
encodeDataPair(data, "players", Integer.toString(plugin.getServer().getOnlinePlayers().length));
encodeDataPair(data, "revision", String.valueOf(REVISION));
// If we're pinging, append it

View File

@@ -85,6 +85,7 @@ public enum Permissions implements IPermission
TPOHERE,
UNLIMITED_OTHERS,
WARP_LIST(Permission.Default.TRUE),
WARP_HIDDEN,
WARP_OTHERS,
VANISH_SEE_OTHERS;
private static final String base = "essentials.";

View File

@@ -6,6 +6,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IRanks;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.bukkit.BukkitPlayer;
import net.ess3.utils.Util;
import org.anjocaido.groupmanager.GroupManager;
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
@@ -24,7 +25,7 @@ public class GMGroups implements IRanks {
@Override
public double getHealCooldown(IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return 0;
@@ -35,7 +36,7 @@ public class GMGroups implements IRanks {
@Override
public double getTeleportCooldown(IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return 0;
@@ -46,7 +47,7 @@ public class GMGroups implements IRanks {
@Override
public double getTeleportDelay(IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return 0;
@@ -57,7 +58,7 @@ public class GMGroups implements IRanks {
@Override
public String getPrefix(IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return null;
@@ -68,7 +69,7 @@ public class GMGroups implements IRanks {
@Override
public String getSuffix(IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return null;
@@ -79,7 +80,7 @@ public class GMGroups implements IRanks {
@Override
public int getHomeLimit(IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return 0;
@@ -104,7 +105,7 @@ public class GMGroups implements IRanks {
private String getRawChatFormat(final IUser player)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler != null)
{
String chatformat = handler.getPermissionString(player.getName(), "chatformat");
@@ -122,7 +123,7 @@ public class GMGroups implements IRanks {
@Override
public String getMainGroup(IUser player)
{
final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return null;
@@ -133,7 +134,7 @@ public class GMGroups implements IRanks {
@Override
public boolean inGroup(IUser player, String groupname)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getBase());
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(((BukkitPlayer)player.getBase()).getPlayer());
if (handler == null)
{
return false;

View File

@@ -6,6 +6,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IRanks;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.bukkit.BukkitPlayer;
import net.ess3.utils.Util;
import net.milkbowl.vault.chat.Chat;
@@ -23,42 +24,42 @@ public class VaultGroups implements IRanks
public double getHealCooldown(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPlayerInfoDouble(player.getBase(), "healcooldown", 0);
return chat.getPlayerInfoDouble(((BukkitPlayer)player.getBase()).getPlayer(), "healcooldown", 0);
}
@Override
public double getTeleportCooldown(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPlayerInfoDouble(player.getBase(), "teleportcooldown", 0);
return chat.getPlayerInfoDouble(((BukkitPlayer)player.getBase()).getPlayer(), "teleportcooldown", 0);
}
@Override
public double getTeleportDelay(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPlayerInfoDouble(player.getBase(), "teleportdelay", 0);
return chat.getPlayerInfoDouble(((BukkitPlayer)player.getBase()).getPlayer(), "teleportdelay", 0);
}
@Override
public String getPrefix(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPlayerPrefix(player.getBase());
return chat.getPlayerPrefix(((BukkitPlayer)player.getBase()).getPlayer());
}
@Override
public String getSuffix(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPlayerSuffix(player.getBase());
return chat.getPlayerSuffix(((BukkitPlayer)player.getBase()).getPlayer());
}
@Override
public int getHomeLimit(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPlayerInfoInteger(player.getBase(), "homes", 0);
return chat.getPlayerInfoInteger(((BukkitPlayer)player.getBase()).getPlayer(), "homes", 0);
}
@Override
@@ -79,7 +80,7 @@ public class VaultGroups implements IRanks
private String getRawChatFormat(final IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
String chatformat = chat.getPlayerInfoString(player.getBase(), "chatformat", "");
String chatformat = chat.getPlayerInfoString(((BukkitPlayer)player.getBase()).getPlayer(), "chatformat", "");
if (chatformat != null && !chatformat.isEmpty())
{
return chatformat;
@@ -95,14 +96,14 @@ public class VaultGroups implements IRanks
public String getMainGroup(IUser player)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
return chat.getPrimaryGroup(player.getBase());
return chat.getPrimaryGroup(((BukkitPlayer)player.getBase()).getPlayer());
}
@Override
public boolean inGroup(IUser player, String groupname)
{
Chat chat = ess.getServer().getServiceProvider(Chat.class);
for (String group : chat.getPlayerGroups(player.getBase()))
for (String group : chat.getPlayerGroups(((BukkitPlayer)player.getBase()).getPlayer()))
{
if (group.equalsIgnoreCase(groupname))
{

View File

@@ -5,8 +5,11 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern;
import net.ess3.Essentials;
import net.ess3.api.server.ItemStack;
import net.ess3.api.server.Material;
import net.ess3.api.server.Plugin;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.constructor.Constructor;
@@ -18,9 +21,9 @@ import org.yaml.snakeyaml.nodes.*;
public class BukkitConstructor extends Constructor
{
private final transient Pattern NUMPATTERN = Pattern.compile("\\d+");
private final transient IPlugin plugin;
private final transient Plugin plugin;
public BukkitConstructor(final Class clazz, final IPlugin plugin)
public BukkitConstructor(final Class clazz, final Plugin plugin)
{
super(clazz);
this.plugin = plugin;
@@ -41,11 +44,11 @@ public class BukkitConstructor extends Constructor
if (NUMPATTERN.matcher(val).matches())
{
final int typeId = Integer.parseInt(val);
mat = Material.getMaterial(typeId);
mat = Material.get(typeId);
}
else
{
mat = Material.matchMaterial(val);
mat = Material.match(val);
}
return mat;
}
@@ -103,11 +106,11 @@ public class BukkitConstructor extends Constructor
if (NUMPATTERN.matcher(split2[0]).matches())
{
final int typeId = Integer.parseInt(split2[0]);
mat = Material.getMaterial(typeId);
mat = Material.get(typeId);
}
else
{
mat = Material.matchMaterial(split2[0]);
mat = Material.match(split2[0]);
}
if (mat == null)
{
@@ -123,7 +126,7 @@ public class BukkitConstructor extends Constructor
{
size = Integer.parseInt(split1[1]);
}
final ItemStack stack = new ItemStack(mat, size, data);
final ItemStack stack = ItemStack.create(mat, size, data);
if (split1.length > 2)
{
for (int i = 2; i < split1.length; i++)

View File

@@ -1,6 +1,6 @@
package net.ess3.storage;
import net.ess3.api.server.IPlugin;
import net.ess3.api.server.Plugin;
import java.io.Reader;
import java.lang.reflect.Field;
import java.util.*;
@@ -15,9 +15,9 @@ public class YamlStorageReader implements IStorageReader
private transient static final Map<Class, Yaml> PREPARED_YAMLS = Collections.synchronizedMap(new HashMap<Class, Yaml>());
private transient static final Map<Class, ReentrantLock> LOCKS = new HashMap<Class, ReentrantLock>();
private transient final Reader reader;
private transient final IPlugin plugin;
private transient final Plugin plugin;
public YamlStorageReader(final Reader reader, final IPlugin plugin)
public YamlStorageReader(final Reader reader, final Plugin plugin)
{
this.reader = reader;
this.plugin = plugin;

View File

@@ -1,10 +1,10 @@
package net.ess3.user;
import net.ess3.api.server.Material;
import net.ess3.storage.*;
import java.util.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.ess3.api.server.Material;
import net.ess3.storage.*;

View File

@@ -1,15 +1,17 @@
package net.ess3.user;
import java.io.File;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.Set;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.api.IUserMap;
import net.ess3.api.InvalidNameException;
import net.ess3.api.server.Player;
import net.ess3.storage.StorageObjectMap;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import net.ess3.utils.Util;
public class UserMap extends StorageObjectMap<IUser> implements IUserMap
@@ -94,4 +96,158 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
}
return user;
}
@Override
public IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline) throws TooManyMatchesException
{
final Set<IUser> users = matchUsers(name, includeHidden, includeOffline);
if (users == null || users.isEmpty())
{
return null;
}
else
{
if (users.size() > 1)
{
throw new TooManyMatchesException();
}
else
{
return users.iterator().next();
}
}
}
@Override
public Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline)
{
final String colorlessName = Util.stripColor(name);
final String[] search = colorlessName.split(",");
final boolean multisearch = search.length > 1;
final Set<IUser> result = new LinkedHashSet<IUser>();
final String nicknamePrefix = Util.stripColor(getNickNamePrefix());
for (String searchString : search)
{
if (searchString.isEmpty())
{
continue;
}
if (searchString.startsWith(nicknamePrefix))
{
searchString = searchString.substring(nicknamePrefix.length());
}
searchString = searchString.toLowerCase(Locale.ENGLISH);
final boolean multimatching = searchString.endsWith("*");
if (multimatching)
{
searchString = searchString.substring(0, searchString.length() - 1);
}
Player match = null;
for (Player player : ess.getServer().getOnlinePlayers())
{
if (player.getName().equalsIgnoreCase(searchString)
&& (includeHidden || (includeOffline && player.getUser().isHidden())))
{
match = player;
break;
}
}
if (match != null)
{
if (multimatching || multisearch)
{
result.add(match.getUser());
}
else
{
return Collections.singleton(match.getUser());
}
}
for (Player player : ess.getServer().getOnlinePlayers())
{
final String nickname = player.getUser().getData().getNickname();
if (nickname != null && !nickname.isEmpty()
&& nickname.equalsIgnoreCase(searchString)
&& (includeHidden || (includeOffline && player.getUser().isHidden())))
{
if (multimatching || multisearch)
{
result.add(player.getUser());
}
else
{
return Collections.singleton(player.getUser());
}
}
}
if (includeOffline)
{
for (String playerName : getAllUniqueUsers())
{
if (playerName.equals(searchString))
{
match = getUser(playerName);
break;
}
}
if (match != null)
{
if (multimatching || multisearch)
{
result.add(match.getUser());
}
else
{
return Collections.singleton(match.getUser());
}
}
}
if (multimatching || match == null)
{
for (Player player : ess.getServer().getOnlinePlayers())
{
if (player.getName().toLowerCase(Locale.ENGLISH).startsWith(searchString)
&& (includeHidden || (includeOffline && player.getUser().isHidden())))
{
result.add(player.getUser());
break;
}
final String nickname = player.getUser().getData().getNickname();
if (nickname != null && !nickname.isEmpty()
&& nickname.toLowerCase(Locale.ENGLISH).startsWith(searchString)
&& (includeHidden || (includeOffline && player.getUser().isHidden())))
{
result.add(player.getUser());
break;
}
}
if (includeOffline)
{
for (String playerName : getAllUniqueUsers())
{
if (playerName.startsWith(searchString))
{
result.add(getUser(playerName));
break;
}
}
}
}
}
return result;
}
private String getNickNamePrefix()
{
ess.getSettings().acquireReadLock();
try
{
return ess.getSettings().getData().getChat().getNicknamePrefix();
}
finally
{
ess.getSettings().unlock();
}
}
}

View File

@@ -1,26 +0,0 @@
package com.earth2me.essentials.testserver;
import net.ess3.api.server.Location;
import org.bukkit.TreeType;
public class World implements World {
@Override
public String getName()
{
return "TestWorld";
}
@Override
public boolean generateTree(Location safeLocation, TreeType tree)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getHighestBlockYAt(int topX, int topZ)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -1,14 +1,15 @@
package com.earth2me.essentials;
package net.ess3;
import com.earth2me.essentials.testserver.Plugin;
import com.earth2me.essentials.testserver.Server;
import java.util.logging.Logger;
import junit.framework.TestCase;
import net.ess3.Essentials;
import net.ess3.testserver.TestPlugin;
import net.ess3.testserver.TestServer;
import net.ess3.testserver.TestWorld;
public abstract class EssentialsTest extends TestCase {
protected final transient Server server;
protected final transient Plugin plugin;
protected final transient TestServer server;
protected final transient TestPlugin plugin;
protected final transient TestWorld world;
protected final transient Logger logger;
protected final transient Essentials ess;
@@ -17,8 +18,9 @@ public abstract class EssentialsTest extends TestCase {
{
super(testName);
logger = Logger.getLogger(this.getName());
server = new Server();
plugin = new Plugin();
server = new TestServer();
world = (TestWorld)server.getWorlds().get(0);
plugin = new TestPlugin();
ess = new Essentials(server, logger, plugin);
Essentials.testing = true;
ess.onEnable();

View File

@@ -1,16 +1,13 @@
package net.ess3;
import java.io.*;
import net.ess3.api.server.Location;
import net.ess3.settings.Settings;
import net.ess3.storage.ObjectLoadException;
import net.ess3.storage.StorageObject;
import net.ess3.storage.YamlStorageReader;
import net.ess3.storage.YamlStorageWriter;
import net.ess3.utils.ExecuteTimer;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.junit.Test;
@@ -65,8 +62,6 @@ public class StorageTest extends EssentialsTest
{
try
{
FakeServer server = new FakeServer();
World world = server.createWorld("testWorld", Environment.NORMAL);
ExecuteTimer ext = new ExecuteTimer();
ext.start();
final ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
@@ -80,7 +75,7 @@ public class StorageTest extends EssentialsTest
for (int j = 0; j < 10000; j++)
{
userdata.getHomes().put("home", new net.ess3.storage.StoredLocation(new Location(world, j, j, j)));
userdata.getHomes().put("home", new net.ess3.storage.StoredLocation(Location.create(world, j, j, j)));
}
ext.mark("change home 10000 times");
final ByteArrayOutputStream baos = new ByteArrayOutputStream();

View File

@@ -1,9 +1,9 @@
package com.earth2me.essentials.testserver;
package net.ess3.testserver;
import net.ess3.api.IUser;
import net.ess3.api.server.*;
public class Player implements Player {
public class TestPlayer implements Player {
@Override
public IUser getUser()
@@ -42,7 +42,7 @@ public class Player implements Player {
}
@Override
public World getWorld()
public TestWorld getWorld()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -149,4 +149,52 @@ public class Player implements Player {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setTotalExperience(int exp)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getTotalExperience()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setDisplayName(String name)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setPlayerListName(String name)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setSleepingIgnored(boolean b)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean isBanned()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setCompassTarget(Location loc)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void damage(int value)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -1,10 +1,13 @@
package com.earth2me.essentials.testserver;
package net.ess3.testserver;
import net.ess3.api.server.IPlugin;
import java.io.File;
import java.io.InputStream;
import java.util.logging.Logger;
import net.ess3.api.server.Location;
import net.ess3.api.server.Player;
import net.ess3.api.server.Plugin;
public class Plugin implements IPlugin {
public class TestPlugin implements Plugin {
@Override
public int scheduleAsyncDelayedTask(Runnable run)
@@ -66,4 +69,28 @@ public class Plugin implements IPlugin {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int scheduleAsyncRepeatingTask(Runnable run, long delay, long period)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Location callRespawnEvent(Player player, Location loc, boolean bedSpawn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void callSuicideEvent(Player player)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Logger getLogger()
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -1,16 +1,16 @@
package com.earth2me.essentials.testserver;
package net.ess3.testserver;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.IServer;
import net.ess3.api.server.World;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import net.ess3.api.server.CommandSender;
import net.ess3.api.server.Player;
import net.ess3.api.server.Server;
import net.ess3.api.server.World;
public class Server implements IServer {
public class TestServer implements Server {
public Server()
public TestServer()
{
}
@@ -19,7 +19,7 @@ public class Server implements IServer {
@Override
public List<World> getWorlds()
{
return Collections.<World>singletonList(new World());
return Collections.<World>singletonList(new TestWorld());
}
@Override

View File

@@ -0,0 +1,77 @@
package net.ess3.testserver;
import java.util.UUID;
import net.ess3.api.server.ItemStack;
import net.ess3.api.server.Location;
import net.ess3.api.server.World;
import org.bukkit.TreeType;
public class TestWorld implements World {
@Override
public String getName()
{
return "TestWorld";
}
@Override
public boolean generateTree(Location safeLocation, TreeType tree)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getHighestBlockYAt(int topX, int topZ)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ItemStack dropItem(Location loc, ItemStack stack)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public UUID getUID()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Location getSpawnLocation()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void dropItemNaturally(Location location, ItemStack overflowStack)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setStorm(boolean b)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setWeatherDuration(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public long getTime()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean setSpawnLocation(int blockX, int blockY, int blockZ)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}