diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/Log.java b/src/main/java/me/StevenLawson/TotalFreedomMod/Log.java index 0024d46..58bd844 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/Log.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/Log.java @@ -3,105 +3,85 @@ package me.StevenLawson.TotalFreedomMod; import java.util.logging.Level; import java.util.logging.Logger; -public class Log -{ - private static final Logger FALLBACK_LOGGER = Logger.getLogger("Minecraft-Server"); - private static Logger serverLogger = null; - private static Logger pluginLogger = null; +public class Log { - private Log() - { - throw new AssertionError(); - } + private static final Logger FALLBACK_LOGGER = Logger.getLogger("Minecraft-Server"); + private static Logger serverLogger = null; + private static Logger pluginLogger = null; - // Level.INFO: - public static void info(String message) - { - info(message, false); - } + private Log() { + throw new AssertionError(); + } - public static void info(String message, Boolean raw) - { - log(Level.INFO, message, raw); - } + // Level.INFO: + public static void info(String message) { + info(message, false); + } - public static void info(Throwable ex) - { - log(Level.INFO, ex); - } + public static void info(String message, Boolean raw) { + log(Level.INFO, message, raw); + } - // Level.WARNING: - public static void warning(String message) - { - warning(message, false); - } + public static void info(Throwable ex) { + log(Level.INFO, ex); + } - public static void warning(String message, Boolean raw) - { - log(Level.WARNING, message, raw); - } + // Level.WARNING: + public static void warning(String message) { + warning(message, false); + } - public static void warning(Throwable ex) - { - log(Level.WARNING, ex); - } + public static void warning(String message, Boolean raw) { + log(Level.WARNING, message, raw); + } - // Level.SEVERE: - public static void severe(String message) - { - severe(message, false); - } + public static void warning(Throwable ex) { + log(Level.WARNING, ex); + } - public static void severe(String message, Boolean raw) - { - log(Level.SEVERE, message, raw); - } + // Level.SEVERE: + public static void severe(String message) { + severe(message, false); + } - public static void severe(Throwable ex) - { - log(Level.SEVERE, ex); - } + public static void severe(String message, Boolean raw) { + log(Level.SEVERE, message, raw); + } - // Utility - private static void log(Level level, String message, boolean raw) - { - getLogger(raw).log(level, message); - } + public static void severe(Throwable ex) { + log(Level.SEVERE, ex); + } - private static void log(Level level, Throwable throwable) - { - getLogger(false).log(level, null, throwable); - } + // Utility + private static void log(Level level, String message, boolean raw) { + getLogger(raw).log(level, message); + } - public static void setServerLogger(Logger logger) - { - serverLogger = logger; - } + private static void log(Level level, Throwable throwable) { + getLogger(false).log(level, null, throwable); + } - public static void setPluginLogger(Logger logger) - { - pluginLogger = logger; - } + private static Logger getLogger(boolean raw) { + if (raw || pluginLogger == null) { + return (serverLogger != null ? serverLogger : FALLBACK_LOGGER); + } else { + return pluginLogger; + } + } - private static Logger getLogger(boolean raw) - { - if (raw || pluginLogger == null) - { - return (serverLogger != null ? serverLogger : FALLBACK_LOGGER); - } - else - { - return pluginLogger; - } - } + public static Logger getPluginLogger() { + return (pluginLogger != null ? pluginLogger : FALLBACK_LOGGER); + } - public static Logger getPluginLogger() - { - return (pluginLogger != null ? pluginLogger : FALLBACK_LOGGER); - } + public static void setPluginLogger(Logger logger) { + pluginLogger = logger; + } - public static Logger getServerLogger() - { - return (serverLogger != null ? serverLogger : FALLBACK_LOGGER); - } + public static Logger getServerLogger() { + return (serverLogger != null ? serverLogger : FALLBACK_LOGGER); + } + + public static void setServerLogger(Logger logger) { + serverLogger = logger; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/Server.java b/src/main/java/me/StevenLawson/TotalFreedomMod/Server.java index 9fdc0a2..804f521 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/Server.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/Server.java @@ -1,6 +1,13 @@ package me.StevenLawson.TotalFreedomMod; +import static me.StevenLawson.TotalFreedomMod.listener.PlayerListener.DEFAULT_PORT; + import com.earth2me.essentials.utils.DateUtil; +import java.lang.management.ManagementFactory; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.ban.Ban; import me.StevenLawson.TotalFreedomMod.ban.BanManager; @@ -19,254 +26,221 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent.Result; -import java.lang.management.ManagementFactory; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; -import java.util.regex.Pattern; +public class Server { -import static me.StevenLawson.TotalFreedomMod.listener.PlayerListener.DEFAULT_PORT; + public static final String COMPILE_NMS_VERSION = "v1_8_R2"; + public static final Pattern USERNAME_REGEX = Pattern.compile("^[\\w\\d_]{3,20}$"); -public class Server -{ - public static final String COMPILE_NMS_VERSION = "v1_8_R2"; - public static final Pattern USERNAME_REGEX = Pattern.compile("^[\\w\\d_]{3,20}$"); + public static void setOnlineMode(boolean mode) { + final PropertyManager manager = MinecraftServer.getServer().getPropertyManager(); + manager.setProperty("online-mode", mode); + manager.savePropertiesFile(); + } - public static void setOnlineMode(boolean mode) - { - final PropertyManager manager = MinecraftServer.getServer().getPropertyManager(); - manager.setProperty("online-mode", mode); - manager.savePropertiesFile(); - } + public static int purgeWhitelist() { + String[] whitelisted = MinecraftServer.getServer().getPlayerList().getWhitelisted(); + int size = whitelisted.length; + for (EntityPlayer player : MinecraftServer.getServer().getPlayerList().players) { + MinecraftServer.getServer().getPlayerList().getWhitelist().remove(player.getProfile()); + } - public static int purgeWhitelist() - { - String[] whitelisted = MinecraftServer.getServer().getPlayerList().getWhitelisted(); - int size = whitelisted.length; - for (EntityPlayer player : MinecraftServer.getServer().getPlayerList().players) - { - MinecraftServer.getServer().getPlayerList().getWhitelist().remove(player.getProfile()); - } + try { + MinecraftServer.getServer().getPlayerList().getWhitelist().save(); + } catch (Exception ex) { + Log.warning("Could not purge the whitelist!"); + Log.warning(ex); + } + return size; + } - try - { - MinecraftServer.getServer().getPlayerList().getWhitelist().save(); - } - catch (Exception ex) - { - Log.warning("Could not purge the whitelist!"); - Log.warning(ex); - } - return size; - } + public static boolean isWhitelisted() { + return MinecraftServer.getServer().getPlayerList().getHasWhitelist(); + } - public static boolean isWhitelisted() - { - return MinecraftServer.getServer().getPlayerList().getHasWhitelist(); - } + public static List getWhitelisted() { + return Arrays.asList(MinecraftServer.getServer().getPlayerList().getWhitelisted()); + } - public static List getWhitelisted() - { - return Arrays.asList(MinecraftServer.getServer().getPlayerList().getWhitelisted()); - } + public static String getVersion() { + return MinecraftServer.getServer().getVersion(); + } - public static String getVersion() - { - return MinecraftServer.getServer().getVersion(); - } + public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event) { + final String ip = event.getAddress().getHostAddress().trim(); + final boolean isAdmin = AdminList.isSuperAdminSafe(null, ip); - public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event) - { - final String ip = event.getAddress().getHostAddress().trim(); - final boolean isAdmin = AdminList.isSuperAdminSafe(null, ip); + // Check if the player is already online + for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers()) { + if (!onlinePlayer.getName().equalsIgnoreCase(event.getName())) { + continue; + } - // Check if the player is already online - for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers()) - { - if (!onlinePlayer.getName().equalsIgnoreCase(event.getName())) - { - continue; - } + if (!isAdmin) { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, + "Your username is already logged into this server."); + } else { + event.allow(); + SynchronousUtil.playerKick(onlinePlayer, + "An admin just logged in with the username you are using."); + } + return; + } + } - if (!isAdmin) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Your username is already logged into this server."); - } else { - event.allow(); - SynchronousUtil.playerKick(onlinePlayer, "An admin just logged in with the username you are using."); - } - return; - } - } + public static void handlePlayerLogin(PlayerLoginEvent event) { + final org.bukkit.Server server = TotalFreedomMod.server; + final Player player = event.getPlayer(); + final String username = player.getName(); + final String ip = event.getAddress().getHostAddress().trim(); + final UUID uuid = UUIDManager.newPlayer(player, ip); - public static void handlePlayerLogin(PlayerLoginEvent event) - { - final org.bukkit.Server server = TotalFreedomMod.server; - final Player player = event.getPlayer(); - final String username = player.getName(); - final String ip = event.getAddress().getHostAddress().trim(); - final UUID uuid = UUIDManager.newPlayer(player, ip); + // Check username length + if (username.length() < 3 || username.length() > TotalFreedomMod.MAX_USERNAME_LENGTH) { + event.disallow(Result.KICK_OTHER, + "Your username is an invalid length (must be between 3 and 20 characters long)."); + return; + } - // Check username length - if (username.length() < 3 || username.length() > TotalFreedomMod.MAX_USERNAME_LENGTH) - { - event.disallow(Result.KICK_OTHER, "Your username is an invalid length (must be between 3 and 20 characters long)."); - return; - } + // Check username characters + if (!USERNAME_REGEX.matcher(username).find()) { + event.disallow(Result.KICK_OTHER, "Your username contains invalid characters."); + return; + } - // Check username characters - if (!USERNAME_REGEX.matcher(username).find()) - { - event.disallow(Result.KICK_OTHER, "Your username contains invalid characters."); - return; - } + // Check force-IP match + if (ConfigurationEntry.FORCE_IP_ENABLED.getBoolean()) { + final String hostname = event.getHostname().replace("FML", + ""); // Forge fix - https://github.com/TotalFreedom/TotalFreedomMod/issues/493 + final String connectAddress = ConfigurationEntry.SERVER_ADDRESS.getString(); + final int connectPort = TotalFreedomMod.server.getPort(); - // Check force-IP match - if (ConfigurationEntry.FORCE_IP_ENABLED.getBoolean()) - { - final String hostname = event.getHostname().replace("FML", ""); // Forge fix - https://github.com/TotalFreedom/TotalFreedomMod/issues/493 - final String connectAddress = ConfigurationEntry.SERVER_ADDRESS.getString(); - final int connectPort = TotalFreedomMod.server.getPort(); + if (!hostname.equalsIgnoreCase(connectAddress + ":" + connectPort) + && !hostname.equalsIgnoreCase(connectAddress + ".:" + connectPort)) { + final int forceIpPort = ConfigurationEntry.FORCE_IP_PORT.getInteger(); + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, + ConfigurationEntry.FORCE_IP_KICKMSG.getString() + .replace("%address%", ConfigurationEntry.SERVER_ADDRESS.getString() + ( + forceIpPort == DEFAULT_PORT ? "" : ":" + forceIpPort))); + return; + } - if (!hostname.equalsIgnoreCase(connectAddress + ":" + connectPort) && !hostname.equalsIgnoreCase(connectAddress + ".:" + connectPort)) - { - final int forceIpPort = ConfigurationEntry.FORCE_IP_PORT.getInteger(); - event.disallow(PlayerLoginEvent.Result.KICK_OTHER, - ConfigurationEntry.FORCE_IP_KICKMSG.getString() - .replace("%address%", ConfigurationEntry.SERVER_ADDRESS.getString() + (forceIpPort == DEFAULT_PORT ? "" : ":" + forceIpPort))); - return; - } + } - } + // Check if player is admin + // Not safe to use Utilities.isSuperAdmin(player) because player.getAddress() will return a null until after player login. + final boolean isAdmin = AdminList.isSuperAdminSafe(uuid, ip); - // Check if player is admin - // Not safe to use Utilities.isSuperAdmin(player) because player.getAddress() will return a null until after player login. - final boolean isAdmin = AdminList.isSuperAdminSafe(uuid, ip); + // Validation below this point + if (isAdmin) // Player is superadmin + { + // Force-allow log in + event.allow(); - // Validation below this point - if (isAdmin) // Player is superadmin - { - // Force-allow log in - event.allow(); + int count = server.getOnlinePlayers().size(); + if (count >= server.getMaxPlayers()) { + for (Player onlinePlayer : server.getOnlinePlayers()) { + if (!AdminList.isSuperAdmin(onlinePlayer)) { + onlinePlayer.kickPlayer( + "You have been kicked to free up room for an admin."); + count--; + } - int count = server.getOnlinePlayers().size(); - if (count >= server.getMaxPlayers()) - { - for (Player onlinePlayer : server.getOnlinePlayers()) - { - if (!AdminList.isSuperAdmin(onlinePlayer)) - { - onlinePlayer.kickPlayer("You have been kicked to free up room for an admin."); - count--; - } + if (count < server.getMaxPlayers()) { + break; + } + } + } - if (count < server.getMaxPlayers()) - { - break; - } - } - } + if (count >= server.getMaxPlayers()) { + event.disallow(Result.KICK_OTHER, + "The server is full and a player could not be kicked, sorry!"); + return; + } - if (count >= server.getMaxPlayers()) - { - event.disallow(Result.KICK_OTHER, "The server is full and a player could not be kicked, sorry!"); - return; - } + return; + } - return; - } + // Player is not an admin + // Server full check + if (server.getOnlinePlayers().size() >= server.getMaxPlayers()) { + event.disallow(Result.KICK_FULL, "Sorry, but this server is full."); + return; + } - // Player is not an admin - // Server full check - if (server.getOnlinePlayers().size() >= server.getMaxPlayers()) - { - event.disallow(Result.KICK_FULL, "Sorry, but this server is full."); - return; - } + // Admin-only mode + if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean()) { + event.disallow(Result.KICK_OTHER, "Server is temporarily open to admins only."); + return; + } - // Admin-only mode - if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean()) - { - event.disallow(Result.KICK_OTHER, "Server is temporarily open to admins only."); - return; - } + // Lockdown mode + if (TotalFreedomMod.lockdownEnabled) { + event.disallow(Result.KICK_OTHER, "Server is currently in lockdown mode."); + return; + } - // Lockdown mode - if (TotalFreedomMod.lockdownEnabled) - { - event.disallow(Result.KICK_OTHER, "Server is currently in lockdown mode."); - return; - } + // Whitelist + if (isWhitelisted()) { + if (!getWhitelisted().contains(username.toLowerCase())) { + event.disallow(Result.KICK_OTHER, "You are not whitelisted on this server."); + return; + } + } - // Whitelist - if (isWhitelisted()) - { - if (!getWhitelisted().contains(username.toLowerCase())) - { - event.disallow(Result.KICK_OTHER, "You are not whitelisted on this server."); - return; - } - } + // UUID ban + if (BanManager.isUuidBanned(uuid)) { + final Ban ban = BanManager.getByUuid(uuid); + event.disallow(Result.KICK_OTHER, ban.getKickMessage()); + return; + } - // UUID ban - if (BanManager.isUuidBanned(uuid)) - { - final Ban ban = BanManager.getByUuid(uuid); - event.disallow(Result.KICK_OTHER, ban.getKickMessage()); - return; - } + // IP ban + if (BanManager.isIpBanned(ip)) { + final Ban ban = BanManager.getByIp(ip); + event.disallow(Result.KICK_OTHER, ban.getKickMessage()); + return; + } - // IP ban - if (BanManager.isIpBanned(ip)) - { - final Ban ban = BanManager.getByIp(ip); - event.disallow(Result.KICK_OTHER, ban.getKickMessage()); - return; - } + // Permbanned IPs + for (String testIp : PermbanList.getPermbannedIps()) { + if (Utilities.fuzzyIpMatch(testIp, ip, 4)) { + event.disallow(Result.KICK_OTHER, + ChatColor.RED + "Your IP address is permanently banned from this server.\n" + + "Release procedures are available at\n" + + ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString()); + return; + } + } - // Permbanned IPs - for (String testIp : PermbanList.getPermbannedIps()) - { - if (Utilities.fuzzyIpMatch(testIp, ip, 4)) - { - event.disallow(Result.KICK_OTHER, - ChatColor.RED + "Your IP address is permanently banned from this server.\n" - + "Release procedures are available at\n" - + ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString()); - return; - } - } + // Permbanned usernames + for (String testPlayer : PermbanList.getPermbannedPlayers()) { + if (testPlayer.equalsIgnoreCase(username)) { + event.disallow(Result.KICK_OTHER, + ChatColor.RED + "Your username is permanently banned from this server.\n" + + "Release procedures are available at\n" + + ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString()); + return; + } + } + } - // Permbanned usernames - for (String testPlayer : PermbanList.getPermbannedPlayers()) - { - if (testPlayer.equalsIgnoreCase(username)) - { - event.disallow(Result.KICK_OTHER, - ChatColor.RED + "Your username is permanently banned from this server.\n" - + "Release procedures are available at\n" - + ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString()); - return; - } - } - } + public static double getTPS() { + return EssentialsBridge.getEssentialsPlugin().getTimer().getAverageTPS(); + } - public static double getTPS() { - return EssentialsBridge.getEssentialsPlugin().getTimer().getAverageTPS(); - } + public static double getMaxMem() { + return Runtime.getRuntime().maxMemory() / 1024f / 1024f; + } - public static double getMaxMem() { - return Runtime.getRuntime().maxMemory() / 1024f / 1024f; - } + public static double getTotalMem() { + return Runtime.getRuntime().totalMemory() / 1024f / 1024f; + } - public static double getTotalMem() { - return Runtime.getRuntime().totalMemory() / 1024f / 1024f; - } + public static double getFreeMem() { + return Runtime.getRuntime().freeMemory() / 1024f / 1024f; + } - public static double getFreeMem() { - return Runtime.getRuntime().freeMemory() / 1024f / 1024f; - } - - public static String getUptime() { - return DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime()); - } + public static String getUptime() { + return DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime()); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java b/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java index cf49fd7..78883db 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java @@ -1,22 +1,34 @@ package me.StevenLawson.TotalFreedomMod; import com.google.common.base.Function; +import java.io.File; +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.logging.Logger; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.announcer.Announcer; import me.StevenLawson.TotalFreedomMod.ban.BanManager; import me.StevenLawson.TotalFreedomMod.ban.PermbanList; -import me.StevenLawson.TotalFreedomMod.commands.Commands; -import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; import me.StevenLawson.TotalFreedomMod.command.CommandBlocker; +import me.StevenLawson.TotalFreedomMod.commands.Commands; import me.StevenLawson.TotalFreedomMod.commands.FreedomCommand; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.deprecated.bridge.BukkitTelnetBridge; +import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; import me.StevenLawson.TotalFreedomMod.gamerule.GameRuleHandler; import me.StevenLawson.TotalFreedomMod.httpd.HTTPDManager; -import me.StevenLawson.TotalFreedomMod.listener.*; +import me.StevenLawson.TotalFreedomMod.listener.BlockListener; +import me.StevenLawson.TotalFreedomMod.listener.EntityListener; +import me.StevenLawson.TotalFreedomMod.listener.PlayerListener; +import me.StevenLawson.TotalFreedomMod.listener.ServerListener; +import me.StevenLawson.TotalFreedomMod.listener.WeatherListener; +import me.StevenLawson.TotalFreedomMod.listener.WorldEditListener; +import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; import me.StevenLawson.TotalFreedomMod.player.HeartBeat; import me.StevenLawson.TotalFreedomMod.player.PlayerList; -import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; import me.StevenLawson.TotalFreedomMod.util.Utilities; import me.StevenLawson.TotalFreedomMod.world.AdminWorld; import me.StevenLawson.TotalFreedomMod.world.FlatlandsWorld; @@ -31,160 +43,173 @@ import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; -import java.io.File; -import java.io.IOException; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.logging.Logger; - public class TotalFreedomMod extends JavaPlugin { - public static final long HEARTBEAT_RATE = 5L; // Seconds - public static final long SERVICE_CHECKER_RATE = 120L; - public static final int MAX_USERNAME_LENGTH = 20; - // - public static final String CONFIG_FILENAME = "config.yml"; - public static final String SUPERADMIN_FILENAME = "superadmin.yml"; - public static final String PERMBAN_FILENAME = "permban.yml"; - public static final String PLAYERTAGS_FILENAME = "playerTags.yml"; - public static final String UUID_FILENAME = "uuids.db"; - public static final String PROTECTED_AREA_FILENAME = "protectedareas.dat"; - public static final String SAVED_FLAGS_FILENAME = "savedflags.dat"; - // - @Deprecated - public static final String YOU_ARE_NOT_OP = FreedomCommand.YOU_ARE_NOT_OP; - // - public static String buildNumber = "1"; - public static String buildDate = Utilities.dateToString(new Date()); - public static String buildCreator = "Unknown"; - // - public static org.bukkit.Server server; - public static TotalFreedomMod plugin; - public static String pluginName; - public static String pluginVersion; - // - public static boolean lockdownEnabled = false; - public static Map fuckoffEnabledFor = new HashMap<>(); - public static Logger logger; - private FileConfiguration customConfig; // Custom configuration implementation by Eva + public static final long HEARTBEAT_RATE = 5L; // Seconds + public static final long SERVICE_CHECKER_RATE = 120L; + public static final int MAX_USERNAME_LENGTH = 20; + // + public static final String CONFIG_FILENAME = "config.yml"; + public static final String SUPERADMIN_FILENAME = "superadmin.yml"; + public static final String PERMBAN_FILENAME = "permban.yml"; + public static final String PLAYERTAGS_FILENAME = "playerTags.yml"; + public static final String UUID_FILENAME = "uuids.db"; + public static final String PROTECTED_AREA_FILENAME = "protectedareas.dat"; + public static final String SAVED_FLAGS_FILENAME = "savedflags.dat"; + // + @Deprecated + public static final String YOU_ARE_NOT_OP = FreedomCommand.YOU_ARE_NOT_OP; + // + public static String buildNumber = "1"; + public static String buildDate = Utilities.dateToString(new Date()); + public static String buildCreator = "Unknown"; + // + public static org.bukkit.Server server; + public static TotalFreedomMod plugin; + public static String pluginName; + public static String pluginVersion; + // + public static boolean lockdownEnabled = false; + public static Map fuckoffEnabledFor = new HashMap<>(); + public static Logger logger; - @Override - public void onLoad() { - TotalFreedomMod.plugin = this; - TotalFreedomMod.logger = this.getLogger(); - TotalFreedomMod.server = plugin.getServer(); - TotalFreedomMod.pluginName = plugin.getDescription().getName(); - TotalFreedomMod.pluginVersion = plugin.getDescription().getVersion(); + private FileConfiguration customConfig; // Custom configuration implementation by Eva - Log.setPluginLogger(plugin.getLogger()); - Log.setServerLogger(server.getLogger()); + private static void setAppProperties() { + try { + //final InputStream in = plugin.getResource("appinfo.properties"); + Properties props = new Properties(); - setAppProperties(); - } + // in = plugin.getClass().getResourceAsStream("/appinfo.properties"); + //props.load(in); + //in.close(); - @Override - public void onEnable() - { - getConfig().options().copyDefaults(true); + //TotalFreedomMod.buildNumber = props.getProperty("program.buildnumber"); + //TotalFreedomMod.buildDate = props.getProperty("program.builddate"); + //TotalFreedomMod.buildCreator = props.getProperty("program.buildcreator"); + TotalFreedomMod.buildNumber = "1337"; + TotalFreedomMod.buildCreator = "You!"; + } catch (Exception ex) { + Log.severe("Could not load App properties!"); + Log.severe(ex); + } + } - Log.info("Made by Madgeek1450 and Prozza"); - Log.info("Compiled " + buildDate + " by " + buildCreator); + @Override + public void onLoad() { + TotalFreedomMod.plugin = this; + TotalFreedomMod.logger = this.getLogger(); + TotalFreedomMod.server = plugin.getServer(); + TotalFreedomMod.pluginName = plugin.getDescription().getName(); + TotalFreedomMod.pluginVersion = plugin.getDescription().getVersion(); - final Utilities.MethodTimer timer = new Utilities.MethodTimer(); - timer.start(); + Log.setPluginLogger(plugin.getLogger()); + Log.setServerLogger(server.getLogger()); - if (!Server.COMPILE_NMS_VERSION.equals(Utilities.getNmsVersion())) - { - Log.warning(pluginName + " is compiled for " + Server.COMPILE_NMS_VERSION + " but the server is running " - + "version " + Utilities.getNmsVersion() + "!"); - Log.warning("This might result in unexpected behaviour!"); - } + setAppProperties(); + } - Utilities.deleteCoreDumps(); - Utilities.deleteFolder(new File("./_deleteme")); + @Override + public void onEnable() { + getConfig().options().copyDefaults(true); - // Create backups - Utilities.createBackups(CONFIG_FILENAME, true); - Utilities.createBackups(SUPERADMIN_FILENAME); - Utilities.createBackups(PERMBAN_FILENAME); - Utilities.createBackups(PLAYERTAGS_FILENAME); - this.createCustomConfig(); - // Load services - UUIDManager.load(); - AdminList.load(); - PermbanList.load(); - PlayerList.load(); - BanManager.load(); - Announcer.load(); - ProtectedArea.load(); - DiscordBridge.load(); + Log.info("Made by Madgeek1450 and Prozza"); + Log.info("Compiled " + buildDate + " by " + buildCreator); - // Start SuperAdmin service - server.getServicesManager().register(Function.class, AdminList.SUPERADMIN_SERVICE, plugin, ServicePriority.Normal); + final Utilities.MethodTimer timer = new Utilities.MethodTimer(); + timer.start(); - final PluginManager pm = server.getPluginManager(); - pm.registerEvents(new EntityListener(), plugin); - pm.registerEvents(new BlockListener(), plugin); - pm.registerEvents(new PlayerListener(), plugin); - pm.registerEvents(new WeatherListener(), plugin); - pm.registerEvents(new ServerListener(), plugin); + if (!Server.COMPILE_NMS_VERSION.equals(Utilities.getNmsVersion())) { + Log.warning(pluginName + " is compiled for " + Server.COMPILE_NMS_VERSION + + " but the server is running " + + "version " + Utilities.getNmsVersion() + "!"); + Log.warning("This might result in unexpected behaviour!"); + } - // Bridge - pm.registerEvents(new BukkitTelnetBridge(), plugin); - pm.registerEvents(new WorldEditListener(), plugin); + Utilities.deleteCoreDumps(); + Utilities.deleteFolder(new File("./_deleteme")); - try { - FlatlandsWorld.getInstance().getWorld(); - } catch (Exception ex) { - Log.warning("Could not load world: Flatlands"); - } + // Create backups + Utilities.createBackups(CONFIG_FILENAME, true); + Utilities.createBackups(SUPERADMIN_FILENAME); + Utilities.createBackups(PERMBAN_FILENAME); + Utilities.createBackups(PLAYERTAGS_FILENAME); + this.createCustomConfig(); + // Load services + UUIDManager.load(); + AdminList.load(); + PermbanList.load(); + PlayerList.load(); + BanManager.load(); + Announcer.load(); + ProtectedArea.load(); + DiscordBridge.load(); - try { - AdminWorld.getInstance().getWorld(); - } - catch (Exception ex) - { - Log.warning("Could not load world: AdminWorld"); - } + // Start SuperAdmin service + server.getServicesManager() + .register(Function.class, AdminList.SUPERADMIN_SERVICE, plugin, ServicePriority.Normal); - // Initialize game rules - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_DAYLIGHT_CYCLE, !ConfigurationEntry.DISABLE_NIGHT.getBoolean(), false); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_FIRE_TICK, ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean(), false); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_LOOT, false, false); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean(), false); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_TILE_DROPS, false, false); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.MOB_GRIEFING, false, false); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.NATURAL_REGENERATION, true, false); - GameRuleHandler.commitGameRules(); + final PluginManager pm = server.getPluginManager(); + pm.registerEvents(new EntityListener(), plugin); + pm.registerEvents(new BlockListener(), plugin); + pm.registerEvents(new PlayerListener(), plugin); + pm.registerEvents(new WeatherListener(), plugin); + pm.registerEvents(new ServerListener(), plugin); - // Disable weather - if (ConfigurationEntry.DISABLE_WEATHER.getBoolean()) - { - for (World world : server.getWorlds()) - { - world.setThundering(false); - world.setStorm(false); - world.setThunderDuration(0); - world.setWeatherDuration(0); - } - } + // Bridge + pm.registerEvents(new BukkitTelnetBridge(), plugin); + pm.registerEvents(new WorldEditListener(), plugin); - // Heartbeat - new HeartBeat(plugin).runTaskTimer(plugin, HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L); + try { + FlatlandsWorld.getInstance().getWorld(); + } catch (Exception ex) { + Log.warning("Could not load world: Flatlands"); + } - Commands.registerCommands(this); + try { + AdminWorld.getInstance().getWorld(); + } catch (Exception ex) { + Log.warning("Could not load world: AdminWorld"); + } - // Start services - HTTPDManager.start(); + // Initialize game rules + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_DAYLIGHT_CYCLE, + !ConfigurationEntry.DISABLE_NIGHT.getBoolean(), false); + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_FIRE_TICK, + ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean(), false); + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_LOOT, false, false); + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, + !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean(), false); + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_TILE_DROPS, false, false); + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.MOB_GRIEFING, false, false); + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.NATURAL_REGENERATION, true, false); + GameRuleHandler.commitGameRules(); - timer.update(); + // Disable weather + if (ConfigurationEntry.DISABLE_WEATHER.getBoolean()) { + for (World world : server.getWorlds()) { + world.setThundering(false); + world.setStorm(false); + world.setThunderDuration(0); + world.setWeatherDuration(0); + } + } - Log.info("Version " + pluginVersion + " for " + Server.COMPILE_NMS_VERSION + " enabled in " + timer.getTotal() + "ms"); + // Heartbeat + new HeartBeat(plugin).runTaskTimer(plugin, HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L); - // Metrics @ http://mcstats.org/plugin/TotalFreedomMod - // No longer exist! + Commands.registerCommands(this); + + // Start services + HTTPDManager.start(); + + timer.update(); + + Log.info("Version " + pluginVersion + " for " + Server.COMPILE_NMS_VERSION + " enabled in " + + timer.getTotal() + "ms"); + + // Metrics @ http://mcstats.org/plugin/TotalFreedomMod + // No longer exist! /*try { final Metrics metrics = new Metrics(plugin); @@ -195,72 +220,46 @@ public class TotalFreedomMod extends JavaPlugin { Log.warning("Failed to submit metrics data: " + ex.getMessage()); }*/ - new BukkitRunnable() - { - @Override - public void run() - { - CommandBlocker.load(); + new BukkitRunnable() { + @Override + public void run() { + CommandBlocker.load(); - // Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438 - ProtectedArea.autoAddSpawnpoints(); - } - }.runTaskLater(plugin, 20L); - } + // Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438 + ProtectedArea.autoAddSpawnpoints(); + } + }.runTaskLater(plugin, 20L); + } - @Override - public void onDisable() - { - HTTPDManager.stop(); - BanManager.save(); - UUIDManager.close(); - DiscordBridge.stop(); + @Override + public void onDisable() { + HTTPDManager.stop(); + BanManager.save(); + UUIDManager.close(); + DiscordBridge.stop(); - server.getScheduler().cancelTasks(plugin); + server.getScheduler().cancelTasks(plugin); - Log.info("Plugin disabled"); - } + Log.info("Plugin disabled"); + } - public FileConfiguration getCustomConfig() { - return this.customConfig; - } - //CustomConfig implementation by Eva - private void createCustomConfig() { - File customConfigFile = new File(getDataFolder(), "playerTags.yml"); - if (!customConfigFile.exists()) { - customConfigFile.getParentFile().mkdirs(); - saveResource("playerTags.yml", false); - } + public FileConfiguration getCustomConfig() { + return this.customConfig; + } - customConfig= new YamlConfiguration(); - try { - customConfig.load(customConfigFile); - } catch (IOException | InvalidConfigurationException e) { - e.printStackTrace(); - } - } + //CustomConfig implementation by Eva + private void createCustomConfig() { + File customConfigFile = new File(getDataFolder(), "playerTags.yml"); + if (!customConfigFile.exists()) { + customConfigFile.getParentFile().mkdirs(); + saveResource("playerTags.yml", false); + } - private static void setAppProperties() - { - try - { - //final InputStream in = plugin.getResource("appinfo.properties"); - Properties props = new Properties(); - - // in = plugin.getClass().getResourceAsStream("/appinfo.properties"); - //props.load(in); - //in.close(); - - //TotalFreedomMod.buildNumber = props.getProperty("program.buildnumber"); - //TotalFreedomMod.buildDate = props.getProperty("program.builddate"); - //TotalFreedomMod.buildCreator = props.getProperty("program.buildcreator"); - TotalFreedomMod.buildNumber = "1337"; - TotalFreedomMod.buildCreator = "You!"; - } - catch (Exception ex) - { - Log.severe("Could not load App properties!"); - Log.severe(ex); - } - } + customConfig = new YamlConfiguration(); + try { + customConfig.load(customConfigFile); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/admin/Admin.java b/src/main/java/me/StevenLawson/TotalFreedomMod/admin/Admin.java index df19de9..8e1d702 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/admin/Admin.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/admin/Admin.java @@ -1,168 +1,152 @@ package me.StevenLawson.TotalFreedomMod.admin; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.config.MainConfig; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.configuration.ConfigurationSection; -import java.util.*; +public class Admin { -public class Admin -{ - private final UUID uuid; - private String lastLoginName; - private String loginMessage; - private final boolean isSeniorAdmin; - private final boolean isTelnetAdmin; - private final List consoleAliases; - private final List ips; - private Date lastLogin; - private boolean isActivated; + private final UUID uuid; + private final boolean isSeniorAdmin; + private final boolean isTelnetAdmin; + private final List consoleAliases; + private final List ips; + private String lastLoginName; + private String loginMessage; + private Date lastLogin; + private boolean isActivated; - public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage, boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated) - { - this.uuid = uuid; - this.lastLoginName = lastLoginName; - this.ips = new ArrayList(); - this.lastLogin = lastLogin; - this.loginMessage = loginMessage; - this.isTelnetAdmin = isTelnetAdmin; - this.isSeniorAdmin = isSeniorAdmin; - this.consoleAliases = new ArrayList(); - this.isActivated = isActivated; - } + public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage, + boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated) { + this.uuid = uuid; + this.lastLoginName = lastLoginName; + this.ips = new ArrayList(); + this.lastLogin = lastLogin; + this.loginMessage = loginMessage; + this.isTelnetAdmin = isTelnetAdmin; + this.isSeniorAdmin = isSeniorAdmin; + this.consoleAliases = new ArrayList(); + this.isActivated = isActivated; + } - public Admin(UUID uuid, ConfigurationSection section) - { - this.uuid = uuid; - this.lastLoginName = section.getString("last_login_name"); - this.ips = section.getStringList("ips"); - this.lastLogin = Utilities.stringToDate(section.getString("last_login", Utilities.dateToString(new Date(0L)))); - this.loginMessage = section.getString("custom_login_message", ""); - this.isSeniorAdmin = section.getBoolean("is_senior_admin", false); - this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false); - this.consoleAliases = section.getStringList("console_aliases"); - this.isActivated = section.getBoolean("is_activated", true); + public Admin(UUID uuid, ConfigurationSection section) { + this.uuid = uuid; + this.lastLoginName = section.getString("last_login_name"); + this.ips = section.getStringList("ips"); + this.lastLogin = Utilities.stringToDate( + section.getString("last_login", Utilities.dateToString(new Date(0L)))); + this.loginMessage = section.getString("custom_login_message", ""); + this.isSeniorAdmin = section.getBoolean("is_senior_admin", false); + this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false); + this.consoleAliases = section.getStringList("console_aliases"); + this.isActivated = section.getBoolean("is_activated", true); - for (Iterator it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator(); it.hasNext();) - { - ips.remove((String) it.next()); - } - } + for (Iterator it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator(); + it.hasNext(); ) { + ips.remove((String) it.next()); + } + } - @Override - public String toString() - { - final StringBuilder output = new StringBuilder(); - final ArrayList fuzziedIps = new ArrayList<>(); + @Override + public String toString() { + final StringBuilder output = new StringBuilder(); + final ArrayList fuzziedIps = new ArrayList<>(); - for (String ip : ips) - { - fuzziedIps.add(Utilities.getFuzzyIp(ip)); - } + for (String ip : ips) { + fuzziedIps.add(Utilities.getFuzzyIp(ip)); + } - output.append("UUID: ").append(uuid.toString()).append("\n"); - output.append("- Last Login Name: ").append(lastLoginName).append("\n"); - output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n"); - output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n"); - output.append("- Custom Login Message: ").append(loginMessage).append("\n"); - output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n"); - output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n"); - output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", ")).append("\n"); - output.append("- Is Activated: ").append(isActivated); + output.append("UUID: ").append(uuid.toString()).append("\n"); + output.append("- Last Login Name: ").append(lastLoginName).append("\n"); + output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n"); + output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n"); + output.append("- Custom Login Message: ").append(loginMessage).append("\n"); + output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n"); + output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n"); + output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", ")) + .append("\n"); + output.append("- Is Activated: ").append(isActivated); - return output.toString(); - } + return output.toString(); + } - public UUID getUniqueId() - { - return uuid; - } + public UUID getUniqueId() { + return uuid; + } - public void setLastLoginName(String lastLoginName) - { - this.lastLoginName = lastLoginName; - } + public String getLastLoginName() { + return lastLoginName; + } - public String getLastLoginName() - { - return lastLoginName; - } + public void setLastLoginName(String lastLoginName) { + this.lastLoginName = lastLoginName; + } - public List getIps() - { - return Collections.unmodifiableList(ips); - } + public List getIps() { + return Collections.unmodifiableList(ips); + } - public void addIp(String ip) - { - if (!ips.contains(ip)) - { - ips.add(ip); - } - } + public void addIp(String ip) { + if (!ips.contains(ip)) { + ips.add(ip); + } + } - public void addIps(List ips) - { - for (String ip : ips) - { - addIp(ip); - } - } + public void addIps(List ips) { + for (String ip : ips) { + addIp(ip); + } + } - public void removeIp(String ip) - { - ips.remove(ip); - } + public void removeIp(String ip) { + ips.remove(ip); + } - public void clearIPs() - { - ips.clear(); - } + public void clearIPs() { + ips.clear(); + } - public void setCustomLoginMessage(String newLoginMessage) - { - this.loginMessage = newLoginMessage; - } + public Date getLastLogin() { + return lastLogin; + } - public Date getLastLogin() - { - return lastLogin; - } + public void setLastLogin(Date lastLogin) { + this.lastLogin = lastLogin; + } - public String getCustomLoginMessage() - { - return loginMessage; - } - - public boolean isSeniorAdmin() - { - return isSeniorAdmin; - } + public String getCustomLoginMessage() { + return loginMessage; + } - public boolean isTelnetAdmin() - { - return isTelnetAdmin; - } + public void setCustomLoginMessage(String newLoginMessage) { + this.loginMessage = newLoginMessage; + } - public List getConsoleAliases() - { - return Collections.unmodifiableList(consoleAliases); - } + public boolean isSeniorAdmin() { + return isSeniorAdmin; + } - public void setLastLogin(Date lastLogin) - { - this.lastLogin = lastLogin; - } + public boolean isTelnetAdmin() { + return isTelnetAdmin; + } - public boolean isActivated() - { - return isActivated; - } + public List getConsoleAliases() { + return Collections.unmodifiableList(consoleAliases); + } - public void setActivated(boolean isActivated) - { - this.isActivated = isActivated; - } + public boolean isActivated() { + return isActivated; + } + + public void setActivated(boolean isActivated) { + this.isActivated = isActivated; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java b/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java index b948c19..a8b74ce 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java @@ -1,115 +1,95 @@ package me.StevenLawson.TotalFreedomMod.announcer; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.scheduler.BukkitRunnable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +public class Announcer { -public class Announcer -{ - private static final List ANNOUNCEMENTS = new ArrayList(); - private static boolean enabled; - private static long interval; - private static String prefix; - private static BukkitRunnable announcer; + private static final List ANNOUNCEMENTS = new ArrayList(); + private static boolean enabled; + private static long interval; + private static String prefix; + private static BukkitRunnable announcer; - private Announcer() - { - throw new AssertionError(); - } + private Announcer() { + throw new AssertionError(); + } - public static boolean isEnabled() - { - return enabled; - } + public static boolean isEnabled() { + return enabled; + } - public static List getAnnouncements() - { - return Collections.unmodifiableList(ANNOUNCEMENTS); - } + public static List getAnnouncements() { + return Collections.unmodifiableList(ANNOUNCEMENTS); + } - public static long getTickInterval() - { - return interval; - } + public static long getTickInterval() { + return interval; + } - public static String getPrefix() - { - return prefix; - } + public static String getPrefix() { + return prefix; + } - public static void load() - { - stop(); + public static void load() { + stop(); - ANNOUNCEMENTS.clear(); + ANNOUNCEMENTS.clear(); - for (Object announcement : ConfigurationEntry.ANNOUNCER_ANNOUNCEMENTS.getList()) - { - ANNOUNCEMENTS.add(Utilities.colorize((String) announcement)); - } + for (Object announcement : ConfigurationEntry.ANNOUNCER_ANNOUNCEMENTS.getList()) { + ANNOUNCEMENTS.add(Utilities.colorize((String) announcement)); + } - enabled = ConfigurationEntry.ANNOUNCER_ENABLED.getBoolean(); - interval = ConfigurationEntry.ANNOUNCER_INTERVAL.getInteger() * 20L; - prefix = Utilities.colorize(ConfigurationEntry.ANNOUNCER_PREFIX.getString()); + enabled = ConfigurationEntry.ANNOUNCER_ENABLED.getBoolean(); + interval = ConfigurationEntry.ANNOUNCER_INTERVAL.getInteger() * 20L; + prefix = Utilities.colorize(ConfigurationEntry.ANNOUNCER_PREFIX.getString()); - if (enabled) - { - start(); - } - } + if (enabled) { + start(); + } + } - public static boolean isStarted() - { - return announcer != null; - } + public static boolean isStarted() { + return announcer != null; + } - public static void start() - { - if (isStarted()) - { - return; - } + public static void start() { + if (isStarted()) { + return; + } - announcer = new BukkitRunnable() - { - private int current = 0; + announcer = new BukkitRunnable() { + private int current = 0; - @Override - public void run() - { - current++; + @Override + public void run() { + current++; - if (current >= ANNOUNCEMENTS.size()) - { - current = 0; - } + if (current >= ANNOUNCEMENTS.size()) { + current = 0; + } - Utilities.bcastMsg(prefix + ANNOUNCEMENTS.get(current), false); - } - }; + Utilities.bcastMsg(prefix + ANNOUNCEMENTS.get(current), false); + } + }; - announcer.runTaskTimer(TotalFreedomMod.plugin, interval, interval); - } + announcer.runTaskTimer(TotalFreedomMod.plugin, interval, interval); + } - public static void stop() - { - if (announcer == null) - { - return; - } + public static void stop() { + if (announcer == null) { + return; + } - try - { - announcer.cancel(); - } - finally - { - announcer = null; - } - } + try { + announcer.cancel(); + } finally { + announcer = null; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/ban/Ban.java b/src/main/java/me/StevenLawson/TotalFreedomMod/ban/Ban.java index 2f5b071..8f4ddee 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/ban/Ban.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/ban/Ban.java @@ -1,206 +1,186 @@ package me.StevenLawson.TotalFreedomMod.ban; -import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; -import me.StevenLawson.TotalFreedomMod.util.Utilities; -import org.bukkit.ChatColor; - import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; +import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; +import me.StevenLawson.TotalFreedomMod.util.Utilities; +import org.bukkit.ChatColor; -public class Ban -{ - public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); - public static final Pattern IP_BAN_REGEX; - public static final Pattern UUID_BAN_REGEX; +public class Ban { - static - { - // 192.168.1.254:LocalHost:Prozza:0:none - // 127.0.*.*:TestUserName:BannedByNotch:123567:Test reason - IP_BAN_REGEX = Pattern.compile( - "^((?:(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\.){3}(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))" - + ":([\\w\\s]+)" - + ":([\\w]+)" - + ":(\\d+)" - + ":([\\s\\S]+)$"); - // 245d2f30-61fb-4840-9cd3-298b3920f4a4:Cobrex:Prozza:0:Example reason - UUID_BAN_REGEX = Pattern.compile( - "^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})" - + ":([\\w\\s]+)" - + ":([\\w]+)" - + ":(\\d+)" - + ":([\\s\\S]+)$"); - } - private final BanType type; - private final boolean complete; - private String subject; // uuid or IP - private String lastLoginName; - private String by; - private long expireUnix; - private String reason; + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat( + "yyyy-MM-dd 'at' HH:mm:ss z"); + public static final Pattern IP_BAN_REGEX; + public static final Pattern UUID_BAN_REGEX; - public Ban(String ip, String lastLoginName) - { - this(ip, lastLoginName, null, null, null); - } + static { + // 192.168.1.254:LocalHost:Prozza:0:none + // 127.0.*.*:TestUserName:BannedByNotch:123567:Test reason + IP_BAN_REGEX = Pattern.compile( + "^((?:(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\.){3}(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))" + + ":([\\w\\s]+)" + + ":([\\w]+)" + + ":(\\d+)" + + ":([\\s\\S]+)$"); + // 245d2f30-61fb-4840-9cd3-298b3920f4a4:Cobrex:Prozza:0:Example reason + UUID_BAN_REGEX = Pattern.compile( + "^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})" + + ":([\\w\\s]+)" + + ":([\\w]+)" + + ":(\\d+)" + + ":([\\s\\S]+)$"); + } - public Ban(String ip, String lastLoginName, String sender, Date expire, String reason) - { - this(ip, lastLoginName, sender, expire, reason, BanType.IP); - } + private final BanType type; + private final boolean complete; + private String subject; // uuid or IP + private String lastLoginName; + private String by; + private long expireUnix; + private String reason; - public Ban(UUID uuid, String lastLoginName) - { - this(uuid, lastLoginName, null, null, null); - } + public Ban(String ip, String lastLoginName) { + this(ip, lastLoginName, null, null, null); + } - public Ban(UUID uuid, String lastLoginName, String sender, Date expire, String reason) - { - this(uuid.toString(), lastLoginName, sender, expire, reason, BanType.UUID); - } + public Ban(String ip, String lastLoginName, String sender, Date expire, String reason) { + this(ip, lastLoginName, sender, expire, reason, BanType.IP); + } - private Ban(String subject, String lastLoginName, String sender, Date expire, String reason, BanType type) - { - this.type = type; - this.subject = subject; - this.lastLoginName = (lastLoginName == null ? "none" : lastLoginName); - this.by = (sender == null ? "none" : sender); - this.expireUnix = (expire == null ? 0 : Utilities.getUnixTime(expire)); - this.reason = (reason == null ? "none" : reason); - complete = true; - } + public Ban(UUID uuid, String lastLoginName) { + this(uuid, lastLoginName, null, null, null); + } - public Ban(String banString, BanType type) - { - this.type = type; + public Ban(UUID uuid, String lastLoginName, String sender, Date expire, String reason) { + this(uuid.toString(), lastLoginName, sender, expire, reason, BanType.UUID); + } - final Matcher matcher = (type == BanType.IP ? IP_BAN_REGEX.matcher(banString) : UUID_BAN_REGEX.matcher(banString)); + private Ban(String subject, String lastLoginName, String sender, Date expire, String reason, + BanType type) { + this.type = type; + this.subject = subject; + this.lastLoginName = (lastLoginName == null ? "none" : lastLoginName); + this.by = (sender == null ? "none" : sender); + this.expireUnix = (expire == null ? 0 : Utilities.getUnixTime(expire)); + this.reason = (reason == null ? "none" : reason); + complete = true; + } - if (!matcher.find()) - { - complete = false; - return; - } + public Ban(String banString, BanType type) { + this.type = type; - subject = matcher.group(1); - lastLoginName = matcher.group(2); - by = matcher.group(3); - expireUnix = Long.valueOf(matcher.group(4)); - reason = Utilities.colorize(matcher.group(5)); - complete = true; - } + final Matcher matcher = (type == BanType.IP ? IP_BAN_REGEX.matcher(banString) + : UUID_BAN_REGEX.matcher(banString)); - public enum BanType - { - IP, - UUID - } + if (!matcher.find()) { + complete = false; + return; + } - public BanType getType() - { - return type; - } + subject = matcher.group(1); + lastLoginName = matcher.group(2); + by = matcher.group(3); + expireUnix = Long.valueOf(matcher.group(4)); + reason = Utilities.colorize(matcher.group(5)); + complete = true; + } - public String getSubject() - { - return subject; - } + public BanType getType() { + return type; + } - public String getLastLoginName() - { - return lastLoginName; - } + public String getSubject() { + return subject; + } - public String getBannedBy() - { - return by; - } + public String getLastLoginName() { + return lastLoginName; + } - public long getExpireUnix() - { - return expireUnix; - } + public String getBannedBy() { + return by; + } - public String getReason() - { - return reason; - } + public long getExpireUnix() { + return expireUnix; + } - public boolean isExpired() - { - return expireUnix != 0 && expireUnix < Utilities.getUnixTime(); - } + public String getReason() { + return reason; + } - public boolean isComplete() - { - return complete; - } + public boolean isExpired() { + return expireUnix != 0 && expireUnix < Utilities.getUnixTime(); + } - public String getKickMessage() - { - final StringBuilder message = new StringBuilder("You"); + public boolean isComplete() { + return complete; + } - message.append(type == BanType.IP ? "r IP address is" : " are").append(" temporarily banned from this server."); - message.append("\nAppeal at ").append(ChatColor.GOLD).append(ConfigurationEntry.SERVER_BAN_URL.getString()); + public String getKickMessage() { + final StringBuilder message = new StringBuilder("You"); - if (!reason.equals("none")) - { - message.append("\nReason: ").append(reason); - } + message.append(type == BanType.IP ? "r IP address is" : " are") + .append(" temporarily banned from this server."); + message.append("\nAppeal at ").append(ChatColor.GOLD) + .append(ConfigurationEntry.SERVER_BAN_URL.getString()); - if (getExpireUnix() != 0) - { - message.append("\nYour ban will be removed on ").append(DATE_FORMAT.format(Utilities.getUnixDate(expireUnix))); - } + if (!reason.equals("none")) { + message.append("\nReason: ").append(reason); + } - return message.toString(); - } + if (getExpireUnix() != 0) { + message.append("\nYour ban will be removed on ") + .append(DATE_FORMAT.format(Utilities.getUnixDate(expireUnix))); + } - // subject:lastLoginName:bannedBy:expireUnix:reason - @Override - public String toString() - { - return subject + ":" + lastLoginName + ":" + by + ":" + expireUnix + ":" + Utilities.decolorize(reason); - } + return message.toString(); + } - @Override - public boolean equals(Object object) - { - if (object == null) - { - return false; - } + // subject:lastLoginName:bannedBy:expireUnix:reason + @Override + public String toString() { + return subject + ":" + lastLoginName + ":" + by + ":" + expireUnix + ":" + + Utilities.decolorize(reason); + } - if (!(object instanceof Ban)) - { - return false; - } + @Override + public boolean equals(Object object) { + if (object == null) { + return false; + } - final Ban ban = (Ban) object; + if (!(object instanceof Ban)) { + return false; + } - if (toString().equals(ban.toString())) - { - return true; - } + final Ban ban = (Ban) object; - if (getType() != ban.getType()) - { - return false; - } + if (toString().equals(ban.toString())) { + return true; + } - return getSubject().equals(ban.getSubject()); - } + if (getType() != ban.getType()) { + return false; + } - @Override - public int hashCode() - { - final int prime = 37; - int result = 1; - result = prime * result + getType().hashCode(); - result = prime * result + getSubject().hashCode(); - return result; - } + return getSubject().equals(ban.getSubject()); + } + + @Override + public int hashCode() { + final int prime = 37; + int result = 1; + result = prime * result + getType().hashCode(); + result = prime * result + getSubject().hashCode(); + return result; + } + + public enum BanType { + IP, + UUID + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/ban/BanManager.java b/src/main/java/me/StevenLawson/TotalFreedomMod/ban/BanManager.java index 18a939e..735ebb9 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/ban/BanManager.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/ban/BanManager.java @@ -1,5 +1,10 @@ package me.StevenLawson.TotalFreedomMod.ban; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.ban.Ban.BanType; @@ -10,290 +15,235 @@ import me.StevenLawson.TotalFreedomMod.manager.UUIDManager.TFM_UuidResolver; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.entity.Player; -import java.util.*; +public class BanManager { -public class BanManager -{ - private static final List ipBans; - private static final List uuidBans; - private static final List unbannableUUIDs; + private static final List ipBans; + private static final List uuidBans; + private static final List unbannableUUIDs; - static - { - ipBans = new ArrayList(); - uuidBans = new ArrayList(); - unbannableUUIDs = new ArrayList(); - } + static { + ipBans = new ArrayList(); + uuidBans = new ArrayList(); + unbannableUUIDs = new ArrayList(); + } - private BanManager() - { - throw new AssertionError(); - } + private BanManager() { + throw new AssertionError(); + } - public static void load() - { - ipBans.clear(); - uuidBans.clear(); - unbannableUUIDs.clear(); + public static void load() { + ipBans.clear(); + uuidBans.clear(); + unbannableUUIDs.clear(); - final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true); - config.load(); + final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true); + config.load(); - for (String banString : config.getStringList("ips")) - { - try - { - addIpBan(new Ban(banString, BanType.IP)); - } - catch (RuntimeException ex) - { - Log.warning("Could not load IP ban: " + banString); - } - } + for (String banString : config.getStringList("ips")) { + try { + addIpBan(new Ban(banString, BanType.IP)); + } catch (RuntimeException ex) { + Log.warning("Could not load IP ban: " + banString); + } + } - for (String banString : config.getStringList("uuids")) - { - try - { - addUuidBan(new Ban(banString, BanType.UUID)); - } - catch (RuntimeException ex) - { - Log.warning("Could not load UUID ban: " + banString); - } - } + for (String banString : config.getStringList("uuids")) { + try { + addUuidBan(new Ban(banString, BanType.UUID)); + } catch (RuntimeException ex) { + Log.warning("Could not load UUID ban: " + banString); + } + } - // Save the config - save(); - Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans"); + // Save the config + save(); + Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans"); - @SuppressWarnings("unchecked") - final TFM_UuidResolver resolver = new TFM_UuidResolver((List) ConfigurationEntry.UNBANNABLE_USERNAMES.getList()); + @SuppressWarnings("unchecked") final TFM_UuidResolver resolver = new TFM_UuidResolver( + (List) ConfigurationEntry.UNBANNABLE_USERNAMES.getList()); - for (UUID uuid : resolver.call().values()) - { - unbannableUUIDs.add(uuid); - } + for (UUID uuid : resolver.call().values()) { + unbannableUUIDs.add(uuid); + } - Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs"); - } + Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs"); + } - public static void save() - { - final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true); - config.load(); + public static void save() { + final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true); + config.load(); - final List newIpBans = new ArrayList(); - final List newUuidBans = new ArrayList(); + final List newIpBans = new ArrayList(); + final List newUuidBans = new ArrayList(); - for (Ban savedBan : ipBans) - { - if (!savedBan.isExpired()) - { - newIpBans.add(savedBan.toString()); - } - } + for (Ban savedBan : ipBans) { + if (!savedBan.isExpired()) { + newIpBans.add(savedBan.toString()); + } + } - for (Ban savedBan : uuidBans) - { - if (!savedBan.isExpired() && !unbannableUUIDs.contains(UUID.fromString(savedBan.getSubject()))) - { - newUuidBans.add(savedBan.toString()); - } - } + for (Ban savedBan : uuidBans) { + if (!savedBan.isExpired() && !unbannableUUIDs.contains( + UUID.fromString(savedBan.getSubject()))) { + newUuidBans.add(savedBan.toString()); + } + } - config.set("ips", newIpBans); - config.set("uuids", newUuidBans); + config.set("ips", newIpBans); + config.set("uuids", newUuidBans); - // Save config - config.save(); - } + // Save config + config.save(); + } - public static List getIpBanList() - { - return Collections.unmodifiableList(ipBans); - } + public static List getIpBanList() { + return Collections.unmodifiableList(ipBans); + } - public static List getUuidBanList() - { - return Collections.unmodifiableList(uuidBans); - } + public static List getUuidBanList() { + return Collections.unmodifiableList(uuidBans); + } - public static Ban getByIp(String ip) - { - for (Ban ban : ipBans) - { - if (ban.isExpired()) - { - continue; - } + public static Ban getByIp(String ip) { + for (Ban ban : ipBans) { + if (ban.isExpired()) { + continue; + } - wildcardCheck: - if (ban.getSubject().contains("*")) - { - final String[] subjectParts = ban.getSubject().split("\\."); - final String[] ipParts = ip.split("\\."); + wildcardCheck: + if (ban.getSubject().contains("*")) { + final String[] subjectParts = ban.getSubject().split("\\."); + final String[] ipParts = ip.split("\\."); - for (int i = 0; i < 4; i++) - { - if (!(subjectParts[i].equals("*") || subjectParts[i].equals(ipParts[i]))) - { - break wildcardCheck; - } - } + for (int i = 0; i < 4; i++) { + if (!(subjectParts[i].equals("*") || subjectParts[i].equals(ipParts[i]))) { + break wildcardCheck; + } + } - return ban; - } + return ban; + } - if (ban.getSubject().equals(ip)) - { - return ban; - } - } - return null; - } + if (ban.getSubject().equals(ip)) { + return ban; + } + } + return null; + } - public static Ban getByUuid(UUID uuid) - { - for (Ban ban : uuidBans) - { - if (ban.getSubject().equalsIgnoreCase(uuid.toString())) - { - if (ban.isExpired()) - { - continue; - } + public static Ban getByUuid(UUID uuid) { + for (Ban ban : uuidBans) { + if (ban.getSubject().equalsIgnoreCase(uuid.toString())) { + if (ban.isExpired()) { + continue; + } - return ban; - } - } - return null; - } + return ban; + } + } + return null; + } - public static void unbanIp(String ip) - { - final Ban ban = getByIp(ip); + public static void unbanIp(String ip) { + final Ban ban = getByIp(ip); - if (ban == null) - { - return; - } + if (ban == null) { + return; + } - removeBan(ban); - save(); - } + removeBan(ban); + save(); + } - public static void unbanUuid(UUID uuid) - { - final Ban ban = getByUuid(uuid); + public static void unbanUuid(UUID uuid) { + final Ban ban = getByUuid(uuid); - if (ban == null) - { - return; - } + if (ban == null) { + return; + } - removeBan(ban); - } + removeBan(ban); + } - public static boolean isIpBanned(String ip) - { - return getByIp(ip) != null; - } + public static boolean isIpBanned(String ip) { + return getByIp(ip) != null; + } - public static boolean isUuidBanned(UUID uuid) - { - return getByUuid(uuid) != null; - } + public static boolean isUuidBanned(UUID uuid) { + return getByUuid(uuid) != null; + } - public static void addUuidBan(Player player) - { - addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName())); - } + public static void addUuidBan(Player player) { + addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName())); + } - public static void addUuidBan(Ban ban) - { - if (!ban.isComplete()) - { - throw new RuntimeException("Could not add UUID ban, Invalid format!"); - } + public static void addUuidBan(Ban ban) { + if (!ban.isComplete()) { + throw new RuntimeException("Could not add UUID ban, Invalid format!"); + } - if (ban.isExpired()) - { - return; - } + if (ban.isExpired()) { + return; + } - if (uuidBans.contains(ban)) - { - return; - } + if (uuidBans.contains(ban)) { + return; + } - if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject()))) - { - return; - } + if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject()))) { + return; + } - uuidBans.add(ban); - save(); - } + uuidBans.add(ban); + save(); + } - public static void addIpBan(Player player) - { - addIpBan(new Ban(Utilities.getIp(player), player.getName())); - } + public static void addIpBan(Player player) { + addIpBan(new Ban(Utilities.getIp(player), player.getName())); + } - public static void addIpBan(Ban ban) - { - if (!ban.isComplete()) - { - throw new RuntimeException("Could not add IP ban, Invalid format!"); - } + public static void addIpBan(Ban ban) { + if (!ban.isComplete()) { + throw new RuntimeException("Could not add IP ban, Invalid format!"); + } - if (ban.isExpired()) - { - return; - } + if (ban.isExpired()) { + return; + } - if (ipBans.contains(ban)) - { - return; - } + if (ipBans.contains(ban)) { + return; + } - ipBans.add(ban); - save(); - } + ipBans.add(ban); + save(); + } - public static void removeBan(Ban ban) - { - final Iterator ips = ipBans.iterator(); - while (ips.hasNext()) - { - if (ips.next().getSubject().equalsIgnoreCase(ban.getSubject())) - { - ips.remove(); - } - } + public static void removeBan(Ban ban) { + final Iterator ips = ipBans.iterator(); + while (ips.hasNext()) { + if (ips.next().getSubject().equalsIgnoreCase(ban.getSubject())) { + ips.remove(); + } + } - final Iterator uuids = uuidBans.iterator(); - while (uuids.hasNext()) - { - if (uuids.next().getSubject().equalsIgnoreCase(ban.getSubject())) - { - uuids.remove(); - } - } + final Iterator uuids = uuidBans.iterator(); + while (uuids.hasNext()) { + if (uuids.next().getSubject().equalsIgnoreCase(ban.getSubject())) { + uuids.remove(); + } + } - save(); - } + save(); + } - public static void purgeIpBans() - { - ipBans.clear(); - save(); - } + public static void purgeIpBans() { + ipBans.clear(); + save(); + } - public static void purgeUuidBans() - { - uuidBans.clear(); - save(); - } + public static void purgeUuidBans() { + uuidBans.clear(); + save(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/ban/PermbanList.java b/src/main/java/me/StevenLawson/TotalFreedomMod/ban/PermbanList.java index b794bef..f27e5a1 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/ban/PermbanList.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/ban/PermbanList.java @@ -1,63 +1,55 @@ package me.StevenLawson.TotalFreedomMod.ban; -import me.StevenLawson.TotalFreedomMod.Log; -import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; -import me.StevenLawson.TotalFreedomMod.config.Configuration; - import java.util.ArrayList; import java.util.Collections; import java.util.List; +import me.StevenLawson.TotalFreedomMod.Log; +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import me.StevenLawson.TotalFreedomMod.config.Configuration; -public class PermbanList -{ +public class PermbanList { - private static final List PERMBANNED_PLAYERS; - private static final List PERMBANNED_IPS; + private static final List PERMBANNED_PLAYERS; + private static final List PERMBANNED_IPS; - static - { - PERMBANNED_PLAYERS = new ArrayList(); - PERMBANNED_IPS = new ArrayList(); - } + static { + PERMBANNED_PLAYERS = new ArrayList(); + PERMBANNED_IPS = new ArrayList(); + } - private PermbanList() - { - throw new AssertionError(); - } + private PermbanList() { + throw new AssertionError(); + } - public static List getPermbannedPlayers() - { - return Collections.unmodifiableList(PERMBANNED_PLAYERS); - } + public static List getPermbannedPlayers() { + return Collections.unmodifiableList(PERMBANNED_PLAYERS); + } - public static List getPermbannedIps() - { - return Collections.unmodifiableList(PERMBANNED_IPS); - } + public static List getPermbannedIps() { + return Collections.unmodifiableList(PERMBANNED_IPS); + } - public static void load() - { - PERMBANNED_PLAYERS.clear(); - PERMBANNED_IPS.clear(); + public static void load() { + PERMBANNED_PLAYERS.clear(); + PERMBANNED_IPS.clear(); - final Configuration config = new Configuration(TotalFreedomMod.plugin, TotalFreedomMod.PERMBAN_FILENAME, true); - config.load(); + final Configuration config = new Configuration(TotalFreedomMod.plugin, + TotalFreedomMod.PERMBAN_FILENAME, true); + config.load(); - for (String playername : config.getKeys(false)) - { - PERMBANNED_PLAYERS.add(playername.toLowerCase().trim()); + for (String playername : config.getKeys(false)) { + PERMBANNED_PLAYERS.add(playername.toLowerCase().trim()); - List playerIps = config.getStringList(playername); - for (String ip : playerIps) - { - ip = ip.trim(); - if (!PERMBANNED_IPS.contains(ip)) - { - PERMBANNED_IPS.add(ip); - } - } - } + List playerIps = config.getStringList(playername); + for (String ip : playerIps) { + ip = ip.trim(); + if (!PERMBANNED_IPS.contains(ip)) { + PERMBANNED_IPS.add(ip); + } + } + } - Log.info("Loaded " + PERMBANNED_PLAYERS.size() + " permanently banned players and " + PERMBANNED_IPS.size() + " permanently banned IPs."); - } + Log.info("Loaded " + PERMBANNED_PLAYERS.size() + " permanently banned players and " + + PERMBANNED_IPS.size() + " permanently banned IPs."); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/EssentialsBridge.java b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/EssentialsBridge.java index 5f2342a..6cfea73 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/EssentialsBridge.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/EssentialsBridge.java @@ -8,116 +8,87 @@ import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; public class EssentialsBridge { - private static Essentials essentialsPlugin = null; - private EssentialsBridge() { - throw new AssertionError(); - } + private static Essentials essentialsPlugin = null; - public static Essentials getEssentialsPlugin() { - if (essentialsPlugin == null) - { - try - { - final Plugin essentials = Bukkit.getServer().getPluginManager().getPlugin("Essentials"); - if (essentials != null) - { - if (essentials instanceof Essentials) - { - essentialsPlugin = (Essentials) essentials; - } - } - } - catch (Exception ex) - { - Log.severe(ex); - } - } - return essentialsPlugin; - } + private EssentialsBridge() { + throw new AssertionError(); + } - public static User getEssentialsUser(String username) - { - try - { - final Essentials essentials = getEssentialsPlugin(); - if (essentials != null) - { - return essentials.getUserMap().getUser(username); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return null; - } + public static Essentials getEssentialsPlugin() { + if (essentialsPlugin == null) { + try { + final Plugin essentials = Bukkit.getServer().getPluginManager() + .getPlugin("Essentials"); + if (essentials != null) { + if (essentials instanceof Essentials) { + essentialsPlugin = (Essentials) essentials; + } + } + } catch (Exception ex) { + Log.severe(ex); + } + } + return essentialsPlugin; + } - public static void setNickname(String username, String nickname) - { - try - { - final User user = getEssentialsUser(username); - if (user != null) - { - user.setNickname(nickname); - user.setDisplayNick(); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - } + public static User getEssentialsUser(String username) { + try { + final Essentials essentials = getEssentialsPlugin(); + if (essentials != null) { + return essentials.getUserMap().getUser(username); + } + } catch (Exception ex) { + Log.severe(ex); + } + return null; + } - public static String getNickname(String username) - { - try - { - final User user = getEssentialsUser(username); - if (user != null) - { - return user.getNickname(); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return null; - } + public static void setNickname(String username, String nickname) { + try { + final User user = getEssentialsUser(username); + if (user != null) { + user.setNickname(nickname); + user.setDisplayNick(); + } + } catch (Exception ex) { + Log.severe(ex); + } + } - public static long getLastActivity(String username) - { - try - { - final User user = getEssentialsUser(username); - if (user != null) - { - return Utilities.getField(user, "lastActivity"); // This is weird - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return 0L; - } + public static String getNickname(String username) { + try { + final User user = getEssentialsUser(username); + if (user != null) { + return user.getNickname(); + } + } catch (Exception ex) { + Log.severe(ex); + } + return null; + } - public static boolean isEssentialsEnabled() - { - try - { - final Essentials essentials = getEssentialsPlugin(); - if (essentials != null) - { - return essentials.isEnabled(); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return false; - } + public static long getLastActivity(String username) { + try { + final User user = getEssentialsUser(username); + if (user != null) { + return Utilities.getField(user, "lastActivity"); // This is weird + } + } catch (Exception ex) { + Log.severe(ex); + } + return 0L; + } + + public static boolean isEssentialsEnabled() { + try { + final Essentials essentials = getEssentialsPlugin(); + if (essentials != null) { + return essentials.isEnabled(); + } + } catch (Exception ex) { + Log.severe(ex); + } + return false; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/WorldEditBridge.java b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/WorldEditBridge.java index b55601a..503b0ef 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/WorldEditBridge.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/WorldEditBridge.java @@ -9,104 +9,77 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; public class WorldEditBridge { - private static WorldEditPlugin worldEditPlugin = null; - private WorldEditBridge() { - throw new AssertionError(); - } + private static WorldEditPlugin worldEditPlugin = null; - private static WorldEditPlugin getWorldEditPlugin() { - if (worldEditPlugin == null) - { - try - { - Plugin we = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit"); - if (we != null) - { - if (we instanceof WorldEditPlugin) - { - worldEditPlugin = (WorldEditPlugin) we; - } - } - } - catch (Exception ex) - { - Log.severe(ex); - } - } - return worldEditPlugin; - } + private WorldEditBridge() { + throw new AssertionError(); + } - private static LocalSession getPlayerSession(Player player) - { - try - { - final WorldEditPlugin wep = getWorldEditPlugin(); - if (wep != null) - { - return wep.getSession(player); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return null; - } + private static WorldEditPlugin getWorldEditPlugin() { + if (worldEditPlugin == null) { + try { + Plugin we = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit"); + if (we != null) { + if (we instanceof WorldEditPlugin) { + worldEditPlugin = (WorldEditPlugin) we; + } + } + } catch (Exception ex) { + Log.severe(ex); + } + } + return worldEditPlugin; + } - private static BukkitPlayer getBukkitPlayer(Player player) - { - try - { - final WorldEditPlugin wep = getWorldEditPlugin(); - if (wep != null) - { - return wep.wrapPlayer(player); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return null; - } + private static LocalSession getPlayerSession(Player player) { + try { + final WorldEditPlugin wep = getWorldEditPlugin(); + if (wep != null) { + return wep.getSession(player); + } + } catch (Exception ex) { + Log.severe(ex); + } + return null; + } - public static void undo(Player player, int count) - { - try - { - LocalSession session = getPlayerSession(player); - if (session != null) - { - final BukkitPlayer bukkitPlayer = getBukkitPlayer(player); - if (bukkitPlayer != null) - { - for (int i = 0; i < count; i++) - { - session.undo(session.getBlockBag(bukkitPlayer), bukkitPlayer); - } - } - } - } - catch (Exception ex) - { - Log.severe(ex); - } - } + private static BukkitPlayer getBukkitPlayer(Player player) { + try { + final WorldEditPlugin wep = getWorldEditPlugin(); + if (wep != null) { + return wep.wrapPlayer(player); + } + } catch (Exception ex) { + Log.severe(ex); + } + return null; + } - public static void setLimit(Player player, int limit) - { - try - { - final LocalSession session = getPlayerSession(player); - if (session != null) - { - session.setBlockChangeLimit(limit); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - } + public static void undo(Player player, int count) { + try { + LocalSession session = getPlayerSession(player); + if (session != null) { + final BukkitPlayer bukkitPlayer = getBukkitPlayer(player); + if (bukkitPlayer != null) { + for (int i = 0; i < count; i++) { + session.undo(session.getBlockBag(bukkitPlayer), bukkitPlayer); + } + } + } + } catch (Exception ex) { + Log.severe(ex); + } + } + + public static void setLimit(Player player, int limit) { + try { + final LocalSession session = getPlayerSession(player); + if (session != null) { + session.setBlockChangeLimit(limit); + } + } catch (Exception ex) { + Log.severe(ex); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/command/CommandBlocker.java b/src/main/java/me/StevenLawson/TotalFreedomMod/command/CommandBlocker.java index 5b9cb34..8280250 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/command/CommandBlocker.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/command/CommandBlocker.java @@ -1,5 +1,8 @@ package me.StevenLawson.TotalFreedomMod.command; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; @@ -12,311 +15,263 @@ import org.bukkit.command.CommandMap; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +public class CommandBlocker { -public class CommandBlocker -{ - private static final Map BLOCKED_COMMANDS; + private static final Map BLOCKED_COMMANDS; - static - { - BLOCKED_COMMANDS = new HashMap(); - } + static { + BLOCKED_COMMANDS = new HashMap(); + } - private CommandBlocker() - { - throw new AssertionError(); - } + private CommandBlocker() { + throw new AssertionError(); + } - public static void load() - { - BLOCKED_COMMANDS.clear(); + public static void load() { + BLOCKED_COMMANDS.clear(); - final CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(), "commandMap"); - if (commandMap == null) - { - Log.severe("Error loading commandMap."); - return; - } + final CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(), + "commandMap"); + if (commandMap == null) { + Log.severe("Error loading commandMap."); + return; + } - @SuppressWarnings("unchecked") - List blockedCommands = (List) ConfigurationEntry.BLOCKED_COMMANDS.getList(); - for (String rawEntry : blockedCommands) - { - final String[] parts = rawEntry.split(":"); - if (parts.length < 3 || parts.length > 4) - { - Log.warning("Invalid command blocker entry: " + rawEntry); - continue; - } + @SuppressWarnings("unchecked") + List blockedCommands = (List) ConfigurationEntry.BLOCKED_COMMANDS.getList(); + for (String rawEntry : blockedCommands) { + final String[] parts = rawEntry.split(":"); + if (parts.length < 3 || parts.length > 4) { + Log.warning("Invalid command blocker entry: " + rawEntry); + continue; + } - final CommandBlockerRank rank = CommandBlockerRank.fromToken(parts[0]); - final CommandBlockerAction action = CommandBlockerAction.fromToken(parts[1]); - String commandName = parts[2].toLowerCase().substring(1); - final String message = (parts.length > 3 ? parts[3] : null); + final CommandBlockerRank rank = CommandBlockerRank.fromToken(parts[0]); + final CommandBlockerAction action = CommandBlockerAction.fromToken(parts[1]); + String commandName = parts[2].toLowerCase().substring(1); + final String message = (parts.length > 3 ? parts[3] : null); - if (rank == null || action == null || commandName == null || commandName.isEmpty()) - { - Log.warning("Invalid command blocker entry: " + rawEntry); - continue; - } + if (rank == null || action == null || commandName == null || commandName.isEmpty()) { + Log.warning("Invalid command blocker entry: " + rawEntry); + continue; + } - final String[] commandParts = commandName.split(" "); - String subCommand = null; - if (commandParts.length > 1) - { - commandName = commandParts[0]; - subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).trim().toLowerCase(); - } + final String[] commandParts = commandName.split(" "); + String subCommand = null; + if (commandParts.length > 1) { + commandName = commandParts[0]; + subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).trim() + .toLowerCase(); + } - final Command command = commandMap.getCommand(commandName); + final Command command = commandMap.getCommand(commandName); - // Obtain command from alias - if (command == null) - { - Log.info("Blocking unknown command: /" + commandName); - } - else - { - commandName = command.getName().toLowerCase(); - } + // Obtain command from alias + if (command == null) { + Log.info("Blocking unknown command: /" + commandName); + } else { + commandName = command.getName().toLowerCase(); + } - if (BLOCKED_COMMANDS.containsKey(commandName)) - { - Log.warning("Not blocking: /" + commandName + " - Duplicate entry exists!"); - continue; - } + if (BLOCKED_COMMANDS.containsKey(commandName)) { + Log.warning("Not blocking: /" + commandName + " - Duplicate entry exists!"); + continue; + } - final CommandBlockerEntry blockedCommandEntry = new CommandBlockerEntry(rank, action, commandName, subCommand, message); - BLOCKED_COMMANDS.put(blockedCommandEntry.getCommand(), blockedCommandEntry); + final CommandBlockerEntry blockedCommandEntry = new CommandBlockerEntry(rank, action, + commandName, subCommand, message); + BLOCKED_COMMANDS.put(blockedCommandEntry.getCommand(), blockedCommandEntry); - if (command != null) - { - for (String alias : command.getAliases()) - { - BLOCKED_COMMANDS.put(alias.toLowerCase(), blockedCommandEntry); - } - } - } + if (command != null) { + for (String alias : command.getAliases()) { + BLOCKED_COMMANDS.put(alias.toLowerCase(), blockedCommandEntry); + } + } + } - Log.info("Loaded " + BLOCKED_COMMANDS.size() + " blocked commands"); - } + Log.info("Loaded " + BLOCKED_COMMANDS.size() + " blocked commands"); + } - public static boolean isCommandBlocked(String command, CommandSender sender) - { - return isCommandBlocked(command, sender, false); - } + public static boolean isCommandBlocked(String command, CommandSender sender) { + return isCommandBlocked(command, sender, false); + } - public static boolean isCommandBlocked(String command, CommandSender sender, boolean doAction) - { - if (command == null || command.isEmpty()) - { - return false; - } + public static boolean isCommandBlocked(String command, CommandSender sender, boolean doAction) { + if (command == null || command.isEmpty()) { + return false; + } - command = command.toLowerCase().trim(); + command = command.toLowerCase().trim(); - if (command.split(" ")[0].contains(":")) - { - Utilities.playerMsg(sender, "Plugin-specific commands are disabled."); - return true; - } + if (command.split(" ")[0].contains(":")) { + Utilities.playerMsg(sender, "Plugin-specific commands are disabled."); + return true; + } - if (command.startsWith("/")) - { - command = command.substring(1); - } + if (command.startsWith("/")) { + command = command.substring(1); + } - final String[] commandParts = command.split(" "); - String subCommand = null; - if (commandParts.length > 1) - { - subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).toLowerCase(); - } + final String[] commandParts = command.split(" "); + String subCommand = null; + if (commandParts.length > 1) { + subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).toLowerCase(); + } - final CommandBlockerEntry entry = BLOCKED_COMMANDS.get(commandParts[0]); + final CommandBlockerEntry entry = BLOCKED_COMMANDS.get(commandParts[0]); - if (entry == null) - { - return false; - } + if (entry == null) { + return false; + } - if (entry.getSubCommand() != null) - { - if (subCommand == null || !subCommand.startsWith(entry.getSubCommand())) - { - return false; - } - } + if (entry.getSubCommand() != null) { + if (subCommand == null || !subCommand.startsWith(entry.getSubCommand())) { + return false; + } + } - if (entry.getRank().hasPermission(sender)) - { - return false; - } + if (entry.getRank().hasPermission(sender)) { + return false; + } - if (doAction) - { - entry.doActions(sender); - } + if (doAction) { + entry.doActions(sender); + } - return true; - } + return true; + } - public enum CommandBlockerRank - { - ANYONE("a", 0), - OP("o", 1), - SUPER("s", 2), - TELNET("t", 3), - SENIOR("c", 4), - NOBODY("n", 5); - // - private final String token; - private final int level; + public enum CommandBlockerRank { + ANYONE("a", 0), + OP("o", 1), + SUPER("s", 2), + TELNET("t", 3), + SENIOR("c", 4), + NOBODY("n", 5); + // + private final String token; + private final int level; - CommandBlockerRank(String token, int level) - { - this.token = token; - this.level = level; - } + CommandBlockerRank(String token, int level) { + this.token = token; + this.level = level; + } - public String getToken() - { - return this.token; - } + public static CommandBlockerRank fromSender(CommandSender sender) { + if (!(sender instanceof Player)) { + return TELNET; + } - public boolean hasPermission(CommandSender sender) - { - return fromSender(sender).level >= this.level; - } + if (AdminList.isSuperAdmin(sender)) { + if (AdminList.isSeniorAdmin(sender)) { + return SENIOR; + } + return SUPER; + } - public static CommandBlockerRank fromSender(CommandSender sender) - { - if (!(sender instanceof Player)) - { - return TELNET; - } + if (sender.isOp()) { + return OP; + } - if (AdminList.isSuperAdmin(sender)) - { - if (AdminList.isSeniorAdmin(sender)) - { - return SENIOR; - } - return SUPER; - } + return ANYONE; - if (sender.isOp()) - { - return OP; - } + } - return ANYONE; + public static CommandBlockerRank fromToken(String token) { + for (CommandBlockerRank rank : CommandBlockerRank.values()) { + if (rank.getToken().equalsIgnoreCase(token)) { + return rank; + } + } + return ANYONE; + } - } + public String getToken() { + return this.token; + } - public static CommandBlockerRank fromToken(String token) - { - for (CommandBlockerRank rank : CommandBlockerRank.values()) - { - if (rank.getToken().equalsIgnoreCase(token)) - { - return rank; - } - } - return ANYONE; - } - } + public boolean hasPermission(CommandSender sender) { + return fromSender(sender).level >= this.level; + } + } - public enum CommandBlockerAction - { - BLOCK("b"), - BLOCK_AND_EJECT("a"), - BLOCK_UNKNOWN("u"); - private final String token; + public enum CommandBlockerAction { + BLOCK("b"), + BLOCK_AND_EJECT("a"), + BLOCK_UNKNOWN("u"); + private final String token; - CommandBlockerAction(String token) - { - this.token = token; - } + CommandBlockerAction(String token) { + this.token = token; + } - public String getToken() - { - return this.token; - } + public static CommandBlockerAction fromToken(String token) { + for (CommandBlockerAction action : CommandBlockerAction.values()) { + if (action.getToken().equalsIgnoreCase(token)) { + return action; + } + } + return null; + } - public static CommandBlockerAction fromToken(String token) - { - for (CommandBlockerAction action : CommandBlockerAction.values()) - { - if (action.getToken().equalsIgnoreCase(token)) - { - return action; - } - } - return null; - } - } + public String getToken() { + return this.token; + } + } - public static class CommandBlockerEntry - { - private final CommandBlockerRank rank; - private final CommandBlockerAction action; - private final String command; - private final String subCommand; - private final String message; + public static class CommandBlockerEntry { - private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, String command, String message) - { - this(rank, action, command, null, message); - } + private final CommandBlockerRank rank; + private final CommandBlockerAction action; + private final String command; + private final String subCommand; + private final String message; - private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, String command, String subCommand, String message) - { - this.rank = rank; - this.action = action; - this.command = command; - this.subCommand = (subCommand == null ? null : subCommand.toLowerCase().trim()); - this.message = (message == null || message.equals("_") ? "That command is blocked." : message); - } + private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, + String command, String message) { + this(rank, action, command, null, message); + } - public CommandBlockerAction getAction() - { - return this.action; - } + private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, + String command, String subCommand, String message) { + this.rank = rank; + this.action = action; + this.command = command; + this.subCommand = (subCommand == null ? null : subCommand.toLowerCase().trim()); + this.message = (message == null || message.equals("_") ? "That command is blocked." + : message); + } - public String getCommand() - { - return this.command; - } + public CommandBlockerAction getAction() { + return this.action; + } - public String getSubCommand() - { - return this.subCommand; - } + public String getCommand() { + return this.command; + } - public String getMessage() - { - return this.message; - } + public String getSubCommand() { + return this.subCommand; + } - public CommandBlockerRank getRank() - { - return this.rank; - } + public String getMessage() { + return this.message; + } - private void doActions(CommandSender sender) - { - if (action == CommandBlockerAction.BLOCK_AND_EJECT && sender instanceof Player) - { - Utilities.autoEject((Player) sender, "You used a prohibited command: " + command); - Utilities.bcastMsg(sender.getName() + " was automatically kicked for using harmful commands.", ChatColor.RED); - return; - } + public CommandBlockerRank getRank() { + return this.rank; + } - Utilities.playerMsg(sender, Utilities.colorize(message)); - } - } + private void doActions(CommandSender sender) { + if (action == CommandBlockerAction.BLOCK_AND_EJECT && sender instanceof Player) { + Utilities.autoEject((Player) sender, "You used a prohibited command: " + command); + Utilities.bcastMsg( + sender.getName() + " was automatically kicked for using harmful commands.", + ChatColor.RED); + return; + } + + Utilities.playerMsg(sender, Utilities.colorize(message)); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/AdminLevel.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/AdminLevel.java index 9dd980e..3c97a93 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/AdminLevel.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/AdminLevel.java @@ -1,16 +1,16 @@ package me.StevenLawson.TotalFreedomMod.commands; public enum AdminLevel { - ALL("All Player Commands"), OP("OP Commands"), SUPER("SuperAdmin Commands"), SENIOR("Senior Admin Commands"); - // - private final String friendlyName; + ALL("All Player Commands"), OP("OP Commands"), SUPER("SuperAdmin Commands"), SENIOR( + "Senior Admin Commands"); + // + private final String friendlyName; - AdminLevel(String friendlyName) { - this.friendlyName = friendlyName; - } + AdminLevel(String friendlyName) { + this.friendlyName = friendlyName; + } - public String getFriendlyName() - { - return friendlyName; - } + public String getFriendlyName() { + return friendlyName; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandParameters.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandParameters.java index 3ce6cbf..6e2a7cf 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandParameters.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandParameters.java @@ -2,9 +2,9 @@ package me.StevenLawson.TotalFreedomMod.commands; // This is only here because of Command_tfm -public @interface CommandParameters -{ - String description(); +public @interface CommandParameters { - String usage(); + String description(); + + String usage(); } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandPermissions.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandPermissions.java index d62cd7b..3e8c54f 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandPermissions.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/CommandPermissions.java @@ -4,11 +4,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) -public @interface CommandPermissions -{ - AdminLevel level(); +public @interface CommandPermissions { - SourceType source(); + AdminLevel level(); - boolean blockHostConsole() default false; + SourceType source(); + + boolean blockHostConsole() default false; } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminmode.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminmode.java index 467322e..2c16737 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminmode.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminmode.java @@ -9,31 +9,29 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true) public class Command_adminmode extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("off")) { - ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(false); - Utilities.adminAction(sender.getName(), "Deactivating adminmode.", true); - return true; - } - else if (args[0].equalsIgnoreCase("on")) - { - ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(true); - Utilities.adminAction(sender.getName(), "Activating adminmode.", true); - for (Player player : server.getOnlinePlayers()) - { - if (!AdminList.isSuperAdmin(player)) - { - player.kickPlayer("Server is now in adminmode."); - } - } - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - return false; - } + if (args[0].equalsIgnoreCase("off")) { + ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(false); + Utilities.adminAction(sender.getName(), "Deactivating adminmode.", true); + return true; + } else if (args[0].equalsIgnoreCase("on")) { + ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(true); + Utilities.adminAction(sender.getName(), "Activating adminmode.", true); + for (Player player : server.getOnlinePlayers()) { + if (!AdminList.isSuperAdmin(player)) { + player.kickPlayer("Server is now in adminmode."); + } + } + return true; + } + + return false; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminworld.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminworld.java index 8a24564..8fd2dd1 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminworld.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_adminworld.java @@ -10,213 +10,165 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_adminworld extends FreedomCommand { - private enum CommandMode { - TELEPORT, GUEST, TIME, WEATHER - } - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - CommandMode commandMode = null; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + CommandMode commandMode = null; - if (args.length == 0) { - commandMode = CommandMode.TELEPORT; - } else if (args.length >= 2) { - if ("guest".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.GUEST; - } - else if ("time".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.TIME; - } - else if ("weather".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.WEATHER; - } - } + if (args.length == 0) { + commandMode = CommandMode.TELEPORT; + } else if (args.length >= 2) { + if ("guest".equalsIgnoreCase(args[0])) { + commandMode = CommandMode.GUEST; + } else if ("time".equalsIgnoreCase(args[0])) { + commandMode = CommandMode.TIME; + } else if ("weather".equalsIgnoreCase(args[0])) { + commandMode = CommandMode.WEATHER; + } + } - if (commandMode == null) - { - return false; - } + if (commandMode == null) { + return false; + } - try - { - switch (commandMode) - { - case TELEPORT: - { - if (!(sender instanceof Player) || sender_p == null) - { - return true; - } + try { + switch (commandMode) { + case TELEPORT: { + if (!(sender instanceof Player) || sender_p == null) { + return true; + } - World adminWorld = null; - try - { - adminWorld = AdminWorld.getInstance().getWorld(); - } - catch (Exception ex) - { - } + World adminWorld = null; + try { + adminWorld = AdminWorld.getInstance().getWorld(); + } catch (Exception ex) { + } - if (adminWorld == null || sender_p.getWorld() == adminWorld) - { - playerMsg(sender, "Going to the main world."); - sender_p.teleport(server.getWorlds().get(0).getSpawnLocation()); - } - else - { - if (AdminWorld.getInstance().canAccessWorld(sender_p)) - { - playerMsg(sender, "Going to the AdminWorld."); - AdminWorld.getInstance().sendToWorld(sender_p); - } - else - { - playerMsg(sender, "You don't have permission to access the AdminWorld."); - } - } + if (adminWorld == null || sender_p.getWorld() == adminWorld) { + playerMsg(sender, "Going to the main world."); + sender_p.teleport(server.getWorlds().get(0).getSpawnLocation()); + } else { + if (AdminWorld.getInstance().canAccessWorld(sender_p)) { + playerMsg(sender, "Going to the AdminWorld."); + AdminWorld.getInstance().sendToWorld(sender_p); + } else { + playerMsg(sender, + "You don't have permission to access the AdminWorld."); + } + } - break; - } - case GUEST: - { - if (args.length == 2) - { - if ("list".equalsIgnoreCase(args[1])) - { - playerMsg(sender, "AdminWorld guest list: " + AdminWorld.getInstance().guestListToString()); - } - else if ("purge".equalsIgnoreCase(args[1])) - { - assertCommandPerms(sender, sender_p); - AdminWorld.getInstance().purgeGuestList(); - Utilities.adminAction(sender.getName(), "AdminWorld guest list purged.", false); - } - else - { - return false; - } - } - else if (args.length == 3) - { - assertCommandPerms(sender, sender_p); + break; + } + case GUEST: { + if (args.length == 2) { + if ("list".equalsIgnoreCase(args[1])) { + playerMsg(sender, "AdminWorld guest list: " + AdminWorld.getInstance() + .guestListToString()); + } else if ("purge".equalsIgnoreCase(args[1])) { + assertCommandPerms(sender, sender_p); + AdminWorld.getInstance().purgeGuestList(); + Utilities.adminAction(sender.getName(), "AdminWorld guest list purged.", + false); + } else { + return false; + } + } else if (args.length == 3) { + assertCommandPerms(sender, sender_p); - if ("add".equalsIgnoreCase(args[1])) - { - final Player player = getPlayer(args[2]); + if ("add".equalsIgnoreCase(args[1])) { + final Player player = getPlayer(args[2]); - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - if (AdminWorld.getInstance().addGuest(player, sender_p)) - { - Utilities.adminAction(sender.getName(), "AdminWorld guest added: " + player.getName(), false); - } - else - { - playerMsg(sender, "Could not add player to guest list."); - } - } - else if ("remove".equals(args[1])) - { - final Player player = AdminWorld.getInstance().removeGuest(args[2]); - if (player != null) - { - Utilities.adminAction(sender.getName(), "AdminWorld guest removed: " + player.getName(), false); - } - else - { - playerMsg(sender, "Can't find guest entry for: " + args[2]); - } - } - else - { - return false; - } - } + if (AdminWorld.getInstance().addGuest(player, sender_p)) { + Utilities.adminAction(sender.getName(), + "AdminWorld guest added: " + player.getName(), false); + } else { + playerMsg(sender, "Could not add player to guest list."); + } + } else if ("remove".equals(args[1])) { + final Player player = AdminWorld.getInstance().removeGuest(args[2]); + if (player != null) { + Utilities.adminAction(sender.getName(), + "AdminWorld guest removed: " + player.getName(), false); + } else { + playerMsg(sender, "Can't find guest entry for: " + args[2]); + } + } else { + return false; + } + } - break; - } - case TIME: - { - assertCommandPerms(sender, sender_p); + break; + } + case TIME: { + assertCommandPerms(sender, sender_p); - if (args.length == 2) - { - AdminWorld.TimeOfDay timeOfDay = AdminWorld.TimeOfDay.getByAlias(args[1]); - if (timeOfDay != null) - { - AdminWorld.getInstance().setTimeOfDay(timeOfDay); - playerMsg(sender, "AdminWorld time set to: " + timeOfDay.name()); - } - else - { - playerMsg(sender, "Invalid time of day. Can be: sunrise, noon, sunset, midnight"); - } - } - else - { - return false; - } + if (args.length == 2) { + AdminWorld.TimeOfDay timeOfDay = AdminWorld.TimeOfDay.getByAlias(args[1]); + if (timeOfDay != null) { + AdminWorld.getInstance().setTimeOfDay(timeOfDay); + playerMsg(sender, "AdminWorld time set to: " + timeOfDay.name()); + } else { + playerMsg(sender, + "Invalid time of day. Can be: sunrise, noon, sunset, midnight"); + } + } else { + return false; + } - break; - } - case WEATHER: - { - assertCommandPerms(sender, sender_p); + break; + } + case WEATHER: { + assertCommandPerms(sender, sender_p); - if (args.length == 2) - { - AdminWorld.WeatherMode weatherMode = AdminWorld.WeatherMode.getByAlias(args[1]); - if (weatherMode != null) - { - AdminWorld.getInstance().setWeatherMode(weatherMode); - playerMsg(sender, "AdminWorld weather set to: " + weatherMode.name()); - } - else - { - playerMsg(sender, "Invalid weather mode. Can be: off, rain, storm"); - } - } - else - { - return false; - } + if (args.length == 2) { + AdminWorld.WeatherMode weatherMode = AdminWorld.WeatherMode.getByAlias( + args[1]); + if (weatherMode != null) { + AdminWorld.getInstance().setWeatherMode(weatherMode); + playerMsg(sender, "AdminWorld weather set to: " + weatherMode.name()); + } else { + playerMsg(sender, "Invalid weather mode. Can be: off, rain, storm"); + } + } else { + return false; + } - break; - } - default: - { - return false; - } - } - } - catch (PermissionDeniedException ex) - { - sender.sendMessage(ex.getMessage()); - } + break; + } + default: { + return false; + } + } + } catch (PermissionDeniedException ex) { + sender.sendMessage(ex.getMessage()); + } - return true; - } + return true; + } - private void assertCommandPerms(CommandSender sender, org.bukkit.entity.Player sender_p) throws PermissionDeniedException { - if (!(sender instanceof Player) || sender_p == null || !AdminList.isSuperAdmin(sender)) { - throw new PermissionDeniedException(FreedomCommand.MSG_NO_PERMS); - } - } + private void assertCommandPerms(CommandSender sender, org.bukkit.entity.Player sender_p) + throws PermissionDeniedException { + if (!(sender instanceof Player) || sender_p == null || !AdminList.isSuperAdmin(sender)) { + throw new PermissionDeniedException(FreedomCommand.MSG_NO_PERMS); + } + } - private class PermissionDeniedException extends Exception - { - private static final long serialVersionUID = 1L; + private enum CommandMode { + TELEPORT, GUEST, TIME, WEATHER + } - private PermissionDeniedException(String string) - { - super(string); - } - } + private class PermissionDeniedException extends Exception { + + private static final long serialVersionUID = 1L; + + private PermissionDeniedException(String string) { + super(string); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_blockcmd.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_blockcmd.java index 3e796cc..983449b 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_blockcmd.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_blockcmd.java @@ -9,49 +9,50 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_blockcmd extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("purge")) { - Utilities.adminAction(sender.getName(), "Unblocking commands for all players", true); - int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - PlayerData playerdata = PlayerData.getPlayerData(player); - if (playerdata.allCommandsBlocked()) - { - counter += 1; - playerdata.setCommandsBlocked(false); - } - } - playerMsg(sender, "Unblocked commands for " + counter + " players."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - final Player player = getPlayer(args[0]); + if (args[0].equalsIgnoreCase("purge")) { + Utilities.adminAction(sender.getName(), "Unblocking commands for all players", true); + int counter = 0; + for (Player player : server.getOnlinePlayers()) { + PlayerData playerdata = PlayerData.getPlayerData(player); + if (playerdata.allCommandsBlocked()) { + counter += 1; + playerdata.setCommandsBlocked(false); + } + } + playerMsg(sender, "Unblocked commands for " + counter + " players."); + return true; + } - if (player == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + final Player player = getPlayer(args[0]); - if (AdminList.isSuperAdmin(player)) - { - playerMsg(sender, player.getName() + " is a Superadmin, and cannot have their commands blocked."); - return true; - } + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - PlayerData playerdata = PlayerData.getPlayerData(player); + if (AdminList.isSuperAdmin(player)) { + playerMsg(sender, + player.getName() + " is a Superadmin, and cannot have their commands blocked."); + return true; + } - playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked()); + PlayerData playerdata = PlayerData.getPlayerData(player); - Utilities.adminAction(sender.getName(), (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locking all commands for " + player.getName(), true); - playerMsg(sender, (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands."); + playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked()); - return true; - } + Utilities.adminAction(sender.getName(), + (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locking all commands for " + + player.getName(), true); + playerMsg(sender, (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands."); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cage.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cage.java index fac6ed2..f9283ef 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cage.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cage.java @@ -11,106 +11,91 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_cage extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } - if ("off".equals(args[0]) && sender instanceof Player) { - Utilities.adminAction(sender.getName(), "Uncaging " + sender.getName(), true); - PlayerData playerdata = PlayerData.getPlayerData(sender_p); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - playerdata.setCaged(false); - playerdata.regenerateHistory(); - playerdata.clearHistory(); + if ("off".equals(args[0]) && sender instanceof Player) { + Utilities.adminAction(sender.getName(), "Uncaging " + sender.getName(), true); + PlayerData playerdata = PlayerData.getPlayerData(sender_p); - return true; - } - else if ("purge".equals(args[0])) - { - Utilities.adminAction(sender.getName(), "Uncaging all players", true); + playerdata.setCaged(false); + playerdata.regenerateHistory(); + playerdata.clearHistory(); - for (Player player : server.getOnlinePlayers()) - { - PlayerData playerdata = PlayerData.getPlayerData(player); - playerdata.setCaged(false); - playerdata.regenerateHistory(); - playerdata.clearHistory(); - } + return true; + } else if ("purge".equals(args[0])) { + Utilities.adminAction(sender.getName(), "Uncaging all players", true); - return true; - } + for (Player player : server.getOnlinePlayers()) { + PlayerData playerdata = PlayerData.getPlayerData(player); + playerdata.setCaged(false); + playerdata.regenerateHistory(); + playerdata.clearHistory(); + } - final Player player = getPlayer(args[0]); + return true; + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + final Player player = getPlayer(args[0]); - PlayerData playerdata = PlayerData.getPlayerData(player); + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - Material outerMaterial = Material.GLASS; - Material innerMaterial = Material.AIR; + PlayerData playerdata = PlayerData.getPlayerData(player); - if (args.length >= 2) - { - if ("off".equals(args[1])) - { - Utilities.adminAction(sender.getName(), "Uncaging " + player.getName(), true); + Material outerMaterial = Material.GLASS; + Material innerMaterial = Material.AIR; - playerdata.setCaged(false); - playerdata.regenerateHistory(); - playerdata.clearHistory(); + if (args.length >= 2) { + if ("off".equals(args[1])) { + Utilities.adminAction(sender.getName(), "Uncaging " + player.getName(), true); - return true; - } - else - { - if ("darth".equalsIgnoreCase(args[1])) - { - outerMaterial = Material.SKULL; - } - else if (Material.matchMaterial(args[1]) != null) - { - outerMaterial = Material.matchMaterial(args[1]); - } - } - } + playerdata.setCaged(false); + playerdata.regenerateHistory(); + playerdata.clearHistory(); - if (args.length >= 3) - { - if (args[2].equalsIgnoreCase("water")) - { - innerMaterial = Material.STATIONARY_WATER; - } - else if (args[2].equalsIgnoreCase("lava")) - { - innerMaterial = Material.STATIONARY_LAVA; - } - } + return true; + } else { + if ("darth".equalsIgnoreCase(args[1])) { + outerMaterial = Material.SKULL; + } else if (Material.matchMaterial(args[1]) != null) { + outerMaterial = Material.matchMaterial(args[1]); + } + } + } - Location targetPos = player.getLocation().clone().add(0, 1, 0); - playerdata.setCaged(true, targetPos, outerMaterial, innerMaterial); - playerdata.regenerateHistory(); - playerdata.clearHistory(); - Utilities.buildHistory(targetPos, 2, playerdata); - Utilities.generateHollowCube(targetPos, 2, outerMaterial); - Utilities.generateCube(targetPos, 1, innerMaterial); + if (args.length >= 3) { + if (args[2].equalsIgnoreCase("water")) { + innerMaterial = Material.STATIONARY_WATER; + } else if (args[2].equalsIgnoreCase("lava")) { + innerMaterial = Material.STATIONARY_LAVA; + } + } - player.setGameMode(GameMode.SURVIVAL); + Location targetPos = player.getLocation().clone().add(0, 1, 0); + playerdata.setCaged(true, targetPos, outerMaterial, innerMaterial); + playerdata.regenerateHistory(); + playerdata.clearHistory(); + Utilities.buildHistory(targetPos, 2, playerdata); + Utilities.generateHollowCube(targetPos, 2, outerMaterial); + Utilities.generateCube(targetPos, 1, innerMaterial); - if (outerMaterial != Material.SKULL) - { - Utilities.adminAction(sender.getName(), "Caging " + player.getName(), true); - } - else - { - Utilities.adminAction(sender.getName(), "Caging " + player.getName() + " in PURE_DARTH", true); - } + player.setGameMode(GameMode.SURVIVAL); - return true; - } + if (outerMaterial != Material.SKULL) { + Utilities.adminAction(sender.getName(), "Caging " + player.getName(), true); + } else { + Utilities.adminAction(sender.getName(), "Caging " + player.getName() + " in PURE_DARTH", + true); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cake.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cake.java index 0529093..db65073 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cake.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cake.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.Random; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Achievement; import org.bukkit.ChatColor; @@ -10,40 +11,41 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import java.util.Random; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_cake extends FreedomCommand { - public static final String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake."; - private final Random random = new Random(); - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - final StringBuilder output = new StringBuilder(); + public static final String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake."; + private final Random random = new Random(); - final String[] words = CAKE_LYRICS.split(" "); - for (final String word : words) { - output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14))).append(word).append(" "); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + final StringBuilder output = new StringBuilder(); - final ItemStack heldItem = new ItemStack(Material.CAKE); - final ItemMeta heldItemMeta = heldItem.getItemMeta(); - heldItemMeta.setDisplayName((new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY).append("Lie").toString()); - heldItem.setItemMeta(heldItemMeta); + final String[] words = CAKE_LYRICS.split(" "); + for (final String word : words) { + output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14))) + .append(word).append(" "); + } - for (final Player player : server.getOnlinePlayers()) - { - final int firstEmpty = player.getInventory().firstEmpty(); - if (firstEmpty >= 0) - { - player.getInventory().setItem(firstEmpty, heldItem); - } + final ItemStack heldItem = new ItemStack(Material.CAKE); + final ItemMeta heldItemMeta = heldItem.getItemMeta(); + heldItemMeta.setDisplayName( + (new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY) + .append("Lie").toString()); + heldItem.setItemMeta(heldItemMeta); - player.awardAchievement(Achievement.BAKE_CAKE); - } + for (final Player player : server.getOnlinePlayers()) { + final int firstEmpty = player.getInventory().firstEmpty(); + if (firstEmpty >= 0) { + player.getInventory().setItem(firstEmpty, heldItem); + } - Utilities.bcastMsg(output.toString()); + player.awardAchievement(Achievement.BAKE_CAKE); + } - return true; - } + Utilities.bcastMsg(output.toString()); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cartsit.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cartsit.java index e3cccd6..1a52348 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cartsit.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cartsit.java @@ -8,69 +8,58 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_cartsit extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Player targetPlayer = sender_p; - if (args.length == 1) { + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Player targetPlayer = sender_p; - targetPlayer = getPlayer(args[0]); + if (args.length == 1) { - if (targetPlayer == null) { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - } + targetPlayer = getPlayer(args[0]); - if (senderIsConsole) - { - if (targetPlayer == null) - { - sender.sendMessage("When used from the console, you must define a target player: /cartsit "); - return true; - } - } - else if (targetPlayer != sender_p && !AdminList.isSuperAdmin(sender)) - { - sender.sendMessage("Only superadmins can select another player as a /cartsit target."); - return true; - } + if (targetPlayer == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + } - if (targetPlayer.isInsideVehicle()) - { - targetPlayer.getVehicle().eject(); - } - else - { - Minecart nearest_cart = null; - for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) - { - if (cart.isEmpty()) - { - if (nearest_cart == null) - { - nearest_cart = cart; - } - else - { - if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation())) - { - nearest_cart = cart; - } - } - } - } + if (senderIsConsole) { + if (targetPlayer == null) { + sender.sendMessage( + "When used from the console, you must define a target player: /cartsit "); + return true; + } + } else if (targetPlayer != sender_p && !AdminList.isSuperAdmin(sender)) { + sender.sendMessage("Only superadmins can select another player as a /cartsit target."); + return true; + } - if (nearest_cart != null) - { - nearest_cart.setPassenger(targetPlayer); - } - else - { - sender.sendMessage("There are no empty minecarts in the target world."); - } - } + if (targetPlayer.isInsideVehicle()) { + targetPlayer.getVehicle().eject(); + } else { + Minecart nearest_cart = null; + for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) { + if (cart.isEmpty()) { + if (nearest_cart == null) { + nearest_cart = cart; + } else { + if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) + < nearest_cart.getLocation() + .distanceSquared(targetPlayer.getLocation())) { + nearest_cart = cart; + } + } + } + } - return true; - } + if (nearest_cart != null) { + nearest_cart.setPassenger(targetPlayer); + } else { + sender.sendMessage("There are no empty minecarts in the target world."); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cbtool.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cbtool.java index 2f32d2a..8816446 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cbtool.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cbtool.java @@ -1,5 +1,8 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.command.CommandBlocker; import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil; @@ -13,197 +16,159 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_cbtool extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - if ("targetblock".equalsIgnoreCase(args[0]) && sender instanceof Player) { - Block targetBlock = DeprecationUtil.getTargetBlock(sender_p, null, 100); - playerMsg(sender, "Your target block: " + targetBlock.getLocation().toString()); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - try - { - final StringBuffer generatedCommand = new StringBuffer(); + if ("targetblock".equalsIgnoreCase(args[0]) && sender instanceof Player) { + Block targetBlock = DeprecationUtil.getTargetBlock(sender_p, null, 100); + playerMsg(sender, "Your target block: " + targetBlock.getLocation().toString()); + return true; + } - final Matcher matcher = Pattern.compile("\\[(.+?)\\]").matcher(StringUtils.join(args, " ").trim()); - while (matcher.find()) - { - matcher.appendReplacement(generatedCommand, processSubCommand(matcher.group(1))); - } - matcher.appendTail(generatedCommand); + try { + final StringBuffer generatedCommand = new StringBuffer(); - if (CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false)) - { - return true; - } + final Matcher matcher = Pattern.compile("\\[(.+?)\\]") + .matcher(StringUtils.join(args, " ").trim()); + while (matcher.find()) { + matcher.appendReplacement(generatedCommand, processSubCommand(matcher.group(1))); + } + matcher.appendTail(generatedCommand); - server.dispatchCommand(sender, generatedCommand.toString()); - } - catch (SubCommandFailureException ex) - { - } - catch (Exception ex) - { - Log.severe(ex); - } + if (CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false)) { + return true; + } - return true; - } + server.dispatchCommand(sender, generatedCommand.toString()); + } catch (SubCommandFailureException ex) { + } catch (Exception ex) { + Log.severe(ex); + } - private String processSubCommand(final String subcommand) throws SubCommandFailureException - { - final String[] args = StringUtils.split(subcommand, " "); + return true; + } - if (args.length == 1) - { - throw new SubCommandFailureException("Invalid subcommand name."); - } + private String processSubCommand(final String subcommand) throws SubCommandFailureException { + final String[] args = StringUtils.split(subcommand, " "); - return SubCommand.getByName(args[0]).getExecutable().execute(ArrayUtils.remove(args, 0)); - } + if (args.length == 1) { + throw new SubCommandFailureException("Invalid subcommand name."); + } - private enum SubCommand - { - PLAYER_DETECT("playerdetect", new SubCommandExecutable() - { - @Override - public String execute(String[] args) throws SubCommandFailureException - { - if (args.length != 5) - { - throw new SubCommandFailureException("Invalid # of arguments."); - } + return SubCommand.getByName(args[0]).getExecutable().execute(ArrayUtils.remove(args, 0)); + } - double x, y, z; - try - { - x = Double.parseDouble(args[0].trim()); - y = Double.parseDouble(args[1].trim()); - z = Double.parseDouble(args[2].trim()); - } - catch (NumberFormatException ex) - { - throw new SubCommandFailureException("Invalid coordinates."); - } + private enum SubCommand { + PLAYER_DETECT("playerdetect", new SubCommandExecutable() { + @Override + public String execute(String[] args) throws SubCommandFailureException { + if (args.length != 5) { + throw new SubCommandFailureException("Invalid # of arguments."); + } - World world = null; - final String needleWorldName = args[3].trim(); - final List worlds = Bukkit.getWorlds(); - for (final World testWorld : worlds) - { - if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) - { - world = testWorld; - break; - } - } + double x, y, z; + try { + x = Double.parseDouble(args[0].trim()); + y = Double.parseDouble(args[1].trim()); + z = Double.parseDouble(args[2].trim()); + } catch (NumberFormatException ex) { + throw new SubCommandFailureException("Invalid coordinates."); + } - if (world == null) - { - throw new SubCommandFailureException("Invalid world name."); - } + World world = null; + final String needleWorldName = args[3].trim(); + final List worlds = Bukkit.getWorlds(); + for (final World testWorld : worlds) { + if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) { + world = testWorld; + break; + } + } - final Location testLocation = new Location(world, x, y, z); + if (world == null) { + throw new SubCommandFailureException("Invalid world name."); + } - double radius; - try - { - radius = Double.parseDouble(args[4].trim()); - } - catch (NumberFormatException ex) - { - throw new SubCommandFailureException("Invalid radius."); - } + final Location testLocation = new Location(world, x, y, z); - final double radiusSq = radius * radius; + double radius; + try { + radius = Double.parseDouble(args[4].trim()); + } catch (NumberFormatException ex) { + throw new SubCommandFailureException("Invalid radius."); + } - final List worldPlayers = testLocation.getWorld().getPlayers(); - for (final Player testPlayer : worldPlayers) - { - if (testPlayer.getLocation().distanceSquared(testLocation) < radiusSq) - { - return testPlayer.getName(); - } - } + final double radiusSq = radius * radius; - throw new SubCommandFailureException("No player found in range."); - } - }), - PLAYER_DETECT_BOOLEAN("playerdetectboolean", new SubCommandExecutable() - { - @Override - public String execute(String[] args) throws SubCommandFailureException - { - try - { - PLAYER_DETECT.getExecutable().execute(args); - } - catch (SubCommandFailureException ex) - { - return "0"; - } + final List worldPlayers = testLocation.getWorld().getPlayers(); + for (final Player testPlayer : worldPlayers) { + if (testPlayer.getLocation().distanceSquared(testLocation) < radiusSq) { + return testPlayer.getName(); + } + } - return "1"; - } - }); - // - private final String name; - private final SubCommandExecutable executable; + throw new SubCommandFailureException("No player found in range."); + } + }), + PLAYER_DETECT_BOOLEAN("playerdetectboolean", new SubCommandExecutable() { + @Override + public String execute(String[] args) throws SubCommandFailureException { + try { + PLAYER_DETECT.getExecutable().execute(args); + } catch (SubCommandFailureException ex) { + return "0"; + } - SubCommand(String subCommandName, SubCommandExecutable subCommandImpl) - { - this.name = subCommandName; - this.executable = subCommandImpl; - } + return "1"; + } + }); + // + private final String name; + private final SubCommandExecutable executable; - public SubCommandExecutable getExecutable() - { - return executable; - } + SubCommand(String subCommandName, SubCommandExecutable subCommandImpl) { + this.name = subCommandName; + this.executable = subCommandImpl; + } - public String getName() - { - return name; - } + public static SubCommand getByName(String needle) throws SubCommandFailureException { + needle = needle.trim(); + for (SubCommand subCommand : values()) { + if (subCommand.getName().equalsIgnoreCase(needle)) { + return subCommand; + } + } + throw new SubCommandFailureException("Invalid subcommand name."); + } - public static SubCommand getByName(String needle) throws SubCommandFailureException - { - needle = needle.trim(); - for (SubCommand subCommand : values()) - { - if (subCommand.getName().equalsIgnoreCase(needle)) - { - return subCommand; - } - } - throw new SubCommandFailureException("Invalid subcommand name."); - } - } + public SubCommandExecutable getExecutable() { + return executable; + } - private interface SubCommandExecutable - { - String execute(String[] args) throws SubCommandFailureException; - } + public String getName() { + return name; + } + } - private static class SubCommandFailureException extends Exception - { - public SubCommandFailureException() - { - } + private interface SubCommandExecutable { - public SubCommandFailureException(String message) - { - super(message); - } - } + String execute(String[] args) throws SubCommandFailureException; + } + + private static class SubCommandFailureException extends Exception { + + public SubCommandFailureException() { + } + + public SubCommandFailureException(String message) { + super(message); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdlist.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdlist.java index 6d202d1..e0e5ce6 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdlist.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdlist.java @@ -1,46 +1,43 @@ package me.StevenLawson.TotalFreedomMod.commands; -import org.apache.commons.lang3.StringUtils; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginDescriptionFile; - import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.apache.commons.lang3.StringUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginDescriptionFile; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_cmdlist extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - List commands = new ArrayList(); - for (Plugin targetPlugin : server.getPluginManager().getPlugins()) { - try { - PluginDescriptionFile desc = targetPlugin.getDescription(); - Map> map = desc.getCommands(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + List commands = new ArrayList(); - if (map != null) - { - for (Entry> entry : map.entrySet()) - { - String command_name = entry.getKey(); - commands.add(command_name); - } - } - } - catch (Throwable ex) - { - } - } + for (Plugin targetPlugin : server.getPluginManager().getPlugins()) { + try { + PluginDescriptionFile desc = targetPlugin.getDescription(); + Map> map = desc.getCommands(); - Collections.sort(commands); + if (map != null) { + for (Entry> entry : map.entrySet()) { + String command_name = entry.getKey(); + commands.add(command_name); + } + } + } catch (Throwable ex) { + } + } - sender.sendMessage(StringUtils.join(commands, ",")); + Collections.sort(commands); - return true; - } + sender.sendMessage(StringUtils.join(commands, ",")); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdspy.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdspy.java index 6718854..bc3c8f6 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdspy.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_cmdspy.java @@ -6,13 +6,15 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_cmdspy extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - PlayerData playerdata = PlayerData.getPlayerData(sender_p); - playerdata.setCommandSpy(!playerdata.cmdspyEnabled()); - playerMsg(sender, "CommandSpy " + (playerdata.cmdspyEnabled() ? "enabled." : "disabled.")); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { - return true; - } + PlayerData playerdata = PlayerData.getPlayerData(sender_p); + playerdata.setCommandSpy(!playerdata.cmdspyEnabled()); + playerMsg(sender, "CommandSpy " + (playerdata.cmdspyEnabled() ? "enabled." : "disabled.")); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_colorme.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_colorme.java index 0022b9b..c8d1ae7 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_colorme.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_colorme.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.Iterator; +import java.util.Map; import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; @@ -7,47 +9,47 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.util.Iterator; -import java.util.Map; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_colorme extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if ("list".equalsIgnoreCase(args[0])) { - playerMsg(sender, "Colors: " + StringUtils.join(Utilities.CHAT_COLOR_NAMES.keySet(), ", ")); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - final String needle = args[0].trim().toLowerCase(); - ChatColor color = null; - final Iterator> it = Utilities.CHAT_COLOR_NAMES.entrySet().iterator(); - while (it.hasNext()) - { - final Map.Entry entry = it.next(); - if (entry.getKey().contains(needle)) - { - color = entry.getValue(); - break; - } - } + if ("list".equalsIgnoreCase(args[0])) { + playerMsg(sender, + "Colors: " + StringUtils.join(Utilities.CHAT_COLOR_NAMES.keySet(), ", ")); + return true; + } - if (color == null) - { - playerMsg(sender, "Invalid color: " + needle + " - Use \"/colorme list\" to list colors."); - return true; - } + final String needle = args[0].trim().toLowerCase(); + ChatColor color = null; + final Iterator> it = Utilities.CHAT_COLOR_NAMES.entrySet() + .iterator(); + while (it.hasNext()) { + final Map.Entry entry = it.next(); + if (entry.getKey().contains(needle)) { + color = entry.getValue(); + break; + } + } - final String newNick = color + ChatColor.stripColor(sender_p.getDisplayName()).trim() + ChatColor.WHITE; + if (color == null) { + playerMsg(sender, + "Invalid color: " + needle + " - Use \"/colorme list\" to list colors."); + return true; + } - EssentialsBridge.setNickname(sender.getName(), newNick); + final String newNick = + color + ChatColor.stripColor(sender_p.getDisplayName()).trim() + ChatColor.WHITE; - playerMsg(sender, "Your nickname is now: " + newNick); + EssentialsBridge.setNickname(sender.getName(), newNick); - return true; - } + playerMsg(sender, "Your nickname is now: " + newNick); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_creative.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_creative.java index 9770c9c..86cb140 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_creative.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_creative.java @@ -9,59 +9,55 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_creative extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (senderIsConsole) { - if (args.length == 0) { - sender.sendMessage("When used from the console, you must define a target user to change gamemode on."); - return true; - } - } - Player player; - if (args.length == 0) - { - player = sender_p; - } - else - { - if (args[0].equalsIgnoreCase("-a")) - { - if (!AdminList.isSuperAdmin(sender)) - { - sender.sendMessage(FreedomCommand.MSG_NO_PERMS); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (senderIsConsole) { + if (args.length == 0) { + sender.sendMessage( + "When used from the console, you must define a target user to change gamemode on."); + return true; + } + } - for (Player targetPlayer : server.getOnlinePlayers()) - { - targetPlayer.setGameMode(GameMode.CREATIVE); - } + Player player; + if (args.length == 0) { + player = sender_p; + } else { + if (args[0].equalsIgnoreCase("-a")) { + if (!AdminList.isSuperAdmin(sender)) { + sender.sendMessage(FreedomCommand.MSG_NO_PERMS); + return true; + } - Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to creative", false); - return true; - } + for (Player targetPlayer : server.getOnlinePlayers()) { + targetPlayer.setGameMode(GameMode.CREATIVE); + } - if (!(senderIsConsole || AdminList.isSuperAdmin(sender))) - { - playerMsg(sender, "Only superadmins can change other user's gamemode."); - return true; - } + Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to creative", + false); + return true; + } - player = getPlayer(args[0]); + if (!(senderIsConsole || AdminList.isSuperAdmin(sender))) { + playerMsg(sender, "Only superadmins can change other user's gamemode."); + return true; + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + player = getPlayer(args[0]); - } + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - playerMsg(sender, "Setting " + player.getName() + " to game mode 'Creative'."); - playerMsg(player, sender.getName() + " set your game mode to 'Creative'."); - player.setGameMode(GameMode.CREATIVE); + } - return true; - } + playerMsg(sender, "Setting " + player.getName() + " to game mode 'Creative'."); + playerMsg(player, sender.getName() + " set your game mode to 'Creative'."); + player.setGameMode(GameMode.CREATIVE); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_csay.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_csay.java index 078487d..9a9b3ea 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_csay.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_csay.java @@ -7,11 +7,14 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE) public class Command_csay extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 0) { - Utilities.bcastMsg(String.format("§7[CONSOLE] §f<§c%s§f> %s", sender.getName(), StringUtils.join(args, " "))); - } - return true; - } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { + Utilities.bcastMsg(String.format("§7[CONSOLE] §f<§c%s§f> %s", sender.getName(), + StringUtils.join(args, " "))); + } + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deafen.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deafen.java index 641769a..279d377 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deafen.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deafen.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.Random; import org.bukkit.Location; import org.bukkit.Sound; import org.bukkit.command.Command; @@ -7,39 +8,39 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -import java.util.Random; - @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true) public class Command_deafen extends FreedomCommand { - private static final Random random = new Random(); - public static final double STEPS = 10.0; - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - for (final Player player : server.getOnlinePlayers()) { - for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) { - final float pitch = (float) (percent * 2.0); + public static final double STEPS = 10.0; + private static final Random random = new Random(); - new BukkitRunnable() { - @Override - public void run() - { - player.playSound(randomOffset(player.getLocation(), 5.0), Sound.values()[random.nextInt(Sound.values().length)], 100.0f, pitch); - } - }.runTaskLater(plugin, Math.round(20.0 * percent * 2.0)); - } - } + private static Location randomOffset(Location a, double magnitude) { + return a.clone() + .add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude, + randomDoubleRange(-1.0, 1.0) * magnitude); + } - return true; - } + private static Double randomDoubleRange(double min, double max) { + return min + (random.nextDouble() * ((max - min) + 1.0)); + } - private static Location randomOffset(Location a, double magnitude) - { - return a.clone().add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + for (final Player player : server.getOnlinePlayers()) { + for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) { + final float pitch = (float) (percent * 2.0); - private static Double randomDoubleRange(double min, double max) - { - return min + (random.nextDouble() * ((max - min) + 1.0)); - } + new BukkitRunnable() { + @Override + public void run() { + player.playSound(randomOffset(player.getLocation(), 5.0), + Sound.values()[random.nextInt(Sound.values().length)], 100.0f, pitch); + } + }.runTaskLater(plugin, Math.round(20.0 * percent * 2.0)); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_debug.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_debug.java index 511fc8e..2d60de6 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_debug.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_debug.java @@ -1,106 +1,82 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.lang.reflect.Field; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.lang.reflect.Field; - @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE) public class Command_debug extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 3) { - return false; - } - try { - String className = args[0]; - String fieldName = args[1]; - String newValue = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " "); + public static void setStaticValue(final String className, final String fieldName, + final String newValueString) throws Exception { + Class forName = Class.forName(className); + if (forName != null) { + final Field field = forName.getDeclaredField(fieldName); + if (field != null) { + Object newValue; - if (className.equalsIgnoreCase("_")) - { - className = "me.StevenLawson.TotalFreedomMod.TotalFreedomMod"; - } + Class type = field.getType(); + if (type.isPrimitive()) { + if (type.getName().equals("int")) { + newValue = Integer.parseInt(newValueString); + } else if (type.getName().equals("double")) { + newValue = Double.parseDouble(newValueString); + } else if (type.getName().equals("boolean")) { + newValue = Boolean.parseBoolean(newValueString); + } else { + throw new Exception("Unknown primitive field type."); + } + } else { + if (type.isAssignableFrom(Integer.class)) { + newValue = new Integer(newValueString); + } else if (type.isAssignableFrom(Double.class)) { + newValue = new Double(newValueString); + } else if (type.isAssignableFrom(Boolean.class)) { + newValue = Boolean.valueOf(newValueString); + } else if (type.isAssignableFrom(String.class)) { + newValue = newValueString; + } else { + throw new Exception("Unknown complex field type."); + } + } - setStaticValue(className, fieldName, newValue); + field.setAccessible(true); - sender.sendMessage("Debug: OK"); - } - catch (Exception ex) - { - sender.sendMessage(ex.getMessage()); - } + final Object oldValue = field.get(Class.forName(className)); + if (oldValue != null) { + field.set(oldValue, newValue); + } - return true; - } + field.setAccessible(false); + } + } + } - public static void setStaticValue(final String className, final String fieldName, final String newValueString) throws Exception - { - Class forName = Class.forName(className); - if (forName != null) - { - final Field field = forName.getDeclaredField(fieldName); - if (field != null) - { - Object newValue; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 3) { + return false; + } - Class type = field.getType(); - if (type.isPrimitive()) - { - if (type.getName().equals("int")) - { - newValue = Integer.parseInt(newValueString); - } - else if (type.getName().equals("double")) - { - newValue = Double.parseDouble(newValueString); - } - else if (type.getName().equals("boolean")) - { - newValue = Boolean.parseBoolean(newValueString); - } - else - { - throw new Exception("Unknown primitive field type."); - } - } - else - { - if (type.isAssignableFrom(Integer.class)) - { - newValue = new Integer(newValueString); - } - else if (type.isAssignableFrom(Double.class)) - { - newValue = new Double(newValueString); - } - else if (type.isAssignableFrom(Boolean.class)) - { - newValue = Boolean.valueOf(newValueString); - } - else if (type.isAssignableFrom(String.class)) - { - newValue = newValueString; - } - else - { - throw new Exception("Unknown complex field type."); - } - } + try { + String className = args[0]; + String fieldName = args[1]; + String newValue = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " "); - field.setAccessible(true); + if (className.equalsIgnoreCase("_")) { + className = "me.StevenLawson.TotalFreedomMod.TotalFreedomMod"; + } - final Object oldValue = field.get(Class.forName(className)); - if (oldValue != null) - { - field.set(oldValue, newValue); - } + setStaticValue(className, fieldName, newValue); - field.setAccessible(false); - } - } - } + sender.sendMessage("Debug: OK"); + } catch (Exception ex) { + sender.sendMessage(ex.getMessage()); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_denick.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_denick.java index 646475d..5e9f488 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_denick.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_denick.java @@ -8,14 +8,16 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_denick extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Removing all nicknames", false); - for (Player player : server.getOnlinePlayers()) { - EssentialsBridge.setNickname(player.getName(), null); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Removing all nicknames", false); - return true; - } + for (Player player : server.getOnlinePlayers()) { + EssentialsBridge.setNickname(player.getName(), null); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deop.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deop.java index 0728933..f397e18 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deop.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deop.java @@ -9,31 +9,31 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_deop extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - OfflinePlayer player = null; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - for (Player onlinePlayer : server.getOnlinePlayers()) { - if (args[0].equalsIgnoreCase(onlinePlayer.getName())) - { - player = onlinePlayer; - } - } + OfflinePlayer player = null; - // if the player is not online - if (player == null) - { - player = DeprecationUtil.getOfflinePlayer(server, args[0]); - } + for (Player onlinePlayer : server.getOnlinePlayers()) { + if (args[0].equalsIgnoreCase(onlinePlayer.getName())) { + player = onlinePlayer; + } + } - Utilities.adminAction(sender.getName(), "De-opping " + player.getName(), false); + // if the player is not online + if (player == null) { + player = DeprecationUtil.getOfflinePlayer(server, args[0]); + } - player.setOp(false); + Utilities.adminAction(sender.getName(), "De-opping " + player.getName(), false); - return true; - } + player.setOp(false); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deopall.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deopall.java index 150f7a8..b9e8144 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deopall.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_deopall.java @@ -7,15 +7,17 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_deopall extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "De-opping all players on the server", true); - for (Player player : server.getOnlinePlayers()) { - player.setOp(false); - player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "De-opping all players on the server", true); - return true; - } + for (Player player : server.getOnlinePlayers()) { + player.setOp(false); + player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_dispfill.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_dispfill.java index 8a47668..b9d375a 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_dispfill.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_dispfill.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; @@ -12,93 +14,78 @@ import org.bukkit.command.CommandSender; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_dispfill extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 2) { - int radius; - try { - radius = Math.max(5, Math.min(25, Integer.parseInt(args[0]))); - } catch (NumberFormatException ex) - { - sender.sendMessage("Invalid radius."); - return true; - } + private static void setDispenserContents(final Block targetBlock, final ItemStack[] items) { + if (targetBlock.getType() == Material.DISPENSER) { + final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory(); + dispenserInv.clear(); + dispenserInv.addItem(items); + } + } - final List items = new ArrayList(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 2) { + int radius; - final String[] itemsRaw = StringUtils.split(args[1], ","); - for (final String searchItem : itemsRaw) - { - Material material = Material.matchMaterial(searchItem); - if (material == null) - { - try - { - material = DeprecationUtil.getMaterial(Integer.parseInt(searchItem)); - } - catch (NumberFormatException ex) - { - } - } + try { + radius = Math.max(5, Math.min(25, Integer.parseInt(args[0]))); + } catch (NumberFormatException ex) { + sender.sendMessage("Invalid radius."); + return true; + } - if (material != null) - { - items.add(new ItemStack(material, 64)); - } - else - { - sender.sendMessage("Skipping invalid item: " + searchItem); - } - } + final List items = new ArrayList(); - final ItemStack[] itemsArray = items.toArray(new ItemStack[items.size()]); + final String[] itemsRaw = StringUtils.split(args[1], ","); + for (final String searchItem : itemsRaw) { + Material material = Material.matchMaterial(searchItem); + if (material == null) { + try { + material = DeprecationUtil.getMaterial(Integer.parseInt(searchItem)); + } catch (NumberFormatException ex) { + } + } - int affected = 0; - final Location centerLocation = sender_p.getLocation(); - final Block centerBlock = centerLocation.getBlock(); - for (int xOffset = -radius; xOffset <= radius; xOffset++) - { - for (int yOffset = -radius; yOffset <= radius; yOffset++) - { - for (int zOffset = -radius; zOffset <= radius; zOffset++) - { - final Block targetBlock = centerBlock.getRelative(xOffset, yOffset, zOffset); - if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius * radius)) - { - if (targetBlock.getType().equals(Material.DISPENSER)) - { - sender.sendMessage("Filling dispenser @ " + Utilities.formatLocation(targetBlock.getLocation())); - setDispenserContents(targetBlock, itemsArray); - affected++; - } - } - } - } - } + if (material != null) { + items.add(new ItemStack(material, 64)); + } else { + sender.sendMessage("Skipping invalid item: " + searchItem); + } + } - sender.sendMessage("Done. " + affected + " dispenser(s) filled."); - } - else - { - return false; - } + final ItemStack[] itemsArray = items.toArray(new ItemStack[items.size()]); - return true; - } + int affected = 0; + final Location centerLocation = sender_p.getLocation(); + final Block centerBlock = centerLocation.getBlock(); + for (int xOffset = -radius; xOffset <= radius; xOffset++) { + for (int yOffset = -radius; yOffset <= radius; yOffset++) { + for (int zOffset = -radius; zOffset <= radius; zOffset++) { + final Block targetBlock = centerBlock.getRelative(xOffset, yOffset, + zOffset); + if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius + * radius)) { + if (targetBlock.getType().equals(Material.DISPENSER)) { + sender.sendMessage( + "Filling dispenser @ " + Utilities.formatLocation( + targetBlock.getLocation())); + setDispenserContents(targetBlock, itemsArray); + affected++; + } + } + } + } + } - private static void setDispenserContents(final Block targetBlock, final ItemStack[] items) - { - if (targetBlock.getType() == Material.DISPENSER) - { - final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory(); - dispenserInv.clear(); - dispenserInv.addItem(items); - } - } + sender.sendMessage("Done. " + affected + " dispenser(s) filled."); + } else { + return false; + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_enchant.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_enchant.java index 92ffac6..d8d2246 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_enchant.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_enchant.java @@ -8,114 +8,90 @@ import org.bukkit.inventory.ItemStack; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_enchant extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - ItemStack itemInHand = sender_p.getItemInHand(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - if (itemInHand == null) { - playerMsg(sender, "You are holding an invalid item."); - return true; - } + ItemStack itemInHand = sender_p.getItemInHand(); - if (args[0].equalsIgnoreCase("list")) - { - boolean has_enchantments = false; + if (itemInHand == null) { + playerMsg(sender, "You are holding an invalid item."); + return true; + } - StringBuilder possible_ench = new StringBuilder("Possible enchantments for held item: "); - for (Enchantment ench : Enchantment.values()) - { - if (ench.canEnchantItem(itemInHand)) - { - has_enchantments = true; - possible_ench.append(ench.getName()).append(", "); - } - } + if (args[0].equalsIgnoreCase("list")) { + boolean has_enchantments = false; - if (has_enchantments) - { - playerMsg(sender, possible_ench.toString()); - } - else - { - playerMsg(sender, "The held item has no enchantments."); - } - } - else if (args[0].equalsIgnoreCase("addall")) - { - for (Enchantment ench : Enchantment.values()) - { - try - { - if (ench.canEnchantItem(itemInHand)) - { - itemInHand.addEnchantment(ench, ench.getMaxLevel()); - } - } - catch (Exception ex) - { - Log.info("Error using " + ench.getName() + " on " + itemInHand.getType().name() + " held by " + sender_p.getName() + "."); - } - } + StringBuilder possible_ench = new StringBuilder( + "Possible enchantments for held item: "); + for (Enchantment ench : Enchantment.values()) { + if (ench.canEnchantItem(itemInHand)) { + has_enchantments = true; + possible_ench.append(ench.getName()).append(", "); + } + } - playerMsg(sender, "Added all possible enchantments for this item."); - } - else if (args[0].equalsIgnoreCase("reset")) - { - for (Enchantment ench : itemInHand.getEnchantments().keySet()) - { - itemInHand.removeEnchantment(ench); - } + if (has_enchantments) { + playerMsg(sender, possible_ench.toString()); + } else { + playerMsg(sender, "The held item has no enchantments."); + } + } else if (args[0].equalsIgnoreCase("addall")) { + for (Enchantment ench : Enchantment.values()) { + try { + if (ench.canEnchantItem(itemInHand)) { + itemInHand.addEnchantment(ench, ench.getMaxLevel()); + } + } catch (Exception ex) { + Log.info("Error using " + ench.getName() + " on " + itemInHand.getType().name() + + " held by " + sender_p.getName() + "."); + } + } - playerMsg(sender, "Removed all enchantments."); - } - else - { - if (args.length < 2) - { - return false; - } + playerMsg(sender, "Added all possible enchantments for this item."); + } else if (args[0].equalsIgnoreCase("reset")) { + for (Enchantment ench : itemInHand.getEnchantments().keySet()) { + itemInHand.removeEnchantment(ench); + } - Enchantment ench = null; + playerMsg(sender, "Removed all enchantments."); + } else { + if (args.length < 2) { + return false; + } - try - { - ench = Enchantment.getByName(args[1]); - } - catch (Exception ex) - { - } + Enchantment ench = null; - if (ench == null) - { - playerMsg(sender, args[1] + " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item."); - return true; - } + try { + ench = Enchantment.getByName(args[1]); + } catch (Exception ex) { + } - if (args[0].equalsIgnoreCase("add")) - { - if (ench.canEnchantItem(itemInHand)) - { - itemInHand.addEnchantment(ench, ench.getMaxLevel()); + if (ench == null) { + playerMsg(sender, args[1] + + " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item."); + return true; + } - playerMsg(sender, "Added enchantment: " + ench.getName()); - } - else - { - playerMsg(sender, "Can't use this enchantment on held item."); - } - } - else if (args[0].equals("remove")) - { - itemInHand.removeEnchantment(ench); + if (args[0].equalsIgnoreCase("add")) { + if (ench.canEnchantItem(itemInHand)) { + itemInHand.addEnchantment(ench, ench.getMaxLevel()); - playerMsg(sender, "Removed enchantment: " + ench.getName()); - } - } + playerMsg(sender, "Added enchantment: " + ench.getName()); + } else { + playerMsg(sender, "Can't use this enchantment on held item."); + } + } else if (args[0].equals("remove")) { + itemInHand.removeEnchantment(ench); - return true; - } + playerMsg(sender, "Removed enchantment: " + ench.getName()); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ender.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ender.java index 27978dd..06cdf8c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ender.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ender.java @@ -6,9 +6,11 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME) public class Command_ender extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end"); - return true; - } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end"); + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_expel.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_expel.java index bf2e01a..78e8fdd 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_expel.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_expel.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.Location; @@ -8,77 +10,63 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_expel extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - double radius = 20.0; - double strength = 5.0; - if (args.length >= 1) { - try { - radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0]))); - } - catch (NumberFormatException ex) - { - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + double radius = 20.0; + double strength = 5.0; - if (args.length >= 2) - { - try - { - strength = Math.max(0.0, Math.min(50.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ex) - { - } - } + if (args.length >= 1) { + try { + radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0]))); + } catch (NumberFormatException ex) { + } + } - List pushedPlayers = new ArrayList(); + if (args.length >= 2) { + try { + strength = Math.max(0.0, Math.min(50.0, Double.parseDouble(args[1]))); + } catch (NumberFormatException ex) { + } + } - final Vector senderPos = sender_p.getLocation().toVector(); - final List players = sender_p.getWorld().getPlayers(); - for (final Player player : players) - { - if (player.equals(sender_p)) - { - continue; - } + List pushedPlayers = new ArrayList(); - final Location targetPos = player.getLocation(); - final Vector targetPosVec = targetPos.toVector(); + final Vector senderPos = sender_p.getLocation().toVector(); + final List players = sender_p.getWorld().getPlayers(); + for (final Player player : players) { + if (player.equals(sender_p)) { + continue; + } - boolean inRange = false; - try - { - inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius); - } - catch (IllegalArgumentException ex) - { - } + final Location targetPos = player.getLocation(); + final Vector targetPosVec = targetPos.toVector(); - if (inRange) - { - player.getWorld().createExplosion(targetPos, 0.0f, false); - Utilities.setFlying(player, false); - player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength)); - pushedPlayers.add(player.getName()); - } - } + boolean inRange = false; + try { + inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius); + } catch (IllegalArgumentException ex) { + } - if (pushedPlayers.isEmpty()) - { - playerMsg(sender, "No players pushed."); - } - else - { - playerMsg(sender, "Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers, ", ")); - } + if (inRange) { + player.getWorld().createExplosion(targetPos, 0.0f, false); + Utilities.setFlying(player, false); + player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength)); + pushedPlayers.add(player.getName()); + } + } - return true; - } + if (pushedPlayers.isEmpty()) { + playerMsg(sender, "No players pushed."); + } else { + playerMsg(sender, + "Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers, + ", ")); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_findip.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_findip.java index ef3b14e..bbbc109 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_findip.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_findip.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.List; import me.StevenLawson.TotalFreedomMod.player.PlayerList; import me.StevenLawson.TotalFreedomMod.player.PlayerRank; import org.apache.commons.lang3.StringUtils; @@ -7,37 +8,36 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_findip extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - final Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - if (player == null) { + final Player player = getPlayer(args[0]); - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + if (player == null) { - PlayerRank rank = PlayerRank.fromSender(sender); - PlayerRank targetRank = PlayerRank.fromSender(player); + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - List ipsToShow = PlayerList.getEntry(player).getIps(); + PlayerRank rank = PlayerRank.fromSender(sender); + PlayerRank targetRank = PlayerRank.fromSender(player); - if(rank.getOrdinal() < PlayerRank.SENIOR.getOrdinal() || targetRank.getOrdinal() >= rank.getOrdinal()) { - ipsToShow = PlayerList.getEntry(player).getFuzziedIps(); - } + List ipsToShow = PlayerList.getEntry(player).getIps(); + if (rank.getOrdinal() < PlayerRank.SENIOR.getOrdinal() + || targetRank.getOrdinal() >= rank.getOrdinal()) { + ipsToShow = PlayerList.getEntry(player).getFuzziedIps(); + } - playerMsg(sender, "Player IPs: " + StringUtils.join(ipsToShow, ", ")); + playerMsg(sender, "Player IPs: " + StringUtils.join(ipsToShow, ", ")); - return true; - } + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_flatlands.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_flatlands.java index 60cf440..6a0f35a 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_flatlands.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_flatlands.java @@ -7,13 +7,15 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME) public class Command_flatlands extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) { - FlatlandsWorld.getInstance().sendToWorld(sender_p); - } else { - playerMsg(sender, "Flatlands is currently disabled."); - } - return true; - } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) { + FlatlandsWorld.getInstance().sendToWorld(sender_p); + } else { + playerMsg(sender, "Flatlands is currently disabled."); + } + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fr.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fr.java index 2abbf10..31bac61 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fr.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fr.java @@ -11,68 +11,64 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_fr extends FreedomCommand { - private static boolean allFrozen = false; - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - allFrozen = !allFrozen; + private static boolean allFrozen = false; - if (allFrozen) { - Utilities.adminAction(sender.getName(), "Freezing all players", false); + public static void setAllFrozen(boolean freeze) { + allFrozen = freeze; + for (PlayerData data : PlayerData.PLAYER_DATA.values()) { + data.setFrozen(freeze); + } + } - setAllFrozen(true); - playerMsg(sender, "Players are now frozen."); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + allFrozen = !allFrozen; - for (Player player : Bukkit.getOnlinePlayers()) - { - if (!AdminList.isSuperAdmin(player)) - { - playerMsg(player, "You have been frozen due to rulebreakers, you will be unfrozen soon.", ChatColor.RED); - } - } - } - else - { - Utilities.adminAction(sender.getName(), "Unfreezing all players", false); - setAllFrozen(false); - playerMsg(sender, "Players are now free to move."); - } - } - else - { - if (args[0].equalsIgnoreCase("purge")) - { - setAllFrozen(false); - Utilities.adminAction(sender.getName(), "Unfreezing all players", false); - } - else - { - final Player player = getPlayer(args[0]); + if (allFrozen) { + Utilities.adminAction(sender.getName(), "Freezing all players", false); - if (player == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); - return true; - } + setAllFrozen(true); + playerMsg(sender, "Players are now frozen."); - final PlayerData playerdata = PlayerData.getPlayerData(player); - playerdata.setFrozen(!playerdata.isFrozen()); + for (Player player : Bukkit.getOnlinePlayers()) { + if (!AdminList.isSuperAdmin(player)) { + playerMsg(player, + "You have been frozen due to rulebreakers, you will be unfrozen soon.", + ChatColor.RED); + } + } + } else { + Utilities.adminAction(sender.getName(), "Unfreezing all players", false); + setAllFrozen(false); + playerMsg(sender, "Players are now free to move."); + } + } else { + if (args[0].equalsIgnoreCase("purge")) { + setAllFrozen(false); + Utilities.adminAction(sender.getName(), "Unfreezing all players", false); + } else { + final Player player = getPlayer(args[0]); - playerMsg(sender, player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + "."); - playerMsg(player, "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".", ChatColor.AQUA); - } - } + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } - return true; - } + final PlayerData playerdata = PlayerData.getPlayerData(player); + playerdata.setFrozen(!playerdata.isFrozen()); - public static void setAllFrozen(boolean freeze) - { - allFrozen = freeze; - for (PlayerData data : PlayerData.PLAYER_DATA.values()) - { - data.setFrozen(freeze); - } - } + playerMsg(sender, + player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" + : "unfrozen") + "."); + playerMsg(player, + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".", + ChatColor.AQUA); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fuckoff.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fuckoff.java index 49a1c51..3ca5914 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fuckoff.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_fuckoff.java @@ -6,40 +6,37 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_IN_GAME) public class Command_fuckoff extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - boolean fuckoff_enabled = false; - double fuckoff_range = 25.0; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - if (args[0].equalsIgnoreCase("on")) - { - fuckoff_enabled = true; + boolean fuckoff_enabled = false; + double fuckoff_range = 25.0; - if (args.length >= 2) - { - try - { - fuckoff_range = Math.max(5.0, Math.min(100.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ex) - { - } - } - } + if (args[0].equalsIgnoreCase("on")) { + fuckoff_enabled = true; - TotalFreedomMod.fuckoffEnabledFor.remove(sender_p); + if (args.length >= 2) { + try { + fuckoff_range = Math.max(5.0, Math.min(100.0, Double.parseDouble(args[1]))); + } catch (NumberFormatException ex) { + } + } + } - if (fuckoff_enabled) - { - TotalFreedomMod.fuckoffEnabledFor.put(sender_p, new Double(fuckoff_range)); - } + TotalFreedomMod.fuckoffEnabledFor.remove(sender_p); - playerMsg(sender, "Fuckoff " + (fuckoff_enabled ? ("enabled. Range: " + fuckoff_range + ".") : "disabled.")); + if (fuckoff_enabled) { + TotalFreedomMod.fuckoffEnabledFor.put(sender_p, new Double(fuckoff_range)); + } - return true; - } + playerMsg(sender, "Fuckoff " + (fuckoff_enabled ? ("enabled. Range: " + fuckoff_range + ".") + : "disabled.")); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gadmin.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gadmin.java index 2da4509..6f407a7 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gadmin.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gadmin.java @@ -1,196 +1,183 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.Iterator; import me.StevenLawson.TotalFreedomMod.ban.BanManager; -import me.StevenLawson.TotalFreedomMod.player.PlayerData; import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; +import me.StevenLawson.TotalFreedomMod.player.PlayerData; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.Iterator; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_gadmin extends FreedomCommand { - private enum GadminMode { - LIST("list"), - KICK("kick"), - NAMEBAN("nameban"), - IPBAN("ipban"), - BAN("ban"), - OP("op"), - DEOP("deop"), - CI("ci"), - FR("fr"), - SMITE("smite"); - private final String modeName; - GadminMode(String command) - { - this.modeName = command; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - public String getModeName() - { - return modeName; - } + final GadminMode mode = GadminMode.findMode(args[0].toLowerCase()); + if (mode == null) { + playerMsg(sender, "Invalid mode: " + args[0], ChatColor.RED); + return true; + } - public static GadminMode findMode(String needle) - { - for (final GadminMode mode : GadminMode.values()) - { - if (needle.equalsIgnoreCase(mode.getModeName())) - { - return mode; - } - } - return null; - } - } + final Iterator it = server.getOnlinePlayers().iterator(); - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } + if (mode == GadminMode.LIST) { + playerMsg(sender, "[ Real Name ] : [ Display Name ] - Hash:"); + while (it.hasNext()) { + final Player player = it.next(); + final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4); + sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s", + player.getName(), + ChatColor.stripColor(player.getDisplayName()), + hash)); + } + return true; + } - final GadminMode mode = GadminMode.findMode(args[0].toLowerCase()); - if (mode == null) { - playerMsg(sender, "Invalid mode: " + args[0], ChatColor.RED); - return true; - } + if (args.length < 2) { + return false; + } - final Iterator it = server.getOnlinePlayers().iterator(); + Player target = null; + while (it.hasNext() && target == null) { + final Player player = it.next(); + final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4); - if (mode == GadminMode.LIST) - { - playerMsg(sender, "[ Real Name ] : [ Display Name ] - Hash:"); - while (it.hasNext()) - { - final Player player = it.next(); - final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4); - sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s", - player.getName(), - ChatColor.stripColor(player.getDisplayName()), - hash)); - } - return true; - } + if (hash.equalsIgnoreCase(args[1])) { + target = player; + } + } - if (args.length < 2) - { - return false; - } + if (target == null) { + playerMsg(sender, "Invalid player hash: " + args[1], ChatColor.RED); + return true; + } - Player target = null; - while (it.hasNext() && target == null) - { - final Player player = it.next(); - final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4); + switch (mode) { + case KICK: { + Utilities.adminAction(sender.getName(), + String.format("Kicking: %s.", target.getName()), false); + target.kickPlayer("Kicked by Administrator"); - if (hash.equalsIgnoreCase(args[1])) - { - target = player; - } - } + break; + } + case NAMEBAN: { + BanManager.addUuidBan(target); - if (target == null) - { - playerMsg(sender, "Invalid player hash: " + args[1], ChatColor.RED); - return true; - } + Utilities.adminAction(sender.getName(), + String.format("Banning Name: %s.", target.getName()), true); + target.kickPlayer("Username banned by Administrator."); - switch (mode) - { - case KICK: - { - Utilities.adminAction(sender.getName(), String.format("Kicking: %s.", target.getName()), false); - target.kickPlayer("Kicked by Administrator"); + break; + } + case IPBAN: { + String ip = target.getAddress().getAddress().getHostAddress(); + String[] ip_parts = ip.split("\\."); + if (ip_parts.length == 4) { + ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); + } + Utilities.adminAction(sender.getName(), String.format("Banning IP: %s.", ip), true); + BanManager.addIpBan(target); - break; - } - case NAMEBAN: - { - BanManager.addUuidBan(target); + target.kickPlayer("IP address banned by Administrator."); - Utilities.adminAction(sender.getName(), String.format("Banning Name: %s.", target.getName()), true); - target.kickPlayer("Username banned by Administrator."); + break; + } + case BAN: { + String ip = target.getAddress().getAddress().getHostAddress(); + String[] ip_parts = ip.split("\\."); + if (ip_parts.length == 4) { + ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); + } + Utilities.adminAction(sender.getName(), + String.format("Banning Name: %s, IP: %s.", target.getName(), ip), true); - break; - } - case IPBAN: - { - String ip = target.getAddress().getAddress().getHostAddress(); - String[] ip_parts = ip.split("\\."); - if (ip_parts.length == 4) - { - ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); - } - Utilities.adminAction(sender.getName(), String.format("Banning IP: %s.", ip), true); - BanManager.addIpBan(target); + BanManager.addUuidBan(target); + BanManager.addIpBan(target); - target.kickPlayer("IP address banned by Administrator."); + target.kickPlayer("IP and username banned by Administrator."); - break; - } - case BAN: - { - String ip = target.getAddress().getAddress().getHostAddress(); - String[] ip_parts = ip.split("\\."); - if (ip_parts.length == 4) - { - ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); - } - Utilities.adminAction(sender.getName(), String.format("Banning Name: %s, IP: %s.", target.getName(), ip), true); + break; + } + case OP: { + Utilities.adminAction(sender.getName(), + String.format("Opping %s.", target.getName()), false); + target.setOp(false); + target.sendMessage(FreedomCommand.YOU_ARE_OP); - BanManager.addUuidBan(target); - BanManager.addIpBan(target); + break; + } + case DEOP: { + Utilities.adminAction(sender.getName(), + String.format("Deopping %s.", target.getName()), false); + target.setOp(false); + target.sendMessage(FreedomCommand.YOU_ARE_NOT_OP); - target.kickPlayer("IP and username banned by Administrator."); + break; + } + case CI: { + target.getInventory().clear(); - break; - } - case OP: - { - Utilities.adminAction(sender.getName(), String.format("Opping %s.", target.getName()), false); - target.setOp(false); - target.sendMessage(FreedomCommand.YOU_ARE_OP); + break; + } + case FR: { + PlayerData playerdata = PlayerData.getPlayerData(target); + playerdata.setFrozen(!playerdata.isFrozen()); - break; - } - case DEOP: - { - Utilities.adminAction(sender.getName(), String.format("Deopping %s.", target.getName()), false); - target.setOp(false); - target.sendMessage(FreedomCommand.YOU_ARE_NOT_OP); + playerMsg(sender, + target.getName() + " has been " + (playerdata.isFrozen() ? "frozen" + : "unfrozen") + "."); + target.sendMessage( + ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" + : "unfrozen") + "."); - break; - } - case CI: - { - target.getInventory().clear(); + break; + } + case SMITE: { + Command_smite.smite(target); - break; - } - case FR: - { - PlayerData playerdata = PlayerData.getPlayerData(target); - playerdata.setFrozen(!playerdata.isFrozen()); + break; + } + } - playerMsg(sender, target.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + "."); - target.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + "."); + return true; + } - break; - } - case SMITE: - { - Command_smite.smite(target); + private enum GadminMode { + LIST("list"), + KICK("kick"), + NAMEBAN("nameban"), + IPBAN("ipban"), + BAN("ban"), + OP("op"), + DEOP("deop"), + CI("ci"), + FR("fr"), + SMITE("smite"); + private final String modeName; - break; - } - } + GadminMode(String command) { + this.modeName = command; + } - return true; - } + public static GadminMode findMode(String needle) { + for (final GadminMode mode : GadminMode.values()) { + if (needle.equalsIgnoreCase(mode.getModeName())) { + return mode; + } + } + return null; + } + + public String getModeName() { + return modeName; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_glist.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_glist.java index 4125b5c..1909e18 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_glist.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_glist.java @@ -1,121 +1,107 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.ban.Ban; import me.StevenLawson.TotalFreedomMod.ban.BanManager; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; +import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; import me.StevenLawson.TotalFreedomMod.player.Player; import me.StevenLawson.TotalFreedomMod.player.PlayerList; -import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_glist extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - if (args.length == 1) { - if (args[0].equalsIgnoreCase("purge")) { - if (AdminList.isSeniorAdmin(sender)) - { - PlayerList.purgeAll(); - playerMsg(sender, "Purged playerbase"); - } - else - { - playerMsg(sender, "Only Senior Admins may purge the userlist."); - } - return true; - } - else - { - return false; - } - } - else if (args.length == 2) - { - String username; - final List ips = new ArrayList(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - final org.bukkit.entity.Player player = getPlayer(args[1]); + if (args.length == 1) { + if (args[0].equalsIgnoreCase("purge")) { + if (AdminList.isSeniorAdmin(sender)) { + PlayerList.purgeAll(); + playerMsg(sender, "Purged playerbase"); + } else { + playerMsg(sender, "Only Senior Admins may purge the userlist."); + } + return true; + } else { + return false; + } + } else if (args.length == 2) { + String username; + final List ips = new ArrayList(); - if (player == null) - { - final me.StevenLawson.TotalFreedomMod.player.Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(args[1])); + final org.bukkit.entity.Player player = getPlayer(args[1]); - if (entry == null) { - playerMsg(sender, "Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; - } + if (player == null) { + final me.StevenLawson.TotalFreedomMod.player.Player entry = PlayerList.getEntry( + UUIDManager.getUniqueId(args[1])); - username = entry.getLastLoginName(); - for (String ip : entry.getIps()) { - ips.add(Utilities.getFuzzyIp(ip)); - } - } - else - { - username = player.getName(); - final Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(player)); + if (entry == null) { + playerMsg(sender, + "Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); + return true; + } - for (String ip : entry.getIps()) { - ips.add(Utilities.getFuzzyIp(ip)); - } + username = entry.getLastLoginName(); + for (String ip : entry.getIps()) { + ips.add(Utilities.getFuzzyIp(ip)); + } + } else { + username = player.getName(); + final Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(player)); - } + for (String ip : entry.getIps()) { + ips.add(Utilities.getFuzzyIp(ip)); + } - String mode = args[0].toLowerCase(); - if (mode.equalsIgnoreCase("ban")) - { - Utilities.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true); + } - final org.bukkit.entity.Player target = getPlayer(username, true); - if (target != null) - { - BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(target), target.getName())); - target.kickPlayer("You have been banned by " + sender.getName() + "\n If you think you have been banned wrongly, appeal here: " + ConfigurationEntry.SERVER_BAN_URL.getString()); - } - else - { - BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(username), username)); - } + String mode = args[0].toLowerCase(); + if (mode.equalsIgnoreCase("ban")) { + Utilities.adminAction(sender.getName(), + "Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true); - for (String ip : ips) - { - BanManager.addIpBan(new Ban(ip, username)); - BanManager.addIpBan(new Ban(Utilities.getFuzzyIp(ip), username)); - } - } - else if (mode.equalsIgnoreCase("unban")) - { - Utilities.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true); - BanManager.unbanUuid(UUIDManager.getUniqueId(username)); - for (String ip : ips) - { + final org.bukkit.entity.Player target = getPlayer(username, true); + if (target != null) { + BanManager.addUuidBan( + new Ban(UUIDManager.getUniqueId(target), target.getName())); + target.kickPlayer("You have been banned by " + sender.getName() + + "\n If you think you have been banned wrongly, appeal here: " + + ConfigurationEntry.SERVER_BAN_URL.getString()); + } else { + BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(username), username)); + } - BanManager.unbanIp(ip); - BanManager.unbanIp(Utilities.getFuzzyIp(ip)); - } - } - else - { - return false; - } + for (String ip : ips) { + BanManager.addIpBan(new Ban(ip, username)); + BanManager.addIpBan(new Ban(Utilities.getFuzzyIp(ip), username)); + } + } else if (mode.equalsIgnoreCase("unban")) { + Utilities.adminAction(sender.getName(), + "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true); + BanManager.unbanUuid(UUIDManager.getUniqueId(username)); + for (String ip : ips) { - return true; - } - else - { - return false; - } - } + BanManager.unbanIp(ip); + BanManager.unbanIp(Utilities.getFuzzyIp(ip)); + } + } else { + return false; + } + + return true; + } else { + return false; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gtfo.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gtfo.java index ec21987..ed87000 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gtfo.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_gtfo.java @@ -16,85 +16,86 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_gtfo extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } - final Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - if (player == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); - return true; - } + final Player player = getPlayer(args[0]); - String reason = null; - if (args.length >= 2) - { - reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); - } + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } - Utilities.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.", ChatColor.RED); + String reason = null; + if (args.length >= 2) { + reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); + } - // Undo WorldEdits: - try - { - WorldEditBridge.undo(player, 15); - } - catch (NoClassDefFoundError ex) - { - } + Utilities.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.", + ChatColor.RED); - // rollback - // RollbackManager.rollback(player.getName()); - // TODO: Use coreprotect API calls + // Undo WorldEdits: + try { + WorldEditBridge.undo(player, 15); + } catch (NoClassDefFoundError ex) { + } - // deop - player.setOp(false); + // rollback + // RollbackManager.rollback(player.getName()); + // TODO: Use coreprotect API calls - // set gamemode to survival: - player.setGameMode(GameMode.SURVIVAL); + // deop + player.setOp(false); - // clear inventory: - player.getInventory().clear(); + // set gamemode to survival: + player.setGameMode(GameMode.SURVIVAL); - // strike with lightning effect: - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { - final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - targetPos.getWorld().strikeLightning(strike_pos); - } - } + // clear inventory: + player.getInventory().clear(); - // ban IP address: - String ip = Utilities.getFuzzyIp(player.getAddress().getAddress().getHostAddress()); + // strike with lightning effect: + final Location targetPos = player.getLocation(); + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + final Location strike_pos = new Location(targetPos.getWorld(), + targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); + targetPos.getWorld().strikeLightning(strike_pos); + } + } - final StringBuilder bcast = new StringBuilder() - .append(ChatColor.RED) - .append("Banning: ") - .append(player.getName()) - .append(", IP: ") - .append(ip); + // ban IP address: + String ip = Utilities.getFuzzyIp(player.getAddress().getAddress().getHostAddress()); - if (reason != null) - { - bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason); - } + final StringBuilder bcast = new StringBuilder() + .append(ChatColor.RED) + .append("Banning: ") + .append(player.getName()) + .append(", IP: ") + .append(ip); - Utilities.bcastMsg(bcast.toString()); + if (reason != null) { + bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason); + } - BanManager.addIpBan(new Ban(ip, player.getName(), sender.getName(), null, reason)); + Utilities.bcastMsg(bcast.toString()); - // ban username: - BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), null, reason)); + BanManager.addIpBan(new Ban(ip, player.getName(), sender.getName(), null, reason)); - // kick Player: - player.kickPlayer(ChatColor.RED + "GTFO" + (reason != null ? ("\nReason: " + ChatColor.YELLOW + reason) : "")); + // ban username: + BanManager.addUuidBan( + new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), null, + reason)); - return true; - } + // kick Player: + player.kickPlayer( + ChatColor.RED + "GTFO" + (reason != null ? ("\nReason: " + ChatColor.YELLOW + reason) + : "")); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_halt.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_halt.java index 9cd396f..eb778c4 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_halt.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_halt.java @@ -9,88 +9,76 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_halt extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("all")) { - Utilities.adminAction(sender.getName(), "Halting all non-superadmins.", true); - int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (!AdminList.isSuperAdmin(player)) - { - PlayerData.getPlayerData(player).setHalted(true); - counter++; - } - } - playerMsg(sender, "Halted " + counter + " players."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - if (args[0].equalsIgnoreCase("purge")) - { - Utilities.adminAction(sender.getName(), "Unhalting all players.", true); - int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - PlayerData playerdata = PlayerData.getPlayerData(player); - if (PlayerData.getPlayerData(player).isHalted()) - { - playerdata.setHalted(false); - counter++; - } - } - playerMsg(sender, "Unhalted " + counter + " players."); - return true; - } + if (args[0].equalsIgnoreCase("all")) { + Utilities.adminAction(sender.getName(), "Halting all non-superadmins.", true); + int counter = 0; + for (Player player : server.getOnlinePlayers()) { + if (!AdminList.isSuperAdmin(player)) { + PlayerData.getPlayerData(player).setHalted(true); + counter++; + } + } + playerMsg(sender, "Halted " + counter + " players."); + return true; + } - if (args[0].equalsIgnoreCase("list")) - { - PlayerData info; - int count = 0; - for (Player hp : server.getOnlinePlayers()) - { - info = PlayerData.getPlayerData(hp); - if (info.isHalted()) - { - if (count == 0) - { - playerMsg(sender, "Halted players:"); - } - playerMsg(sender, "- " + hp.getName()); - count++; - } - } - if (count == 0) - { - playerMsg(sender, "There are currently no halted players."); - } - return true; - } + if (args[0].equalsIgnoreCase("purge")) { + Utilities.adminAction(sender.getName(), "Unhalting all players.", true); + int counter = 0; + for (Player player : server.getOnlinePlayers()) { + PlayerData playerdata = PlayerData.getPlayerData(player); + if (PlayerData.getPlayerData(player).isHalted()) { + playerdata.setHalted(false); + counter++; + } + } + playerMsg(sender, "Unhalted " + counter + " players."); + return true; + } - final Player player = getPlayer(args[0]); + if (args[0].equalsIgnoreCase("list")) { + PlayerData info; + int count = 0; + for (Player hp : server.getOnlinePlayers()) { + info = PlayerData.getPlayerData(hp); + if (info.isHalted()) { + if (count == 0) { + playerMsg(sender, "Halted players:"); + } + playerMsg(sender, "- " + hp.getName()); + count++; + } + } + if (count == 0) { + playerMsg(sender, "There are currently no halted players."); + } + return true; + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + final Player player = getPlayer(args[0]); - PlayerData playerdata = PlayerData.getPlayerData(player); - if (!playerdata.isHalted()) - { - Utilities.adminAction(sender.getName(), "Halting " + player.getName(), true); - playerdata.setHalted(true); - return true; - } - else - { - Utilities.adminAction(sender.getName(), "Unhalting " + player.getName(), true); - playerdata.setHalted(false); - return true; - } - } + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + + PlayerData playerdata = PlayerData.getPlayerData(player); + if (!playerdata.isHalted()) { + Utilities.adminAction(sender.getName(), "Halting " + player.getName(), true); + playerdata.setHalted(true); + return true; + } else { + Utilities.adminAction(sender.getName(), "Unhalting " + player.getName(), true); + playerdata.setHalted(false); + return true; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_health.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_health.java index dad0ec2..40a9e30 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_health.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_health.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.text.DecimalFormat; +import java.util.concurrent.atomic.AtomicInteger; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import org.apache.commons.lang.math.DoubleRange; @@ -9,89 +11,82 @@ import org.bukkit.command.CommandSender; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -import java.text.DecimalFormat; -import java.util.concurrent.atomic.AtomicInteger; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_health extends FreedomCommand { - private static final int BYTES_PER_MB = 1024 * 1024; - private static final DoubleRange TPS_RANGE = new DoubleRange(20.0 - 0.1, 20.0 + 0.1); - @Override - public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Runtime runtime = Runtime.getRuntime(); - long usedMem = runtime.totalMemory() - runtime.freeMemory(); + private static final int BYTES_PER_MB = 1024 * 1024; + private static final DoubleRange TPS_RANGE = new DoubleRange(20.0 - 0.1, 20.0 + 0.1); - playerMsg(sender, "Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb"); - playerMsg(sender, "Used Memory: " + new DecimalFormat("#").format((double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format(((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)"); - playerMsg(sender, "Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb"); - playerMsg(sender, "Calculating ticks per second, please wait..."); + @Override + public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Runtime runtime = Runtime.getRuntime(); + long usedMem = runtime.totalMemory() - runtime.freeMemory(); - new BukkitRunnable() - { - @Override - public void run() - { - try - { - TFM_TickMeter tickMeter = new TFM_TickMeter(plugin); - tickMeter.startTicking(); - Thread.sleep(2500); - final double ticksPerSecond = tickMeter.stopTicking(); + playerMsg(sender, + "Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb"); + playerMsg(sender, "Used Memory: " + new DecimalFormat("#").format( + (double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format( + ((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)"); + playerMsg(sender, + "Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb"); + playerMsg(sender, "Calculating ticks per second, please wait..."); - new BukkitRunnable() - { - @Override - public void run() - { - playerMsg(sender, "Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond) ? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond); - } - }.runTask(plugin); - } - catch (Exception ex) - { - Log.severe(ex); - } - } - }.runTaskAsynchronously(plugin); + new BukkitRunnable() { + @Override + public void run() { + try { + TFM_TickMeter tickMeter = new TFM_TickMeter(plugin); + tickMeter.startTicking(); + Thread.sleep(2500); + final double ticksPerSecond = tickMeter.stopTicking(); - return true; - } + new BukkitRunnable() { + @Override + public void run() { + playerMsg(sender, + "Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond) + ? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond); + } + }.runTask(plugin); + } catch (Exception ex) { + Log.severe(ex); + } + } + }.runTaskAsynchronously(plugin); - private class TFM_TickMeter - { - private final AtomicInteger ticks = new AtomicInteger(); - private final TotalFreedomMod plugin; - private long startTime; - private BukkitTask task; + return true; + } - public TFM_TickMeter(TotalFreedomMod plugin) - { - this.plugin = plugin; - } + private class TFM_TickMeter { - public void startTicking() - { - startTime = System.currentTimeMillis(); - ticks.set(0); + private final AtomicInteger ticks = new AtomicInteger(); + private final TotalFreedomMod plugin; + private long startTime; + private BukkitTask task; - task = new BukkitRunnable() - { - @Override - public void run() - { - ticks.incrementAndGet(); - } - }.runTaskTimer(plugin, 0L, 1L); - } + public TFM_TickMeter(TotalFreedomMod plugin) { + this.plugin = plugin; + } - public double stopTicking() - { - task.cancel(); - long elapsed = System.currentTimeMillis() - startTime; - int tickCount = ticks.get(); + public void startTicking() { + startTime = System.currentTimeMillis(); + ticks.set(0); - return (double) tickCount / ((double) elapsed / 1000.0); - } - } + task = new BukkitRunnable() { + @Override + public void run() { + ticks.incrementAndGet(); + } + }.runTaskTimer(plugin, 0L, 1L); + } + + public double stopTicking() { + task.cancel(); + long elapsed = System.currentTimeMillis() - startTime; + int tickCount = ticks.get(); + + return (double) tickCount / ((double) elapsed / 1000.0); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_invis.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_invis.java index ad5af52..2c84718 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_invis.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_invis.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; @@ -8,55 +10,47 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_invis extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - boolean smite = false; - if (args.length >= 1) { - if (args[0].equalsIgnoreCase("smite")) { - Utilities.adminAction(sender.getName(), "Smiting all invisible players", true); - smite = true; - } else - { - return false; - } - } - List players = new ArrayList(); - int smites = 0; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + boolean smite = false; + if (args.length >= 1) { + if (args[0].equalsIgnoreCase("smite")) { + Utilities.adminAction(sender.getName(), "Smiting all invisible players", true); + smite = true; + } else { + return false; + } + } - for (Player player : server.getOnlinePlayers()) - { - if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) - { - players.add(player.getName()); - if (smite && !AdminList.isSuperAdmin(player)) - { - player.setHealth(0.0); - smites++; - } - } - } + List players = new ArrayList(); + int smites = 0; - if (players.isEmpty()) - { - playerMsg(sender, "There are no invisible players"); - return true; - } + for (Player player : server.getOnlinePlayers()) { + if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) { + players.add(player.getName()); + if (smite && !AdminList.isSuperAdmin(player)) { + player.setHealth(0.0); + smites++; + } + } + } - if (smite) - { - playerMsg(sender, "Smitten " + smites + " players"); - } - else - { - playerMsg(sender, "Invisble players (" + players.size() + "): " + StringUtils.join(players, ", ")); - } + if (players.isEmpty()) { + playerMsg(sender, "There are no invisible players"); + return true; + } - return true; - } + if (smite) { + playerMsg(sender, "Smitten " + smites + " players"); + } else { + playerMsg(sender, + "Invisble players (" + players.size() + "): " + StringUtils.join(players, ", ")); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_jumppads.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_jumppads.java index 7d0b350..362f31d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_jumppads.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_jumppads.java @@ -8,80 +8,72 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_jumppads extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0 || args.length > 2) { - return false; - } - if (args.length == 1) { - if (args[0].equalsIgnoreCase("info")) { - playerMsg(sender, "Jumppads: " + (JumpPads.getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE); - playerMsg(sender, "Sideways: " + (JumpPads.getMode() == JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE); - playerMsg(sender, "Strength: " + (JumpPads.getStrength() * 10 - 1), ChatColor.BLUE); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0 || args.length > 2) { + return false; + } - if ("off".equals(args[0])) - { - Utilities.adminAction(sender.getName(), "Disabling Jumppads", false); - JumpPads.setMode(JumpPads.JumpPadMode.OFF); - } - else - { - Utilities.adminAction(sender.getName(), "Enabling Jumppads", false); - JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK); - } - } - else - { - if (JumpPads.getMode() == JumpPads.JumpPadMode.OFF) - { - playerMsg(sender, "Jumppads are currently disabled, please enable them before changing jumppads settings."); - return true; - } + if (args.length == 1) { + if (args[0].equalsIgnoreCase("info")) { + playerMsg(sender, + "Jumppads: " + (JumpPads.getMode().isOn() ? "Enabled" : "Disabled"), + ChatColor.BLUE); + playerMsg(sender, + "Sideways: " + (JumpPads.getMode() == JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS + ? "Enabled" : "Disabled"), ChatColor.BLUE); + playerMsg(sender, "Strength: " + (JumpPads.getStrength() * 10 - 1), ChatColor.BLUE); + return true; + } - if (args[0].equalsIgnoreCase("sideways")) - { - if ("off".equals(args[1])) - { - Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", false); - JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK); - } - else - { - Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Normal and Sideways", false); - JumpPads.setMode(JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS); - } - } - else if (args[0].equalsIgnoreCase("strength")) - { - final float strength; - try - { - strength = Float.parseFloat(args[1]); - } - catch (NumberFormatException ex) - { - playerMsg(sender, "Invalid Strength"); - return true; - } + if ("off".equals(args[0])) { + Utilities.adminAction(sender.getName(), "Disabling Jumppads", false); + JumpPads.setMode(JumpPads.JumpPadMode.OFF); + } else { + Utilities.adminAction(sender.getName(), "Enabling Jumppads", false); + JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK); + } + } else { + if (JumpPads.getMode() == JumpPads.JumpPadMode.OFF) { + playerMsg(sender, + "Jumppads are currently disabled, please enable them before changing jumppads settings."); + return true; + } - if (strength > 10 || strength < 1) - { - playerMsg(sender, "Invalid Strength: The strength may be 1 through 10."); - return true; - } + if (args[0].equalsIgnoreCase("sideways")) { + if ("off".equals(args[1])) { + Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", + false); + JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK); + } else { + Utilities.adminAction(sender.getName(), + "Setting Jumppads mode to: Normal and Sideways", false); + JumpPads.setMode(JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS); + } + } else if (args[0].equalsIgnoreCase("strength")) { + final float strength; + try { + strength = Float.parseFloat(args[1]); + } catch (NumberFormatException ex) { + playerMsg(sender, "Invalid Strength"); + return true; + } - Utilities.adminAction(sender.getName(), "Setting Jumppads strength to: " + strength, false); - JumpPads.setStrength((strength / 10) + 0.1F); - } - else - { - return false; - } - } + if (strength > 10 || strength < 1) { + playerMsg(sender, "Invalid Strength: The strength may be 1 through 10."); + return true; + } - return true; - } + Utilities.adminAction(sender.getName(), "Setting Jumppads strength to: " + strength, + false); + JumpPads.setStrength((strength / 10) + 0.1F); + } else { + return false; + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_kicknoob.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_kicknoob.java index d26a566..92232ad 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_kicknoob.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_kicknoob.java @@ -9,16 +9,18 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true) public class Command_kicknoob extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true); - for (Player player : server.getOnlinePlayers()) { - if (!AdminList.isSuperAdmin(player)) { - player.kickPlayer(ChatColor.RED + "Disconnected by admin."); - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true); - return true; - } + for (Player player : server.getOnlinePlayers()) { + if (!AdminList.isSuperAdmin(player)) { + player.kickPlayer(ChatColor.RED + "Disconnected by admin."); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_landmine.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_landmine.java index 17e27a6..ec4f5e3 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_landmine.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_landmine.java @@ -1,5 +1,8 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -10,74 +13,65 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_landmine extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!ConfigurationEntry.LANDMINES_ENABLED.getBoolean()) { - playerMsg(sender, "The landmine is currently disabled.", ChatColor.GREEN); - return true; - } - if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { - playerMsg(sender, "Explosions are currently disabled.", ChatColor.GREEN); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigurationEntry.LANDMINES_ENABLED.getBoolean()) { + playerMsg(sender, "The landmine is currently disabled.", ChatColor.GREEN); + return true; + } - double radius = 2.0; + if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + playerMsg(sender, "Explosions are currently disabled.", ChatColor.GREEN); + return true; + } - if (args.length >= 1) - { - if ("list".equalsIgnoreCase(args[0])) - { - final Iterator landmines = TFM_LandmineData.landmines.iterator(); - while (landmines.hasNext()) - { - playerMsg(sender, landmines.next().toString()); - } - return true; - } + double radius = 2.0; - try - { - radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0]))); - } - catch (NumberFormatException ex) - { - } - } + if (args.length >= 1) { + if ("list".equalsIgnoreCase(args[0])) { + final Iterator landmines = TFM_LandmineData.landmines.iterator(); + while (landmines.hasNext()) { + playerMsg(sender, landmines.next().toString()); + } + return true; + } - final Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN); - landmine.setType(Material.TNT); - TFM_LandmineData.landmines.add(new TFM_LandmineData(landmine.getLocation(), sender_p, radius)); + try { + radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0]))); + } catch (NumberFormatException ex) { + } + } - playerMsg(sender, "Landmine planted - Radius = " + radius + " blocks.", ChatColor.GREEN); + final Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN); + landmine.setType(Material.TNT); + TFM_LandmineData.landmines.add( + new TFM_LandmineData(landmine.getLocation(), sender_p, radius)); - return true; - } + playerMsg(sender, "Landmine planted - Radius = " + radius + " blocks.", ChatColor.GREEN); - public static class TFM_LandmineData - { - public static final List landmines = new ArrayList(); - public final Location location; - public final Player player; - public final double radius; + return true; + } - public TFM_LandmineData(Location location, Player player, double radius) - { - this.location = location; - this.player = player; - this.radius = radius; - } + public static class TFM_LandmineData { - @Override - public String toString() - { - return this.location.toString() + ", " + this.radius + ", " + this.player.getName(); - } - } + public static final List landmines = new ArrayList(); + public final Location location; + public final Player player; + public final double radius; + + public TFM_LandmineData(Location location, Player player, double radius) { + this.location = location; + this.player = player; + this.radius = radius; + } + + @Override + public String toString() { + return this.location.toString() + ", " + this.radius + ", " + this.player.getName(); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lastcmd.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lastcmd.java index 3920bb3..7f220c9 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lastcmd.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lastcmd.java @@ -8,31 +8,31 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_lastcmd extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } - final Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - if (player == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + final Player player = getPlayer(args[0]); - final PlayerData playerdata = PlayerData.getPlayerData(player); + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - if (playerdata != null) - { - String lastCommand = playerdata.getLastCommand(); - if (lastCommand.isEmpty()) - { - lastCommand = "(none)"; - } - playerMsg(sender, player.getName() + " - Last Command: " + lastCommand, ChatColor.GRAY); - } + final PlayerData playerdata = PlayerData.getPlayerData(player); - return true; - } + if (playerdata != null) { + String lastCommand = playerdata.getLastCommand(); + if (lastCommand.isEmpty()) { + lastCommand = "(none)"; + } + playerMsg(sender, player.getName() + " - Last Command: " + lastCommand, ChatColor.GRAY); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_list.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_list.java index eeb030f..0340a9c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_list.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_list.java @@ -15,83 +15,84 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_list extends FreedomCommand { - private enum ListFilter { - ALL, - ADMINS, - IMPOSTORS - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 1) { + return false; + } - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, - String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 1) { - return false; - } + if (Utilities.isFromHostConsole(sender.getName())) { + final List names = new ArrayList(); + for (Player player : server.getOnlinePlayers()) { + if (VanishManager.isVanished(player)) { + continue; + } + names.add(player.getName()); + } + playerMsg(sender, + "There are " + names.size() + "/" + VanishManager.getFakeOnlinePlayers() + + " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE); + return true; + } - if (Utilities.isFromHostConsole(sender.getName())) { - final List names = new ArrayList(); - for (Player player : server.getOnlinePlayers()) { - if (VanishManager.isVanished(player)) { - continue; - } - names.add(player.getName()); - } - playerMsg(sender, - "There are " + names.size() + "/" + VanishManager.getFakeOnlinePlayers() - + " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE); - return true; - } + final ListFilter listFilter; + if (args.length == 1) { + if ("-a".equals(args[0])) { + listFilter = ListFilter.ADMINS; + } else if ("-i".equals(args[0])) { + listFilter = ListFilter.IMPOSTORS; + } else { + return false; + } + } else { + listFilter = ListFilter.ALL; + } - final ListFilter listFilter; - if (args.length == 1) { - if ("-a".equals(args[0])) { - listFilter = ListFilter.ADMINS; - } else if ("-i".equals(args[0])) { - listFilter = ListFilter.IMPOSTORS; - } else { - return false; - } - } else { - listFilter = ListFilter.ALL; - } + final StringBuilder onlineStats = new StringBuilder(); + final StringBuilder onlineUsers = new StringBuilder(); - final StringBuilder onlineStats = new StringBuilder(); - final StringBuilder onlineUsers = new StringBuilder(); + onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED) + .append(VanishManager.getFakeOnlinePlayers()); + onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED) + .append(server.getMaxPlayers()); + onlineStats.append(ChatColor.BLUE).append(" players online."); - onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED) - .append(VanishManager.getFakeOnlinePlayers()); - onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED) - .append(server.getMaxPlayers()); - onlineStats.append(ChatColor.BLUE).append(" players online."); + final List names = new ArrayList(); + for (Player player : server.getOnlinePlayers()) { + if (VanishManager.isVanished(player)) { + continue; + } - final List names = new ArrayList(); - for (Player player : server.getOnlinePlayers()) { - if (VanishManager.isVanished(player)) - continue; + if (listFilter == ListFilter.ADMINS && !AdminList.isSuperAdmin(player)) { + continue; + } - if (listFilter == ListFilter.ADMINS && !AdminList.isSuperAdmin(player)) { - continue; - } + if (listFilter == ListFilter.IMPOSTORS && !AdminList.isAdminImpostor(player)) { + continue; + } - if (listFilter == ListFilter.IMPOSTORS && !AdminList.isAdminImpostor(player)) { - continue; - } + names.add(PlayerRank.fromSender(player).getPrefix() + player.getName()); + } - names.add(PlayerRank.fromSender(player).getPrefix() + player.getName()); - } + onlineUsers.append("Connected "); + onlineUsers.append(listFilter == ListFilter.ADMINS ? "admins: " : "players: "); + onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", ")); - onlineUsers.append("Connected "); - onlineUsers.append(listFilter == ListFilter.ADMINS ? "admins: " : "players: "); - onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", ")); + if (senderIsConsole) { + sender.sendMessage(ChatColor.stripColor(onlineStats.toString())); + sender.sendMessage(ChatColor.stripColor(onlineUsers.toString())); + } else { + sender.sendMessage(onlineStats.toString()); + sender.sendMessage(onlineUsers.toString()); + } - if (senderIsConsole) { - sender.sendMessage(ChatColor.stripColor(onlineStats.toString())); - sender.sendMessage(ChatColor.stripColor(onlineUsers.toString())); - } else { - sender.sendMessage(onlineStats.toString()); - sender.sendMessage(onlineUsers.toString()); - } + return true; + } - return true; - } + private enum ListFilter { + ALL, + ADMINS, + IMPOSTORS + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_localspawn.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_localspawn.java index 75771ef..d9162de 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_localspawn.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_localspawn.java @@ -5,10 +5,13 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME) public class Command_localspawn extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - sender_p.teleport(sender_p.getWorld().getSpawnLocation()); - playerMsg(sender, "Teleported to spawnpoint for world \"" + sender_p.getWorld().getName() + "\"."); - return true; - } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + sender_p.teleport(sender_p.getWorld().getSpawnLocation()); + playerMsg(sender, + "Teleported to spawnpoint for world \"" + sender_p.getWorld().getName() + "\"."); + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lockup.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lockup.java index 6a3897e..f8d9b58 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lockup.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_lockup.java @@ -10,110 +10,87 @@ import org.bukkit.scheduler.BukkitTask; @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) public class Command_lockup extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 1) { - if (args[0].equalsIgnoreCase("all")) { - Utilities.adminAction(sender.getName(), "Locking up all players", true); - for (Player player : server.getOnlinePlayers()) { - startLockup(player); - } - playerMsg(sender, "Locked up all players."); - } - else if (args[0].equalsIgnoreCase("purge")) - { - Utilities.adminAction(sender.getName(), "Unlocking all players", true); - for (Player player : server.getOnlinePlayers()) - { - cancelLockup(player); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 1) { + if (args[0].equalsIgnoreCase("all")) { + Utilities.adminAction(sender.getName(), "Locking up all players", true); - playerMsg(sender, "Unlocked all players."); - } - else - { - return false; - } - } - else if (args.length == 2) - { - if (args[1].equalsIgnoreCase("on")) - { - final Player player = getPlayer(args[0]); + for (Player player : server.getOnlinePlayers()) { + startLockup(player); + } + playerMsg(sender, "Locked up all players."); + } else if (args[0].equalsIgnoreCase("purge")) { + Utilities.adminAction(sender.getName(), "Unlocking all players", true); + for (Player player : server.getOnlinePlayers()) { + cancelLockup(player); + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + playerMsg(sender, "Unlocked all players."); + } else { + return false; + } + } else if (args.length == 2) { + if (args[1].equalsIgnoreCase("on")) { + final Player player = getPlayer(args[0]); - Utilities.adminAction(sender.getName(), "Locking up " + player.getName(), true); - startLockup(player); - playerMsg(sender, "Locked up " + player.getName() + "."); - } - else if ("off".equals(args[1])) - { - final Player player = getPlayer(args[0]); + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + Utilities.adminAction(sender.getName(), "Locking up " + player.getName(), true); + startLockup(player); + playerMsg(sender, "Locked up " + player.getName() + "."); + } else if ("off".equals(args[1])) { + final Player player = getPlayer(args[0]); - Utilities.adminAction(sender.getName(), "Unlocking " + player.getName(), true); - cancelLockup(player); - playerMsg(sender, "Unlocked " + player.getName() + "."); - } - else - { - return false; - } - } - else - { - return false; - } + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - return true; - } + Utilities.adminAction(sender.getName(), "Unlocking " + player.getName(), true); + cancelLockup(player); + playerMsg(sender, "Unlocked " + player.getName() + "."); + } else { + return false; + } + } else { + return false; + } - private void cancelLockup(PlayerData playerdata) - { - BukkitTask lockupScheduleID = playerdata.getLockupScheduleID(); - if (lockupScheduleID != null) - { - lockupScheduleID.cancel(); - playerdata.setLockupScheduleID(null); - } - } + return true; + } - private void cancelLockup(final Player player) - { - cancelLockup(PlayerData.getPlayerData(player)); - } + private void cancelLockup(PlayerData playerdata) { + BukkitTask lockupScheduleID = playerdata.getLockupScheduleID(); + if (lockupScheduleID != null) { + lockupScheduleID.cancel(); + playerdata.setLockupScheduleID(null); + } + } - private void startLockup(final Player player) - { - final PlayerData playerdata = PlayerData.getPlayerData(player); + private void cancelLockup(final Player player) { + cancelLockup(PlayerData.getPlayerData(player)); + } - cancelLockup(playerdata); + private void startLockup(final Player player) { + final PlayerData playerdata = PlayerData.getPlayerData(player); - playerdata.setLockupScheduleID(new BukkitRunnable() - { - @Override - public void run() - { - if (player.isOnline()) - { - player.openInventory(player.getInventory()); - } - else - { - cancelLockup(playerdata); - } - } - }.runTaskTimer(plugin, 0L, 5L)); - } + cancelLockup(playerdata); + + playerdata.setLockupScheduleID(new BukkitRunnable() { + @Override + public void run() { + if (player.isOnline()) { + player.openInventory(player.getInventory()); + } else { + cancelLockup(playerdata); + } + } + }.runTaskTimer(plugin, 0L, 5L)); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_logs.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_logs.java index 58b5c62..e387c45 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_logs.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_logs.java @@ -1,5 +1,14 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.admin.Admin; @@ -11,144 +20,128 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.*; -import java.util.Map.Entry; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_logs extends FreedomCommand { - public static void deactivateSuperadmin(Admin superadmin) { - for (String ip : superadmin.getIps()) { - updateLogsRegistration(null, superadmin.getLastLoginName(), ip, LogsRegistrationMode.DELETE); - } - } - public static void updateLogsRegistration(final CommandSender sender, final Player target, final LogsRegistrationMode mode) - { - updateLogsRegistration(sender, target.getName(), target.getAddress().getAddress().getHostAddress().trim(), mode); - } + public static void deactivateSuperadmin(Admin superadmin) { + for (String ip : superadmin.getIps()) { + updateLogsRegistration(null, superadmin.getLastLoginName(), ip, + LogsRegistrationMode.DELETE); + } + } - public static void updateLogsRegistration(final CommandSender sender, final String targetName, final String targetIP, final LogsRegistrationMode mode) - { - final String logsRegisterURL = ConfigurationEntry.LOGS_URL.getString(); - final String logsRegisterPassword = ConfigurationEntry.LOGS_SECRET.getString(); + public static void updateLogsRegistration(final CommandSender sender, final Player target, + final LogsRegistrationMode mode) { + updateLogsRegistration(sender, target.getName(), + target.getAddress().getAddress().getHostAddress().trim(), mode); + } - if (logsRegisterURL == null || logsRegisterPassword == null || logsRegisterURL.isEmpty() || logsRegisterPassword.isEmpty()) - { - return; - } + public static void updateLogsRegistration(final CommandSender sender, final String targetName, + final String targetIP, final LogsRegistrationMode mode) { + final String logsRegisterURL = ConfigurationEntry.LOGS_URL.getString(); + final String logsRegisterPassword = ConfigurationEntry.LOGS_SECRET.getString(); - new BukkitRunnable() - { - @Override - public void run() - { - try - { - if (sender != null) - { - sender.sendMessage(ChatColor.YELLOW + "Connecting..."); - } + if (logsRegisterURL == null || logsRegisterPassword == null || logsRegisterURL.isEmpty() + || logsRegisterPassword.isEmpty()) { + return; + } - URL url = new URLBuilder(logsRegisterURL) - .addQueryParameter("mode", mode.toString()) - .addQueryParameter("password", logsRegisterPassword) - .addQueryParameter("name", targetName) - .addQueryParameter("ip", targetIP) - .getURL(); + new BukkitRunnable() { + @Override + public void run() { + try { + if (sender != null) { + sender.sendMessage(ChatColor.YELLOW + "Connecting..."); + } - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setConnectTimeout(1000 * 5); - connection.setReadTimeout(1000 * 5); - connection.setUseCaches(false); - connection.setRequestMethod("HEAD"); + URL url = new URLBuilder(logsRegisterURL) + .addQueryParameter("mode", mode.toString()) + .addQueryParameter("password", logsRegisterPassword) + .addQueryParameter("name", targetName) + .addQueryParameter("ip", targetIP) + .getURL(); - final int responseCode = connection.getResponseCode(); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(1000 * 5); + connection.setReadTimeout(1000 * 5); + connection.setUseCaches(false); + connection.setRequestMethod("HEAD"); - if (sender != null) - { - new BukkitRunnable() - { - @Override - public void run() - { - if (responseCode == 200) - { - sender.sendMessage(ChatColor.GREEN + "Registration " + mode + "d."); - } - else - { - sender.sendMessage(ChatColor.RED + "Error contacting logs registration server."); - } - } - }.runTask(TotalFreedomMod.plugin); - } - } catch (Exception ex) { - Log.severe(ex); - } - } - }.runTaskAsynchronously(TotalFreedomMod.plugin); - } + final int responseCode = connection.getResponseCode(); - @Override - public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - LogsRegistrationMode mode = LogsRegistrationMode.UPDATE; + if (sender != null) { + new BukkitRunnable() { + @Override + public void run() { + if (responseCode == 200) { + sender.sendMessage( + ChatColor.GREEN + "Registration " + mode + "d."); + } else { + sender.sendMessage(ChatColor.RED + + "Error contacting logs registration server."); + } + } + }.runTask(TotalFreedomMod.plugin); + } + } catch (Exception ex) { + Log.severe(ex); + } + } + }.runTaskAsynchronously(TotalFreedomMod.plugin); + } - if (args.length == 1) { - mode = ("off".equals(args[0]) ? LogsRegistrationMode.DELETE : LogsRegistrationMode.UPDATE); - } + @Override + public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p, + Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + LogsRegistrationMode mode = LogsRegistrationMode.UPDATE; - updateLogsRegistration(sender, sender_p, mode); + if (args.length == 1) { + mode = ("off".equals(args[0]) ? LogsRegistrationMode.DELETE + : LogsRegistrationMode.UPDATE); + } - return true; - } + updateLogsRegistration(sender, sender_p, mode); - public enum LogsRegistrationMode - { - UPDATE("update"), DELETE("delete"); - private final String mode; + return true; + } - LogsRegistrationMode(String mode) - { - this.mode = mode; - } + public enum LogsRegistrationMode { + UPDATE("update"), DELETE("delete"); + private final String mode; - @Override - public String toString() - { - return mode; - } - } + LogsRegistrationMode(String mode) { + this.mode = mode; + } - private static class URLBuilder - { - private final String requestPath; - private final Map queryStringMap = new HashMap(); + @Override + public String toString() { + return mode; + } + } - public URLBuilder(String requestPath) - { - this.requestPath = requestPath; - } + private static class URLBuilder { - public URLBuilder addQueryParameter(String key, String value) - { - queryStringMap.put(key, value); - return this; - } + private final String requestPath; + private final Map queryStringMap = new HashMap(); - public URL getURL() throws MalformedURLException - { - List pairs = new ArrayList(); - Iterator> it = queryStringMap.entrySet().iterator(); - while (it.hasNext()) - { - Entry pair = it.next(); - pairs.add(pair.getKey() + "=" + pair.getValue()); - } + public URLBuilder(String requestPath) { + this.requestPath = requestPath; + } - return new URL(requestPath + "?" + StringUtils.join(pairs, "&")); - } - } + public URLBuilder addQueryParameter(String key, String value) { + queryStringMap.put(key, value); + return this; + } + + public URL getURL() throws MalformedURLException { + List pairs = new ArrayList(); + Iterator> it = queryStringMap.entrySet().iterator(); + while (it.hasNext()) { + Entry pair = it.next(); + pairs.add(pair.getKey() + "=" + pair.getValue()); + } + + return new URL(requestPath + "?" + StringUtils.join(pairs, "&")); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_moblimiter.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_moblimiter.java index c90cbfd..da95549 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_moblimiter.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_moblimiter.java @@ -7,70 +7,67 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE) public class Command_moblimiter extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - if (args[0].equalsIgnoreCase("on")) { - ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(true); - } - else if (args[0].equalsIgnoreCase("off")) - { - ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(false); - } - else if (args[0].equalsIgnoreCase("dragon")) - { - ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean()); - } - else if (args[0].equalsIgnoreCase("giant")) - { - ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean()); - } - else if (args[0].equalsIgnoreCase("slime")) - { - ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean()); - } - else if (args[0].equalsIgnoreCase("ghast")) - { - ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean()); - } - else - { - if (args.length < 2) - { - return false; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - if (args[0].equalsIgnoreCase("setmax")) - { - try - { - ConfigurationEntry.MOB_LIMITER_MAX.setInteger(Math.max(0, Math.min(2000, Integer.parseInt(args[1])))); - } - catch (NumberFormatException nfex) - { - } - } - } + if (args[0].equalsIgnoreCase("on")) { + ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(true); + } else if (args[0].equalsIgnoreCase("off")) { + ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(false); + } else if (args[0].equalsIgnoreCase("dragon")) { + ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.setBoolean( + !ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean()); + } else if (args[0].equalsIgnoreCase("giant")) { + ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.setBoolean( + !ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean()); + } else if (args[0].equalsIgnoreCase("slime")) { + ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.setBoolean( + !ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean()); + } else if (args[0].equalsIgnoreCase("ghast")) { + ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.setBoolean( + !ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean()); + } else { + if (args.length < 2) { + return false; + } - if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()) - { - sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: " + ConfigurationEntry.MOB_LIMITER_MAX.getInteger() + "."); + if (args[0].equalsIgnoreCase("setmax")) { + try { + ConfigurationEntry.MOB_LIMITER_MAX.setInteger( + Math.max(0, Math.min(2000, Integer.parseInt(args[1])))); + } catch (NumberFormatException nfex) { + } + } + } - playerMsg(sender, "Dragon: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean() ? "disabled" : "enabled") + "."); - playerMsg(sender, "Giant: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" : "enabled") + "."); - playerMsg(sender, "Slime: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean() ? "disabled" : "enabled") + "."); - playerMsg(sender, "Ghast: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean() ? "disabled" : "enabled") + "."); - } - else - { - playerMsg(sender, "Moblimiter is disabled. No mob restrictions are in effect."); - } + if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()) { + sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: " + + ConfigurationEntry.MOB_LIMITER_MAX.getInteger() + "."); - GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()); + playerMsg(sender, + "Dragon: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean() + ? "disabled" : "enabled") + "."); + playerMsg(sender, + "Giant: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" + : "enabled") + "."); + playerMsg(sender, + "Slime: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean() ? "disabled" + : "enabled") + "."); + playerMsg(sender, + "Ghast: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean() ? "disabled" + : "enabled") + "."); + } else { + playerMsg(sender, "Moblimiter is disabled. No mob restrictions are in effect."); + } - return true; - } + GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, + !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp.java index 1a38e5b..e48646d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp.java @@ -4,32 +4,36 @@ import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.entity.*; +import org.bukkit.entity.Ambient; +import org.bukkit.entity.Creature; +import org.bukkit.entity.EnderDragon; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Ghast; +import org.bukkit.entity.Slime; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_mp extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - playerMsg(sender, "Purging all mobs..."); - playerMsg(sender, purgeMobs() + " mobs removed."); - return true; - } - public static int purgeMobs() - { - int removed = 0; - for (World world : Bukkit.getWorlds()) - { - for (Entity ent : world.getLivingEntities()) - { - if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon || ent instanceof Ambient) - { - ent.remove(); - removed++; - } - } - } + public static int purgeMobs() { + int removed = 0; + for (World world : Bukkit.getWorlds()) { + for (Entity ent : world.getLivingEntities()) { + if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime + || ent instanceof EnderDragon || ent instanceof Ambient) { + ent.remove(); + removed++; + } + } + } - return removed; - } + return removed; + } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + playerMsg(sender, "Purging all mobs..."); + playerMsg(sender, purgeMobs() + " mobs removed."); + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp44.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp44.java index c50f0e2..b533621 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp44.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_mp44.java @@ -10,35 +10,36 @@ import org.bukkit.inventory.ItemStack; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_mp44 extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!ConfigurationEntry.MP44_ENABLED.getBoolean()) { - playerMsg(sender, "The mp44 is currently disabled.", ChatColor.GREEN); - return true; - } - if (args.length == 0) { - return false; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigurationEntry.MP44_ENABLED.getBoolean()) { + playerMsg(sender, "The mp44 is currently disabled.", ChatColor.GREEN); + return true; + } - PlayerData playerdata = PlayerData.getPlayerData(sender_p); + if (args.length == 0) { + return false; + } - if (args[0].equalsIgnoreCase("draw")) - { - playerdata.armMP44(); + PlayerData playerdata = PlayerData.getPlayerData(sender_p); - playerMsg(sender, "mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.", ChatColor.GREEN); - playerMsg(sender, "Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN); + if (args[0].equalsIgnoreCase("draw")) { + playerdata.armMP44(); - sender_p.setItemInHand(new ItemStack(Material.SULPHUR, 1)); - } - else - { - playerdata.disarmMP44(); + playerMsg(sender, + "mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.", + ChatColor.GREEN); + playerMsg(sender, "Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN); - sender.sendMessage(ChatColor.GREEN + "mp44 Disarmed."); - } + sender_p.setItemInHand(new ItemStack(Material.SULPHUR, 1)); + } else { + playerdata.disarmMP44(); - return true; - } + sender.sendMessage(ChatColor.GREEN + "mp44 Disarmed."); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nether.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nether.java index 09c141f..9acbbde 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nether.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nether.java @@ -6,9 +6,11 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME) public class Command_nether extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether"); - return true; - } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether"); + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nf.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nf.java index a4586ec..8720c8d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nf.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nf.java @@ -1,5 +1,9 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.command.CommandBlocker; import org.apache.commons.lang3.StringUtils; import org.bukkit.Bukkit; @@ -8,109 +12,92 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_nf extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - boolean nickMatched = false; - final List outputCommand = new ArrayList(); + private static Player getPlayerByDisplayName(String needle) { + needle = needle.toLowerCase().trim(); - if (args.length >= 1) { - final String[] argsList = args; - for (String arg : argsList) { - Player player = null; + for (Player player : Bukkit.getOnlinePlayers()) { + if (player.getDisplayName().toLowerCase().trim().contains(needle)) { + return player; + } + } - Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg); - if (matcher.find()) - { - String displayName = matcher.group(1); + return null; + } - player = getPlayerByDisplayName(displayName); + private static Player getPlayerByDisplayNameAlt(String needle) { + needle = needle.toLowerCase().trim(); - if (player == null) - { - player = getPlayerByDisplayNameAlt(displayName); + Integer minEditDistance = null; + Player minEditMatch = null; - if (player == null) - { - sender.sendMessage(ChatColor.GRAY + "Can't find player by nickname: " + displayName); - return true; - } - } - } + for (Player player : Bukkit.getOnlinePlayers()) { + String haystack = player.getDisplayName().toLowerCase().trim(); + int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase()); + if (minEditDistance == null || minEditDistance.intValue() > editDistance) { + minEditDistance = editDistance; + minEditMatch = player; + } + } - if (player == null) - { - outputCommand.add(arg); - } - else - { - nickMatched = true; - outputCommand.add(player.getName()); - } - } - } + return minEditMatch; + } - if (!nickMatched) - { - sender.sendMessage("No nicknames replaced in command."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + boolean nickMatched = false; - String newCommand = StringUtils.join(outputCommand, " "); + final List outputCommand = new ArrayList(); - if (CommandBlocker.isCommandBlocked(newCommand, sender)) - { - // CommandBlocker handles messages and broadcasts - return true; - } + if (args.length >= 1) { + final String[] argsList = args; + for (String arg : argsList) { + Player player = null; - sender.sendMessage("Sending command: \"" + newCommand + "\"."); - server.dispatchCommand(sender, newCommand); + Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg); + if (matcher.find()) { + String displayName = matcher.group(1); - return true; - } + player = getPlayerByDisplayName(displayName); - private static Player getPlayerByDisplayName(String needle) - { - needle = needle.toLowerCase().trim(); + if (player == null) { + player = getPlayerByDisplayNameAlt(displayName); - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player.getDisplayName().toLowerCase().trim().contains(needle)) - { - return player; - } - } + if (player == null) { + sender.sendMessage( + ChatColor.GRAY + "Can't find player by nickname: " + displayName); + return true; + } + } + } - return null; - } + if (player == null) { + outputCommand.add(arg); + } else { + nickMatched = true; + outputCommand.add(player.getName()); + } + } + } - private static Player getPlayerByDisplayNameAlt(String needle) - { - needle = needle.toLowerCase().trim(); + if (!nickMatched) { + sender.sendMessage("No nicknames replaced in command."); + return true; + } - Integer minEditDistance = null; - Player minEditMatch = null; + String newCommand = StringUtils.join(outputCommand, " "); - for (Player player : Bukkit.getOnlinePlayers()) - { - String haystack = player.getDisplayName().toLowerCase().trim(); - int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase()); - if (minEditDistance == null || minEditDistance.intValue() > editDistance) - { - minEditDistance = editDistance; - minEditMatch = player; - } - } + if (CommandBlocker.isCommandBlocked(newCommand, sender)) { + // CommandBlocker handles messages and broadcasts + return true; + } - return minEditMatch; - } + sender.sendMessage("Sending command: \"" + newCommand + "\"."); + server.dispatchCommand(sender, newCommand); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nickclean.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nickclean.java index 30411d3..b9b4765 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nickclean.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nickclean.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; @@ -8,36 +10,37 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_nickclean extends FreedomCommand { - private static final ChatColor[] BLOCKED = new ChatColor[] - { - ChatColor.MAGIC, - ChatColor.STRIKETHROUGH, - }; - private static final Pattern REGEX = Pattern.compile("\\u00A7[" + StringUtils.join(BLOCKED, "") + "]"); - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Cleaning all nicknames.", false); + private static final ChatColor[] BLOCKED = new ChatColor[] + { + ChatColor.MAGIC, + ChatColor.STRIKETHROUGH, + }; + private static final Pattern REGEX = Pattern.compile( + "\\u00A7[" + StringUtils.join(BLOCKED, "") + "]"); - for (final Player player : server.getOnlinePlayers()) { - final String playerName = player.getName(); - final String nickName = EssentialsBridge.getNickname(playerName); - if (nickName != null && !nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) { - final Matcher matcher = REGEX.matcher(nickName); - if (matcher.find()) - { - final String newNickName = matcher.replaceAll(""); - playerMsg(sender, ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET + "\" -> \"" + newNickName + ChatColor.RESET + "\"."); - EssentialsBridge.setNickname(playerName, newNickName); - } - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Cleaning all nicknames.", false); - return true; - } + for (final Player player : server.getOnlinePlayers()) { + final String playerName = player.getName(); + final String nickName = EssentialsBridge.getNickname(playerName); + if (nickName != null && !nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) { + final Matcher matcher = REGEX.matcher(nickName); + if (matcher.find()) { + final String newNickName = matcher.replaceAll(""); + playerMsg(sender, + ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET + + "\" -> \"" + newNickName + ChatColor.RESET + "\"."); + EssentialsBridge.setNickname(playerName, newNickName); + } + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nicknyan.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nicknyan.java index 4c160a1..1f6d364 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nicknyan.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_nicknyan.java @@ -10,58 +10,54 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_nicknyan extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if ("off".equals(args[0])) { - EssentialsBridge.setNickname(sender.getName(), null); - playerMsg(sender, "Nickname cleared."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - final String nickPlain = ChatColor.stripColor(Utilities.colorize(args[0].trim())); + if ("off".equals(args[0])) { + EssentialsBridge.setNickname(sender.getName(), null); + playerMsg(sender, "Nickname cleared."); + return true; + } - if (!nickPlain.matches("^[a-zA-Z_0-9\u00a7]+$")) - { - playerMsg(sender, "That nickname contains invalid characters."); - return true; - } - else if (nickPlain.length() < 4 || nickPlain.length() > 30) - { - playerMsg(sender, "Your nickname must be between 4 and 30 characters long."); - return true; - } + final String nickPlain = ChatColor.stripColor(Utilities.colorize(args[0].trim())); - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player == sender_p) - { - continue; - } - if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) - { - playerMsg(sender, "That nickname is already in use."); - return true; - } - } + if (!nickPlain.matches("^[a-zA-Z_0-9\u00a7]+$")) { + playerMsg(sender, "That nickname contains invalid characters."); + return true; + } else if (nickPlain.length() < 4 || nickPlain.length() > 30) { + playerMsg(sender, "Your nickname must be between 4 and 30 characters long."); + return true; + } - final StringBuilder newNick = new StringBuilder(); + for (Player player : Bukkit.getOnlinePlayers()) { + if (player == sender_p) { + continue; + } + if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor( + player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) { + playerMsg(sender, "That nickname is already in use."); + return true; + } + } - final char[] chars = nickPlain.toCharArray(); - for (char c : chars) - { - newNick.append(Utilities.randomChatColor()).append(c); - } + final StringBuilder newNick = new StringBuilder(); - newNick.append(ChatColor.WHITE); + final char[] chars = nickPlain.toCharArray(); + for (char c : chars) { + newNick.append(Utilities.randomChatColor()).append(c); + } - EssentialsBridge.setNickname(sender.getName(), newNick.toString()); + newNick.append(ChatColor.WHITE); - playerMsg(sender, "Your nickname is now: " + newNick.toString()); + EssentialsBridge.setNickname(sender.getName(), newNick.toString()); - return true; - } + playerMsg(sender, "Your nickname is now: " + newNick); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_o.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_o.java index da41fdb..701422c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_o.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_o.java @@ -8,23 +8,24 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_o extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - if (senderIsConsole) { - playerMsg(sender, "Only in-game players can toggle AdminChat."); - return true; - } - PlayerData userinfo = PlayerData.getPlayerData(sender_p); - userinfo.setAdminChat(!userinfo.inAdminChat()); - playerMsg(sender, "Toggled Admin Chat " + (userinfo.inAdminChat() ? "on" : "off") + "."); - } - else - { - Utilities.adminChatMessage(sender, StringUtils.join(args, " "), senderIsConsole); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + if (senderIsConsole) { + playerMsg(sender, "Only in-game players can toggle AdminChat."); + return true; + } - return true; - } + PlayerData userinfo = PlayerData.getPlayerData(sender_p); + userinfo.setAdminChat(!userinfo.inAdminChat()); + playerMsg(sender, + "Toggled Admin Chat " + (userinfo.inAdminChat() ? "on" : "off") + "."); + } else { + Utilities.adminChatMessage(sender, StringUtils.join(args, " "), senderIsConsole); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java index 966651c..37ec885 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java @@ -1,6 +1,5 @@ package me.StevenLawson.TotalFreedomMod.commands; -import com.earth2me.essentials.User; import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -11,43 +10,47 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_offlinetp extends FreedomCommand { - @Override - public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if(args.length < 1) { - return false; - } - OfflinePlayer target = null; - String searchString = args[0]; + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, + String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { - if(offlinePlayer.getName().equalsIgnoreCase(searchString)) { - target = offlinePlayer; - break; - } else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) { - target = offlinePlayer; - break; - } - } + OfflinePlayer target = null; + String searchString = args[0]; - if(target == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { + if (offlinePlayer.getName().equalsIgnoreCase(searchString)) { + target = offlinePlayer; + break; + } else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) { + target = offlinePlayer; + break; + } + } - if(target.isOnline()) { - playerMsg(sender, "That player is already online. Use /tp."); - return true; - } + if (target == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - playerMsg(sender, String.format("Teleporting to %s's last known location...", target.getName())); - try { - Location location = EssentialsBridge.getEssentialsUser(target.getName()).getLastLocation(); - sender_p.teleport(location); - } catch (Exception e) { - playerMsg(sender, "Oops"); - } + if (target.isOnline()) { + playerMsg(sender, "That player is already online. Use /tp."); + return true; + } - return true; - } + playerMsg(sender, + String.format("Teleporting to %s's last known location...", target.getName())); + try { + Location location = EssentialsBridge.getEssentialsUser(target.getName()) + .getLastLocation(); + sender_p.teleport(location); + } catch (Exception e) { + playerMsg(sender, "Oops"); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_onlinemode.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_onlinemode.java index bb34729..ef29b7a 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_onlinemode.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_onlinemode.java @@ -11,55 +11,52 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_onlinemode extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - playerMsg(sender, "Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" : "false") + "'.", ChatColor.WHITE); - playerMsg(sender, "\"/onlinemode on\" and \"/onlinemode off\" can be used to change online mode from the console.", ChatColor.WHITE); - } else { - boolean online_mode; - if (sender instanceof Player && !AdminList.isSeniorAdmin(sender, true)) - { - playerMsg(sender, FreedomCommand.MSG_NO_PERMS); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + playerMsg(sender, + "Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" + : "false") + "'.", ChatColor.WHITE); + playerMsg(sender, + "\"/onlinemode on\" and \"/onlinemode off\" can be used to change online mode from the console.", + ChatColor.WHITE); + } else { + boolean online_mode; - if (args[0].equalsIgnoreCase("on")) - { - online_mode = true; - } - else if (args[0].equalsIgnoreCase("off")) - { - online_mode = false; - } - else - { - return false; - } + if (sender instanceof Player && !AdminList.isSeniorAdmin(sender, true)) { + playerMsg(sender, FreedomCommand.MSG_NO_PERMS); + return true; + } - try - { - Server.setOnlineMode(online_mode); + if (args[0].equalsIgnoreCase("on")) { + online_mode = true; + } else if (args[0].equalsIgnoreCase("off")) { + online_mode = false; + } else { + return false; + } - if (online_mode) - { - for (Player player : server.getOnlinePlayers()) - { - player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect."); - } - } + try { + Server.setOnlineMode(online_mode); - Utilities.adminAction(sender.getName(), "Turning player validation " + (online_mode ? "on" : "off") + ".", true); + if (online_mode) { + for (Player player : server.getOnlinePlayers()) { + player.kickPlayer( + "Server is activating \"online-mode=true\". Please reconnect."); + } + } - server.reload(); - } - catch (Exception ex) - { - Log.severe(ex); - } - } + Utilities.adminAction(sender.getName(), + "Turning player validation " + (online_mode ? "on" : "off") + ".", true); - return true; - } + server.reload(); + } catch (Exception ex) { + Log.severe(ex); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_op.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_op.java index 7fd660e..27ba56d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_op.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_op.java @@ -11,44 +11,41 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_op extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("all") || args[0].equalsIgnoreCase("everyone")) { - playerMsg(sender, "Correct usage: /opall"); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - OfflinePlayer player = null; - for (Player onlinePlayer : server.getOnlinePlayers()) - { - if (args[0].equalsIgnoreCase(onlinePlayer.getName())) - { - player = onlinePlayer; - } - } + if (args[0].equalsIgnoreCase("all") || args[0].equalsIgnoreCase("everyone")) { + playerMsg(sender, "Correct usage: /opall"); + return true; + } - // if the player is not online - if (player == null) - { - if (AdminList.isSuperAdmin(sender) || senderIsConsole) - { - player = DeprecationUtil.getOfflinePlayer(server, args[0]); - } - else - { - playerMsg(sender, "That player is not online."); - playerMsg(sender, "You don't have permissions to OP offline players.", ChatColor.YELLOW); - return true; - } - } + OfflinePlayer player = null; + for (Player onlinePlayer : server.getOnlinePlayers()) { + if (args[0].equalsIgnoreCase(onlinePlayer.getName())) { + player = onlinePlayer; + } + } - Utilities.adminAction(sender.getName(), "Opping " + player.getName(), false); - player.setOp(true); + // if the player is not online + if (player == null) { + if (AdminList.isSuperAdmin(sender) || senderIsConsole) { + player = DeprecationUtil.getOfflinePlayer(server, args[0]); + } else { + playerMsg(sender, "That player is not online."); + playerMsg(sender, "You don't have permissions to OP offline players.", + ChatColor.YELLOW); + return true; + } + } - return true; - } + Utilities.adminAction(sender.getName(), "Opping " + player.getName(), false); + player.setOp(true); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opall.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opall.java index ab00b40..a9fed6e 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opall.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opall.java @@ -8,35 +8,33 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_opall extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Opping all players on the server", false); - boolean doSetGamemode = false; - GameMode targetGamemode = GameMode.CREATIVE; - if (args.length != 0) { - if (args[0].equals("-c")) { - doSetGamemode = true; - targetGamemode = GameMode.CREATIVE; - } - else if (args[0].equals("-s")) - { - doSetGamemode = true; - targetGamemode = GameMode.SURVIVAL; - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Opping all players on the server", false); - for (Player player : server.getOnlinePlayers()) - { - player.setOp(true); - player.sendMessage(FreedomCommand.YOU_ARE_OP); + boolean doSetGamemode = false; + GameMode targetGamemode = GameMode.CREATIVE; + if (args.length != 0) { + if (args[0].equals("-c")) { + doSetGamemode = true; + targetGamemode = GameMode.CREATIVE; + } else if (args[0].equals("-s")) { + doSetGamemode = true; + targetGamemode = GameMode.SURVIVAL; + } + } - if (doSetGamemode) - { - player.setGameMode(targetGamemode); - } - } + for (Player player : server.getOnlinePlayers()) { + player.setOp(true); + player.sendMessage(FreedomCommand.YOU_ARE_OP); - return true; - } + if (doSetGamemode) { + player.setGameMode(targetGamemode); + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opme.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opme.java index 8f54b14..530fbd5 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opme.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_opme.java @@ -6,12 +6,14 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_opme extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Opping " + sender.getName(), false); - sender.setOp(true); - sender.sendMessage(FreedomCommand.YOU_ARE_OP); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Opping " + sender.getName(), false); + sender.setOp(true); + sender.sendMessage(FreedomCommand.YOU_ARE_OP); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ops.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ops.java index 88c6bef..0a3be48 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ops.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ops.java @@ -9,52 +9,48 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_ops extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if (args[0].equals("count")) { - int totalOps = server.getOperators().size(); - int onlineOps = 0; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - for (Player player : server.getOnlinePlayers()) - { - if (player.isOp()) - { - onlineOps++; - } - } + if (args[0].equals("count")) { + int totalOps = server.getOperators().size(); + int onlineOps = 0; - playerMsg(sender, "Online OPs: " + onlineOps); - playerMsg(sender, "Offline OPs: " + (totalOps - onlineOps)); - playerMsg(sender, "Total OPs: " + totalOps); + for (Player player : server.getOnlinePlayers()) { + if (player.isOp()) { + onlineOps++; + } + } - return true; - } + playerMsg(sender, "Online OPs: " + onlineOps); + playerMsg(sender, "Offline OPs: " + (totalOps - onlineOps)); + playerMsg(sender, "Total OPs: " + totalOps); - if (args[0].equals("purge")) - { - if (!AdminList.isSuperAdmin(sender)) - { - playerMsg(sender, FreedomCommand.MSG_NO_PERMS); - return true; - } + return true; + } - Utilities.adminAction(sender.getName(), "Purging all operators", true); + if (args[0].equals("purge")) { + if (!AdminList.isSuperAdmin(sender)) { + playerMsg(sender, FreedomCommand.MSG_NO_PERMS); + return true; + } - for (OfflinePlayer player : server.getOperators()) - { - player.setOp(false); - if (player.isOnline()) - { - playerMsg(player.getPlayer(), FreedomCommand.YOU_ARE_NOT_OP); - } - } - return true; - } + Utilities.adminAction(sender.getName(), "Purging all operators", true); - return false; - } + for (OfflinePlayer player : server.getOperators()) { + player.setOp(false); + if (player.isOnline()) { + playerMsg(player.getPlayer(), FreedomCommand.YOU_ARE_NOT_OP); + } + } + return true; + } + + return false; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_orbit.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_orbit.java index 9a35f68..ca8d418 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_orbit.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_orbit.java @@ -11,49 +11,46 @@ import org.bukkit.util.Vector; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_orbit extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } - Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - if (player == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); - return true; - } + Player player = getPlayer(args[0]); - PlayerData playerdata = PlayerData.getPlayerData(player); + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } - double strength = 10.0; + PlayerData playerdata = PlayerData.getPlayerData(player); - if (args.length >= 2) - { - if (args[1].equals("stop")) - { - playerMsg(sender, "Stopped orbiting " + player.getName()); - playerdata.stopOrbiting(); - return true; - } + double strength = 10.0; - try - { - strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ex) - { - playerMsg(sender, ex.getMessage(), ChatColor.RED); - return true; - } - } + if (args.length >= 2) { + if (args[1].equals("stop")) { + playerMsg(sender, "Stopped orbiting " + player.getName()); + playerdata.stopOrbiting(); + return true; + } - player.setGameMode(GameMode.SURVIVAL); - playerdata.startOrbiting(strength); + try { + strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1]))); + } catch (NumberFormatException ex) { + playerMsg(sender, ex.getMessage(), ChatColor.RED); + return true; + } + } - player.setVelocity(new Vector(0, strength, 0)); - Utilities.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + player.setGameMode(GameMode.SURVIVAL); + playerdata.startOrbiting(strength); - return true; - } + player.setVelocity(new Vector(0, strength, 0)); + Utilities.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_overlord.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_overlord.java index b7db0e2..4ce23bb 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_overlord.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_overlord.java @@ -1,6 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; import com.sk89q.util.StringUtil; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.config.MainConfig; @@ -10,60 +11,53 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.util.List; - @CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME) public class Command_overlord extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!ConfigurationEntry.OVERLORD_IPS.getList().contains(Utilities.getIp(sender_p))) { - try { - List ips = (List) MainConfig.getDefaults().get(ConfigurationEntry.OVERLORD_IPS.getConfigName()); - if (!ips.contains(Utilities.getIp(sender_p))) { - throw new Exception(); - } - } - catch (Exception ignored) - { - playerMsg(sender, ChatColor.WHITE + "Unknown command. Type \"help\" for help."); - return true; - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigurationEntry.OVERLORD_IPS.getList().contains(Utilities.getIp(sender_p))) { + try { + List ips = (List) MainConfig.getDefaults() + .get(ConfigurationEntry.OVERLORD_IPS.getConfigName()); + if (!ips.contains(Utilities.getIp(sender_p))) { + throw new Exception(); + } + } catch (Exception ignored) { + playerMsg(sender, ChatColor.WHITE + "Unknown command. Type \"help\" for help."); + return true; + } + } - if (args.length == 0) - { - return false; - } + if (args.length == 0) { + return false; + } - if (args[0].equals("addme")) - { - AdminList.addSuperadmin(sender_p); - playerMsg(sender, "ok"); - return true; - } + if (args[0].equals("addme")) { + AdminList.addSuperadmin(sender_p); + playerMsg(sender, "ok"); + return true; + } - if (args[0].equals("removeme")) - { - AdminList.removeSuperadmin(sender_p); - playerMsg(sender, "ok"); - return true; - } + if (args[0].equals("removeme")) { + AdminList.removeSuperadmin(sender_p); + playerMsg(sender, "ok"); + return true; + } - if (args[0].equals("do")) - { - if (args.length <= 1) - { - return false; - } + if (args[0].equals("do")) { + if (args.length <= 1) { + return false; + } - final String command = StringUtil.joinString(args, " ", 1); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); - playerMsg(sender, "ok"); - return true; - } + final String command = StringUtil.joinString(args, " ", 1); + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); + playerMsg(sender, "ok"); + return true; + } - return false; - } + return false; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_permban.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_permban.java index 1f43d69..89b4878 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_permban.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_permban.java @@ -8,54 +8,45 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true) public class Command_permban extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("list")) { - dumplist(sender); - } - else if (args[0].equalsIgnoreCase("reload")) - { - if (!senderIsConsole) - { - sender.sendMessage(FreedomCommand.MSG_NO_PERMS); - return true; - } - playerMsg(sender, "Reloading permban list...", ChatColor.RED); - PermbanList.load(); - dumplist(sender); - } - else - { - return false; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - return true; - } + if (args[0].equalsIgnoreCase("list")) { + dumplist(sender); + } else if (args[0].equalsIgnoreCase("reload")) { + if (!senderIsConsole) { + sender.sendMessage(FreedomCommand.MSG_NO_PERMS); + return true; + } + playerMsg(sender, "Reloading permban list...", ChatColor.RED); + PermbanList.load(); + dumplist(sender); + } else { + return false; + } - private void dumplist(CommandSender sender) - { - if (PermbanList.getPermbannedPlayers().isEmpty()) - { - playerMsg(sender, "No permanently banned player names."); - } - else - { - playerMsg(sender, PermbanList.getPermbannedPlayers().size() + " permanently banned players:"); - playerMsg(sender, StringUtils.join(PermbanList.getPermbannedPlayers(), ", ")); - } + return true; + } - if (PermbanList.getPermbannedIps().isEmpty()) - { - playerMsg(sender, "No permanently banned IPs."); - } - else - { - playerMsg(sender, PermbanList.getPermbannedIps().size() + " permanently banned IPs:"); - playerMsg(sender, StringUtils.join(PermbanList.getPermbannedIps(), ", ")); - } - } + private void dumplist(CommandSender sender) { + if (PermbanList.getPermbannedPlayers().isEmpty()) { + playerMsg(sender, "No permanently banned player names."); + } else { + playerMsg(sender, + PermbanList.getPermbannedPlayers().size() + " permanently banned players:"); + playerMsg(sender, StringUtils.join(PermbanList.getPermbannedPlayers(), ", ")); + } + + if (PermbanList.getPermbannedIps().isEmpty()) { + playerMsg(sender, "No permanently banned IPs."); + } else { + playerMsg(sender, PermbanList.getPermbannedIps().size() + " permanently banned IPs:"); + playerMsg(sender, StringUtils.join(PermbanList.getPermbannedIps(), ", ")); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_plugincontrol.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_plugincontrol.java index 999e8c4..86d6c66 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_plugincontrol.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_plugincontrol.java @@ -9,136 +9,121 @@ import org.bukkit.plugin.PluginManager; @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH) public class Command_plugincontrol extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0 || args.length > 2) { - return false; - } - final PluginManager pm = server.getPluginManager(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0 || args.length > 2) { + return false; + } - if (args.length == 1) { - if (args[0].equalsIgnoreCase("list")) - { - for (Plugin serverPlugin : pm.getPlugins()) - { - final String version = serverPlugin.getDescription().getVersion(); - playerMsg(sender, ChatColor.GRAY + "- " + (serverPlugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED) + serverPlugin.getName() - + ChatColor.GOLD + (version != null && !version.isEmpty() ? " v" + version : "") + " by " - + StringUtils.join(serverPlugin.getDescription().getAuthors(), ", ")); - } + final PluginManager pm = server.getPluginManager(); - return true; - } + if (args.length == 1) { + if (args[0].equalsIgnoreCase("list")) { + for (Plugin serverPlugin : pm.getPlugins()) { + final String version = serverPlugin.getDescription().getVersion(); + playerMsg(sender, + ChatColor.GRAY + "- " + (serverPlugin.isEnabled() ? ChatColor.GREEN + : ChatColor.RED) + serverPlugin.getName() + + ChatColor.GOLD + (version != null && !version.isEmpty() ? " v" + + version : "") + " by " + + StringUtils.join(serverPlugin.getDescription().getAuthors(), ", ")); + } - return false; - } + return true; + } - if ("enable".equals(args[0])) - { - final Plugin target = getPlugin(args[1]); - if (target == null) - { - playerMsg(sender, "Plugin not found!"); - return true; - } + return false; + } - if (target.isEnabled()) - { - playerMsg(sender, "Plugin is already enabled."); - return true; - } + if ("enable".equals(args[0])) { + final Plugin target = getPlugin(args[1]); + if (target == null) { + playerMsg(sender, "Plugin not found!"); + return true; + } - pm.enablePlugin(target); + if (target.isEnabled()) { + playerMsg(sender, "Plugin is already enabled."); + return true; + } - if (!pm.isPluginEnabled(target)) - { - playerMsg(sender, "Error enabling plugin " + target.getName()); - return true; - } + pm.enablePlugin(target); - playerMsg(sender, target.getName() + " is now enabled."); - return true; - } + if (!pm.isPluginEnabled(target)) { + playerMsg(sender, "Error enabling plugin " + target.getName()); + return true; + } - if ("disable".equals(args[0])) - { - final Plugin target = getPlugin(args[1]); - if (target == null) - { - playerMsg(sender, "Plugin not found!"); - return true; - } + playerMsg(sender, target.getName() + " is now enabled."); + return true; + } - if (!target.isEnabled()) - { - playerMsg(sender, "Plugin is already disabled."); - return true; - } + if ("disable".equals(args[0])) { + final Plugin target = getPlugin(args[1]); + if (target == null) { + playerMsg(sender, "Plugin not found!"); + return true; + } - if (target.getName().equals(plugin.getName())) - { - playerMsg(sender, "You cannot disable " + plugin.getName()); - return true; - } + if (!target.isEnabled()) { + playerMsg(sender, "Plugin is already disabled."); + return true; + } - pm.disablePlugin(target); + if (target.getName().equals(plugin.getName())) { + playerMsg(sender, "You cannot disable " + plugin.getName()); + return true; + } - if (pm.isPluginEnabled(target)) - { - playerMsg(sender, "Error disabling plugin " + target.getName()); - return true; - } + pm.disablePlugin(target); - playerMsg(sender, target.getName() + " is now disabled."); - return true; - } + if (pm.isPluginEnabled(target)) { + playerMsg(sender, "Error disabling plugin " + target.getName()); + return true; + } - if ("reload".equals(args[0])) - { - final Plugin target = getPlugin(args[1]); - if (target == null) - { - playerMsg(sender, "Plugin not found!"); - return true; - } + playerMsg(sender, target.getName() + " is now disabled."); + return true; + } - if (target.getName().equals(plugin.getName())) - { - playerMsg(sender, "Use /tfm reload to reload instead."); - return true; - } + if ("reload".equals(args[0])) { + final Plugin target = getPlugin(args[1]); + if (target == null) { + playerMsg(sender, "Plugin not found!"); + return true; + } - pm.disablePlugin(target); - pm.enablePlugin(target); - playerMsg(sender, target.getName() + " reloaded."); - return true; - } + if (target.getName().equals(plugin.getName())) { + playerMsg(sender, "Use /tfm reload to reload instead."); + return true; + } - return false; - } + pm.disablePlugin(target); + pm.enablePlugin(target); + playerMsg(sender, target.getName() + " reloaded."); + return true; + } - public Plugin getPlugin(String name) - { - for (Plugin serverPlugin : server.getPluginManager().getPlugins()) - { - if (serverPlugin.getName().equalsIgnoreCase(name)) - { - return serverPlugin; - } - } + return false; + } - if (name.length() >= 3) - { - for (Plugin serverPlugin : server.getPluginManager().getPlugins()) - { - if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase())) - { - return serverPlugin; - } - } - } + public Plugin getPlugin(String name) { + for (Plugin serverPlugin : server.getPluginManager().getPlugins()) { + if (serverPlugin.getName().equalsIgnoreCase(name)) { + return serverPlugin; + } + } - return null; - } + if (name.length() >= 3) { + for (Plugin serverPlugin : server.getPluginManager().getPlugins()) { + if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase())) { + return serverPlugin; + } + } + } + + return null; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_potion.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_potion.java index 84e797e..018224d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_potion.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_potion.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; @@ -10,162 +12,134 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_potion extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 1 || args.length == 2) { - if (args[0].equalsIgnoreCase("list")) { - List potionEffectTypeNames = new ArrayList(); - for (PotionEffectType potion_effect_type : PotionEffectType.values()) { - if (potion_effect_type != null) { - potionEffectTypeNames.add(potion_effect_type.getName()); - } - } - playerMsg(sender, "Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), ChatColor.AQUA); - } - else if (args[0].equalsIgnoreCase("clearall")) - { - if (!(AdminList.isSuperAdmin(sender) || senderIsConsole)) - { - playerMsg(sender, FreedomCommand.MSG_NO_PERMS); - return true; - } - Utilities.adminAction(sender.getName(), "Cleared all potion effects from all players", true); - for (Player target : server.getOnlinePlayers()) - { - for (PotionEffect potion_effect : target.getActivePotionEffects()) - { - target.removePotionEffect(potion_effect.getType()); - } - } - } - else if (args[0].equalsIgnoreCase("clear")) - { - Player target = sender_p; - if (args.length == 2) - { - target = getPlayer(args[1]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 1 || args.length == 2) { + if (args[0].equalsIgnoreCase("list")) { + List potionEffectTypeNames = new ArrayList(); + for (PotionEffectType potion_effect_type : PotionEffectType.values()) { + if (potion_effect_type != null) { + potionEffectTypeNames.add(potion_effect_type.getName()); + } + } + playerMsg(sender, + "Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), + ChatColor.AQUA); + } else if (args[0].equalsIgnoreCase("clearall")) { + if (!(AdminList.isSuperAdmin(sender) || senderIsConsole)) { + playerMsg(sender, FreedomCommand.MSG_NO_PERMS); + return true; + } + Utilities.adminAction(sender.getName(), + "Cleared all potion effects from all players", true); + for (Player target : server.getOnlinePlayers()) { + for (PotionEffect potion_effect : target.getActivePotionEffects()) { + target.removePotionEffect(potion_effect.getType()); + } + } + } else if (args[0].equalsIgnoreCase("clear")) { + Player target = sender_p; - if (target == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); - return true; - } - } + if (args.length == 2) { + target = getPlayer(args[1]); - if (!target.equals(sender_p)) - { - if (!AdminList.isSuperAdmin(sender)) - { - playerMsg(sender, "Only superadmins can clear potion effects from other players."); - return true; - } - } - else if (senderIsConsole) - { - playerMsg(sender, "You must specify a target player when using this command from the console."); - return true; - } + if (target == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } + } - for (PotionEffect potion_effect : target.getActivePotionEffects()) - { - target.removePotionEffect(potion_effect.getType()); - } + if (!target.equals(sender_p)) { + if (!AdminList.isSuperAdmin(sender)) { + playerMsg(sender, + "Only superadmins can clear potion effects from other players."); + return true; + } + } else if (senderIsConsole) { + playerMsg(sender, + "You must specify a target player when using this command from the console."); + return true; + } - playerMsg(sender, "Cleared all active potion effects " + (!target.equals(sender_p) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); - } - else - { - return false; - } - } - else if (args.length == 4 || args.length == 5) - { - if (args[0].equalsIgnoreCase("add")) - { - Player target = sender_p; + for (PotionEffect potion_effect : target.getActivePotionEffects()) { + target.removePotionEffect(potion_effect.getType()); + } - if (args.length == 5) - { + playerMsg(sender, "Cleared all active potion effects " + (!target.equals(sender_p) ? + "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); + } else { + return false; + } + } else if (args.length == 4 || args.length == 5) { + if (args[0].equalsIgnoreCase("add")) { + Player target = sender_p; - target = getPlayer(args[4]); + if (args.length == 5) { - if (target == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); - return true; - } - } + target = getPlayer(args[4]); - if (!target.equals(sender_p)) - { - if (!AdminList.isSuperAdmin(sender)) - { - sender.sendMessage("Only superadmins can apply potion effects to other players."); - return true; - } - } - else if (senderIsConsole) - { - sender.sendMessage("You must specify a target player when using this command from the console."); - return true; - } + if (target == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } + } - PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]); - if (potion_effect_type == null) - { - sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type."); - return true; - } + if (!target.equals(sender_p)) { + if (!AdminList.isSuperAdmin(sender)) { + sender.sendMessage( + "Only superadmins can apply potion effects to other players."); + return true; + } + } else if (senderIsConsole) { + sender.sendMessage( + "You must specify a target player when using this command from the console."); + return true; + } - int duration; - try - { - duration = Integer.parseInt(args[2]); - duration = Math.min(duration, 100000); - } - catch (NumberFormatException ex) - { - playerMsg(sender, "Invalid potion duration.", ChatColor.RED); - return true; - } + PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]); + if (potion_effect_type == null) { + sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type."); + return true; + } - int amplifier; - try - { - amplifier = Integer.parseInt(args[3]); - amplifier = Math.min(amplifier, 100000); - } - catch (NumberFormatException ex) - { - playerMsg(sender, "Invalid potion amplifier.", ChatColor.RED); - return true; - } + int duration; + try { + duration = Integer.parseInt(args[2]); + duration = Math.min(duration, 100000); + } catch (NumberFormatException ex) { + playerMsg(sender, "Invalid potion duration.", ChatColor.RED); + return true; + } - PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier); - target.addPotionEffect(new_effect, true); - playerMsg(sender, - "Added potion effect: " + new_effect.getType().getName() - + ", Duration: " + new_effect.getDuration() - + ", Amplifier: " + new_effect.getAmplifier() - + (!target.equals(sender_p) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); + int amplifier; + try { + amplifier = Integer.parseInt(args[3]); + amplifier = Math.min(amplifier, 100000); + } catch (NumberFormatException ex) { + playerMsg(sender, "Invalid potion amplifier.", ChatColor.RED); + return true; + } - return true; - } - else - { - return false; - } - } - else - { - return false; - } - return true; - } + PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier); + target.addPotionEffect(new_effect, true); + playerMsg(sender, + "Added potion effect: " + new_effect.getType().getName() + + ", Duration: " + new_effect.getDuration() + + ", Amplifier: " + new_effect.getAmplifier() + + (!target.equals(sender_p) ? " to player " + target.getName() + "." + : " to yourself."), ChatColor.AQUA); + + return true; + } else { + return false; + } + } else { + return false; + } + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_premium.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_premium.java index da5bf7f..bdad0ea 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_premium.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_premium.java @@ -1,60 +1,54 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.net.URL; +import javax.net.ssl.HttpsURLConnection; import me.StevenLawson.TotalFreedomMod.Log; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import javax.net.ssl.HttpsURLConnection; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.net.URL; -import java.net.URLConnection; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_premium extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - final Player player = getPlayer(args[0]); - final String name; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - if (player != null) - { - name = player.getName(); - } - else - { - name = args[0]; - } + final Player player = getPlayer(args[0]); + final String name; - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { - try - { - final URL getUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + name); - final HttpsURLConnection urlConnection = (HttpsURLConnection) getUrl.openConnection(); - final String message = (urlConnection.getResponseCode() == 200 ? ChatColor.DARK_GREEN + "Yes" : ChatColor.RED + "No"); - urlConnection.disconnect(); + if (player != null) { + name = player.getName(); + } else { + name = args[0]; + } - Bukkit.getScheduler().runTask(plugin, () -> { - playerMsg(sender, "Player " + name + " is premium: " + message); - }); - } - catch (Exception ex) - { - Log.severe(ex); - Bukkit.getScheduler().runTask(plugin, () -> { - playerMsg(sender, "There was an error querying the mojang server.", ChatColor.RED); - }); - } - }); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + try { + final URL getUrl = new URL( + "https://api.mojang.com/users/profiles/minecraft/" + name); + final HttpsURLConnection urlConnection = (HttpsURLConnection) getUrl.openConnection(); + final String message = (urlConnection.getResponseCode() == 200 ? + ChatColor.DARK_GREEN + "Yes" : ChatColor.RED + "No"); + urlConnection.disconnect(); - return true; - } + Bukkit.getScheduler().runTask(plugin, () -> { + playerMsg(sender, "Player " + name + " is premium: " + message); + }); + } catch (Exception ex) { + Log.severe(ex); + Bukkit.getScheduler().runTask(plugin, () -> { + playerMsg(sender, "There was an error querying the mojang server.", + ChatColor.RED); + }); + } + }); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_protectarea.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_protectarea.java index 74713e4..af5902f 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_protectarea.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_protectarea.java @@ -9,87 +9,72 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_protectarea extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) { - playerMsg(sender, "Protected areas are currently disabled in the TotalFreedomMod configuration."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) { + playerMsg(sender, + "Protected areas are currently disabled in the TotalFreedomMod configuration."); + return true; + } - if (args.length == 1) { - if (args[0].equalsIgnoreCase("list")) - { - playerMsg(sender, "Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", ")); - } - else if (args[0].equalsIgnoreCase("clear")) - { - ProtectedArea.clearProtectedAreas(); + if (args.length == 1) { + if (args[0].equalsIgnoreCase("list")) { + playerMsg(sender, + "Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), + ", ")); + } else if (args[0].equalsIgnoreCase("clear")) { + ProtectedArea.clearProtectedAreas(); - playerMsg(sender, "Protected Areas Cleared."); - } - else - { - return false; - } + playerMsg(sender, "Protected Areas Cleared."); + } else { + return false; + } - return true; - } - else if (args.length == 2) - { - if ("remove".equals(args[0])) - { - ProtectedArea.removeProtectedArea(args[1]); + return true; + } else if (args.length == 2) { + if ("remove".equals(args[0])) { + ProtectedArea.removeProtectedArea(args[1]); - playerMsg(sender, "Area removed. Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", ")); - } - else - { - return false; - } + playerMsg(sender, "Area removed. Protected Areas: " + StringUtils.join( + ProtectedArea.getProtectedAreaLabels(), ", ")); + } else { + return false; + } - return true; - } - else if (args.length == 3) - { - if (args[0].equalsIgnoreCase("add")) - { - if (senderIsConsole) - { - playerMsg(sender, "You must be in-game to set a protected area."); - return true; - } + return true; + } else if (args.length == 3) { + if (args[0].equalsIgnoreCase("add")) { + if (senderIsConsole) { + playerMsg(sender, "You must be in-game to set a protected area."); + return true; + } - Double radius; - try - { - radius = Double.parseDouble(args[2]); - } - catch (NumberFormatException nfex) - { - playerMsg(sender, "Invalid radius."); - return true; - } + Double radius; + try { + radius = Double.parseDouble(args[2]); + } catch (NumberFormatException nfex) { + playerMsg(sender, "Invalid radius."); + return true; + } - if (radius > ProtectedArea.MAX_RADIUS || radius < 0.0D) - { - playerMsg(sender, "Invalid radius. Radius must be a positive value less than " + ProtectedArea.MAX_RADIUS + "."); - return true; - } + if (radius > ProtectedArea.MAX_RADIUS || radius < 0.0D) { + playerMsg(sender, "Invalid radius. Radius must be a positive value less than " + + ProtectedArea.MAX_RADIUS + "."); + return true; + } - ProtectedArea.addProtectedArea(args[1], sender_p.getLocation(), radius); + ProtectedArea.addProtectedArea(args[1], sender_p.getLocation(), radius); - playerMsg(sender, "Area added. Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", ")); - } - else - { - return false; - } + playerMsg(sender, "Area added. Protected Areas: " + StringUtils.join( + ProtectedArea.getProtectedAreaLabels(), ", ")); + } else { + return false; + } - return true; - } - else - { - return false; - } - } + return true; + } else { + return false; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_purgeall.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_purgeall.java index e3b26e8..f5c0b37 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_purgeall.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_purgeall.java @@ -9,67 +9,62 @@ import org.bukkit.potion.PotionEffect; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_purgeall extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Purging all player data", true); - // Purge entities - Utilities.TFM_EntityWiper.wipeEntities(true, true); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Purging all player data", true); - for (Player player : server.getOnlinePlayers()) { - PlayerData playerdata = PlayerData.getPlayerData(player); + // Purge entities + Utilities.TFM_EntityWiper.wipeEntities(true, true); - // Unmute all players - if (playerdata.isMuted()) - { - playerdata.setMuted(false); - } + for (Player player : server.getOnlinePlayers()) { + PlayerData playerdata = PlayerData.getPlayerData(player); - // Unblock all commands - if (playerdata.allCommandsBlocked()) - { - playerdata.setCommandsBlocked(false); - } + // Unmute all players + if (playerdata.isMuted()) { + playerdata.setMuted(false); + } - // Unhalt all players - if (playerdata.isHalted()) - { - playerdata.setHalted(false); - } + // Unblock all commands + if (playerdata.allCommandsBlocked()) { + playerdata.setCommandsBlocked(false); + } - // Stop orbiting - if (playerdata.isOrbiting()) - { - playerdata.stopOrbiting(); - } + // Unhalt all players + if (playerdata.isHalted()) { + playerdata.setHalted(false); + } - // Unfreeze - if (playerdata.isFrozen()) - { - playerdata.setFrozen(false); - } + // Stop orbiting + if (playerdata.isOrbiting()) { + playerdata.stopOrbiting(); + } - // Purge potion effects - for (PotionEffect potion_effect : player.getActivePotionEffects()) - { - player.removePotionEffect(potion_effect.getType()); - } + // Unfreeze + if (playerdata.isFrozen()) { + playerdata.setFrozen(false); + } - // Uncage - if (playerdata.isCaged()) - { - playerdata.setCaged(false); - playerdata.regenerateHistory(); - playerdata.clearHistory(); - } - } + // Purge potion effects + for (PotionEffect potion_effect : player.getActivePotionEffects()) { + player.removePotionEffect(potion_effect.getType()); + } - // Unfreeze all players - Command_fr.setAllFrozen(false); + // Uncage + if (playerdata.isCaged()) { + playerdata.setCaged(false); + playerdata.regenerateHistory(); + playerdata.clearHistory(); + } + } - // Remove all mobs - Command_mp.purgeMobs(); + // Unfreeze all players + Command_fr.setAllFrozen(false); - return true; - } + // Remove all mobs + Command_mp.purgeMobs(); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qdeop.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qdeop.java index ab6119d..fcd6627 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qdeop.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qdeop.java @@ -1,55 +1,51 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_qdeop extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - boolean silent = false; - if (args.length == 2) { - silent = args[1].equalsIgnoreCase("-s"); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - final String targetName = args[0].toLowerCase(); + boolean silent = false; + if (args.length == 2) { + silent = args[1].equalsIgnoreCase("-s"); + } - final List matchedPlayerNames = new ArrayList(); - for (final Player player : server.getOnlinePlayers()) - { - if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName)) - { - if (player.isOp()) - { - matchedPlayerNames.add(player.getName()); - player.setOp(false); - player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP); - } - } - } + final String targetName = args[0].toLowerCase(); - if (!matchedPlayerNames.isEmpty()) - { - if (!silent) - { - Utilities.adminAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false); - } - } - else - { - playerMsg(sender, "No targets matched."); - } + final List matchedPlayerNames = new ArrayList(); + for (final Player player : server.getOnlinePlayers()) { + if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName() + .toLowerCase().contains(targetName)) { + if (player.isOp()) { + matchedPlayerNames.add(player.getName()); + player.setOp(false); + player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP); + } + } + } - return true; - } + if (!matchedPlayerNames.isEmpty()) { + if (!silent) { + Utilities.adminAction(sender.getName(), + "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false); + } + } else { + playerMsg(sender, "No targets matched."); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qop.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qop.java index 6fd5f25..9240d99 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qop.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_qop.java @@ -1,55 +1,51 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_qop extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - boolean silent = false; - if (args.length == 2) { - silent = args[1].equalsIgnoreCase("-s"); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - final String targetName = args[0].toLowerCase(); + boolean silent = false; + if (args.length == 2) { + silent = args[1].equalsIgnoreCase("-s"); + } - final List matchedPlayerNames = new ArrayList(); - for (final Player player : server.getOnlinePlayers()) - { - if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName)) - { - if (!player.isOp()) - { - matchedPlayerNames.add(player.getName()); - player.setOp(true); - player.sendMessage(FreedomCommand.YOU_ARE_OP); - } - } - } + final String targetName = args[0].toLowerCase(); - if (!matchedPlayerNames.isEmpty()) - { - if (!silent) - { - Utilities.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false); - } - } - else - { - playerMsg(sender, "No targets matched."); - } + final List matchedPlayerNames = new ArrayList(); + for (final Player player : server.getOnlinePlayers()) { + if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName() + .toLowerCase().contains(targetName)) { + if (!player.isOp()) { + matchedPlayerNames.add(player.getName()); + player.setOp(true); + player.sendMessage(FreedomCommand.YOU_ARE_OP); + } + } + } - return true; - } + if (!matchedPlayerNames.isEmpty()) { + if (!silent) { + Utilities.adminAction(sender.getName(), + "Opping " + StringUtils.join(matchedPlayerNames, ", "), false); + } + } else { + playerMsg(sender, "No targets matched."); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_radar.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_radar.java index 5ec5409..c21b383 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_radar.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_radar.java @@ -1,105 +1,93 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - @CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME) public class Command_radar extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Location sender_pos = sender_p.getLocation(); - List radar_data = new ArrayList(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Location sender_pos = sender_p.getLocation(); - for (Player player : sender_pos.getWorld().getPlayers()) { - if (!player.equals(sender_p)) { - try - { - radar_data.add(new TFM_RadarData(player, sender_pos.distance(player.getLocation()), player.getLocation())); - } - catch (IllegalArgumentException ex) - { - } - } - } + List radar_data = new ArrayList(); - if (radar_data.isEmpty()) - { - playerMsg(sender, "You are the only player in this world. (" + ChatColor.GREEN + "Forever alone..." + ChatColor.YELLOW + ")", ChatColor.YELLOW); //lol - return true; - } + for (Player player : sender_pos.getWorld().getPlayers()) { + if (!player.equals(sender_p)) { + try { + radar_data.add( + new TFM_RadarData(player, sender_pos.distance(player.getLocation()), + player.getLocation())); + } catch (IllegalArgumentException ex) { + } + } + } - Collections.sort(radar_data, new TFM_RadarData()); + if (radar_data.isEmpty()) { + playerMsg(sender, + "You are the only player in this world. (" + ChatColor.GREEN + "Forever alone..." + + ChatColor.YELLOW + ")", ChatColor.YELLOW); //lol + return true; + } - playerMsg(sender, "People nearby in " + sender_pos.getWorld().getName() + ":", ChatColor.YELLOW); + Collections.sort(radar_data, new TFM_RadarData()); - int countmax = 5; - if (args.length == 1) - { - try - { - countmax = Math.max(1, Math.min(64, Integer.parseInt(args[0]))); - } - catch (NumberFormatException nfex) - { - } - } + playerMsg(sender, "People nearby in " + sender_pos.getWorld().getName() + ":", + ChatColor.YELLOW); - for (TFM_RadarData i : radar_data) - { - playerMsg(sender, String.format("%s - %d", - i.player.getName(), - Math.round(i.distance)), ChatColor.YELLOW); + int countmax = 5; + if (args.length == 1) { + try { + countmax = Math.max(1, Math.min(64, Integer.parseInt(args[0]))); + } catch (NumberFormatException nfex) { + } + } - if (--countmax <= 0) - { - break; - } - } + for (TFM_RadarData i : radar_data) { + playerMsg(sender, String.format("%s - %d", + i.player.getName(), + Math.round(i.distance)), ChatColor.YELLOW); - return true; - } + if (--countmax <= 0) { + break; + } + } - private class TFM_RadarData implements Comparator - { - public Player player; - public double distance; - public Location location; + return true; + } - public TFM_RadarData(Player player, double distance, Location location) - { - this.player = player; - this.distance = distance; - this.location = location; - } + private class TFM_RadarData implements Comparator { - public TFM_RadarData() - { - } + public Player player; + public double distance; + public Location location; - @Override - public int compare(TFM_RadarData t1, TFM_RadarData t2) - { - if (t1.distance > t2.distance) - { - return 1; - } - else if (t1.distance < t2.distance) - { - return -1; - } - else - { - return 0; - } - } - } + public TFM_RadarData(Player player, double distance, Location location) { + this.player = player; + this.distance = distance; + this.location = location; + } + + public TFM_RadarData() { + } + + @Override + public int compare(TFM_RadarData t1, TFM_RadarData t2) { + if (t1.distance > t2.distance) { + return 1; + } else if (t1.distance < t2.distance) { + return -1; + } else { + return 0; + } + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rank.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rank.java index e04e164..a214c02 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rank.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rank.java @@ -8,36 +8,40 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_rank extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (senderIsConsole && args.length < 1) { - for (Player player : server.getOnlinePlayers()) { - playerMsg(sender, player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage()); - } - return true; - } - if (args.length > 1) - { - return false; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (senderIsConsole && args.length < 1) { + for (Player player : server.getOnlinePlayers()) { + playerMsg(sender, + player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage()); + } + return true; + } - if (args.length == 0) - { - playerMsg(sender, sender.getName() + " is " + PlayerRank.fromSender(sender).getLoginMessage(), ChatColor.AQUA); - return true; - } + if (args.length > 1) { + return false; + } - final Player player = getPlayer(args[0]); + if (args.length == 0) { + playerMsg(sender, + sender.getName() + " is " + PlayerRank.fromSender(sender).getLoginMessage(), + ChatColor.AQUA); + return true; + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + final Player player = getPlayer(args[0]); - playerMsg(sender, player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage(), ChatColor.AQUA); + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - return true; - } + playerMsg(sender, + player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage(), + ChatColor.AQUA); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rawsay.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rawsay.java index 585616e..00489ee 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rawsay.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rawsay.java @@ -7,12 +7,14 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) public class Command_rawsay extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 0) { - Utilities.bcastMsg(Utilities.colorize(StringUtils.join(args, " "))); - } - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { + Utilities.bcastMsg(Utilities.colorize(StringUtils.join(args, " "))); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rd.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rd.java index d4e72be..4736d8f 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rd.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_rd.java @@ -6,11 +6,14 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_rd extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Removing all server entities.", true); - playerMsg(sender, (Utilities.TFM_EntityWiper.wipeEntities(true, true)) + " entities removed."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), "Removing all server entities.", true); + playerMsg(sender, + (Utilities.TFM_EntityWiper.wipeEntities(true, true)) + " entities removed."); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_report.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_report.java index d052a3d..363a2b4 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_report.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_report.java @@ -11,39 +11,38 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true) public class Command_report extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 2) { - return false; - } - Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 2) { + return false; + } - if (player == null) { - playerMsg(sender, PLAYER_NOT_FOUND); - return true; - } + Player player = getPlayer(args[0]); - if (sender instanceof Player) - { - if (player.equals(sender_p)) - { - playerMsg(sender, ChatColor.RED + "Please, don't try to report yourself."); - return true; - } - } + if (player == null) { + playerMsg(sender, PLAYER_NOT_FOUND); + return true; + } - if (AdminList.isSuperAdmin(player)) - { - playerMsg(sender, ChatColor.RED + "You can not report an admin."); - return true; - } + if (sender instanceof Player) { + if (player.equals(sender_p)) { + playerMsg(sender, ChatColor.RED + "Please, don't try to report yourself."); + return true; + } + } - String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); - Utilities.reportAction(sender_p, player, report); + if (AdminList.isSuperAdmin(player)) { + playerMsg(sender, ChatColor.RED + "You can not report an admin."); + return true; + } - playerMsg(sender, ChatColor.GREEN + "Thank you, your report has been successfully logged."); + String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); + Utilities.reportAction(sender_p, player, report); - return true; - } + playerMsg(sender, ChatColor.GREEN + "Thank you, your report has been successfully logged."); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java index ed70db7..fb754ad 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.nio.file.Files; +import java.nio.file.Paths; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -8,51 +10,53 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.nio.file.Files; -import java.nio.file.Paths; - @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH) public class Command_resetplayer extends FreedomCommand { - @Override - public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if(args.length < 1) { - return false; - } - OfflinePlayer target = null; - String searchString = args[0]; + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, + String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { - if(offlinePlayer.getName().equalsIgnoreCase(searchString)) { - target = offlinePlayer; - break; - } else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) { - target = offlinePlayer; - break; - } - } + OfflinePlayer target = null; + String searchString = args[0]; - if(target == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { + if (offlinePlayer.getName().equalsIgnoreCase(searchString)) { + target = offlinePlayer; + break; + } else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) { + target = offlinePlayer; + break; + } + } - if(target.isOnline()) { - target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET."); - } + if (target == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - Utilities.adminAction(sender.getName(), String.format("Resetting %s's player data", target.getName()), true); - playerMsg(sender, String.format("Resetting %s's player data (excluding TFM)...", target.getName())); - try { - String uuid = target.getUniqueId().toString(); - Files.deleteIfExists(Paths.get(".", "world", "playerdata", uuid + ".dat")); - Files.deleteIfExists(Paths.get(".", "plugins", "Essentials", "userdata", uuid + ".yml")); - playerMsg(sender, "Done."); - } catch (Exception e) { - e.printStackTrace(); - playerMsg(sender, "Oops"); - } + if (target.isOnline()) { + target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET."); + } - return true; - } + Utilities.adminAction(sender.getName(), + String.format("Resetting %s's player data", target.getName()), true); + playerMsg(sender, + String.format("Resetting %s's player data (excluding TFM)...", target.getName())); + try { + String uuid = target.getUniqueId().toString(); + Files.deleteIfExists(Paths.get(".", "world", "playerdata", uuid + ".dat")); + Files.deleteIfExists( + Paths.get(".", "plugins", "Essentials", "userdata", uuid + ".yml")); + playerMsg(sender, "Done."); + } catch (Exception e) { + e.printStackTrace(); + playerMsg(sender, "Oops"); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ro.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ro.java index 2f1222e..eed1d55 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ro.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_ro.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil; import me.StevenLawson.TotalFreedomMod.util.Utilities; import me.StevenLawson.TotalFreedomMod.world.AdminWorld; @@ -11,113 +13,94 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = false) public class Command_ro extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1 || args.length > 3) { - return false; - } - final List materials = new ArrayList(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1 || args.length > 3) { + return false; + } - for (String materialName : StringUtils.split(args[0], ",")) { - Material fromMaterial = Material.matchMaterial(materialName); - if (fromMaterial == null) - { - try - { - fromMaterial = DeprecationUtil.getMaterial(Integer.parseInt(materialName)); - } - catch (NumberFormatException ex) - { - } - } + final List materials = new ArrayList(); - if (fromMaterial == null) - { - playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED); - return true; - } + for (String materialName : StringUtils.split(args[0], ",")) { + Material fromMaterial = Material.matchMaterial(materialName); + if (fromMaterial == null) { + try { + fromMaterial = DeprecationUtil.getMaterial(Integer.parseInt(materialName)); + } catch (NumberFormatException ex) { + } + } - materials.add(fromMaterial); - } + if (fromMaterial == null) { + playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED); + return true; + } - int radius = 20; - if (args.length >= 2) - { - try - { - radius = Math.max(1, Math.min(50, Integer.parseInt(args[1]))); - } - catch (NumberFormatException ex) - { - playerMsg(sender, "Invalid radius: " + args[1], ChatColor.RED); - return true; - } - } + materials.add(fromMaterial); + } - final Player targetPlayer; - if (args.length == 3) - { - targetPlayer = getPlayer(args[2]); - if (targetPlayer == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - } - else - { - targetPlayer = null; - } + int radius = 20; + if (args.length >= 2) { + try { + radius = Math.max(1, Math.min(50, Integer.parseInt(args[1]))); + } catch (NumberFormatException ex) { + playerMsg(sender, "Invalid radius: " + args[1], ChatColor.RED); + return true; + } + } - final String names = StringUtils.join(materials, ", "); + final Player targetPlayer; + if (args.length == 3) { + targetPlayer = getPlayer(args[2]); + if (targetPlayer == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + } else { + targetPlayer = null; + } - World adminWorld = null; - try - { - adminWorld = AdminWorld.getInstance().getWorld(); - } - catch (Exception ex) - { - } + final String names = StringUtils.join(materials, ", "); - int affected = 0; - if (targetPlayer == null) - { - Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of all players... Brace for lag!", false); + World adminWorld = null; + try { + adminWorld = AdminWorld.getInstance().getWorld(); + } catch (Exception ex) { + } - for (final Player player : server.getOnlinePlayers()) - { - if (player.getWorld() == adminWorld) - { - continue; - } + int affected = 0; + if (targetPlayer == null) { + Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius + + " blocks of all players... Brace for lag!", false); - for (final Material material : materials) - { - affected += Utilities.replaceBlocks(player.getLocation(), material, Material.AIR, radius); - } - } - } - else - { - if (targetPlayer.getWorld() != adminWorld) - { - for (Material material : materials) - { - Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of " + targetPlayer.getName(), false); - affected += Utilities.replaceBlocks(targetPlayer.getLocation(), material, Material.AIR, radius); - } - } - } + for (final Player player : server.getOnlinePlayers()) { + if (player.getWorld() == adminWorld) { + continue; + } - Utilities.adminAction(sender.getName(), "Remove complete! " + affected + " blocks removed.", false); + for (final Material material : materials) { + affected += Utilities.replaceBlocks(player.getLocation(), material, + Material.AIR, radius); + } + } + } else { + if (targetPlayer.getWorld() != adminWorld) { + for (Material material : materials) { + Utilities.adminAction(sender.getName(), + "Removing all " + names + " within " + radius + " blocks of " + + targetPlayer.getName(), false); + affected += Utilities.replaceBlocks(targetPlayer.getLocation(), material, + Material.AIR, radius); + } + } + } - return true; - } + Utilities.adminAction(sender.getName(), "Remove complete! " + affected + " blocks removed.", + false); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_saconfig.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_saconfig.java index 4f551a9..86bbe8a 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_saconfig.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_saconfig.java @@ -16,265 +16,236 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_saconfig extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - final SAConfigMode mode; - try { - mode = SAConfigMode.findMode(args, sender, senderIsConsole); - } catch (final PermissionsException ex) { - playerMsg(sender, ex.getMessage()); - return true; - } - catch (final FormatException ex) - { - playerMsg(sender, ex.getMessage()); - return false; - } - switch (mode) - { - case LIST: - { - playerMsg(sender, "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), ChatColor.GOLD); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + final SAConfigMode mode; + try { + mode = SAConfigMode.findMode(args, sender, senderIsConsole); + } catch (final PermissionsException ex) { + playerMsg(sender, ex.getMessage()); + return true; + } catch (final FormatException ex) { + playerMsg(sender, ex.getMessage()); + return false; + } - break; - } - case CLEAN: - { - Utilities.adminAction(sender.getName(), "Cleaning superadmin list", true); - AdminList.cleanSuperadminList(true); - playerMsg(sender, "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), ChatColor.YELLOW); + switch (mode) { + case LIST: { + playerMsg(sender, + "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), + ChatColor.GOLD); - break; - } - case CLEARME: - { - final Admin admin = AdminList.getEntry(sender_p); + break; + } + case CLEAN: { + Utilities.adminAction(sender.getName(), "Cleaning superadmin list", true); + AdminList.cleanSuperadminList(true); + playerMsg(sender, + "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), + ChatColor.YELLOW); - if (admin == null) - { - playerMsg(sender, "Could not find your admin entry! Please notify a developer.", ChatColor.RED); - return true; - } + break; + } + case CLEARME: { + final Admin admin = AdminList.getEntry(sender_p); - final String ip = Utilities.getIp(sender_p); + if (admin == null) { + playerMsg(sender, "Could not find your admin entry! Please notify a developer.", + ChatColor.RED); + return true; + } - if (args.length == 1) - { - Utilities.adminAction(sender.getName(), "Cleaning my supered IPs", true); + final String ip = Utilities.getIp(sender_p); - int counter = admin.getIps().size() - 1; - admin.clearIPs(); - admin.addIp(ip); + if (args.length == 1) { + Utilities.adminAction(sender.getName(), "Cleaning my supered IPs", true); - AdminList.saveAll(); + int counter = admin.getIps().size() - 1; + admin.clearIPs(); + admin.addIp(ip); - playerMsg(sender, counter + " IPs removed."); - playerMsg(sender, admin.getIps().get(0) + " is now your only IP address"); - } - else - { - if (!admin.getIps().contains(args[1])) - { - playerMsg(sender, "That IP is not registered to you."); - } - else if (ip.equals(args[1])) - { - playerMsg(sender, "You cannot remove your current IP."); - } - else - { - Utilities.adminAction(sender.getName(), "Removing a supered IP", true); + AdminList.saveAll(); - admin.removeIp(args[1]); + playerMsg(sender, counter + " IPs removed."); + playerMsg(sender, admin.getIps().get(0) + " is now your only IP address"); + } else { + if (!admin.getIps().contains(args[1])) { + playerMsg(sender, "That IP is not registered to you."); + } else if (ip.equals(args[1])) { + playerMsg(sender, "You cannot remove your current IP."); + } else { + Utilities.adminAction(sender.getName(), "Removing a supered IP", true); - AdminList.saveAll(); + admin.removeIp(args[1]); - playerMsg(sender, "Removed IP " + args[1]); - playerMsg(sender, "Current IPs: " + StringUtils.join(admin.getIps(), ", ")); - } - } + AdminList.saveAll(); - break; - } - case INFO: - { - Admin superadmin = AdminList.getEntry(args[1].toLowerCase()); + playerMsg(sender, "Removed IP " + args[1]); + playerMsg(sender, "Current IPs: " + StringUtils.join(admin.getIps(), ", ")); + } + } - if (superadmin == null) - { - final Player player = getPlayer(args[1]); - if (player != null) - { - superadmin = AdminList.getEntry(player.getName().toLowerCase()); - } - } + break; + } + case INFO: { + Admin superadmin = AdminList.getEntry(args[1].toLowerCase()); - if (superadmin == null) - { - playerMsg(sender, "Superadmin not found: " + args[1]); - } - else - { - playerMsg(sender, superadmin.toString()); - } + if (superadmin == null) { + final Player player = getPlayer(args[1]); + if (player != null) { + superadmin = AdminList.getEntry(player.getName().toLowerCase()); + } + } - break; - } - case ADD: - { - OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match. + if (superadmin == null) { + playerMsg(sender, "Superadmin not found: " + args[1]); + } else { + playerMsg(sender, superadmin.toString()); + } - if (player == null) - { - final Admin superadmin = AdminList.getEntry(args[1]); + break; + } + case ADD: { + OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match. - if (superadmin == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + if (player == null) { + final Admin superadmin = AdminList.getEntry(args[1]); - player = DeprecationUtil.getOfflinePlayer(server, superadmin.getLastLoginName()); - } + if (superadmin == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - Utilities.adminAction(sender.getName(), "Adding " + player.getName() + " to the superadmin list", true); - AdminList.addSuperadmin(player); + player = DeprecationUtil.getOfflinePlayer(server, + superadmin.getLastLoginName()); + } - if (player.isOnline()) - { - final PlayerData playerdata = PlayerData.getPlayerData(player.getPlayer()); + Utilities.adminAction(sender.getName(), + "Adding " + player.getName() + " to the superadmin list", true); + AdminList.addSuperadmin(player); - if (playerdata.isFrozen()) - { - playerdata.setFrozen(false); - playerMsg(player.getPlayer(), "You have been unfrozen."); - } - } + if (player.isOnline()) { + final PlayerData playerdata = PlayerData.getPlayerData(player.getPlayer()); - break; - } - case REMOVE: - { - String targetName = args[1]; + if (playerdata.isFrozen()) { + playerdata.setFrozen(false); + playerMsg(player.getPlayer(), "You have been unfrozen."); + } + } - final Player player = getPlayer(targetName, true); // Exact case-insensitive match. + break; + } + case REMOVE: { + String targetName = args[1]; - if (player != null) - { - targetName = player.getName(); - } + final Player player = getPlayer(targetName, true); // Exact case-insensitive match. - if (!AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase())) - { - playerMsg(sender, "Superadmin not found: " + targetName); - return true; - } + if (player != null) { + targetName = player.getName(); + } - Utilities.adminAction(sender.getName(), "Removing " + targetName + " from the superadmin list", true); - AdminList.removeSuperadmin(DeprecationUtil.getOfflinePlayer(server, targetName)); + if (!AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase())) { + playerMsg(sender, "Superadmin not found: " + targetName); + return true; + } - // Twitterbot - if (ConfigurationEntry.TWITTERBOT_ENABLED.getBoolean()) - { - TwitterHandler.delTwitterVerbose(targetName, sender); - } + Utilities.adminAction(sender.getName(), + "Removing " + targetName + " from the superadmin list", true); + AdminList.removeSuperadmin(DeprecationUtil.getOfflinePlayer(server, targetName)); - break; - } - } + // Twitterbot + if (ConfigurationEntry.TWITTERBOT_ENABLED.getBoolean()) { + TwitterHandler.delTwitterVerbose(targetName, sender); + } - return true; - } + break; + } + } - private enum SAConfigMode { - LIST("list", AdminLevel.OP, SourceType.BOTH, 1, 1), - CLEAN("clean", AdminLevel.SENIOR, SourceType.BOTH, 1, 1), - CLEARME("clearme", AdminLevel.SUPER, SourceType.ONLY_IN_GAME, 1, 2), - INFO("info", AdminLevel.SUPER, SourceType.BOTH, 2, 2), - ADD("add", AdminLevel.SUPER, SourceType.BOTH, 2, 2), - REMOVE("remove", AdminLevel.SENIOR, SourceType.BOTH, 2, 2); - private final String modeName; - private final AdminLevel adminLevel; - private final SourceType sourceType; - private final int minArgs; - private final int maxArgs; + return true; + } - SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs, int maxArgs) { - this.modeName = modeName; - this.adminLevel = adminLevel; - this.sourceType = sourceType; - this.minArgs = minArgs; - this.maxArgs = maxArgs; - } + private enum SAConfigMode { + LIST("list", AdminLevel.OP, SourceType.BOTH, 1, 1), + CLEAN("clean", AdminLevel.SENIOR, SourceType.BOTH, 1, 1), + CLEARME("clearme", AdminLevel.SUPER, SourceType.ONLY_IN_GAME, 1, 2), + INFO("info", AdminLevel.SUPER, SourceType.BOTH, 2, 2), + ADD("add", AdminLevel.SUPER, SourceType.BOTH, 2, 2), + REMOVE("remove", AdminLevel.SENIOR, SourceType.BOTH, 2, 2); + private final String modeName; + private final AdminLevel adminLevel; + private final SourceType sourceType; + private final int minArgs; + private final int maxArgs; - private static SAConfigMode findMode(final String[] args, final CommandSender sender, final boolean senderIsConsole) throws PermissionsException, FormatException - { - if (args.length == 0) - { - throw new FormatException("Invalid number of arguments."); - } + SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs, + int maxArgs) { + this.modeName = modeName; + this.adminLevel = adminLevel; + this.sourceType = sourceType; + this.minArgs = minArgs; + this.maxArgs = maxArgs; + } - boolean isSuperAdmin = AdminList.isSuperAdmin(sender); - boolean isSeniorAdmin = isSuperAdmin && AdminList.isSeniorAdmin(sender, false); + private static SAConfigMode findMode(final String[] args, final CommandSender sender, + final boolean senderIsConsole) throws PermissionsException, FormatException { + if (args.length == 0) { + throw new FormatException("Invalid number of arguments."); + } - for (final SAConfigMode mode : values()) - { - if (mode.modeName.equalsIgnoreCase(args[0])) - { - if (mode.adminLevel == AdminLevel.SUPER) { - if (!isSuperAdmin) { - throw new PermissionsException(FreedomCommand.MSG_NO_PERMS); - } - } else if (mode.adminLevel == AdminLevel.SENIOR) { - if (!isSeniorAdmin) { - throw new PermissionsException(FreedomCommand.MSG_NO_PERMS); - } - } + boolean isSuperAdmin = AdminList.isSuperAdmin(sender); + boolean isSeniorAdmin = isSuperAdmin && AdminList.isSeniorAdmin(sender, false); - if (mode.sourceType == SourceType.ONLY_IN_GAME) - { - if (senderIsConsole) - { - throw new PermissionsException("This command may only be used in-game."); - } - } - else if (mode.sourceType == SourceType.ONLY_CONSOLE) - { - if (!senderIsConsole) - { - throw new PermissionsException("This command may only be used from the console."); - } - } + for (final SAConfigMode mode : values()) { + if (mode.modeName.equalsIgnoreCase(args[0])) { + if (mode.adminLevel == AdminLevel.SUPER) { + if (!isSuperAdmin) { + throw new PermissionsException(FreedomCommand.MSG_NO_PERMS); + } + } else if (mode.adminLevel == AdminLevel.SENIOR) { + if (!isSeniorAdmin) { + throw new PermissionsException(FreedomCommand.MSG_NO_PERMS); + } + } - if (args.length >= mode.minArgs && args.length <= mode.maxArgs) - { - return mode; - } - else - { - throw new FormatException("Invalid number of arguments for mode: " + mode.modeName); - } - } - } + if (mode.sourceType == SourceType.ONLY_IN_GAME) { + if (senderIsConsole) { + throw new PermissionsException( + "This command may only be used in-game."); + } + } else if (mode.sourceType == SourceType.ONLY_CONSOLE) { + if (!senderIsConsole) { + throw new PermissionsException( + "This command may only be used from the console."); + } + } - throw new FormatException("Invalid mode."); - } - } + if (args.length >= mode.minArgs && args.length <= mode.maxArgs) { + return mode; + } else { + throw new FormatException( + "Invalid number of arguments for mode: " + mode.modeName); + } + } + } - private static class PermissionsException extends Exception - { - public PermissionsException(final String message) - { - super(message); - } - } + throw new FormatException("Invalid mode."); + } + } - private static class FormatException extends Exception - { - public FormatException(final String message) - { - super(message); - } - } + private static class PermissionsException extends Exception { + + public PermissionsException(final String message) { + super(message); + } + } + + private static class FormatException extends Exception { + + public FormatException(final String message) { + super(message); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_say.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_say.java index 17a49a7..fc9e6b1 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_say.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_say.java @@ -9,32 +9,33 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_say extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } - String message = StringUtils.join(args, " "); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - if (senderIsConsole && Utilities.isFromHostConsole(sender.getName())) { - if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked")) - { - Utilities.bcastMsg("Server is going offline.", ChatColor.GRAY); + String message = StringUtils.join(args, " "); - for (Player player : server.getOnlinePlayers()) - { - player.kickPlayer("Server is going offline, come back in about 20 seconds."); - } + if (senderIsConsole && Utilities.isFromHostConsole(sender.getName())) { + if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked")) { + Utilities.bcastMsg("Server is going offline.", ChatColor.GRAY); - server.shutdown(); + for (Player player : server.getOnlinePlayers()) { + player.kickPlayer("Server is going offline, come back in about 20 seconds."); + } - return true; - } - } + server.shutdown(); - Utilities.bcastMsg(String.format("[Server:%s] %s", sender.getName(), message), ChatColor.LIGHT_PURPLE); + return true; + } + } - return true; - } + Utilities.bcastMsg(String.format("[Server:%s] %s", sender.getName(), message), + ChatColor.LIGHT_PURPLE); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setl.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setl.java index af34f0c..424db83 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setl.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setl.java @@ -8,12 +8,15 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_setl extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 2500.", true); - for (final Player player : server.getOnlinePlayers()) { - WorldEditBridge.setLimit(player, 2500); - } - return true; - } + + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.adminAction(sender.getName(), + "Setting everyone's Worldedit block modification limit to 2500.", true); + for (final Player player : server.getOnlinePlayers()) { + WorldEditBridge.setLimit(player, 2500); + } + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlevel.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlevel.java index 01726b3..048d11a 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlevel.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlevel.java @@ -6,36 +6,34 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_setlevel extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - int new_level; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - try { - new_level = Integer.parseInt(args[0]); + int new_level; - if (new_level < 0) - { - new_level = 0; - } - else if (new_level > 50) - { - new_level = 50; - } - } - catch (NumberFormatException ex) - { - playerMsg(sender, "Invalid level.", ChatColor.RED); - return true; - } + try { + new_level = Integer.parseInt(args[0]); - sender_p.setLevel(new_level); + if (new_level < 0) { + new_level = 0; + } else if (new_level > 50) { + new_level = 50; + } + } catch (NumberFormatException ex) { + playerMsg(sender, "Invalid level.", ChatColor.RED); + return true; + } - playerMsg(sender, "You have been set to level " + Integer.toString(new_level), ChatColor.AQUA); + sender_p.setLevel(new_level); - return true; - } + playerMsg(sender, "You have been set to level " + new_level, + ChatColor.AQUA); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlever.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlever.java index 0041b36..eb10ed5 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlever.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setlever.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.List; import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil; import org.bukkit.Location; import org.bukkit.Material; @@ -8,65 +9,59 @@ import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.util.List; - @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_setlever extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 5) { - return false; - } - double x, y, z; - try { - x = Double.parseDouble(args[0]); - y = Double.parseDouble(args[1]); - z = Double.parseDouble(args[2]); - } - catch (NumberFormatException ex) - { - playerMsg(sender, "Invalid coordinates."); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 5) { + return false; + } - World world = null; - final String needleWorldName = args[3].trim(); - final List worlds = server.getWorlds(); - for (final World testWorld : worlds) - { - if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) - { - world = testWorld; - break; - } - } + double x, y, z; + try { + x = Double.parseDouble(args[0]); + y = Double.parseDouble(args[1]); + z = Double.parseDouble(args[2]); + } catch (NumberFormatException ex) { + playerMsg(sender, "Invalid coordinates."); + return true; + } - if (world == null) - { - playerMsg(sender, "Invalid world name."); - return true; - } + World world = null; + final String needleWorldName = args[3].trim(); + final List worlds = server.getWorlds(); + for (final World testWorld : worlds) { + if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) { + world = testWorld; + break; + } + } - final Location leverLocation = new Location(world, x, y, z); + if (world == null) { + playerMsg(sender, "Invalid world name."); + return true; + } - final boolean leverOn = (args[4].trim().equalsIgnoreCase("on") || args[4].trim().equalsIgnoreCase("1")); + final Location leverLocation = new Location(world, x, y, z); - final Block targetBlock = leverLocation.getBlock(); + final boolean leverOn = (args[4].trim().equalsIgnoreCase("on") || args[4].trim() + .equalsIgnoreCase("1")); - if (targetBlock.getType() == Material.LEVER) - { - org.bukkit.material.Lever lever = DeprecationUtil.makeLeverWithData(DeprecationUtil.getData_Block(targetBlock)); - lever.setPowered(leverOn); - DeprecationUtil.setData_Block(targetBlock, DeprecationUtil.getData_MaterialData(lever)); - targetBlock.getState().update(); - } - else - { - playerMsg(sender, "Target block " + targetBlock + " is not a lever."); - return true; - } + final Block targetBlock = leverLocation.getBlock(); - return true; - } + if (targetBlock.getType() == Material.LEVER) { + org.bukkit.material.Lever lever = DeprecationUtil.makeLeverWithData( + DeprecationUtil.getData_Block(targetBlock)); + lever.setPowered(leverOn); + DeprecationUtil.setData_Block(targetBlock, DeprecationUtil.getData_MaterialData(lever)); + targetBlock.getState().update(); + } else { + playerMsg(sender, "Target block " + targetBlock + " is not a lever."); + return true; + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setspawnworld.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setspawnworld.java index 1e19298..c491dc7 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setspawnworld.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_setspawnworld.java @@ -9,17 +9,22 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_setspawnworld extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Location pos = sender_p.getLocation(); - sender_p.getWorld().setSpawnLocation(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()); - playerMsg(sender, "Spawn location for this world set to: " + Utilities.formatLocation(sender_p.getWorld().getSpawnLocation())); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Location pos = sender_p.getLocation(); + sender_p.getWorld().setSpawnLocation(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()); - if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean() && ConfigurationEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) { - ProtectedArea.addProtectedArea("spawn_" + sender_p.getWorld().getName(), pos, ConfigurationEntry.PROTECTAREA_RADIUS.getDouble()); - } + playerMsg(sender, "Spawn location for this world set to: " + Utilities.formatLocation( + sender_p.getWorld().getSpawnLocation())); - return true; - } + if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean() + && ConfigurationEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) { + ProtectedArea.addProtectedArea("spawn_" + sender_p.getWorld().getName(), pos, + ConfigurationEntry.PROTECTAREA_RADIUS.getDouble()); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_smite.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_smite.java index c1049b3..9dc4144 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_smite.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_smite.java @@ -11,50 +11,50 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_smite extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - final Player player = getPlayer(args[0]); + public static void smite(final Player player) { + Utilities.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED); - if (player == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + //Deop + player.setOp(false); - smite(player); + //Set gamemode to survival: + player.setGameMode(GameMode.SURVIVAL); - return true; - } + //Clear inventory: + player.getInventory().clear(); - public static void smite(final Player player) - { - Utilities.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED); + //Strike with lightning effect: + final Location targetPos = player.getLocation(); + final World world = player.getWorld(); + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + final Location strike_pos = new Location(world, targetPos.getBlockX() + x, + targetPos.getBlockY(), targetPos.getBlockZ() + z); + world.strikeLightning(strike_pos); + } + } - //Deop - player.setOp(false); + //Kill: + player.setHealth(0.0); + } - //Set gamemode to survival: - player.setGameMode(GameMode.SURVIVAL); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - //Clear inventory: - player.getInventory().clear(); + final Player player = getPlayer(args[0]); - //Strike with lightning effect: - final Location targetPos = player.getLocation(); - final World world = player.getWorld(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { - final Location strike_pos = new Location(world, targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - world.strikeLightning(strike_pos); - } - } + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - //Kill: - player.setHealth(0.0); - } + smite(player); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_spectator.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_spectator.java index c9d2de1..67c5284 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_spectator.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_spectator.java @@ -8,49 +8,46 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_spectator extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (senderIsConsole) { - if (args.length == 0) { - sender.sendMessage("When used from the console, you must define a target user to change gamemode on."); - return true; - } - } - Player player; - if (args.length == 0) - { - player = sender_p; - } - else - { - if (args[0].equalsIgnoreCase("-a")) - { + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (senderIsConsole) { + if (args.length == 0) { + sender.sendMessage( + "When used from the console, you must define a target user to change gamemode on."); + return true; + } + } - for (Player targetPlayer : server.getOnlinePlayers()) - { - targetPlayer.setGameMode(GameMode.SPECTATOR); - } + Player player; + if (args.length == 0) { + player = sender_p; + } else { + if (args[0].equalsIgnoreCase("-a")) { - Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to spectator", false); - return true; - } + for (Player targetPlayer : server.getOnlinePlayers()) { + targetPlayer.setGameMode(GameMode.SPECTATOR); + } + Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to spectator", + false); + return true; + } - player = getPlayer(args[0]); + player = getPlayer(args[0]); - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - } + } - playerMsg(sender, "Setting " + player.getName() + " to game mode 'Spectator'."); - playerMsg(player, sender.getName() + " set your game mode to 'Spectator'."); - player.setGameMode(GameMode.SPECTATOR); + playerMsg(sender, "Setting " + player.getName() + " to game mode 'Spectator'."); + playerMsg(player, sender.getName() + " set your game mode to 'Spectator'."); + player.setGameMode(GameMode.SPECTATOR); - return true; - } + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_status.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_status.java index 8032308..b7e246e 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_status.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_status.java @@ -1,37 +1,42 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.HashMap; +import java.util.Map; import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.util.HashMap; -import java.util.Map; - @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_status extends FreedomCommand { - public static final Map SERVICE_MAP = new HashMap(); - static { - SERVICE_MAP.put("minecraft.net", "Minecraft.net"); - SERVICE_MAP.put("login.minecraft.net", "Minecraft Logins"); - SERVICE_MAP.put("session.minecraft.net", "Minecraft Multiplayer Sessions"); - SERVICE_MAP.put("account.mojang.com", "Mojang Accounts Website"); - SERVICE_MAP.put("auth.mojang.com", "Mojang Accounts Login"); - SERVICE_MAP.put("skins.minecraft.net", "Minecraft Skins"); - } + public static final Map SERVICE_MAP = new HashMap(); - @Override - public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - playerMsg(sender, "For information about TotalFreedomMod, try /tfm", ChatColor.GREEN); // Temporary + static { + SERVICE_MAP.put("minecraft.net", "Minecraft.net"); + SERVICE_MAP.put("login.minecraft.net", "Minecraft Logins"); + SERVICE_MAP.put("session.minecraft.net", "Minecraft Multiplayer Sessions"); + SERVICE_MAP.put("account.mojang.com", "Mojang Accounts Website"); + SERVICE_MAP.put("auth.mojang.com", "Mojang Accounts Login"); + SERVICE_MAP.put("skins.minecraft.net", "Minecraft Skins"); + } - playerMsg(sender, "Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" : "false") + "'.", ChatColor.YELLOW); - playerMsg(sender, "Loaded worlds:", ChatColor.BLUE); - int i = 0; - for (World world : server.getWorlds()) { - playerMsg(sender, String.format("World %d: %s - %d players.", i++, world.getName(), world.getPlayers().size()), ChatColor.BLUE); - } + @Override + public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + playerMsg(sender, "For information about TotalFreedomMod, try /tfm", + ChatColor.GREEN); // Temporary - return true; - } + playerMsg(sender, + "Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" + : "false") + "'.", ChatColor.YELLOW); + playerMsg(sender, "Loaded worlds:", ChatColor.BLUE); + int i = 0; + for (World world : server.getWorlds()) { + playerMsg(sender, String.format("World %d: %s - %d players.", i++, world.getName(), + world.getPlayers().size()), ChatColor.BLUE); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stfu.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stfu.java index 04a472d..27dff59 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stfu.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stfu.java @@ -9,102 +9,83 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_stfu extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0 || args.length > 2) { - return false; - } - if (args[0].equalsIgnoreCase("list")) { - playerMsg(sender, "Muted players:"); - PlayerData info; - int count = 0; - for (Player mp : server.getOnlinePlayers()) - { - info = PlayerData.getPlayerData(mp); - if (info.isMuted()) - { - playerMsg(sender, "- " + mp.getName()); - count++; - } - } - if (count == 0) - { - playerMsg(sender, "- none"); - } - } - else if (args[0].equalsIgnoreCase("purge")) - { - Utilities.adminAction(sender.getName(), "Unmuting all players.", true); - PlayerData info; - int count = 0; - for (Player mp : server.getOnlinePlayers()) - { - info = PlayerData.getPlayerData(mp); - if (info.isMuted()) - { - info.setMuted(false); - count++; - } - } - playerMsg(sender, "Unmuted " + count + " players."); - } - else if (args[0].equalsIgnoreCase("all")) - { - Utilities.adminAction(sender.getName(), "Muting all non-Superadmins", true); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0 || args.length > 2) { + return false; + } - PlayerData playerdata; - int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (!AdminList.isSuperAdmin(player)) - { - playerdata = PlayerData.getPlayerData(player); - playerdata.setMuted(true); - counter++; - } - } + if (args[0].equalsIgnoreCase("list")) { + playerMsg(sender, "Muted players:"); + PlayerData info; + int count = 0; + for (Player mp : server.getOnlinePlayers()) { + info = PlayerData.getPlayerData(mp); + if (info.isMuted()) { + playerMsg(sender, "- " + mp.getName()); + count++; + } + } + if (count == 0) { + playerMsg(sender, "- none"); + } + } else if (args[0].equalsIgnoreCase("purge")) { + Utilities.adminAction(sender.getName(), "Unmuting all players.", true); + PlayerData info; + int count = 0; + for (Player mp : server.getOnlinePlayers()) { + info = PlayerData.getPlayerData(mp); + if (info.isMuted()) { + info.setMuted(false); + count++; + } + } + playerMsg(sender, "Unmuted " + count + " players."); + } else if (args[0].equalsIgnoreCase("all")) { + Utilities.adminAction(sender.getName(), "Muting all non-Superadmins", true); - playerMsg(sender, "Muted " + counter + " players."); - } - else - { - final Player player = getPlayer(args[0]); + PlayerData playerdata; + int counter = 0; + for (Player player : server.getOnlinePlayers()) { + if (!AdminList.isSuperAdmin(player)) { + playerdata = PlayerData.getPlayerData(player); + playerdata.setMuted(true); + counter++; + } + } - if (player == null) - { - sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + playerMsg(sender, "Muted " + counter + " players."); + } else { + final Player player = getPlayer(args[0]); - PlayerData playerdata = PlayerData.getPlayerData(player); - if (playerdata.isMuted()) - { - Utilities.adminAction(sender.getName(), "Unmuting " + player.getName(), true); - playerdata.setMuted(false); - playerMsg(sender, "Unmuted " + player.getName()); - } - else - { - if (!AdminList.isSuperAdmin(player)) - { - Utilities.adminAction(sender.getName(), "Muting " + player.getName(), true); - playerdata.setMuted(true); + if (player == null) { + sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - if (args.length == 2 && args[1].equalsIgnoreCase("-s")) - { - Command_smite.smite(player); - } + PlayerData playerdata = PlayerData.getPlayerData(player); + if (playerdata.isMuted()) { + Utilities.adminAction(sender.getName(), "Unmuting " + player.getName(), true); + playerdata.setMuted(false); + playerMsg(sender, "Unmuted " + player.getName()); + } else { + if (!AdminList.isSuperAdmin(player)) { + Utilities.adminAction(sender.getName(), "Muting " + player.getName(), true); + playerdata.setMuted(true); - playerMsg(sender, "Muted " + player.getName()); - } - else - { - playerMsg(sender, player.getName() + " is a superadmin, and can't be muted."); - } - } - } + if (args.length == 2 && args[1].equalsIgnoreCase("-s")) { + Command_smite.smite(player); + } - return true; - } + playerMsg(sender, "Muted " + player.getName()); + } else { + playerMsg(sender, player.getName() + " is a superadmin, and can't be muted."); + } + } + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stop.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stop.java index c57446a..0c0715e 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stop.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_stop.java @@ -8,16 +8,18 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_stop extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE); - for (Player player : server.getOnlinePlayers()) { - player.kickPlayer("Server is going offline, come back in about 20 seconds."); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE); - server.shutdown(); + for (Player player : server.getOnlinePlayers()) { + player.kickPlayer("Server is going offline, come back in about 20 seconds."); + } - return true; - } + server.shutdown(); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_survival.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_survival.java index 94b042e..f221798 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_survival.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_survival.java @@ -9,61 +9,55 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_survival extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (senderIsConsole) { - if (args.length == 0) { - playerMsg(sender, "When used from the console, you must define a target user to change gamemode on."); - return true; - } - } - Player player; + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (senderIsConsole) { + if (args.length == 0) { + playerMsg(sender, + "When used from the console, you must define a target user to change gamemode on."); + return true; + } + } - if (args.length == 0) - { - player = sender_p; - } - else - { - if (args[0].equalsIgnoreCase("-a")) - { - if (!AdminList.isSuperAdmin(sender) || senderIsConsole) - { - sender.sendMessage(FreedomCommand.MSG_NO_PERMS); - return true; - } + Player player; - for (Player targetPlayer : server.getOnlinePlayers()) - { - targetPlayer.setGameMode(GameMode.SURVIVAL); - } + if (args.length == 0) { + player = sender_p; + } else { + if (args[0].equalsIgnoreCase("-a")) { + if (!AdminList.isSuperAdmin(sender) || senderIsConsole) { + sender.sendMessage(FreedomCommand.MSG_NO_PERMS); + return true; + } - Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to survival", false); - return true; - } + for (Player targetPlayer : server.getOnlinePlayers()) { + targetPlayer.setGameMode(GameMode.SURVIVAL); + } - if (senderIsConsole || AdminList.isSuperAdmin(sender)) - { - player = getPlayer(args[0]); + Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to survival", + false); + return true; + } - if (player == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - } - else - { - playerMsg(sender, "Only superadmins can change other user's gamemode."); - return true; - } - } + if (senderIsConsole || AdminList.isSuperAdmin(sender)) { + player = getPlayer(args[0]); - playerMsg(sender, "Setting " + player.getName() + " to game mode 'Survival'."); - player.sendMessage(sender.getName() + " set your game mode to 'Survival'."); - player.setGameMode(GameMode.SURVIVAL); + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + } else { + playerMsg(sender, "Only superadmins can change other user's gamemode."); + return true; + } + } - return true; - } + playerMsg(sender, "Setting " + player.getName() + " to game mode 'Survival'."); + player.sendMessage(sender.getName() + " set your game mode to 'Survival'."); + player.setGameMode(GameMode.SURVIVAL); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java index 797fb4d..dad81d2 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.Arrays; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.TagConfiguration; import me.StevenLawson.TotalFreedomMod.player.PlayerData; @@ -10,206 +12,185 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.Arrays; -import java.util.List; - @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_tag extends FreedomCommand { - public static final List FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator", "developer", "console"); - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 1) { - if ("list".equalsIgnoreCase(args[0])) { - playerMsg(sender, "Tags for all online players:"); + public static final List FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator", + "developer", "console"); - for (final Player player : server.getOnlinePlayers()) { - final PlayerData playerdata = PlayerData.getPlayerData(player); - if (playerdata.getTag() != null) - { - playerMsg(sender, player.getName() + ": " + playerdata.getTag()); - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 1) { + if ("list".equalsIgnoreCase(args[0])) { + playerMsg(sender, "Tags for all online players:"); - return true; - } - else if ("clearall".equalsIgnoreCase(args[0])) - { - if (!AdminList.isSuperAdmin(sender)) - { - playerMsg(sender, FreedomCommand.MSG_NO_PERMS); - return true; - } + for (final Player player : server.getOnlinePlayers()) { + final PlayerData playerdata = PlayerData.getPlayerData(player); + if (playerdata.getTag() != null) { + playerMsg(sender, player.getName() + ": " + playerdata.getTag()); + } + } - Utilities.adminAction(sender.getName(), "Removing all tags", false); + return true; + } else if ("clearall".equalsIgnoreCase(args[0])) { + if (!AdminList.isSuperAdmin(sender)) { + playerMsg(sender, FreedomCommand.MSG_NO_PERMS); + return true; + } - int count = 0; - for (final Player player : server.getOnlinePlayers()) - { - final PlayerData playerdata = PlayerData.getPlayerData(player); - if (playerdata.getTag() != null) - { - count++; - if(TagConfiguration.getTag(playerdata.getUniqueId().toString()) != null){ - String playerTag = TagConfiguration.getTag(playerdata.getUniqueId().toString()); - if(!"".equalsIgnoreCase(playerTag)){ - TagConfiguration.saveTag(sender_p.getUniqueId().toString(), ""); - } - } - playerdata.setTag(null); - } - } + Utilities.adminAction(sender.getName(), "Removing all tags", false); - playerMsg(sender, count + " tag(s) removed."); + int count = 0; + for (final Player player : server.getOnlinePlayers()) { + final PlayerData playerdata = PlayerData.getPlayerData(player); + if (playerdata.getTag() != null) { + count++; + if (TagConfiguration.getTag(playerdata.getUniqueId().toString()) != null) { + String playerTag = TagConfiguration.getTag( + playerdata.getUniqueId().toString()); + if (!"".equalsIgnoreCase(playerTag)) { + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), ""); + } + } + playerdata.setTag(null); + } + } - return true; - } - else if ("off".equalsIgnoreCase(args[0])) - { - if (senderIsConsole) - { - playerMsg(sender, "\"/tag off\" can't be used from the console. Use \"/tag clear \" or \"/tag clearall\" instead."); - } - else - { - PlayerData.getPlayerData(sender_p).setTag(null); - if(TagConfiguration.getTag(sender_p.getUniqueId().toString()) != null){ - String playerTag = TagConfiguration.getTag(sender_p.getUniqueId().toString()); - if(!"".equalsIgnoreCase(playerTag)){ - TagConfiguration.saveTag(sender_p.getUniqueId().toString(), ""); - } - } - playerMsg(sender, "Your tag has been removed."); - } + playerMsg(sender, count + " tag(s) removed."); - return true; - } - else - { - return false; - } - } - else if (args.length >= 2) - { - if ("clear".equalsIgnoreCase(args[0])) - { - if (!AdminList.isSuperAdmin(sender)) - { - playerMsg(sender, FreedomCommand.MSG_NO_PERMS); - return true; - } + return true; + } else if ("off".equalsIgnoreCase(args[0])) { + if (senderIsConsole) { + playerMsg(sender, + "\"/tag off\" can't be used from the console. Use \"/tag clear \" or \"/tag clearall\" instead."); + } else { + PlayerData.getPlayerData(sender_p).setTag(null); + if (TagConfiguration.getTag(sender_p.getUniqueId().toString()) != null) { + String playerTag = TagConfiguration.getTag( + sender_p.getUniqueId().toString()); + if (!"".equalsIgnoreCase(playerTag)) { + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), ""); + } + } + playerMsg(sender, "Your tag has been removed."); + } - final Player player = getPlayer(args[1]); - if (player == null) - { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - PlayerData.getPlayerData(player).setTag(null); - if(TagConfiguration.getTag(player.getUniqueId().toString()) != null){ - String playerTag = TagConfiguration.getTag(player.getUniqueId().toString()); - if(!"".equalsIgnoreCase(playerTag)){ - TagConfiguration.saveTag(player.getUniqueId().toString(), ""); - } - } - playerMsg(sender, "Removed " + player.getName() + "'s tag."); + return true; + } else { + return false; + } + } else if (args.length >= 2) { + if ("clear".equalsIgnoreCase(args[0])) { + if (!AdminList.isSuperAdmin(sender)) { + playerMsg(sender, FreedomCommand.MSG_NO_PERMS); + return true; + } - return true; - } - else if ("set".equalsIgnoreCase(args[0])) - { - final String inputTag = StringUtils.join(args, " ", 1, args.length); - final String outputTag = Utilities.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag), - new String[] - { - "" + ChatColor.COLOR_CHAR, "&k" - }, - new String[] - { - "", "" - })) + ChatColor.RESET; + final Player player = getPlayer(args[1]); + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + PlayerData.getPlayerData(player).setTag(null); + if (TagConfiguration.getTag(player.getUniqueId().toString()) != null) { + String playerTag = TagConfiguration.getTag(player.getUniqueId().toString()); + if (!"".equalsIgnoreCase(playerTag)) { + TagConfiguration.saveTag(player.getUniqueId().toString(), ""); + } + } + playerMsg(sender, "Removed " + player.getName() + "'s tag."); - if (!AdminList.isSuperAdmin(sender)) - { - final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); + return true; + } else if ("set".equalsIgnoreCase(args[0])) { + final String inputTag = StringUtils.join(args, " ", 1, args.length); + final String outputTag = Utilities.colorize( + StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag), + new String[] + { + "" + ChatColor.COLOR_CHAR, "&k" + }, + new String[] + { + "", "" + })) + ChatColor.RESET; - if (rawTag.length() > 20) - { - playerMsg(sender, "That tag is too long (Max is 20 characters)."); - return true; - } + if (!AdminList.isSuperAdmin(sender)) { + final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); - for (String word : FORBIDDEN_WORDS) - { - if (rawTag.contains(word)) - { - { - if(word.equals("developer") && Utilities.DEVELOPERS.contains(sender_p.getName())) { - PlayerData.getPlayerData(sender_p).setTag(outputTag); - playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'."); - } else - playerMsg(sender, "That tag contains a forbidden word."); - return true; - } - } - } - } + if (rawTag.length() > 20) { + playerMsg(sender, "That tag is too long (Max is 20 characters)."); + return true; + } - PlayerData.getPlayerData(sender_p).setTag(outputTag); - playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'."); + for (String word : FORBIDDEN_WORDS) { + if (rawTag.contains(word)) { + { + if (word.equals("developer") && Utilities.DEVELOPERS.contains( + sender_p.getName())) { + PlayerData.getPlayerData(sender_p).setTag(outputTag); + playerMsg(sender, + "Tag set to '" + outputTag + ChatColor.GRAY + "'."); + } else { + playerMsg(sender, "That tag contains a forbidden word."); + } + return true; + } + } + } + } - return true; - } - else if ("-s".equalsIgnoreCase(args[0]) && "set".equalsIgnoreCase(args[1])) - { - final String inputTag = StringUtils.join(args, " ", 2, args.length); - final String outputTag = Utilities.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag), - new String[] - { - "" + ChatColor.COLOR_CHAR, "&k" - }, - new String[] - { - "", "" - })) + ChatColor.RESET; + PlayerData.getPlayerData(sender_p).setTag(outputTag); + playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'."); - if (!AdminList.isSuperAdmin(sender)) - { - final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); + return true; + } else if ("-s".equalsIgnoreCase(args[0]) && "set".equalsIgnoreCase(args[1])) { + final String inputTag = StringUtils.join(args, " ", 2, args.length); + final String outputTag = Utilities.colorize( + StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag), + new String[] + { + "" + ChatColor.COLOR_CHAR, "&k" + }, + new String[] + { + "", "" + })) + ChatColor.RESET; - if (rawTag.length() > 20) - { - playerMsg(sender, "That tag is too long (Max is 20 characters)."); - return true; - } + if (!AdminList.isSuperAdmin(sender)) { + final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); - for (String word : FORBIDDEN_WORDS) - { - if (rawTag.contains(word)) - { - if(word.equals("developer") && Utilities.DEVELOPERS.contains(sender_p.getName())) { - PlayerData.getPlayerData(sender_p).setTag(outputTag); - TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag); - playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)"); - } else - playerMsg(sender, "That tag contains a forbidden word."); - return true; - } - } - } + if (rawTag.length() > 20) { + playerMsg(sender, "That tag is too long (Max is 20 characters)."); + return true; + } - PlayerData.getPlayerData(sender_p).setTag(outputTag); - TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag); - playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)"); - return true; - } else - { - return false; - } - } - else - { - return false; - } - } + for (String word : FORBIDDEN_WORDS) { + if (rawTag.contains(word)) { + if (word.equals("developer") && Utilities.DEVELOPERS.contains( + sender_p.getName())) { + PlayerData.getPlayerData(sender_p).setTag(outputTag); + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), + outputTag); + playerMsg(sender, + "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)"); + } else { + playerMsg(sender, "That tag contains a forbidden word."); + } + return true; + } + } + } + + PlayerData.getPlayerData(sender_p).setTag(outputTag); + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag); + playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)"); + return true; + } else { + return false; + } + } else { + return false; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tagnyan.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tagnyan.java index 40c34ea..1fd1425 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tagnyan.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tagnyan.java @@ -9,23 +9,26 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_tagnyan extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - final StringBuilder tag = new StringBuilder(); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - for (char c : ChatColor.stripColor(Utilities.colorize(StringUtils.join(args, " "))).toCharArray()) { - tag.append(Utilities.randomChatColor()).append(c); - } + final StringBuilder tag = new StringBuilder(); - final PlayerData data = PlayerData.getPlayerData(sender_p); - data.setTag(tag.toString()); + for (char c : ChatColor.stripColor(Utilities.colorize(StringUtils.join(args, " "))) + .toCharArray()) { + tag.append(Utilities.randomChatColor()).append(c); + } - playerMsg(sender, "Set tag to " + tag); + final PlayerData data = PlayerData.getPlayerData(sender_p); + data.setTag(tag.toString()); - return true; - } + playerMsg(sender, "Set tag to " + tag); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tban.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tban.java index d4ba73c..9fdea62 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tban.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tban.java @@ -12,38 +12,45 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_tban extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length != 1) { - return false; - } - final Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } - if (player == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); - return true; - } + final Player player = getPlayer(args[0]); - // strike with lightning effect: - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { - final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - targetPos.getWorld().strikeLightning(strike_pos); - } - } + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } - Utilities.adminAction(sender.getName(), "Tempbanning: " + player.getName() + " for 5 minutes.", true); - BanManager.addUuidBan( - new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), Utilities.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes.")); - BanManager.addIpBan( - new Ban(Utilities.getIp(player), player.getName(), sender.getName(), Utilities.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes.")); + // strike with lightning effect: + final Location targetPos = player.getLocation(); + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + final Location strike_pos = new Location(targetPos.getWorld(), + targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); + targetPos.getWorld().strikeLightning(strike_pos); + } + } - player.kickPlayer(ChatColor.RED + "You have been temporarily banned for five minutes. Please read totalfreedom.me for more info."); + Utilities.adminAction(sender.getName(), + "Tempbanning: " + player.getName() + " for 5 minutes.", true); + BanManager.addUuidBan( + new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), + Utilities.parseDateOffset("5m"), + ChatColor.RED + "You have been temporarily banned for 5 minutes.")); + BanManager.addIpBan( + new Ban(Utilities.getIp(player), player.getName(), sender.getName(), + Utilities.parseDateOffset("5m"), + ChatColor.RED + "You have been temporarily banned for 5 minutes.")); - return true; - } + player.kickPlayer(ChatColor.RED + + "You have been temporarily banned for five minutes. Please read totalfreedom.me for more info."); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tempban.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tempban.java index ba009cd..d4e1f53 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tempban.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tempban.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.text.SimpleDateFormat; +import java.util.Date; import me.StevenLawson.TotalFreedomMod.ban.Ban; import me.StevenLawson.TotalFreedomMod.ban.BanManager; import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; @@ -11,64 +13,64 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.text.SimpleDateFormat; -import java.util.Date; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_tempban extends FreedomCommand { - private static final SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } + private static final SimpleDateFormat date_format = new SimpleDateFormat( + "yyyy-MM-dd 'at' HH:mm:ss z"); - final Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - if (player == null) { - playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); - return true; - } + final Player player = getPlayer(args[0]); - final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName()); + if (player == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } - Date expires = Utilities.parseDateOffset("30m"); - if (args.length >= 2) - { - Date parsed_offset = Utilities.parseDateOffset(args[1]); - if (parsed_offset != null) - { - expires = parsed_offset; - } - } - message.append(" until ").append(date_format.format(expires)); + final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName()); - String reason = "Banned by " + sender.getName(); - if (args.length >= 3) - { - reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")"; - message.append(", Reason: \"").append(reason).append("\""); - } + Date expires = Utilities.parseDateOffset("30m"); + if (args.length >= 2) { + Date parsed_offset = Utilities.parseDateOffset(args[1]); + if (parsed_offset != null) { + expires = parsed_offset; + } + } + message.append(" until ").append(date_format.format(expires)); - // strike with lightning effect: - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { - final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - targetPos.getWorld().strikeLightning(strike_pos); - } - } + String reason = "Banned by " + sender.getName(); + if (args.length >= 3) { + reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + + sender.getName() + ")"; + message.append(", Reason: \"").append(reason).append("\""); + } - Utilities.adminAction(sender.getName(), message.toString(), true); + // strike with lightning effect: + final Location targetPos = player.getLocation(); + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + final Location strike_pos = new Location(targetPos.getWorld(), + targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); + targetPos.getWorld().strikeLightning(strike_pos); + } + } - BanManager.addIpBan(new Ban(Utilities.getIp(player), player.getName(), sender.getName(), expires, reason)); - BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), expires, reason)); + Utilities.adminAction(sender.getName(), message.toString(), true); - player.kickPlayer(sender.getName() + " - " + message); + BanManager.addIpBan( + new Ban(Utilities.getIp(player), player.getName(), sender.getName(), expires, reason)); + BanManager.addUuidBan( + new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), expires, + reason)); - return true; - } + player.kickPlayer(sender.getName() + " - " + message); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfbanlist.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfbanlist.java index ae000be..4e6ad65 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfbanlist.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfbanlist.java @@ -10,32 +10,31 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_tfbanlist extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 0) { - if (args[0].equalsIgnoreCase("purge")) { - if (senderIsConsole || AdminList.isSuperAdmin(sender)) { - try { - Utilities.adminAction(sender.getName(), "Purging the ban list", true); - BanManager.purgeUuidBans(); - sender.sendMessage(ChatColor.GRAY + "Ban list has been purged."); - } - catch (Exception ex) - { - Log.severe(ex); - } - return true; - } - else - { - playerMsg(sender, "You do not have permission to purge the ban list, you may only view it."); - } - } - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { + if (args[0].equalsIgnoreCase("purge")) { + if (senderIsConsole || AdminList.isSuperAdmin(sender)) { + try { + Utilities.adminAction(sender.getName(), "Purging the ban list", true); + BanManager.purgeUuidBans(); + sender.sendMessage(ChatColor.GRAY + "Ban list has been purged."); + } catch (Exception ex) { + Log.severe(ex); + } - playerMsg(sender, BanManager.getUuidBanList().size() + " UUID bans total"); + return true; + } else { + playerMsg(sender, + "You do not have permission to purge the ban list, you may only view it."); + } + } + } - return true; - } + playerMsg(sender, BanManager.getUuidBanList().size() + " UUID bans total"); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfipbanlist.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfipbanlist.java index 92ce4bf..a51a3ae 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfipbanlist.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfipbanlist.java @@ -10,33 +10,32 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_tfipbanlist extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 0) { - if (args[0].equalsIgnoreCase("purge")) { - if (senderIsConsole || AdminList.isSuperAdmin(sender)) { - try { - BanManager.purgeIpBans(); - Utilities.adminAction(sender.getName(), "Purging the IP ban list", true); - sender.sendMessage(ChatColor.GRAY + "IP ban list has been purged."); - } - catch (Exception ex) - { - Log.severe(ex); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { + if (args[0].equalsIgnoreCase("purge")) { + if (senderIsConsole || AdminList.isSuperAdmin(sender)) { + try { + BanManager.purgeIpBans(); + Utilities.adminAction(sender.getName(), "Purging the IP ban list", true); - return true; - } - else - { - playerMsg(sender, "You do not have permission to purge the IP ban list, you may only view it."); - } - } - } + sender.sendMessage(ChatColor.GRAY + "IP ban list has been purged."); + } catch (Exception ex) { + Log.severe(ex); + } - playerMsg(sender, BanManager.getIpBanList().size() + " IPbans total"); + return true; + } else { + playerMsg(sender, + "You do not have permission to purge the IP ban list, you may only view it."); + } + } + } - return true; - } + playerMsg(sender, BanManager.getIpBanList().size() + " IPbans total"); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfm.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfm.java index 6e88537..1b12d67 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfm.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tfm.java @@ -19,48 +19,52 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) @CommandParameters(description = "Shows information about TotalFreedomMod or reloads it", usage = "/ [reload]") public class Command_tfm extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 1) { - if (!args[0].equals("reload")) { - return false; - } - if (!AdminList.isSuperAdmin(sender)) { - playerMsg(FreedomCommand.MSG_NO_PERMS); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 1) { + if (!args[0].equals("reload")) { + return false; + } - MainConfig.load(); - AdminList.load(); - PermbanList.load(); - PlayerList.load(); - BanManager.load(); - CommandBlocker.load(); + if (!AdminList.isSuperAdmin(sender)) { + playerMsg(FreedomCommand.MSG_NO_PERMS); + return true; + } - final String message = String.format("%s v%s.%s reloaded.", - TotalFreedomMod.pluginName, - TotalFreedomMod.pluginVersion, - TotalFreedomMod.buildNumber); + MainConfig.load(); + AdminList.load(); + PermbanList.load(); + PlayerList.load(); + BanManager.load(); + CommandBlocker.load(); - playerMsg(message); - Log.info(message); - return true; - } + final String message = String.format("%s v%s.%s reloaded.", + TotalFreedomMod.pluginName, + TotalFreedomMod.pluginVersion, + TotalFreedomMod.buildNumber); - playerMsg("TotalFreedomMod for 'Total Freedom', the original all-op server.", ChatColor.GOLD); - playerMsg(String.format("Version " - + ChatColor.BLUE + "%s.%s" + ChatColor.GOLD + ", built " - + ChatColor.BLUE + "%s" + ChatColor.GOLD + " by " - + ChatColor.BLUE + "%s" + ChatColor.GOLD + ".", - TotalFreedomMod.pluginVersion, - TotalFreedomMod.buildNumber, - TotalFreedomMod.buildDate, - TotalFreedomMod.buildCreator), ChatColor.GOLD); - playerMsg("Running on " + ConfigurationEntry.SERVER_NAME.getString() + ".", ChatColor.GOLD); - playerMsg("Created by Madgeek1450 and Prozza.", ChatColor.GOLD); - playerMsg("Visit " + ChatColor.AQUA + "http://totalfreedom.me/" + ChatColor.GREEN + " for more information.", ChatColor.GREEN); + playerMsg(message); + Log.info(message); + return true; + } - return true; - } + playerMsg("TotalFreedomMod for 'Total Freedom', the original all-op server.", + ChatColor.GOLD); + playerMsg(String.format("Version " + + ChatColor.BLUE + "%s.%s" + ChatColor.GOLD + ", built " + + ChatColor.BLUE + "%s" + ChatColor.GOLD + " by " + + ChatColor.BLUE + "%s" + ChatColor.GOLD + ".", + TotalFreedomMod.pluginVersion, + TotalFreedomMod.buildNumber, + TotalFreedomMod.buildDate, + TotalFreedomMod.buildCreator), ChatColor.GOLD); + playerMsg("Running on " + ConfigurationEntry.SERVER_NAME.getString() + ".", ChatColor.GOLD); + playerMsg("Created by Madgeek1450 and Prozza.", ChatColor.GOLD); + playerMsg("Visit " + ChatColor.AQUA + "http://totalfreedom.me/" + ChatColor.GREEN + + " for more information.", ChatColor.GREEN); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_toggle.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_toggle.java index f5e3603..9d8ba5b 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_toggle.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_toggle.java @@ -10,150 +10,136 @@ import org.bukkit.command.CommandSender; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_toggle extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - playerMsg(sender, "Available toggles: "); - playerMsg(sender, "- waterplace"); - playerMsg(sender, "- fireplace"); - playerMsg(sender, "- lavaplace"); - playerMsg(sender, "- fluidspread"); - playerMsg(sender, "- lavadmg"); - playerMsg(sender, "- firespread"); - playerMsg(sender, "- prelog"); - playerMsg(sender, "- lockdown"); - playerMsg(sender, "- petprotect"); - playerMsg(sender, "- droptoggle"); - playerMsg(sender, "- nonuke"); - playerMsg(sender, "- explosives"); - return false; - } - if (args[0].equals("waterplace")) - { - toggle(sender, "Water placement is", ConfigurationEntry.ALLOW_WATER_PLACE); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + playerMsg(sender, "Available toggles: "); + playerMsg(sender, "- waterplace"); + playerMsg(sender, "- fireplace"); + playerMsg(sender, "- lavaplace"); + playerMsg(sender, "- fluidspread"); + playerMsg(sender, "- lavadmg"); + playerMsg(sender, "- firespread"); + playerMsg(sender, "- prelog"); + playerMsg(sender, "- lockdown"); + playerMsg(sender, "- petprotect"); + playerMsg(sender, "- droptoggle"); + playerMsg(sender, "- nonuke"); + playerMsg(sender, "- explosives"); + return false; + } - if (args[0].equals("fireplace")) - { - toggle(sender, "Fire placement is", ConfigurationEntry.ALLOW_FIRE_PLACE); - return true; - } + if (args[0].equals("waterplace")) { + toggle(sender, "Water placement is", ConfigurationEntry.ALLOW_WATER_PLACE); + return true; + } - if (args[0].equals("lavaplace")) - { - toggle(sender, "Lava placement is", ConfigurationEntry.ALLOW_LAVA_PLACE); - return true; - } + if (args[0].equals("fireplace")) { + toggle(sender, "Fire placement is", ConfigurationEntry.ALLOW_FIRE_PLACE); + return true; + } - if (args[0].equals("fluidspread")) - { - toggle(sender, "Fluid spread is", ConfigurationEntry.ALLOW_FLUID_SPREAD); - return true; - } + if (args[0].equals("lavaplace")) { + toggle(sender, "Lava placement is", ConfigurationEntry.ALLOW_LAVA_PLACE); + return true; + } - if (args[0].equals("lavadmg")) - { - toggle(sender, "Lava damage is", ConfigurationEntry.ALLOW_LAVA_DAMAGE); - return true; - } + if (args[0].equals("fluidspread")) { + toggle(sender, "Fluid spread is", ConfigurationEntry.ALLOW_FLUID_SPREAD); + return true; + } - if (args[0].equals("firespread")) - { - toggle(sender, "Fire spread is", ConfigurationEntry.ALLOW_FIRE_SPREAD); - GameRuleHandler.setGameRule(TFM_GameRule.DO_FIRE_TICK, ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean()); - return true; - } + if (args[0].equals("lavadmg")) { + toggle(sender, "Lava damage is", ConfigurationEntry.ALLOW_LAVA_DAMAGE); + return true; + } - if (args[0].equals("prelog")) - { - toggle(sender, "Command prelogging is", ConfigurationEntry.ENABLE_PREPROCESS_LOG); - return true; - } + if (args[0].equals("firespread")) { + toggle(sender, "Fire spread is", ConfigurationEntry.ALLOW_FIRE_SPREAD); + GameRuleHandler.setGameRule(TFM_GameRule.DO_FIRE_TICK, + ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean()); + return true; + } - if (args[0].equals("lockdown")) - { - Utilities.adminAction(sender.getName(), (TotalFreedomMod.lockdownEnabled ? "De-a" : "A") + "ctivating server lockdown", true); - TotalFreedomMod.lockdownEnabled = !TotalFreedomMod.lockdownEnabled; - return true; - } + if (args[0].equals("prelog")) { + toggle(sender, "Command prelogging is", ConfigurationEntry.ENABLE_PREPROCESS_LOG); + return true; + } - if (args[0].equals("petprotect")) - { - toggle(sender, "Tamed pet protection is", ConfigurationEntry.ENABLE_PET_PROTECT); - return true; - } + if (args[0].equals("lockdown")) { + Utilities.adminAction(sender.getName(), + (TotalFreedomMod.lockdownEnabled ? "De-a" : "A") + "ctivating server lockdown", + true); + TotalFreedomMod.lockdownEnabled = !TotalFreedomMod.lockdownEnabled; + return true; + } - if (args[0].equals("droptoggle")) - { - toggle(sender, "Automatic entity wiping is", ConfigurationEntry.AUTO_ENTITY_WIPE); - return true; - } + if (args[0].equals("petprotect")) { + toggle(sender, "Tamed pet protection is", ConfigurationEntry.ENABLE_PET_PROTECT); + return true; + } - if (args[0].equals("nonuke")) - { - if (args.length >= 2) - { - try - { - ConfigurationEntry.NUKE_MONITOR_RANGE.setDouble(Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1])))); - } - catch (NumberFormatException nfex) - { - } - } + if (args[0].equals("droptoggle")) { + toggle(sender, "Automatic entity wiping is", ConfigurationEntry.AUTO_ENTITY_WIPE); + return true; + } - if (args.length >= 3) - { - try - { - ConfigurationEntry.NUKE_MONITOR_COUNT_BREAK.setInteger(Math.max(1, Math.min(500, Integer.parseInt(args[2])))); - } - catch (NumberFormatException nfex) - { - } - } + if (args[0].equals("nonuke")) { + if (args.length >= 2) { + try { + ConfigurationEntry.NUKE_MONITOR_RANGE.setDouble( + Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1])))); + } catch (NumberFormatException nfex) { + } + } - toggle(sender, "Nuke monitor is", ConfigurationEntry.NUKE_MONITOR_ENABLED); + if (args.length >= 3) { + try { + ConfigurationEntry.NUKE_MONITOR_COUNT_BREAK.setInteger( + Math.max(1, Math.min(500, Integer.parseInt(args[2])))); + } catch (NumberFormatException nfex) { + } + } - if (ConfigurationEntry.NUKE_MONITOR_ENABLED.getBoolean()) - { - playerMsg(sender, "Anti-freecam range is set to " + ConfigurationEntry.NUKE_MONITOR_RANGE.getDouble() + " blocks."); - playerMsg(sender, "Block throttle rate is set to " + ConfigurationEntry.NUKE_MONITOR_COUNT_BREAK.getInteger() + " blocks destroyed per 5 seconds."); - } + toggle(sender, "Nuke monitor is", ConfigurationEntry.NUKE_MONITOR_ENABLED); - return true; - } - if (args[0].equals("explosives")) - { - if (args.length == 2) - { - try - { - ConfigurationEntry.EXPLOSIVE_RADIUS.setDouble(Math.max(1.0, Math.min(30.0, Double.parseDouble(args[1])))); - } - catch (NumberFormatException ex) - { - playerMsg(sender, ex.getMessage()); - return true; - } - } + if (ConfigurationEntry.NUKE_MONITOR_ENABLED.getBoolean()) { + playerMsg(sender, "Anti-freecam range is set to " + + ConfigurationEntry.NUKE_MONITOR_RANGE.getDouble() + " blocks."); + playerMsg(sender, "Block throttle rate is set to " + + ConfigurationEntry.NUKE_MONITOR_COUNT_BREAK.getInteger() + + " blocks destroyed per 5 seconds."); + } - toggle(sender, "Explosions are", ConfigurationEntry.ALLOW_EXPLOSIONS); + return true; + } + if (args[0].equals("explosives")) { + if (args.length == 2) { + try { + ConfigurationEntry.EXPLOSIVE_RADIUS.setDouble( + Math.max(1.0, Math.min(30.0, Double.parseDouble(args[1])))); + } catch (NumberFormatException ex) { + playerMsg(sender, ex.getMessage()); + return true; + } + } - if (ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) - { - playerMsg(sender, "Radius set to " + ConfigurationEntry.EXPLOSIVE_RADIUS.getDouble()); - } - return true; - } + toggle(sender, "Explosions are", ConfigurationEntry.ALLOW_EXPLOSIONS); - return false; - } + if (ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + playerMsg(sender, + "Radius set to " + ConfigurationEntry.EXPLOSIVE_RADIUS.getDouble()); + } + return true; + } - private void toggle(CommandSender sender, String name, ConfigurationEntry entry) - { - playerMsg(sender, name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled.")); - } + return false; + } + + private void toggle(CommandSender sender, String name, ConfigurationEntry entry) { + playerMsg(sender, + name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled.")); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tossmob.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tossmob.java index e3cf765..86ba2db 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tossmob.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tossmob.java @@ -13,71 +13,69 @@ import org.bukkit.inventory.ItemStack; @CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) public class Command_tossmob extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!ConfigurationEntry.TOSSMOB_ENABLED.getBoolean()) { - playerMsg(sender, "Tossmob is currently disabled."); - return true; - } - PlayerData playerData = PlayerData.getPlayerData(sender_p); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigurationEntry.TOSSMOB_ENABLED.getBoolean()) { + playerMsg(sender, "Tossmob is currently disabled."); + return true; + } - EntityType creature = EntityType.PIG; - if (args.length >= 1) - { - if ("off".equals(args[0])) - { - playerData.disableMobThrower(); - playerMsg(sender, "MobThrower is disabled.", ChatColor.GREEN); - return true; - } + PlayerData playerData = PlayerData.getPlayerData(sender_p); - if (args[0].equalsIgnoreCase("list")) - { - playerMsg(sender, "Supported mobs: " + StringUtils.join(Utilities.mobtypes.keySet(), ", "), ChatColor.GREEN); - return true; - } + EntityType creature = EntityType.PIG; + if (args.length >= 1) { + if ("off".equals(args[0])) { + playerData.disableMobThrower(); + playerMsg(sender, "MobThrower is disabled.", ChatColor.GREEN); + return true; + } - try - { - creature = Utilities.getEntityType(args[0]); - } - catch (Exception ex) - { - playerMsg(sender, args[0] + " is not a supported mob type. Using a pig instead.", ChatColor.RED); - playerMsg(sender, "By the way, you can type /tossmob list to see all possible mobs.", ChatColor.RED); - creature = EntityType.PIG; - } - } + if (args[0].equalsIgnoreCase("list")) { + playerMsg(sender, + "Supported mobs: " + StringUtils.join(Utilities.mobtypes.keySet(), ", "), + ChatColor.GREEN); + return true; + } - double speed = 1.0; - if (args.length >= 2) - { - try - { - speed = Double.parseDouble(args[1]); - } - catch (NumberFormatException nfex) - { - } - } + try { + creature = Utilities.getEntityType(args[0]); + } catch (Exception ex) { + playerMsg(sender, args[0] + " is not a supported mob type. Using a pig instead.", + ChatColor.RED); + playerMsg(sender, + "By the way, you can type /tossmob list to see all possible mobs.", + ChatColor.RED); + creature = EntityType.PIG; + } + } - if (speed < 1.0) - { - speed = 1.0; - } - else if (speed > 5.0) - { - speed = 5.0; - } + double speed = 1.0; + if (args.length >= 2) { + try { + speed = Double.parseDouble(args[1]); + } catch (NumberFormatException nfex) { + } + } - playerData.enableMobThrower(creature, speed); - playerMsg(sender, "MobThrower is enabled. Creature: " + creature + " - Speed: " + speed + ".", ChatColor.GREEN); - playerMsg(sender, "Left click while holding a " + Material.BONE.toString() + " to throw mobs!", ChatColor.GREEN); - playerMsg(sender, "Type '/tossmob off' to disable. -By Madgeek1450", ChatColor.GREEN); + if (speed < 1.0) { + speed = 1.0; + } else if (speed > 5.0) { + speed = 5.0; + } - sender_p.setItemInHand(new ItemStack(Material.BONE, 1)); + playerData.enableMobThrower(creature, speed); + playerMsg(sender, + "MobThrower is enabled. Creature: " + creature + " - Speed: " + speed + ".", + ChatColor.GREEN); + playerMsg(sender, + "Left click while holding a " + Material.BONE + " to throw mobs!", + ChatColor.GREEN); + playerMsg(sender, "Type '/tossmob off' to disable. -By Madgeek1450", ChatColor.GREEN); - return true; - } + sender_p.setItemInHand(new ItemStack(Material.BONE, 1)); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_trail.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_trail.java index 10c4092..5d82cd5 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_trail.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_trail.java @@ -1,5 +1,8 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil; import org.bukkit.Bukkit; @@ -14,113 +17,91 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.plugin.RegisteredListener; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) public class Command_trail extends FreedomCommand { - private static Listener movementListener = null; - private static final List trailPlayers = new ArrayList(); - private static final Random RANDOM = new Random(); - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 0 && "off".equals(args[0])) { - trailPlayers.remove(sender_p); + private static final List trailPlayers = new ArrayList(); + private static final Random RANDOM = new Random(); + private static Listener movementListener = null; - playerMsg(sender, "Trail disabled."); - } else { - if (!trailPlayers.contains(sender_p)) - { - trailPlayers.add(sender_p); - } + private static void registerMovementHandler() { + if (getRegisteredListener(movementListener) == null) { + Bukkit.getPluginManager().registerEvents(movementListener = new Listener() { + @EventHandler(priority = EventPriority.NORMAL) + public void onPlayerMove(PlayerMoveEvent event) { + Player player = event.getPlayer(); + if (trailPlayers.contains(player)) { + Block fromBlock = event.getFrom().getBlock(); + if (fromBlock.isEmpty()) { + Block toBlock = event.getTo().getBlock(); + if (!fromBlock.equals(toBlock)) { + fromBlock.setType(Material.WOOL); + DeprecationUtil.setData_Block(fromBlock, (byte) RANDOM.nextInt(16)); + } + } + } + } + }, TotalFreedomMod.plugin); + } + } - playerMsg(sender, "Trail enabled. Use \"/trail off\" to disable."); - } + private static void unregisterMovementHandler() { + Listener registeredListener = getRegisteredListener(movementListener); + if (registeredListener != null) { + PlayerMoveEvent.getHandlerList().unregister(registeredListener); + } + } - if (!trailPlayers.isEmpty()) - { - registerMovementHandler(); - } - else - { - unregisterMovementHandler(); - } + private static Listener getRegisteredListener(Listener listener) { + RegisteredListener[] registeredListeners = PlayerMoveEvent.getHandlerList() + .getRegisteredListeners(); + for (RegisteredListener registeredListener : registeredListeners) { + if (registeredListener.getListener() == listener) { + return listener; + } + } + return null; + } - return true; - } + public static void startTrail(Player player) { + if (!trailPlayers.contains(player)) { + trailPlayers.add(player); + } - private static void registerMovementHandler() - { - if (getRegisteredListener(movementListener) == null) - { - Bukkit.getPluginManager().registerEvents(movementListener = new Listener() - { - @EventHandler(priority = EventPriority.NORMAL) - public void onPlayerMove(PlayerMoveEvent event) - { - Player player = event.getPlayer(); - if (trailPlayers.contains(player)) - { - Block fromBlock = event.getFrom().getBlock(); - if (fromBlock.isEmpty()) - { - Block toBlock = event.getTo().getBlock(); - if (!fromBlock.equals(toBlock)) - { - fromBlock.setType(Material.WOOL); - DeprecationUtil.setData_Block(fromBlock, (byte) RANDOM.nextInt(16)); - } - } - } - } - }, TotalFreedomMod.plugin); - } - } + if (!trailPlayers.isEmpty()) { + registerMovementHandler(); + } + } - private static void unregisterMovementHandler() - { - Listener registeredListener = getRegisteredListener(movementListener); - if (registeredListener != null) - { - PlayerMoveEvent.getHandlerList().unregister(registeredListener); - } - } + public static void stopTrail(Player player) { + trailPlayers.remove(player); - private static Listener getRegisteredListener(Listener listener) - { - RegisteredListener[] registeredListeners = PlayerMoveEvent.getHandlerList().getRegisteredListeners(); - for (RegisteredListener registeredListener : registeredListeners) - { - if (registeredListener.getListener() == listener) - { - return listener; - } - } - return null; - } + if (trailPlayers.isEmpty()) { + unregisterMovementHandler(); + } + } - public static void startTrail(Player player) - { - if (!trailPlayers.contains(player)) - { - trailPlayers.add(player); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0 && "off".equals(args[0])) { + trailPlayers.remove(sender_p); - if (!trailPlayers.isEmpty()) - { - registerMovementHandler(); - } - } + playerMsg(sender, "Trail disabled."); + } else { + if (!trailPlayers.contains(sender_p)) { + trailPlayers.add(sender_p); + } - public static void stopTrail(Player player) - { - trailPlayers.remove(player); + playerMsg(sender, "Trail enabled. Use \"/trail off\" to disable."); + } - if (trailPlayers.isEmpty()) - { - unregisterMovementHandler(); - } - } + if (!trailPlayers.isEmpty()) { + registerMovementHandler(); + } else { + unregisterMovementHandler(); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_updatetfm.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_updatetfm.java index ef64ba4..afc1c28 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_updatetfm.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_updatetfm.java @@ -1,9 +1,9 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.io.File; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.config.MainConfig; import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; -import me.StevenLawson.TotalFreedomMod.util.SynchronousUtil; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -11,38 +11,38 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.io.File; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_updatetfm extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - playerMsg(sender, "Compiling TFM, please wait...", ChatColor.RED); - Utilities.adminAction(sender.getName(), "Compiling TFM", true); - String path = MainConfig.getString(ConfigurationEntry.TFM_BUILD_SHELLSCRIPT); - File file = new File(path); - String directory = file.getParent(); - try { - String command = String.format("cd %s && ./%s", directory, file.getName()); - ProcessBuilder proc = new ProcessBuilder("/bin/bash", "-c", command); - Process process = proc.start(); - process.waitFor(); - DiscordBridge.transmitMessage("**TFM is being reloaded...**", true); - playerMsg(sender, "Compiled TFM! Reloading..."); - Utilities.adminAction(sender.getName(), "Compilation successful, reloading TFM...", false); - for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { - onlinePlayer.kickPlayer(ChatColor.RED + "Reloading TFM, please rejoin."); - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + playerMsg(sender, "Compiling TFM, please wait...", ChatColor.RED); + Utilities.adminAction(sender.getName(), "Compiling TFM", true); + String path = MainConfig.getString(ConfigurationEntry.TFM_BUILD_SHELLSCRIPT); + File file = new File(path); + String directory = file.getParent(); - Bukkit.dispatchCommand(sender, "plugman reload TotalFreedomMod"); - } catch (Exception e) { - playerMsg(sender, "Failed to update TFM! Check the logs for more details."); - Utilities.adminAction(sender.getName(), "Could not update TFM", true); - e.printStackTrace(); - } + try { + String command = String.format("cd %s && ./%s", directory, file.getName()); + ProcessBuilder proc = new ProcessBuilder("/bin/bash", "-c", command); + Process process = proc.start(); + process.waitFor(); + DiscordBridge.transmitMessage("**TFM is being reloaded...**", true); + playerMsg(sender, "Compiled TFM! Reloading..."); + Utilities.adminAction(sender.getName(), "Compilation successful, reloading TFM...", + false); + for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { + onlinePlayer.kickPlayer(ChatColor.RED + "Reloading TFM, please rejoin."); + } + Bukkit.dispatchCommand(sender, "plugman reload TotalFreedomMod"); + } catch (Exception e) { + playerMsg(sender, "Failed to update TFM! Check the logs for more details."); + Utilities.adminAction(sender.getName(), "Could not update TFM", true); + e.printStackTrace(); + } - return true; - } + return true; + } } \ No newline at end of file diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_warn.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_warn.java index 25d5680..4a9c875 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_warn.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_warn.java @@ -11,41 +11,40 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true) public class Command_warn extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 2) { - return false; - } - Player player = getPlayer(args[0]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 2) { + return false; + } - if (player == null) { - playerMsg(sender, PLAYER_NOT_FOUND); - return true; - } + Player player = getPlayer(args[0]); - if (sender instanceof Player) - { - if (player.equals(sender_p)) - { - playerMsg(sender, ChatColor.RED + "Please, don't try to warn yourself."); - return true; - } - } + if (player == null) { + playerMsg(sender, PLAYER_NOT_FOUND); + return true; + } - if (AdminList.isSuperAdmin(player)) - { - playerMsg(sender, ChatColor.RED + "You can not warn admins"); - return true; - } + if (sender instanceof Player) { + if (player.equals(sender_p)) { + playerMsg(sender, ChatColor.RED + "Please, don't try to warn yourself."); + return true; + } + } - String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); + if (AdminList.isSuperAdmin(player)) { + playerMsg(sender, ChatColor.RED + "You can not warn admins"); + return true; + } - playerMsg(sender, ChatColor.RED + "[WARNING] " + warnReason); - playerMsg(sender, ChatColor.GREEN + "You have successfully warned " + player.getName()); + String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); - PlayerData.getPlayerData(player).incrementWarnings(); + playerMsg(sender, ChatColor.RED + "[WARNING] " + warnReason); + playerMsg(sender, ChatColor.GREEN + "You have successfully warned " + player.getName()); - return true; - } + PlayerData.getPlayerData(player).incrementWarnings(); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whitelist.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whitelist.java index 1e23448..4056c6d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whitelist.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whitelist.java @@ -11,156 +11,142 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) public class Command_whitelist extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - // list - if (args[0].equalsIgnoreCase("list")) { - playerMsg(sender, "Whitelisted players: " + Utilities.playerListToNames(server.getWhitelistedPlayers())); - return true; - } + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - // count - if (args[0].equalsIgnoreCase("count")) - { - int onlineWPs = 0; - int offlineWPs = 0; - int totalWPs = 0; + // list + if (args[0].equalsIgnoreCase("list")) { + playerMsg(sender, "Whitelisted players: " + Utilities.playerListToNames( + server.getWhitelistedPlayers())); + return true; + } - for (OfflinePlayer player : server.getWhitelistedPlayers()) - { - if (player.isOnline()) - { - onlineWPs++; - } - else - { - offlineWPs++; - } - totalWPs++; - } + // count + if (args[0].equalsIgnoreCase("count")) { + int onlineWPs = 0; + int offlineWPs = 0; + int totalWPs = 0; - playerMsg(sender, "Online whitelisted players: " + onlineWPs); - playerMsg(sender, "Offline whitelisted players: " + offlineWPs); - playerMsg(sender, "Total whitelisted players: " + totalWPs); + for (OfflinePlayer player : server.getWhitelistedPlayers()) { + if (player.isOnline()) { + onlineWPs++; + } else { + offlineWPs++; + } + totalWPs++; + } - return true; - } + playerMsg(sender, "Online whitelisted players: " + onlineWPs); + playerMsg(sender, "Offline whitelisted players: " + offlineWPs); + playerMsg(sender, "Total whitelisted players: " + totalWPs); - // all commands past this line are superadmin-only - if (!(senderIsConsole || AdminList.isSuperAdmin(sender))) - { - sender.sendMessage(FreedomCommand.MSG_NO_PERMS); - return true; - } + return true; + } - // on - if (args[0].equalsIgnoreCase("on")) - { - Utilities.adminAction(sender.getName(), "Turning the whitelist on.", true); - server.setWhitelist(true); - return true; - } + // all commands past this line are superadmin-only + if (!(senderIsConsole || AdminList.isSuperAdmin(sender))) { + sender.sendMessage(FreedomCommand.MSG_NO_PERMS); + return true; + } - // off - if (args[0].equalsIgnoreCase("off")) - { - Utilities.adminAction(sender.getName(), "Turning the whitelist off.", true); - server.setWhitelist(false); - return true; - } + // on + if (args[0].equalsIgnoreCase("on")) { + Utilities.adminAction(sender.getName(), "Turning the whitelist on.", true); + server.setWhitelist(true); + return true; + } - // add - if (args[0].equalsIgnoreCase("add")) - { - if (args.length < 2) - { - return false; - } + // off + if (args[0].equalsIgnoreCase("off")) { + Utilities.adminAction(sender.getName(), "Turning the whitelist off.", true); + server.setWhitelist(false); + return true; + } - String search_name = args[1].trim().toLowerCase(); + // add + if (args[0].equalsIgnoreCase("add")) { + if (args.length < 2) { + return false; + } - OfflinePlayer player = getPlayer(search_name); + String search_name = args[1].trim().toLowerCase(); - if (player == null) - { - player = DeprecationUtil.getOfflinePlayer(server, search_name); - } + OfflinePlayer player = getPlayer(search_name); - Utilities.adminAction(sender.getName(), "Adding " + player.getName() + " to the whitelist.", false); - player.setWhitelisted(true); - return true; - } + if (player == null) { + player = DeprecationUtil.getOfflinePlayer(server, search_name); + } - // remove - if ("remove".equals(args[0])) - { - if (args.length < 2) - { - return false; - } + Utilities.adminAction(sender.getName(), + "Adding " + player.getName() + " to the whitelist.", false); + player.setWhitelisted(true); + return true; + } - String search_name = args[1].trim().toLowerCase(); + // remove + if ("remove".equals(args[0])) { + if (args.length < 2) { + return false; + } - OfflinePlayer player = getPlayer(search_name); + String search_name = args[1].trim().toLowerCase(); - if (player == null) - { - player = DeprecationUtil.getOfflinePlayer(server, search_name); - } + OfflinePlayer player = getPlayer(search_name); - if (player.isWhitelisted()) - { - Utilities.adminAction(sender.getName(), "Removing " + player.getName() + " from the whitelist.", false); - player.setWhitelisted(false); - return true; - } - else - { - playerMsg(sender, "That player is not whitelisted"); - return true; - } + if (player == null) { + player = DeprecationUtil.getOfflinePlayer(server, search_name); + } - } + if (player.isWhitelisted()) { + Utilities.adminAction(sender.getName(), + "Removing " + player.getName() + " from the whitelist.", false); + player.setWhitelisted(false); + return true; + } else { + playerMsg(sender, "That player is not whitelisted"); + return true; + } - // addall - if (args[0].equalsIgnoreCase("addall")) - { - Utilities.adminAction(sender.getName(), "Adding all online players to the whitelist.", false); - int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (!player.isWhitelisted()) - { - player.setWhitelisted(true); - counter++; - } - } + } - playerMsg(sender, "Whitelisted " + counter + " players."); - return true; - } + // addall + if (args[0].equalsIgnoreCase("addall")) { + Utilities.adminAction(sender.getName(), "Adding all online players to the whitelist.", + false); + int counter = 0; + for (Player player : server.getOnlinePlayers()) { + if (!player.isWhitelisted()) { + player.setWhitelisted(true); + counter++; + } + } - // all commands past this line are console/telnet only - if (!senderIsConsole) - { - sender.sendMessage(FreedomCommand.MSG_NO_PERMS); - return true; - } + playerMsg(sender, "Whitelisted " + counter + " players."); + return true; + } - //purge - if (args[0].equalsIgnoreCase("purge")) - { - Utilities.adminAction(sender.getName(), "Removing all players from the whitelist.", false); - playerMsg(sender, "Removed " + Server.purgeWhitelist() + " players from the whitelist."); + // all commands past this line are console/telnet only + if (!senderIsConsole) { + sender.sendMessage(FreedomCommand.MSG_NO_PERMS); + return true; + } - return true; - } + //purge + if (args[0].equalsIgnoreCase("purge")) { + Utilities.adminAction(sender.getName(), "Removing all players from the whitelist.", + false); + playerMsg(sender, + "Removed " + Server.purgeWhitelist() + " players from the whitelist."); - // none of the commands were executed - return false; - } + return true; + } + + // none of the commands were executed + return false; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whoami.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whoami.java index ab30ad6..ca746e7 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whoami.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whoami.java @@ -7,9 +7,11 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) public class Command_whoami extends FreedomCommand { - @Override - public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - playerMsg(sender, PlayerRank.fromSender(sender).name()); - return true; - } + + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, + String[] args, boolean senderIsConsole) { + playerMsg(sender, PlayerRank.fromSender(sender).name()); + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whohas.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whohas.java index 84e30d6..8948df0 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whohas.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_whohas.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.ArrayList; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil; import org.apache.commons.lang3.StringUtils; @@ -9,61 +11,50 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; - @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) public class Command_whohas extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { - return false; - } - final boolean doSmite = args.length >= 2 && "smite".equalsIgnoreCase(args[1]); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } - final String materialName = args[0]; - Material material = Material.matchMaterial(materialName); - if (material == null) - { - try - { - material = DeprecationUtil.getMaterial(Integer.parseInt(materialName)); - } - catch (NumberFormatException ex) - { - } - } + final boolean doSmite = args.length >= 2 && "smite".equalsIgnoreCase(args[1]); - if (material == null) - { - playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED); - return true; - } + final String materialName = args[0]; + Material material = Material.matchMaterial(materialName); + if (material == null) { + try { + material = DeprecationUtil.getMaterial(Integer.parseInt(materialName)); + } catch (NumberFormatException ex) { + } + } - final List players = new ArrayList(); + if (material == null) { + playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED); + return true; + } - for (final Player player : server.getOnlinePlayers()) - { - if (player.getInventory().contains(material)) - { - players.add(player.getName()); - if (doSmite && !AdminList.isSuperAdmin(player)) - { - Command_smite.smite(player); - } - } - } + final List players = new ArrayList(); - if (players.isEmpty()) - { - playerMsg(sender, "There are no players with that item"); - } - else - { - playerMsg(sender, "Players with item " + material.name() + ": " + StringUtils.join(players, ", ")); - } + for (final Player player : server.getOnlinePlayers()) { + if (player.getInventory().contains(material)) { + players.add(player.getName()); + if (doSmite && !AdminList.isSuperAdmin(player)) { + Command_smite.smite(player); + } + } + } - return true; - } + if (players.isEmpty()) { + playerMsg(sender, "There are no players with that item"); + } else { + playerMsg(sender, + "Players with item " + material.name() + ": " + StringUtils.join(players, ", ")); + } + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wildcard.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wildcard.java index ccb9148..b39e64c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wildcard.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wildcard.java @@ -10,49 +10,50 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) @CommandParameters(description = "Run any command on all users, username placeholder = ?.", usage = "/ [fluff] ? [fluff] ?") public class Command_wildcard extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) { - return false; - } - String arguments = String.join(" ", args); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } - if (arguments.toLowerCase().contains("wildcard") || arguments.toLowerCase().contains("gcmd")) { - playerMsg(sender, "What the hell are you trying to do, you stupid idiot...", ChatColor.RED); - return true; - } - if (arguments.toLowerCase().contains("gtfo")) - { - playerMsg(sender, "Nice try", ChatColor.RED); - return true; - } - if (arguments.toLowerCase().contains("doom")) - { - playerMsg(sender, "Look, we all hate people, but this is not the way to deal with it, doom is evil enough!", ChatColor.RED); - return true; - } - if (arguments.toLowerCase().contains("saconfig")) - { - playerMsg(sender, "WOA, WTF are you trying to do???", ChatColor.RED); - return true; - } + String arguments = String.join(" ", args); - String baseCommand = StringUtils.join(args, " "); + if (arguments.toLowerCase().contains("wildcard") || arguments.toLowerCase() + .contains("gcmd")) { + playerMsg(sender, "What the hell are you trying to do, you stupid idiot...", + ChatColor.RED); + return true; + } + if (arguments.toLowerCase().contains("gtfo")) { + playerMsg(sender, "Nice try", ChatColor.RED); + return true; + } + if (arguments.toLowerCase().contains("doom")) { + playerMsg(sender, + "Look, we all hate people, but this is not the way to deal with it, doom is evil enough!", + ChatColor.RED); + return true; + } + if (arguments.toLowerCase().contains("saconfig")) { + playerMsg(sender, "WOA, WTF are you trying to do???", ChatColor.RED); + return true; + } - if (CommandBlocker.isCommandBlocked(baseCommand, sender)) - { - // CommandBlocker handles messages and broadcasts - return true; - } + String baseCommand = StringUtils.join(args, " "); - for (Player player : server.getOnlinePlayers()) - { - String out_command = baseCommand.replaceAll("\\x3f", player.getName()); - playerMsg(sender, "Running Command: " + out_command); - server.dispatchCommand(sender, out_command); - } + if (CommandBlocker.isCommandBlocked(baseCommand, sender)) { + // CommandBlocker handles messages and broadcasts + return true; + } - return true; - } + for (Player player : server.getOnlinePlayers()) { + String out_command = baseCommand.replaceAll("\\x3f", player.getName()); + playerMsg(sender, "Running Command: " + out_command); + server.dispatchCommand(sender, out_command); + } + + return true; + } } \ No newline at end of file diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeflatlands.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeflatlands.java index c3892df..fe5f63b 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeflatlands.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeflatlands.java @@ -8,18 +8,21 @@ import org.bukkit.entity.Player; @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) public class Command_wipeflatlands extends FreedomCommand { - @Override - public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Utilities.setSavedFlag("do_wipe_flatlands", true); - Utilities.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY); + @Override + public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + Utilities.setSavedFlag("do_wipe_flatlands", true); - for (Player player : server.getOnlinePlayers()) { - player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes."); - } + Utilities.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY); - server.shutdown(); + for (Player player : server.getOnlinePlayers()) { + player.kickPlayer( + "Server is going offline for flatlands wipe, come back in a few minutes."); + } - return true; - } + server.shutdown(); + + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeuserdata.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeuserdata.java index b5a36bb..3e885a5 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeuserdata.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_wipeuserdata.java @@ -1,25 +1,28 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.io.File; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import java.io.File; - @CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE) public class Command_wipeuserdata extends FreedomCommand { - @Override - public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!server.getPluginManager().isPluginEnabled("Essentials")) { - playerMsg(sender, "Essentials is not enabled on this server"); - return true; - } - Utilities.adminAction(sender.getName(), "Wiping Essentials playerdata", true); + @Override + public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, + String commandLabel, String[] args, boolean senderIsConsole) { + if (!server.getPluginManager().isPluginEnabled("Essentials")) { + playerMsg(sender, "Essentials is not enabled on this server"); + return true; + } - Utilities.deleteFolder(new File(server.getPluginManager().getPlugin("Essentials").getDataFolder(), "userdata")); + Utilities.adminAction(sender.getName(), "Wiping Essentials playerdata", true); - playerMsg(sender, "All playerdata deleted."); - return true; - } + Utilities.deleteFolder( + new File(server.getPluginManager().getPlugin("Essentials").getDataFolder(), + "userdata")); + + playerMsg(sender, "All playerdata deleted."); + return true; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java index 681bbbd..2d2a6bc 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java @@ -3,109 +3,110 @@ package me.StevenLawson.TotalFreedomMod.commands; import org.bukkit.plugin.java.JavaPlugin; public class Commands { - public static void registerCommands(JavaPlugin plugin) { - plugin.getCommand("adminmode").setExecutor(new Command_adminmode()); - plugin.getCommand("adminworld").setExecutor(new Command_adminworld()); - plugin.getCommand("blockcmd").setExecutor(new Command_blockcmd()); - plugin.getCommand("cage").setExecutor(new Command_cage()); - plugin.getCommand("cake").setExecutor(new Command_cake()); - plugin.getCommand("cartsit").setExecutor(new Command_cartsit()); - plugin.getCommand("cbtool").setExecutor(new Command_cbtool()); - plugin.getCommand("cmdlist").setExecutor(new Command_cmdlist()); - plugin.getCommand("cmdspy").setExecutor(new Command_cmdspy()); - plugin.getCommand("colorme").setExecutor(new Command_colorme()); - plugin.getCommand("creative").setExecutor(new Command_creative()); - plugin.getCommand("csay").setExecutor(new Command_csay()); - plugin.getCommand("deafen").setExecutor(new Command_deafen()); - plugin.getCommand("debug").setExecutor(new Command_debug()); - plugin.getCommand("denick").setExecutor(new Command_denick()); - plugin.getCommand("deop").setExecutor(new Command_deop()); - plugin.getCommand("deopall").setExecutor(new Command_deopall()); - plugin.getCommand("dispfill").setExecutor(new Command_dispfill()); - plugin.getCommand("doom").setExecutor(new Command_doom()); - plugin.getCommand("enchant").setExecutor(new Command_enchant()); - plugin.getCommand("ender").setExecutor(new Command_ender()); - plugin.getCommand("expel").setExecutor(new Command_expel()); - plugin.getCommand("findip").setExecutor(new Command_findip()); - plugin.getCommand("flatlands").setExecutor(new Command_flatlands()); - plugin.getCommand("fr").setExecutor(new Command_fr()); - plugin.getCommand("fuckoff").setExecutor(new Command_fuckoff()); - plugin.getCommand("gadmin").setExecutor(new Command_gadmin()); - plugin.getCommand("gcmd").setExecutor(new Command_gcmd()); - plugin.getCommand("glist").setExecutor(new Command_glist()); - plugin.getCommand("gtfo").setExecutor(new Command_gtfo()); - plugin.getCommand("halt").setExecutor(new Command_halt()); - plugin.getCommand("health").setExecutor(new Command_health()); - plugin.getCommand("invis").setExecutor(new Command_invis()); - plugin.getCommand("jumppads").setExecutor(new Command_jumppads()); - plugin.getCommand("kicknoob").setExecutor(new Command_kicknoob()); - plugin.getCommand("landmine").setExecutor(new Command_landmine()); - plugin.getCommand("lastcmd").setExecutor(new Command_lastcmd()); - plugin.getCommand("list").setExecutor(new Command_list()); - plugin.getCommand("localspawn").setExecutor(new Command_localspawn()); - plugin.getCommand("lockup").setExecutor(new Command_lockup()); - plugin.getCommand("logs").setExecutor(new Command_logs()); - plugin.getCommand("moblimiter").setExecutor(new Command_moblimiter()); - plugin.getCommand("mp").setExecutor(new Command_mp()); - plugin.getCommand("mp44").setExecutor(new Command_mp44()); - plugin.getCommand("myadmin").setExecutor(new Command_myadmin()); - plugin.getCommand("nether").setExecutor(new Command_nether()); - plugin.getCommand("nf").setExecutor(new Command_nf()); - plugin.getCommand("nickclean").setExecutor(new Command_nickclean()); - plugin.getCommand("nicknyan").setExecutor(new Command_nicknyan()); - plugin.getCommand("o").setExecutor(new Command_o()); - plugin.getCommand("onlinemode").setExecutor(new Command_onlinemode()); - plugin.getCommand("op").setExecutor(new Command_op()); - plugin.getCommand("opall").setExecutor(new Command_opall()); - plugin.getCommand("opme").setExecutor(new Command_opme()); - plugin.getCommand("ops").setExecutor(new Command_ops()); - plugin.getCommand("orbit").setExecutor(new Command_orbit()); - plugin.getCommand("overlord").setExecutor(new Command_overlord()); - plugin.getCommand("permban").setExecutor(new Command_permban()); - plugin.getCommand("plugincontrol").setExecutor(new Command_plugincontrol()); - plugin.getCommand("potion").setExecutor(new Command_potion()); - plugin.getCommand("premium").setExecutor(new Command_premium()); - plugin.getCommand("protectarea").setExecutor(new Command_protectarea()); - plugin.getCommand("purgeall").setExecutor(new Command_purgeall()); - plugin.getCommand("qdeop").setExecutor(new Command_qdeop()); - plugin.getCommand("qop").setExecutor(new Command_qop()); - plugin.getCommand("radar").setExecutor(new Command_radar()); - plugin.getCommand("rank").setExecutor(new Command_rank()); - plugin.getCommand("rawsay").setExecutor(new Command_rawsay()); - plugin.getCommand("rd").setExecutor(new Command_rd()); - plugin.getCommand("report").setExecutor(new Command_report()); - plugin.getCommand("ro").setExecutor(new Command_ro()); - plugin.getCommand("saconfig").setExecutor(new Command_saconfig()); - plugin.getCommand("say").setExecutor(new Command_say()); - plugin.getCommand("setl").setExecutor(new Command_setl()); - plugin.getCommand("setlevel").setExecutor(new Command_setlevel()); - plugin.getCommand("setlever").setExecutor(new Command_setlever()); - plugin.getCommand("setspawnworld").setExecutor(new Command_setspawnworld()); - plugin.getCommand("smite").setExecutor(new Command_smite()); - plugin.getCommand("spectator").setExecutor(new Command_spectator()); - plugin.getCommand("status").setExecutor(new Command_status()); - plugin.getCommand("stfu").setExecutor(new Command_stfu()); - plugin.getCommand("stop").setExecutor(new Command_stop()); - plugin.getCommand("survival").setExecutor(new Command_survival()); - plugin.getCommand("tag").setExecutor(new Command_tag()); - plugin.getCommand("tagnyan").setExecutor(new Command_tagnyan()); - plugin.getCommand("tban").setExecutor(new Command_tban()); - plugin.getCommand("tempban").setExecutor(new Command_tempban()); - plugin.getCommand("tfbanlist").setExecutor(new Command_tfbanlist()); - plugin.getCommand("tfipbanlist").setExecutor(new Command_tfipbanlist()); - plugin.getCommand("tfm").setExecutor(new Command_tfm()); - plugin.getCommand("toggle").setExecutor(new Command_toggle()); - plugin.getCommand("tossmob").setExecutor(new Command_tossmob()); - plugin.getCommand("trail").setExecutor(new Command_trail()); - plugin.getCommand("updatetfm").setExecutor(new Command_updatetfm()); - plugin.getCommand("uuid").setExecutor(new Command_uuid()); - plugin.getCommand("warn").setExecutor(new Command_warn()); - plugin.getCommand("whitelist").setExecutor(new Command_whitelist()); - plugin.getCommand("whohas").setExecutor(new Command_whohas()); - plugin.getCommand("wildcard").setExecutor(new Command_wildcard()); - plugin.getCommand("wipeflatlands").setExecutor(new Command_wipeflatlands()); - plugin.getCommand("wipeuserdata").setExecutor(new Command_wipeuserdata()); - plugin.getCommand("whoami").setExecutor(new Command_whoami()); - plugin.getCommand("resetplayer").setExecutor(new Command_resetplayer()); - } + + public static void registerCommands(JavaPlugin plugin) { + plugin.getCommand("adminmode").setExecutor(new Command_adminmode()); + plugin.getCommand("adminworld").setExecutor(new Command_adminworld()); + plugin.getCommand("blockcmd").setExecutor(new Command_blockcmd()); + plugin.getCommand("cage").setExecutor(new Command_cage()); + plugin.getCommand("cake").setExecutor(new Command_cake()); + plugin.getCommand("cartsit").setExecutor(new Command_cartsit()); + plugin.getCommand("cbtool").setExecutor(new Command_cbtool()); + plugin.getCommand("cmdlist").setExecutor(new Command_cmdlist()); + plugin.getCommand("cmdspy").setExecutor(new Command_cmdspy()); + plugin.getCommand("colorme").setExecutor(new Command_colorme()); + plugin.getCommand("creative").setExecutor(new Command_creative()); + plugin.getCommand("csay").setExecutor(new Command_csay()); + plugin.getCommand("deafen").setExecutor(new Command_deafen()); + plugin.getCommand("debug").setExecutor(new Command_debug()); + plugin.getCommand("denick").setExecutor(new Command_denick()); + plugin.getCommand("deop").setExecutor(new Command_deop()); + plugin.getCommand("deopall").setExecutor(new Command_deopall()); + plugin.getCommand("dispfill").setExecutor(new Command_dispfill()); + plugin.getCommand("doom").setExecutor(new Command_doom()); + plugin.getCommand("enchant").setExecutor(new Command_enchant()); + plugin.getCommand("ender").setExecutor(new Command_ender()); + plugin.getCommand("expel").setExecutor(new Command_expel()); + plugin.getCommand("findip").setExecutor(new Command_findip()); + plugin.getCommand("flatlands").setExecutor(new Command_flatlands()); + plugin.getCommand("fr").setExecutor(new Command_fr()); + plugin.getCommand("fuckoff").setExecutor(new Command_fuckoff()); + plugin.getCommand("gadmin").setExecutor(new Command_gadmin()); + plugin.getCommand("gcmd").setExecutor(new Command_gcmd()); + plugin.getCommand("glist").setExecutor(new Command_glist()); + plugin.getCommand("gtfo").setExecutor(new Command_gtfo()); + plugin.getCommand("halt").setExecutor(new Command_halt()); + plugin.getCommand("health").setExecutor(new Command_health()); + plugin.getCommand("invis").setExecutor(new Command_invis()); + plugin.getCommand("jumppads").setExecutor(new Command_jumppads()); + plugin.getCommand("kicknoob").setExecutor(new Command_kicknoob()); + plugin.getCommand("landmine").setExecutor(new Command_landmine()); + plugin.getCommand("lastcmd").setExecutor(new Command_lastcmd()); + plugin.getCommand("list").setExecutor(new Command_list()); + plugin.getCommand("localspawn").setExecutor(new Command_localspawn()); + plugin.getCommand("lockup").setExecutor(new Command_lockup()); + plugin.getCommand("logs").setExecutor(new Command_logs()); + plugin.getCommand("moblimiter").setExecutor(new Command_moblimiter()); + plugin.getCommand("mp").setExecutor(new Command_mp()); + plugin.getCommand("mp44").setExecutor(new Command_mp44()); + plugin.getCommand("myadmin").setExecutor(new Command_myadmin()); + plugin.getCommand("nether").setExecutor(new Command_nether()); + plugin.getCommand("nf").setExecutor(new Command_nf()); + plugin.getCommand("nickclean").setExecutor(new Command_nickclean()); + plugin.getCommand("nicknyan").setExecutor(new Command_nicknyan()); + plugin.getCommand("o").setExecutor(new Command_o()); + plugin.getCommand("onlinemode").setExecutor(new Command_onlinemode()); + plugin.getCommand("op").setExecutor(new Command_op()); + plugin.getCommand("opall").setExecutor(new Command_opall()); + plugin.getCommand("opme").setExecutor(new Command_opme()); + plugin.getCommand("ops").setExecutor(new Command_ops()); + plugin.getCommand("orbit").setExecutor(new Command_orbit()); + plugin.getCommand("overlord").setExecutor(new Command_overlord()); + plugin.getCommand("permban").setExecutor(new Command_permban()); + plugin.getCommand("plugincontrol").setExecutor(new Command_plugincontrol()); + plugin.getCommand("potion").setExecutor(new Command_potion()); + plugin.getCommand("premium").setExecutor(new Command_premium()); + plugin.getCommand("protectarea").setExecutor(new Command_protectarea()); + plugin.getCommand("purgeall").setExecutor(new Command_purgeall()); + plugin.getCommand("qdeop").setExecutor(new Command_qdeop()); + plugin.getCommand("qop").setExecutor(new Command_qop()); + plugin.getCommand("radar").setExecutor(new Command_radar()); + plugin.getCommand("rank").setExecutor(new Command_rank()); + plugin.getCommand("rawsay").setExecutor(new Command_rawsay()); + plugin.getCommand("rd").setExecutor(new Command_rd()); + plugin.getCommand("report").setExecutor(new Command_report()); + plugin.getCommand("ro").setExecutor(new Command_ro()); + plugin.getCommand("saconfig").setExecutor(new Command_saconfig()); + plugin.getCommand("say").setExecutor(new Command_say()); + plugin.getCommand("setl").setExecutor(new Command_setl()); + plugin.getCommand("setlevel").setExecutor(new Command_setlevel()); + plugin.getCommand("setlever").setExecutor(new Command_setlever()); + plugin.getCommand("setspawnworld").setExecutor(new Command_setspawnworld()); + plugin.getCommand("smite").setExecutor(new Command_smite()); + plugin.getCommand("spectator").setExecutor(new Command_spectator()); + plugin.getCommand("status").setExecutor(new Command_status()); + plugin.getCommand("stfu").setExecutor(new Command_stfu()); + plugin.getCommand("stop").setExecutor(new Command_stop()); + plugin.getCommand("survival").setExecutor(new Command_survival()); + plugin.getCommand("tag").setExecutor(new Command_tag()); + plugin.getCommand("tagnyan").setExecutor(new Command_tagnyan()); + plugin.getCommand("tban").setExecutor(new Command_tban()); + plugin.getCommand("tempban").setExecutor(new Command_tempban()); + plugin.getCommand("tfbanlist").setExecutor(new Command_tfbanlist()); + plugin.getCommand("tfipbanlist").setExecutor(new Command_tfipbanlist()); + plugin.getCommand("tfm").setExecutor(new Command_tfm()); + plugin.getCommand("toggle").setExecutor(new Command_toggle()); + plugin.getCommand("tossmob").setExecutor(new Command_tossmob()); + plugin.getCommand("trail").setExecutor(new Command_trail()); + plugin.getCommand("updatetfm").setExecutor(new Command_updatetfm()); + plugin.getCommand("uuid").setExecutor(new Command_uuid()); + plugin.getCommand("warn").setExecutor(new Command_warn()); + plugin.getCommand("whitelist").setExecutor(new Command_whitelist()); + plugin.getCommand("whohas").setExecutor(new Command_whohas()); + plugin.getCommand("wildcard").setExecutor(new Command_wildcard()); + plugin.getCommand("wipeflatlands").setExecutor(new Command_wipeflatlands()); + plugin.getCommand("wipeuserdata").setExecutor(new Command_wipeuserdata()); + plugin.getCommand("whoami").setExecutor(new Command_whoami()); + plugin.getCommand("resetplayer").setExecutor(new Command_resetplayer()); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/FreedomCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/FreedomCommand.java index 1a5644e..8b0acd4 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/FreedomCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/FreedomCommand.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.commands; +import java.util.Collection; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.admin.AdminList; @@ -13,199 +14,164 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.Collection; - public abstract class FreedomCommand implements CommandExecutor { - public static final String MSG_NO_PERMS = ChatColor.YELLOW + "You do not have permission to use this command."; - public static final String YOU_ARE_OP = ChatColor.YELLOW + "You are now op!"; - public static final String YOU_ARE_NOT_OP = ChatColor.YELLOW + "You are no longer op!"; - public static final String NOT_FROM_CONSOLE = "This command may not be used from the console."; - public static final String PLAYER_NOT_FOUND = ChatColor.GRAY + "Player not found!"; - protected TotalFreedomMod plugin = TotalFreedomMod.plugin; - protected Server server = plugin.getServer(); - public FreedomCommand() { - } + public static final String MSG_NO_PERMS = + ChatColor.YELLOW + "You do not have permission to use this command."; + public static final String YOU_ARE_OP = ChatColor.YELLOW + "You are now op!"; + public static final String YOU_ARE_NOT_OP = ChatColor.YELLOW + "You are no longer op!"; + public static final String NOT_FROM_CONSOLE = "This command may not be used from the console."; + public static final String PLAYER_NOT_FOUND = ChatColor.GRAY + "Player not found!"; + protected TotalFreedomMod plugin = TotalFreedomMod.plugin; + protected Server server = plugin.getServer(); - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - final Player playerSender; - final boolean senderIsConsole; + public FreedomCommand() { + } - if (sender instanceof Player) { - senderIsConsole = false; - playerSender = (Player) sender; + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + final Player playerSender; + final boolean senderIsConsole; - Log.info(String.format("[PLAYER_COMMAND] %s (%s): /%s %s", - playerSender.getName(), - ChatColor.stripColor(playerSender.getDisplayName()), - label, - StringUtils.join(args, " ")), true); - } - else - { - senderIsConsole = true; - playerSender = null; + if (sender instanceof Player) { + senderIsConsole = false; + playerSender = (Player) sender; - Log.info(String.format("[CONSOLE_COMMAND] %s: /%s %s", - sender.getName(), - label, - StringUtils.join(args, " ")), true); - } + Log.info(String.format("[PLAYER_COMMAND] %s (%s): /%s %s", + playerSender.getName(), + ChatColor.stripColor(playerSender.getDisplayName()), + label, + StringUtils.join(args, " ")), true); + } else { + senderIsConsole = true; + playerSender = null; + Log.info(String.format("[CONSOLE_COMMAND] %s: /%s %s", + sender.getName(), + label, + StringUtils.join(args, " ")), true); + } - if (!senderHasPermission(sender)) - { - sender.sendMessage(FreedomCommand.MSG_NO_PERMS); - return true; - } + if (!senderHasPermission(sender)) { + sender.sendMessage(FreedomCommand.MSG_NO_PERMS); + return true; + } - return run(sender, playerSender, command, label, args, senderIsConsole); - } + return run(sender, playerSender, command, label, args, senderIsConsole); + } - abstract public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole); + abstract public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p, + final Command cmd, final String commandLabel, final String[] args, + final boolean senderIsConsole); - public void playerMsg(final CommandSender sender, final String message, final ChatColor color) - { - if (sender == null) - { - return; - } - sender.sendMessage(color + message); - } + public void playerMsg(final CommandSender sender, final String message, final ChatColor color) { + if (sender == null) { + return; + } + sender.sendMessage(color + message); + } - public void playerMsg(final CommandSender sender, final String message) - { - playerMsg(sender, message, ChatColor.GRAY); - } + public void playerMsg(final CommandSender sender, final String message) { + playerMsg(sender, message, ChatColor.GRAY); + } - public void playerMsg(final String message, final ChatColor color) - { - // NOP - } + public void playerMsg(final String message, final ChatColor color) { + // NOP + } - public void playerMsg(final String message) - { - // NOP - } + public void playerMsg(final String message) { + // NOP + } - public boolean senderHasPermission(CommandSender sender) - { - final CommandPermissions permissions = this.getClass().getAnnotation(CommandPermissions.class); + public boolean senderHasPermission(CommandSender sender) { + final CommandPermissions permissions = this.getClass() + .getAnnotation(CommandPermissions.class); - if (permissions == null) - { - Log.warning(this.getClass().getName() + " is missing permissions annotation."); - return true; - } + if (permissions == null) { + Log.warning(this.getClass().getName() + " is missing permissions annotation."); + return true; + } - boolean isSuper = AdminList.isSuperAdmin(sender); - boolean isSenior = false; + boolean isSuper = AdminList.isSuperAdmin(sender); + boolean isSenior = false; - if (isSuper) - { - isSenior = AdminList.isSeniorAdmin(sender); - } + if (isSuper) { + isSenior = AdminList.isSeniorAdmin(sender); + } - final AdminLevel level = permissions.level(); - final SourceType source = permissions.source(); - final boolean blockHostConsole = permissions.blockHostConsole(); + final AdminLevel level = permissions.level(); + final SourceType source = permissions.source(); + final boolean blockHostConsole = permissions.blockHostConsole(); - if (!(sender instanceof Player)) - { - if (source == SourceType.ONLY_IN_GAME) - { - return false; - } + if (!(sender instanceof Player)) { + if (source == SourceType.ONLY_IN_GAME) { + return false; + } - if (level == AdminLevel.SENIOR && !isSenior) { - return false; - } + if (level == AdminLevel.SENIOR && !isSenior) { + return false; + } - if (blockHostConsole && Utilities.isFromHostConsole(sender.getName())) - { - return false; - } + return !blockHostConsole || !Utilities.isFromHostConsole(sender.getName()); + } - return true; - } + final Player senderPlayer = (Player) sender; - final Player senderPlayer = (Player) sender; + if (source == SourceType.ONLY_CONSOLE) { + return false; + } - if (source == SourceType.ONLY_CONSOLE) - { - return false; - } + if (level == AdminLevel.SENIOR) { + if (!isSenior) { + return false; + } - if (level == AdminLevel.SENIOR) { - if (!isSenior) { - return false; - } + return PlayerData.getPlayerData(senderPlayer).isSuperadminIdVerified(); + } - if (!PlayerData.getPlayerData(senderPlayer).isSuperadminIdVerified()) { - return false; - } + if (level == AdminLevel.SUPER && !isSuper) { + return false; + } - return true; - } + return level != AdminLevel.OP || senderPlayer.isOp(); + } - if (level == AdminLevel.SUPER && !isSuper) { - return false; - } + public Player getPlayer(final String partialName) { + return getPlayer(partialName, false); + } - if (level == AdminLevel.OP && !senderPlayer.isOp()) { - return false; - } + public Player getPlayer(final String partialName, final boolean exact) { + if (partialName == null || partialName.isEmpty()) { + return null; + } - return true; - } + final Collection players = server.getOnlinePlayers(); - public Player getPlayer(final String partialName) - { - return getPlayer(partialName, false); - } + // Check exact matches first. + for (final Player player : players) { + if (partialName.equalsIgnoreCase(player.getName())) { + return player; + } + } - public Player getPlayer(final String partialName, final boolean exact) - { - if (partialName == null || partialName.isEmpty()) - { - return null; - } + if (exact) { + return null; + } - final Collection players = server.getOnlinePlayers(); + // Then check partial matches in name. + for (final Player player : players) { + if (player.getName().toLowerCase().contains(partialName.toLowerCase())) { + return player; + } + } - // Check exact matches first. - for (final Player player : players) - { - if (partialName.equalsIgnoreCase(player.getName())) - { - return player; - } - } + // Then check partial matches in display name. + for (final Player player : players) { + if (player.getDisplayName().toLowerCase().contains(partialName.toLowerCase())) { + return player; + } + } - if (exact) - { - return null; - } - - // Then check partial matches in name. - for (final Player player : players) - { - if (player.getName().toLowerCase().contains(partialName.toLowerCase())) - { - return player; - } - } - - // Then check partial matches in display name. - for (final Player player : players) - { - if (player.getDisplayName().toLowerCase().contains(partialName.toLowerCase())) - { - return player; - } - } - - return null; - } + return null; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/SourceType.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/SourceType.java index 3935872..4c68a94 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/SourceType.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/SourceType.java @@ -1,6 +1,5 @@ package me.StevenLawson.TotalFreedomMod.commands; -public enum SourceType -{ - ONLY_IN_GAME, ONLY_CONSOLE, BOTH +public enum SourceType { + ONLY_IN_GAME, ONLY_CONSOLE, BOTH } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/config/Configuration.java b/src/main/java/me/StevenLawson/TotalFreedomMod/config/Configuration.java index 7ec214a..37dff1c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/config/Configuration.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/config/Configuration.java @@ -1,172 +1,158 @@ package me.StevenLawson.TotalFreedomMod.config; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.exception.ExceptionUtils; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.Plugin; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; - /** * Represents a definable YAML configuration. * * @see YamlConfiguration */ //@Deprecated -public class Configuration extends YamlConfiguration // BukkitLib @ https://github.com/Pravian/BukkitLib +public class Configuration extends + YamlConfiguration // BukkitLib @ https://github.com/Pravian/BukkitLib { - private final Plugin plugin; - private final File configFile; - private final boolean copyDefaults; - /** - * Creates a new YamlConfig instance. - * - *

Example: - *

-     * YamlConfig config = new YamlConfig(this, "config.yml", true);
-     * config.load();
-     * 

- * - * @param plugin The plugin to which the config belongs. - * @param fileName The filename of the config file. - * @param copyDefaults If the defaults should be copied and/loaded from a config in the plugin jar-file. - */ - public Configuration(Plugin plugin, String fileName, boolean copyDefaults) - { - this(plugin, Utilities.getPluginFile(plugin, fileName), copyDefaults); - } + private final Plugin plugin; + private final File configFile; + private final boolean copyDefaults; - /** - * Creates a new YamlConfig instance. - * - *

Example: - *

-     * YamlConfig config = new YamlConfig(this, new File(plugin.getDataFolder() + "/players", "Prozza.yml"), false);
-     * config.load();
-     * 

- * - * @param plugin The plugin to which the config belongs. - * @param file The file of the config file. - * @param copyDefaults If the defaults should be copied and/loaded from a config in the plugin jar-file. - */ - public Configuration(Plugin plugin, File file, boolean copyDefaults) - { - this.plugin = plugin; - this.configFile = file; - this.copyDefaults = copyDefaults; - } + /** + * Creates a new YamlConfig instance. + * + *

Example: + *

+	 * YamlConfig config = new YamlConfig(this, "config.yml", true);
+	 * config.load();
+	 * 

+ * + * @param plugin The plugin to which the config belongs. + * @param fileName The filename of the config file. + * @param copyDefaults If the defaults should be copied and/loaded from a config in the plugin + * jar-file. + */ + public Configuration(Plugin plugin, String fileName, boolean copyDefaults) { + this(plugin, Utilities.getPluginFile(plugin, fileName), copyDefaults); + } - /** - * Validates if the configuration exists. - * - * @return True if the configuration exists. - */ - public boolean exists() - { - return configFile.exists(); - } + /** + * Creates a new YamlConfig instance. + * + *

Example: + *

+	 * YamlConfig config = new YamlConfig(this, new File(plugin.getDataFolder() + "/players", "Prozza.yml"), false);
+	 * config.load();
+	 * 

+ * + * @param plugin The plugin to which the config belongs. + * @param file The file of the config file. + * @param copyDefaults If the defaults should be copied and/loaded from a config in the plugin + * jar-file. + */ + public Configuration(Plugin plugin, File file, boolean copyDefaults) { + this.plugin = plugin; + this.configFile = file; + this.copyDefaults = copyDefaults; + } - /** - * Saves the configuration to the predefined file. - * - * @see #YamlConfig(Plugin, String, boolean) - */ - public void save() - { - try - { - super.save(configFile); - } - catch (Exception ex) - { - plugin.getLogger().severe("Could not save configuration file: " + configFile.getName()); - plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); - } - } + /** + * Validates if the configuration exists. + * + * @return True if the configuration exists. + */ + public boolean exists() { + return configFile.exists(); + } - /** - * Loads the configuration from the predefined file. - * - *

Optionally, if loadDefaults has been set to true, the file will be copied over from the default inside the jar-file of the owning plugin.

- * - * @see #YamlConfig(Plugin, String, boolean) - */ - public void load() - { - try - { - if (copyDefaults) - { - if (!configFile.exists()) - { - configFile.getParentFile().mkdirs(); - try - { - Utilities.copy(plugin.getResource(configFile.getName()), configFile); - } - catch (IOException ex) - { - plugin.getLogger().severe("Could not write default configuration file: " + configFile.getName()); - plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); - } - plugin.getLogger().info("Installed default configuration " + configFile.getName()); - } + /** + * Saves the configuration to the predefined file. + * + * @see #YamlConfig(Plugin, String, boolean) + */ + public void save() { + try { + super.save(configFile); + } catch (Exception ex) { + plugin.getLogger().severe("Could not save configuration file: " + configFile.getName()); + plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); + } + } - super.addDefaults(getDefaultConfig()); - } + /** + * Loads the configuration from the predefined file. + * + *

Optionally, if loadDefaults has been set to true, the file will be copied over from the + * default inside the jar-file of the owning plugin.

+ * + * @see #YamlConfig(Plugin, String, boolean) + */ + public void load() { + try { + if (copyDefaults) { + if (!configFile.exists()) { + configFile.getParentFile().mkdirs(); + try { + Utilities.copy(plugin.getResource(configFile.getName()), configFile); + } catch (IOException ex) { + plugin.getLogger().severe( + "Could not write default configuration file: " + configFile.getName()); + plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); + } + plugin.getLogger() + .info("Installed default configuration " + configFile.getName()); + } - if (configFile.exists()) - { - super.load(configFile); - } - } - catch (Exception ex) - { - plugin.getLogger().severe("Could not load configuration file: " + configFile.getName()); - plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); - } - } + super.addDefaults(getDefaultConfig()); + } - /** - * Returns the raw YamlConfiguration this config is based on. - * - * @return The YamlConfiguration. - * @see YamlConfiguration - */ - public YamlConfiguration getConfig() - { - return this; - } + if (configFile.exists()) { + super.load(configFile); + } + } catch (Exception ex) { + plugin.getLogger().severe("Could not load configuration file: " + configFile.getName()); + plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); + } + } - /** - * Returns the default configuration as been stored in the jar-file of the owning plugin. - * @return The default configuration. - */ - public YamlConfiguration getDefaultConfig() - { - final YamlConfiguration DEFAULT_CONFIG = new YamlConfiguration(); - try - { - final InputStreamReader isr = new InputStreamReader(plugin.getResource(configFile.getName())); - DEFAULT_CONFIG.load(isr); - isr.close(); - } - catch (IOException ex) - { - plugin.getLogger().severe("Could not load default configuration: " + configFile.getName()); - plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); - return null; - } - catch (InvalidConfigurationException ex) - { - plugin.getLogger().severe("Could not load default configuration: " + configFile.getName()); - plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); - return null; - } - return DEFAULT_CONFIG; - } + /** + * Returns the raw YamlConfiguration this config is based on. + * + * @return The YamlConfiguration. + * @see YamlConfiguration + */ + public YamlConfiguration getConfig() { + return this; + } + + /** + * Returns the default configuration as been stored in the jar-file of the owning plugin. + * + * @return The default configuration. + */ + public YamlConfiguration getDefaultConfig() { + final YamlConfiguration DEFAULT_CONFIG = new YamlConfiguration(); + try { + final InputStreamReader isr = new InputStreamReader( + plugin.getResource(configFile.getName())); + DEFAULT_CONFIG.load(isr); + isr.close(); + } catch (IOException ex) { + plugin.getLogger() + .severe("Could not load default configuration: " + configFile.getName()); + plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); + return null; + } catch (InvalidConfigurationException ex) { + plugin.getLogger() + .severe("Could not load default configuration: " + configFile.getName()); + plugin.getLogger().severe(ExceptionUtils.getStackTrace(ex)); + return null; + } + return DEFAULT_CONFIG; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/config/ConfigurationEntry.java b/src/main/java/me/StevenLawson/TotalFreedomMod/config/ConfigurationEntry.java index e887402..a206bf1 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/config/ConfigurationEntry.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/config/ConfigurationEntry.java @@ -3,180 +3,165 @@ package me.StevenLawson.TotalFreedomMod.config; import java.util.List; //@Deprecated -public enum ConfigurationEntry -{ - FORCE_IP_ENABLED(Boolean.class, "forceip.enabled"), - FORCE_IP_PORT(Integer.class, "forceip.port"), - FORCE_IP_KICKMSG(String.class, "forceip.kickmsg"), - // - ALLOW_EXPLOSIONS(Boolean.class, "allow.explosions"), - ALLOW_FIRE_PLACE(Boolean.class, "allow.fire_place"), - ALLOW_FIRE_SPREAD(Boolean.class, "allow.fire_spread"), - ALLOW_FLUID_SPREAD(Boolean.class, "allow.fluid_spread"), - ALLOW_LAVA_DAMAGE(Boolean.class, "allow.lava_damage"), - ALLOW_LAVA_PLACE(Boolean.class, "allow.lava_place"), - ALLOW_TNT_MINECARTS(Boolean.class, "allow.tnt_minecarts"), - ALLOW_WATER_PLACE(Boolean.class, "allow.water_place"), - // - MOB_LIMITER_ENABLED(Boolean.class, "moblimiter.enabled"), - MOB_LIMITER_MAX(Integer.class, "moblimiter.max"), - MOB_LIMITER_DISABLE_DRAGON(Boolean.class, "moblimiter.disable.dragon"), - MOB_LIMITER_DISABLE_GHAST(Boolean.class, "moblimiter.disable.ghast"), - MOB_LIMITER_DISABLE_GIANT(Boolean.class, "moblimiter.disable.giant"), - MOB_LIMITER_DISABLE_SLIME(Boolean.class, "moblimiter.disable.slime"), - // - HTTPD_ENABLED(Boolean.class, "httpd.enabled"), - HTTPD_PORT(Integer.class, "httpd.port"), - HTTPD_PUBLIC_FOLDER(String.class, "httpd.public_folder"), - HTTPD_ORIGIN(String.class, "httdp.origin"), - // - SERVER_COLORFUL_MOTD(Boolean.class, "server.colorful_motd"), - SERVER_NAME(String.class, "server.name"), - SERVER_ADDRESS(String.class, "server.address"), - SERVER_MOTD(String.class, "server.motd"), - SERVER_OWNERS(List.class, "server.owners"), - SERVER_BAN_URL(String.class, "server.ban_url"), - SERVER_PERMBAN_URL(String.class, "server.permban_url"), - SERVER_OP_ON_JOIN(Boolean.class, "server.op_on_join"), - // - TWITTERBOT_ENABLED(Boolean.class, "twitterbot.enabled"), - TWITTERBOT_SECRET(String.class, "twitterbot.secret"), - TWITTERBOT_URL(String.class, "twitterbot.url"), - // - DISABLE_NIGHT(Boolean.class, "disable.night"), - DISABLE_WEATHER(Boolean.class, "disable.weather"), - // - ENABLE_PREPROCESS_LOG(Boolean.class, "preprocess_log"), - ENABLE_PET_PROTECT(Boolean.class, "petprotect.enabled"), - // - LANDMINES_ENABLED(Boolean.class, "landmines_enabled"), - TOSSMOB_ENABLED(Boolean.class, "tossmob_enabled"), - AUTOKICK_ENABLED(Boolean.class, "autokick.enabled"), - MP44_ENABLED(Boolean.class, "mp44_enabled"), - // - PROTECTAREA_ENABLED(Boolean.class, "protectarea.enabled"), - PROTECTAREA_SPAWNPOINTS(Boolean.class, "protectarea.auto_protect_spawnpoints"), - PROTECTAREA_RADIUS(Double.class, "protectarea.auto_protect_radius"), - // - NUKE_MONITOR_ENABLED(Boolean.class, "nukemonitor.enabled"), - NUKE_MONITOR_COUNT_BREAK(Integer.class, "nukemonitor.count_break"), - NUKE_MONITOR_COUNT_PLACE(Integer.class, "nukemonitor.count_place"), - NUKE_MONITOR_RANGE(Double.class, "nukemonitor.range"), - // - AUTOKICK_THRESHOLD(Double.class, "autokick.threshold"), - AUTOKICK_TIME(Integer.class, "autokick.time"), - // - LOGS_SECRET(String.class, "logs.secret"), - LOGS_URL(String.class, "logs.url"), - // - FLATLANDS_GENERATE(Boolean.class, "flatlands.generate"), - FLATLANDS_GENERATE_PARAMS(String.class, "flatlands.generate_params"), - // - ANNOUNCER_ENABLED(Boolean.class, "announcer.enabled"), - ANNOUNCER_INTERVAL(Integer.class, "announcer.interval"), - ANNOUNCER_PREFIX(String.class, "announcer.prefix"), - ANNOUNCER_ANNOUNCEMENTS(List.class, "announcer.announcements"), - // - EXPLOSIVE_RADIUS(Double.class, "explosive_radius"), - FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"), - //SERVICE_CHECKER_URL(String.class, "service_checker_url"), - BLOCKED_COMMANDS(List.class, "blocked_commands"), - HOST_SENDER_NAMES(List.class, "host_sender_names"), - UNBANNABLE_USERNAMES(List.class, "unbannable_usernames"), - OVERLORD_IPS(List.class, "overlord_ips"), - NOADMIN_IPS(List.class, "noadmin_ips"), - ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"), - AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), - CONSOLE_IS_SENIOR(Boolean.class, "console_is_senior"), - // - DISCORD_IS_ENABLED(Boolean.class, "discord.is_enabled"), - DISCORD_TOKEN(String.class, "discord.token"), - DISCORD_CHANNEL(String.class, "discord.channel"), - DISCORD_ADMIN_CHANNEL(String.class, "discord.admin_channel"), - DISCORD_PREFIX(String.class, "discord.prefix"), - DISCORD_FORMAT(String.class, "discord.format"), - DISCORD_ADMIN_FORMAT(String.class, "discord.admin_format"), - // - CHAT_FORMAT(String.class, "chat.format"), - TFM_BUILD_SHELLSCRIPT(String.class, "build_shellscript"); +public enum ConfigurationEntry { + FORCE_IP_ENABLED(Boolean.class, "forceip.enabled"), + FORCE_IP_PORT(Integer.class, "forceip.port"), + FORCE_IP_KICKMSG(String.class, "forceip.kickmsg"), + // + ALLOW_EXPLOSIONS(Boolean.class, "allow.explosions"), + ALLOW_FIRE_PLACE(Boolean.class, "allow.fire_place"), + ALLOW_FIRE_SPREAD(Boolean.class, "allow.fire_spread"), + ALLOW_FLUID_SPREAD(Boolean.class, "allow.fluid_spread"), + ALLOW_LAVA_DAMAGE(Boolean.class, "allow.lava_damage"), + ALLOW_LAVA_PLACE(Boolean.class, "allow.lava_place"), + ALLOW_TNT_MINECARTS(Boolean.class, "allow.tnt_minecarts"), + ALLOW_WATER_PLACE(Boolean.class, "allow.water_place"), + // + MOB_LIMITER_ENABLED(Boolean.class, "moblimiter.enabled"), + MOB_LIMITER_MAX(Integer.class, "moblimiter.max"), + MOB_LIMITER_DISABLE_DRAGON(Boolean.class, "moblimiter.disable.dragon"), + MOB_LIMITER_DISABLE_GHAST(Boolean.class, "moblimiter.disable.ghast"), + MOB_LIMITER_DISABLE_GIANT(Boolean.class, "moblimiter.disable.giant"), + MOB_LIMITER_DISABLE_SLIME(Boolean.class, "moblimiter.disable.slime"), + // + HTTPD_ENABLED(Boolean.class, "httpd.enabled"), + HTTPD_PORT(Integer.class, "httpd.port"), + HTTPD_PUBLIC_FOLDER(String.class, "httpd.public_folder"), + HTTPD_ORIGIN(String.class, "httdp.origin"), + // + SERVER_COLORFUL_MOTD(Boolean.class, "server.colorful_motd"), + SERVER_NAME(String.class, "server.name"), + SERVER_ADDRESS(String.class, "server.address"), + SERVER_MOTD(String.class, "server.motd"), + SERVER_OWNERS(List.class, "server.owners"), + SERVER_BAN_URL(String.class, "server.ban_url"), + SERVER_PERMBAN_URL(String.class, "server.permban_url"), + SERVER_OP_ON_JOIN(Boolean.class, "server.op_on_join"), + // + TWITTERBOT_ENABLED(Boolean.class, "twitterbot.enabled"), + TWITTERBOT_SECRET(String.class, "twitterbot.secret"), + TWITTERBOT_URL(String.class, "twitterbot.url"), + // + DISABLE_NIGHT(Boolean.class, "disable.night"), + DISABLE_WEATHER(Boolean.class, "disable.weather"), + // + ENABLE_PREPROCESS_LOG(Boolean.class, "preprocess_log"), + ENABLE_PET_PROTECT(Boolean.class, "petprotect.enabled"), + // + LANDMINES_ENABLED(Boolean.class, "landmines_enabled"), + TOSSMOB_ENABLED(Boolean.class, "tossmob_enabled"), + AUTOKICK_ENABLED(Boolean.class, "autokick.enabled"), + MP44_ENABLED(Boolean.class, "mp44_enabled"), + // + PROTECTAREA_ENABLED(Boolean.class, "protectarea.enabled"), + PROTECTAREA_SPAWNPOINTS(Boolean.class, "protectarea.auto_protect_spawnpoints"), + PROTECTAREA_RADIUS(Double.class, "protectarea.auto_protect_radius"), + // + NUKE_MONITOR_ENABLED(Boolean.class, "nukemonitor.enabled"), + NUKE_MONITOR_COUNT_BREAK(Integer.class, "nukemonitor.count_break"), + NUKE_MONITOR_COUNT_PLACE(Integer.class, "nukemonitor.count_place"), + NUKE_MONITOR_RANGE(Double.class, "nukemonitor.range"), + // + AUTOKICK_THRESHOLD(Double.class, "autokick.threshold"), + AUTOKICK_TIME(Integer.class, "autokick.time"), + // + LOGS_SECRET(String.class, "logs.secret"), + LOGS_URL(String.class, "logs.url"), + // + FLATLANDS_GENERATE(Boolean.class, "flatlands.generate"), + FLATLANDS_GENERATE_PARAMS(String.class, "flatlands.generate_params"), + // + ANNOUNCER_ENABLED(Boolean.class, "announcer.enabled"), + ANNOUNCER_INTERVAL(Integer.class, "announcer.interval"), + ANNOUNCER_PREFIX(String.class, "announcer.prefix"), + ANNOUNCER_ANNOUNCEMENTS(List.class, "announcer.announcements"), + // + EXPLOSIVE_RADIUS(Double.class, "explosive_radius"), + FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"), + //SERVICE_CHECKER_URL(String.class, "service_checker_url"), + BLOCKED_COMMANDS(List.class, "blocked_commands"), + HOST_SENDER_NAMES(List.class, "host_sender_names"), + UNBANNABLE_USERNAMES(List.class, "unbannable_usernames"), + OVERLORD_IPS(List.class, "overlord_ips"), + NOADMIN_IPS(List.class, "noadmin_ips"), + ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"), + AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), + CONSOLE_IS_SENIOR(Boolean.class, "console_is_senior"), + // + DISCORD_IS_ENABLED(Boolean.class, "discord.is_enabled"), + DISCORD_TOKEN(String.class, "discord.token"), + DISCORD_CHANNEL(String.class, "discord.channel"), + DISCORD_ADMIN_CHANNEL(String.class, "discord.admin_channel"), + DISCORD_PREFIX(String.class, "discord.prefix"), + DISCORD_FORMAT(String.class, "discord.format"), + DISCORD_ADMIN_FORMAT(String.class, "discord.admin_format"), + // + CHAT_FORMAT(String.class, "chat.format"), + TFM_BUILD_SHELLSCRIPT(String.class, "build_shellscript"); - private final Class type; - private final String configName; + private final Class type; + private final String configName; - ConfigurationEntry(Class type, String configName) { - this.type = type; - this.configName = configName; - } + ConfigurationEntry(Class type, String configName) { + this.type = type; + this.configName = configName; + } - public Class getType() - { - return type; - } + public static ConfigurationEntry findConfigEntry(String name) { + name = name.toLowerCase().replace("_", ""); + for (ConfigurationEntry entry : values()) { + if (entry.toString().toLowerCase().replace("_", "").equals(name)) { + return entry; + } + } + return null; + } - public String getConfigName() - { - return configName; - } + public Class getType() { + return type; + } - public String getString() - { - return MainConfig.getString(this); - } + public String getConfigName() { + return configName; + } - public String setString(String value) - { - MainConfig.setString(this, value); - return value; - } + public String getString() { + return MainConfig.getString(this); + } - public Double getDouble() - { - return MainConfig.getDouble(this); - } + public String setString(String value) { + MainConfig.setString(this, value); + return value; + } - public Double setDouble(Double value) - { - MainConfig.setDouble(this, value); - return value; - } + public Double getDouble() { + return MainConfig.getDouble(this); + } - public Boolean getBoolean() - { - return MainConfig.getBoolean(this); - } + public Double setDouble(Double value) { + MainConfig.setDouble(this, value); + return value; + } - public Boolean setBoolean(Boolean value) - { - MainConfig.setBoolean(this, value); - return value; - } + public Boolean getBoolean() { + return MainConfig.getBoolean(this); + } - public Integer getInteger() - { - return MainConfig.getInteger(this); - } + public Boolean setBoolean(Boolean value) { + MainConfig.setBoolean(this, value); + return value; + } - public Integer setInteger(Integer value) - { - MainConfig.setInteger(this, value); - return value; - } + public Integer getInteger() { + return MainConfig.getInteger(this); + } - public List getList() - { - return MainConfig.getList(this); - } + public Integer setInteger(Integer value) { + MainConfig.setInteger(this, value); + return value; + } - public static ConfigurationEntry findConfigEntry(String name) - { - name = name.toLowerCase().replace("_", ""); - for (ConfigurationEntry entry : values()) - { - if (entry.toString().toLowerCase().replace("_", "").equals(name)) - { - return entry; - } - } - return null; - } + public List getList() { + return MainConfig.getList(this); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/config/MainConfig.java b/src/main/java/me/StevenLawson/TotalFreedomMod/config/MainConfig.java index e1967c6..6e92e96 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/config/MainConfig.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/config/MainConfig.java @@ -2,308 +2,239 @@ package me.StevenLawson.TotalFreedomMod.config; import com.avaje.ebean.validation.NotNull; import com.google.common.collect.ImmutableList; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.EnumMap; +import java.util.List; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import org.apache.commons.io.FileUtils; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -import java.io.*; -import java.util.EnumMap; -import java.util.List; - //@Deprecated -public class MainConfig -{ - public static final File CONFIG_FILE = new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.CONFIG_FILENAME); - // - private static final EnumMap ENTRY_MAP; - private static final TFM_Defaults DEFAULTS; +public class MainConfig { - static - { - ENTRY_MAP = new EnumMap(ConfigurationEntry.class); + public static final File CONFIG_FILE = new File(TotalFreedomMod.plugin.getDataFolder(), + TotalFreedomMod.CONFIG_FILENAME); + // + private static final EnumMap ENTRY_MAP; + private static final TFM_Defaults DEFAULTS; - TFM_Defaults tempDefaults = null; - try - { - try - { - InputStream defaultConfig = getDefaultConfig(); - tempDefaults = new TFM_Defaults(defaultConfig); - for (ConfigurationEntry entry : ConfigurationEntry.values()) - { - ENTRY_MAP.put(entry, tempDefaults.get(entry.getConfigName())); - } - defaultConfig.close(); - } - catch (IOException ex) - { - Log.severe(ex); - } + static { + ENTRY_MAP = new EnumMap(ConfigurationEntry.class); - copyDefaultConfig(CONFIG_FILE); + TFM_Defaults tempDefaults = null; + try { + try { + InputStream defaultConfig = getDefaultConfig(); + tempDefaults = new TFM_Defaults(defaultConfig); + for (ConfigurationEntry entry : ConfigurationEntry.values()) { + ENTRY_MAP.put(entry, tempDefaults.get(entry.getConfigName())); + } + defaultConfig.close(); + } catch (IOException ex) { + Log.severe(ex); + } - load(); - } - catch (Exception ex) - { - Log.severe(ex); - } + copyDefaultConfig(CONFIG_FILE); - DEFAULTS = tempDefaults; - } + load(); + } catch (Exception ex) { + Log.severe(ex); + } - private MainConfig() - { - throw new AssertionError(); - } + DEFAULTS = tempDefaults; + } - public static void load() - { - try - { - YamlConfiguration config = new YamlConfiguration(); + private MainConfig() { + throw new AssertionError(); + } - config.load(CONFIG_FILE); + public static void load() { + try { + YamlConfiguration config = new YamlConfiguration(); - for (ConfigurationEntry entry : ConfigurationEntry.values()) - { - String path = entry.getConfigName(); - if (config.contains(path)) - { - Object value = config.get(path); - if (value == null || entry.getType().isAssignableFrom(value.getClass())) - { - ENTRY_MAP.put(entry, value); - } - else - { - Log.warning("Value for " + entry.getConfigName() + " is of type " + value.getClass().getSimpleName() + ". Needs to be " + entry.getType().getSimpleName() + ". Using default value."); - } - } - else - { - Log.warning("Missing configuration entry " + entry.getConfigName() + ". Using default value."); - } - } - } - catch (FileNotFoundException ex) - { - Log.severe(ex); - } - catch (IOException ex) - { - Log.severe(ex); - } - catch (InvalidConfigurationException ex) - { - Log.severe(ex); - } - } + config.load(CONFIG_FILE); - @NotNull - public static String getString(ConfigurationEntry entry) - { - try - { - return get(entry, String.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - return ""; - } + for (ConfigurationEntry entry : ConfigurationEntry.values()) { + String path = entry.getConfigName(); + if (config.contains(path)) { + Object value = config.get(path); + if (value == null || entry.getType().isAssignableFrom(value.getClass())) { + ENTRY_MAP.put(entry, value); + } else { + Log.warning( + "Value for " + entry.getConfigName() + " is of type " + value.getClass() + .getSimpleName() + ". Needs to be " + entry.getType() + .getSimpleName() + ". Using default value."); + } + } else { + Log.warning("Missing configuration entry " + entry.getConfigName() + + ". Using default value."); + } + } + } catch (FileNotFoundException ex) { + Log.severe(ex); + } catch (IOException ex) { + Log.severe(ex); + } catch (InvalidConfigurationException ex) { + Log.severe(ex); + } + } - public static void setString(ConfigurationEntry entry, String value) - { - try - { - set(entry, value, String.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - } + @NotNull + public static String getString(ConfigurationEntry entry) { + try { + return get(entry, String.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + return ""; + } - @NotNull - public static Double getDouble(ConfigurationEntry entry) - { - try - { - return get(entry, Double.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - return 0D; - } + public static void setString(ConfigurationEntry entry, String value) { + try { + set(entry, value, String.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + } - public static void setDouble(ConfigurationEntry entry, Double value) - { - try - { - set(entry, value, Double.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - } + @NotNull + public static Double getDouble(ConfigurationEntry entry) { + try { + return get(entry, Double.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + return 0D; + } - @NotNull - public static Boolean getBoolean(ConfigurationEntry entry) - { - try - { - return get(entry, Boolean.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - return false; - } + public static void setDouble(ConfigurationEntry entry, Double value) { + try { + set(entry, value, Double.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + } - public static void setBoolean(ConfigurationEntry entry, Boolean value) - { - try - { - set(entry, value, Boolean.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - } + @NotNull + public static Boolean getBoolean(ConfigurationEntry entry) { + try { + return get(entry, Boolean.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + return false; + } - @NotNull - public static Integer getInteger(ConfigurationEntry entry) - { - try - { - return get(entry, Integer.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - return 0; - } + public static void setBoolean(ConfigurationEntry entry, Boolean value) { + try { + set(entry, value, Boolean.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + } - public static void setInteger(ConfigurationEntry entry, Integer value) - { - try - { - set(entry, value, Integer.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - } + @NotNull + public static Integer getInteger(ConfigurationEntry entry) { + try { + return get(entry, Integer.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + return 0; + } - @NotNull - public static List getList(ConfigurationEntry entry) - { - try - { - return get(entry, List.class); - } - catch (IllegalArgumentException ex) - { - Log.severe(ex); - } - return ImmutableList.of(); - } + public static void setInteger(ConfigurationEntry entry, Integer value) { + try { + set(entry, value, Integer.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + } - @NotNull - public static T get(ConfigurationEntry entry, Class type) throws IllegalArgumentException - { - Object value = ENTRY_MAP.get(entry); - try - { - return type.cast(value); - } - catch (ClassCastException ex) - { - throw new IllegalArgumentException(entry.name() + " is not of type " + type.getSimpleName()); - } - } + @NotNull + public static List getList(ConfigurationEntry entry) { + try { + return get(entry, List.class); + } catch (IllegalArgumentException ex) { + Log.severe(ex); + } + return ImmutableList.of(); + } - public static void set(ConfigurationEntry entry, T value, Class type) throws IllegalArgumentException - { - if (!type.isAssignableFrom(entry.getType())) - { - throw new IllegalArgumentException(entry.name() + " is not of type " + type.getSimpleName()); - } - if (value != null && !type.isAssignableFrom(value.getClass())) - { - throw new IllegalArgumentException("Value is not of type " + type.getSimpleName()); - } - ENTRY_MAP.put(entry, value); - } + @NotNull + public static T get(ConfigurationEntry entry, Class type) + throws IllegalArgumentException { + Object value = ENTRY_MAP.get(entry); + try { + return type.cast(value); + } catch (ClassCastException ex) { + throw new IllegalArgumentException( + entry.name() + " is not of type " + type.getSimpleName()); + } + } - private static void copyDefaultConfig(File targetFile) - { - if (targetFile.exists()) - { - return; - } + public static void set(ConfigurationEntry entry, T value, Class type) + throws IllegalArgumentException { + if (!type.isAssignableFrom(entry.getType())) { + throw new IllegalArgumentException( + entry.name() + " is not of type " + type.getSimpleName()); + } + if (value != null && !type.isAssignableFrom(value.getClass())) { + throw new IllegalArgumentException("Value is not of type " + type.getSimpleName()); + } + ENTRY_MAP.put(entry, value); + } - Log.info("Installing default configuration file template: " + targetFile.getPath()); + private static void copyDefaultConfig(File targetFile) { + if (targetFile.exists()) { + return; + } - try - { - InputStream defaultConfig = getDefaultConfig(); - FileUtils.copyInputStreamToFile(defaultConfig, targetFile); - defaultConfig.close(); - } - catch (IOException ex) - { - Log.severe(ex); - } - } + Log.info("Installing default configuration file template: " + targetFile.getPath()); - private static InputStream getDefaultConfig() - { - return TotalFreedomMod.plugin.getResource(TotalFreedomMod.CONFIG_FILENAME); - } + try { + InputStream defaultConfig = getDefaultConfig(); + FileUtils.copyInputStreamToFile(defaultConfig, targetFile); + defaultConfig.close(); + } catch (IOException ex) { + Log.severe(ex); + } + } - public static TFM_Defaults getDefaults() - { - return DEFAULTS; - } + private static InputStream getDefaultConfig() { + return TotalFreedomMod.plugin.getResource(TotalFreedomMod.CONFIG_FILENAME); + } - public static class TFM_Defaults - { - private YamlConfiguration defaults = null; + public static TFM_Defaults getDefaults() { + return DEFAULTS; + } - private TFM_Defaults(InputStream defaultConfig) - { - try - { - defaults = new YamlConfiguration(); - final InputStreamReader isr = new InputStreamReader(defaultConfig); - defaults.load(isr); - isr.close(); - } - catch (IOException ex) - { - Log.severe(ex); - } - catch (InvalidConfigurationException ex) - { - Log.severe(ex); - } - } + public static class TFM_Defaults { - public Object get(String path) - { - return defaults.get(path); - } - } + private YamlConfiguration defaults = null; + + private TFM_Defaults(InputStream defaultConfig) { + try { + defaults = new YamlConfiguration(); + final InputStreamReader isr = new InputStreamReader(defaultConfig); + defaults.load(isr); + isr.close(); + } catch (IOException ex) { + Log.severe(ex); + } catch (InvalidConfigurationException ex) { + Log.severe(ex); + } + } + + public Object get(String path) { + return defaults.get(path); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java b/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java index ee09b7d..deadca6 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java @@ -1,42 +1,47 @@ package me.StevenLawson.TotalFreedomMod.config; +import java.io.File; +import java.io.IOException; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import java.io.File; -import java.io.IOException; - public class TagConfiguration { - private static Plugin plugin = JavaPlugin.getPlugin(TotalFreedomMod.class); - private static final FileConfiguration playerdata = TotalFreedomMod.getPlugin(TotalFreedomMod.class).getCustomConfig(); - private static File cfile = new File(plugin.getDataFolder(), "playerTags.yml"); - public static void saveTag(String playerUuid, String tag) { - try { - // Set tag value and save. - playerdata.set(playerUuid, tag); - playerdata.save(cfile); - } catch (IOException e){ - e.printStackTrace(); - } - } - public static String getTag(String playerUuid){ - if(playerdata.get(playerUuid) != null && playerdata.isString(playerUuid)) { - if(!playerdata.getString(playerUuid).isEmpty() && !"".equalsIgnoreCase(playerdata.getString(playerUuid))){ - // Return the value if exists, checking will be done on join event. - return playerdata.getString(playerUuid); - } else { - try { - // Try and write player tags if not added - playerdata.set(playerUuid, ""); - playerdata.save(cfile); - } catch (IOException e){ - e.printStackTrace(); - } - return ""; - } - } else return null; - } + private static final FileConfiguration playerdata = TotalFreedomMod.getPlugin( + TotalFreedomMod.class).getCustomConfig(); + private static final Plugin plugin = JavaPlugin.getPlugin(TotalFreedomMod.class); + private static final File cfile = new File(plugin.getDataFolder(), "playerTags.yml"); + + public static void saveTag(String playerUuid, String tag) { + try { + // Set tag value and save. + playerdata.set(playerUuid, tag); + playerdata.save(cfile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getTag(String playerUuid) { + if (playerdata.get(playerUuid) != null && playerdata.isString(playerUuid)) { + if (!playerdata.getString(playerUuid).isEmpty() && !"".equalsIgnoreCase( + playerdata.getString(playerUuid))) { + // Return the value if exists, checking will be done on join event. + return playerdata.getString(playerUuid); + } else { + try { + // Try and write player tags if not added + playerdata.set(playerUuid, ""); + playerdata.save(cfile); + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + } else { + return null; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/bridge/BukkitTelnetBridge.java b/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/bridge/BukkitTelnetBridge.java index 2f722fb..594a031 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/bridge/BukkitTelnetBridge.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/bridge/BukkitTelnetBridge.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.deprecated.bridge; +import java.util.Iterator; +import java.util.Map; import me.StevenLawson.BukkitTelnet.api.TelnetCommandEvent; import me.StevenLawson.BukkitTelnet.api.TelnetPreLoginEvent; import me.StevenLawson.BukkitTelnet.api.TelnetRequestDataTagsEvent; @@ -13,70 +15,64 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import java.util.Iterator; -import java.util.Map; - @Deprecated public class BukkitTelnetBridge implements Listener { - @EventHandler(priority = EventPriority.NORMAL) - public void onTelnetPreLogin(TelnetPreLoginEvent event) { - final String ip = event.getIp(); - if (ip == null || ip.isEmpty()) { - return; - } + @EventHandler(priority = EventPriority.NORMAL) + public void onTelnetPreLogin(TelnetPreLoginEvent event) { - final Admin admin = AdminList.getEntryByIp(ip, true); + final String ip = event.getIp(); + if (ip == null || ip.isEmpty()) { + return; + } - if (admin == null || !admin.isActivated() || !admin.isTelnetAdmin()) - { - return; - } + final Admin admin = AdminList.getEntryByIp(ip, true); - event.setBypassPassword(true); - event.setName(admin.getLastLoginName()); - } + if (admin == null || !admin.isActivated() || !admin.isTelnetAdmin()) { + return; + } - @EventHandler(priority = EventPriority.NORMAL) - public void onTelnetCommand(TelnetCommandEvent event) - { - if (CommandBlocker.isCommandBlocked(event.getCommand(), event.getSender())) - { - event.setCancelled(true); - } - } + event.setBypassPassword(true); + event.setName(admin.getLastLoginName()); + } - @EventHandler(priority = EventPriority.NORMAL) - public void onTelnetRequestDataTags(TelnetRequestDataTagsEvent event) - { - final Iterator>> it = event.getDataTags().entrySet().iterator(); - while (it.hasNext()) - { - final Map.Entry> entry = it.next(); - final Player player = entry.getKey(); - final Map playerTags = entry.getValue(); + @EventHandler(priority = EventPriority.NORMAL) + public void onTelnetCommand(TelnetCommandEvent event) { + if (CommandBlocker.isCommandBlocked(event.getCommand(), event.getSender())) { + event.setCancelled(true); + } + } - boolean isAdmin = false; - boolean isTelnetAdmin = false; - boolean isSeniorAdmin = false; + @EventHandler(priority = EventPriority.NORMAL) + public void onTelnetRequestDataTags(TelnetRequestDataTagsEvent event) { + final Iterator>> it = event.getDataTags().entrySet() + .iterator(); + while (it.hasNext()) { + final Map.Entry> entry = it.next(); + final Player player = entry.getKey(); + final Map playerTags = entry.getValue(); - final Admin admin = AdminList.getEntry(player); - if (admin != null) - { - boolean isActivated = admin.isActivated(); + boolean isAdmin = false; + boolean isTelnetAdmin = false; + boolean isSeniorAdmin = false; - isAdmin = isActivated; - isTelnetAdmin = isActivated && admin.isTelnetAdmin(); - isSeniorAdmin = isActivated && admin.isSeniorAdmin(); - } + final Admin admin = AdminList.getEntry(player); + if (admin != null) { + boolean isActivated = admin.isActivated(); - playerTags.put("tfm.admin.isAdmin", isAdmin); - playerTags.put("tfm.admin.isTelnetAdmin", isTelnetAdmin); - playerTags.put("tfm.admin.isSeniorAdmin", isSeniorAdmin); + isAdmin = isActivated; + isTelnetAdmin = isActivated && admin.isTelnetAdmin(); + isSeniorAdmin = isActivated && admin.isSeniorAdmin(); + } - playerTags.put("tfm.playerdata.getTag", PlayerData.getPlayerData(player).getTag()); + playerTags.put("tfm.admin.isAdmin", isAdmin); + playerTags.put("tfm.admin.isTelnetAdmin", isTelnetAdmin); + playerTags.put("tfm.admin.isSeniorAdmin", isSeniorAdmin); - playerTags.put("tfm.essentialsBridge.getNickname", EssentialsBridge.getNickname(player.getName())); - } - } + playerTags.put("tfm.playerdata.getTag", PlayerData.getPlayerData(player).getTag()); + + playerTags.put("tfm.essentialsBridge.getNickname", + EssentialsBridge.getNickname(player.getName())); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/twitter/TwitterHandler.java b/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/twitter/TwitterHandler.java index 2254b3c..dc58111 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/twitter/TwitterHandler.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/deprecated/twitter/TwitterHandler.java @@ -1,110 +1,98 @@ package me.StevenLawson.TotalFreedomMod.deprecated.twitter; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.net.URL; -import java.net.URLConnection; - @Deprecated -public class TwitterHandler -{ - private TwitterHandler() - { - throw new AssertionError(); - } +public class TwitterHandler { - public static String getTwitter(String player) - { - return request("action=gettwitter&player=" + player); - } + private TwitterHandler() { + throw new AssertionError(); + } - public static String setTwitter(String player, String twitter) - { - if (twitter.startsWith("@")) - { - twitter = twitter.replaceAll("@", ""); - } - return request("action=settwitter&player=" + player + "&twitter=" + twitter); - } + public static String getTwitter(String player) { + return request("action=gettwitter&player=" + player); + } - public static String delTwitter(String player) - { - return request("action=deltwitter&player=" + player); - } + public static String setTwitter(String player, String twitter) { + if (twitter.startsWith("@")) { + twitter = twitter.replaceAll("@", ""); + } + return request("action=settwitter&player=" + player + "&twitter=" + twitter); + } - public static void delTwitterVerbose(String targetName, CommandSender sender) - { - final String reply = delTwitter(targetName); - if ("ok".equals(reply)) - { - Utilities.adminAction(sender.getName(), "Removing " + targetName + " from TwitterBot", true); - } - else if ("disabled".equals(reply)) - { - Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); - Utilities.playerMsg(sender, "TwitterBot has been temporarily disabled, please wait until it gets re-enabled", ChatColor.RED); - } - else if ("failed".equals(reply)) - { - Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); - Utilities.playerMsg(sender, "There was a problem querying the database, please let a developer know.", ChatColor.RED); - } - else if ("false".equals(reply)) - { - Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); - Utilities.playerMsg(sender, "There was a problem with the database, please let a developer know.", ChatColor.RED); - } - else if ("cannotauth".equals(reply)) - { - Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); - Utilities.playerMsg(sender, "The database password is incorrect, please let a developer know.", ChatColor.RED); - } - else if ("notfound".equals(reply)) - { - Utilities.playerMsg(sender, targetName + " did not have a twitter handle registered to their name.", ChatColor.GREEN); - } - } + public static String delTwitter(String player) { + return request("action=deltwitter&player=" + player); + } - public static String isEnabled() - { - return request("action=getstatus"); - } + public static void delTwitterVerbose(String targetName, CommandSender sender) { + final String reply = delTwitter(targetName); + if ("ok".equals(reply)) { + Utilities.adminAction(sender.getName(), "Removing " + targetName + " from TwitterBot", + true); + } else if ("disabled".equals(reply)) { + Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); + Utilities.playerMsg(sender, + "TwitterBot has been temporarily disabled, please wait until it gets re-enabled", + ChatColor.RED); + } else if ("failed".equals(reply)) { + Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); + Utilities.playerMsg(sender, + "There was a problem querying the database, please let a developer know.", + ChatColor.RED); + } else if ("false".equals(reply)) { + Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); + Utilities.playerMsg(sender, + "There was a problem with the database, please let a developer know.", + ChatColor.RED); + } else if ("cannotauth".equals(reply)) { + Utilities.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); + Utilities.playerMsg(sender, + "The database password is incorrect, please let a developer know.", ChatColor.RED); + } else if ("notfound".equals(reply)) { + Utilities.playerMsg(sender, + targetName + " did not have a twitter handle registered to their name.", + ChatColor.GREEN); + } + } - public static String setEnabled(String status) - { - return request("action=setstatus&status=" + status); - } + public static String isEnabled() { + return request("action=getstatus"); + } - private static String request(String queryString) - { - String line = "failed"; + public static String setEnabled(String status) { + return request("action=setstatus&status=" + status); + } - final String twitterbotURL = ConfigurationEntry.TWITTERBOT_URL.getString(); - final String twitterbotSecret = ConfigurationEntry.TWITTERBOT_SECRET.getString(); + private static String request(String queryString) { + String line = "failed"; - if (twitterbotURL != null && twitterbotSecret != null && !twitterbotURL.isEmpty() && !twitterbotSecret.isEmpty()) - { - try - { - URL getUrl = new URL(twitterbotURL + "?auth=" + twitterbotSecret + "&" + queryString); - URLConnection urlConnection = getUrl.openConnection(); - // Read the response - BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); - line = in.readLine(); - in.close(); - } - catch (Exception ex) - { - Log.severe(ex); - } - } + final String twitterbotURL = ConfigurationEntry.TWITTERBOT_URL.getString(); + final String twitterbotSecret = ConfigurationEntry.TWITTERBOT_SECRET.getString(); - return line; - } + if (twitterbotURL != null && twitterbotSecret != null && !twitterbotURL.isEmpty() + && !twitterbotSecret.isEmpty()) { + try { + URL getUrl = new URL( + twitterbotURL + "?auth=" + twitterbotSecret + "&" + queryString); + URLConnection urlConnection = getUrl.openConnection(); + // Read the response + BufferedReader in = new BufferedReader( + new InputStreamReader(urlConnection.getInputStream())); + line = in.readLine(); + in.close(); + } catch (Exception ex) { + Log.severe(ex); + } + } + + return line; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/bridge/DiscordBridge.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/bridge/DiscordBridge.java index 9ec3e4d..a10e0d5 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/bridge/DiscordBridge.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/bridge/DiscordBridge.java @@ -28,231 +28,234 @@ import org.javacord.api.event.message.MessageCreateEvent; public class DiscordBridge { - private static DiscordApi DISCORD_API; - private static TextChannel CHANNEL; - private static TextChannel ADMIN_CHANNEL; - public static DiscordCommandManager COMMAND_MANAGER; + public static DiscordCommandManager COMMAND_MANAGER; + private static DiscordApi DISCORD_API; + private static TextChannel CHANNEL; + private static TextChannel ADMIN_CHANNEL; - private static void onMessageCreateEvent(MessageCreateEvent message) { - boolean isAdmin = false; + private static void onMessageCreateEvent(MessageCreateEvent message) { + boolean isAdmin = false; - try { - isAdmin = message.getChannel().getIdAsString() - .equalsIgnoreCase(ADMIN_CHANNEL.getIdAsString()); - } catch (Exception ignored) { - } + try { + isAdmin = message.getChannel().getIdAsString() + .equalsIgnoreCase(ADMIN_CHANNEL.getIdAsString()); + } catch (Exception ignored) { + } - String content = message.getMessage().getReadableContent(); - String prefix = MainConfig.getString(ConfigurationEntry.DISCORD_PREFIX); - MessageAuthor author = message.getMessage().getAuthor(); + String content = message.getMessage().getReadableContent(); + String prefix = MainConfig.getString(ConfigurationEntry.DISCORD_PREFIX); + MessageAuthor author = message.getMessage().getAuthor(); - if (author.isBotUser() || !message.isServerMessage()) { - return; - } - Optional server = message.getServer(); - Optional user = author.asUser(); + if (author.isBotUser() || !message.isServerMessage()) { + return; + } + Optional server = message.getServer(); + Optional user = author.asUser(); - if (prefix == null) { - Log.severe("Bot prefix does not exist. Stopping bot..."); - stop(); - return; - } + if (prefix == null) { + Log.severe("Bot prefix does not exist. Stopping bot..."); + stop(); + return; + } - if (!server.isPresent()) { - Log.warning( - "Discord server wasn't present in message, this may be a sign you've not properly configured the intents for your bot."); - return; - } + if (!server.isPresent()) { + Log.warning( + "Discord server wasn't present in message, this may be a sign you've not properly configured the intents for your bot."); + return; + } - if (!user.isPresent()) { - Log.warning( - "Unable to get user of message author. This may be a sign you've not properly configured the intents for your bot."); - return; - } + if (!user.isPresent()) { + Log.warning( + "Unable to get user of message author. This may be a sign you've not properly configured the intents for your bot."); + return; + } - if (content.toLowerCase().startsWith(prefix)) { - COMMAND_MANAGER.parse(content, user.get(), server.get(), message.getChannel(), prefix); - } else { - Optional referenced = message.getMessage().getReferencedMessage(); + if (content.toLowerCase().startsWith(prefix)) { + COMMAND_MANAGER.parse(content, user.get(), server.get(), message.getChannel(), prefix); + } else { + Optional referenced = message.getMessage().getReferencedMessage(); - String reply = ""; - if (referenced.isPresent()) { - Message replyingTo = referenced.get(); - reply = String.format( - ChatColor.GRAY + "┌ " + ChatColor.YELLOW + "%s" + ChatColor.GRAY + " %s\n" - + ChatColor.WHITE, replyingTo.getAuthor().getDiscriminatedName(), - replyingTo.getReadableContent()); - } + String reply = ""; + if (referenced.isPresent()) { + Message replyingTo = referenced.get(); + reply = String.format( + ChatColor.GRAY + "┌ " + ChatColor.YELLOW + "%s" + ChatColor.GRAY + " %s\n" + + ChatColor.WHITE, replyingTo.getAuthor().getDiscriminatedName(), + replyingTo.getReadableContent()); + } - String format = MainConfig.getString( - (isAdmin) ? ConfigurationEntry.DISCORD_ADMIN_FORMAT : ConfigurationEntry.DISCORD_FORMAT); - format = format.replace("{TAG}", author.getDiscriminatedName()); - format = format.replace("{USERNAME}", author.getName()); - BaseComponent[] components = TextComponent.fromLegacyText( - ChatColor.translateAlternateColorCodes('&', String.format(format, content))); - TextComponent component = new TextComponent(reply); + String format = MainConfig.getString( + (isAdmin) ? ConfigurationEntry.DISCORD_ADMIN_FORMAT + : ConfigurationEntry.DISCORD_FORMAT); + format = format.replace("{TAG}", author.getDiscriminatedName()); + format = format.replace("{USERNAME}", author.getName()); + BaseComponent[] components = TextComponent.fromLegacyText( + ChatColor.translateAlternateColorCodes('&', String.format(format, content))); + TextComponent component = new TextComponent(reply); - component.addExtra(Utilities.fromBaseComponents(components)); + component.addExtra(Utilities.fromBaseComponents(components)); - if (message.getMessageAttachments().size() > 0) { - int i = 0; - for (MessageAttachment messageAttachment : message.getMessageAttachments()) { - String url = messageAttachment.getProxyUrl().toString(); - ClickEvent clickEvent = new ClickEvent(ClickEvent.Action.OPEN_URL, url); - TextComponent warningComponent = new TextComponent( - "WARNING: By clicking on this text, your client will open:\n\n"); - warningComponent.setColor(net.md_5.bungee.api.ChatColor.RED); - warningComponent.setBold(true); - TextComponent urlComponent = new TextComponent(url); - urlComponent.setColor(net.md_5.bungee.api.ChatColor.DARK_AQUA); - urlComponent.setUnderlined(true); - urlComponent.setBold(false); - warningComponent.addExtra(urlComponent); - HoverEvent hoverEvent = new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new BaseComponent[]{warningComponent}); - TextComponent mediaComponent = new TextComponent( - (i == 0 && content.isEmpty()) ? "[Media]" : " [Media]"); - mediaComponent.setColor(net.md_5.bungee.api.ChatColor.YELLOW); - mediaComponent.setClickEvent(clickEvent); - mediaComponent.setHoverEvent(hoverEvent); - component.addExtra(mediaComponent); - i++; - } - } + if (message.getMessageAttachments().size() > 0) { + int i = 0; + for (MessageAttachment messageAttachment : message.getMessageAttachments()) { + String url = messageAttachment.getProxyUrl().toString(); + ClickEvent clickEvent = new ClickEvent(ClickEvent.Action.OPEN_URL, url); + TextComponent warningComponent = new TextComponent( + "WARNING: By clicking on this text, your client will open:\n\n"); + warningComponent.setColor(net.md_5.bungee.api.ChatColor.RED); + warningComponent.setBold(true); + TextComponent urlComponent = new TextComponent(url); + urlComponent.setColor(net.md_5.bungee.api.ChatColor.DARK_AQUA); + urlComponent.setUnderlined(true); + urlComponent.setBold(false); + warningComponent.addExtra(urlComponent); + HoverEvent hoverEvent = new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new BaseComponent[]{warningComponent}); + TextComponent mediaComponent = new TextComponent( + (i == 0 && content.isEmpty()) ? "[Media]" : " [Media]"); + mediaComponent.setColor(net.md_5.bungee.api.ChatColor.YELLOW); + mediaComponent.setClickEvent(clickEvent); + mediaComponent.setHoverEvent(hoverEvent); + component.addExtra(mediaComponent); + i++; + } + } - if (isAdmin) { - for (org.bukkit.entity.Player player : Bukkit.getOnlinePlayers()) { - if (AdminList.isSuperAdmin(player)) { - player.spigot().sendMessage(component); - } - } - } else { - Bukkit.spigot().broadcast(component); - } - Log.info(component.toPlainText()); - } - } + if (isAdmin) { + for (org.bukkit.entity.Player player : Bukkit.getOnlinePlayers()) { + if (AdminList.isSuperAdmin(player)) { + player.spigot().sendMessage(component); + } + } + } else { + Bukkit.spigot().broadcast(component); + } + Log.info(component.toPlainText()); + } + } - public static void load() { + public static void load() { - if (Boolean.FALSE.equals(MainConfig.getBoolean(ConfigurationEntry.DISCORD_IS_ENABLED))) { - return; - } + if (Boolean.FALSE.equals(MainConfig.getBoolean(ConfigurationEntry.DISCORD_IS_ENABLED))) { + return; + } - try { - DISCORD_API = new DiscordApiBuilder() - .setToken(MainConfig.getString(ConfigurationEntry.DISCORD_TOKEN)) - .login() - .join(); + try { + DISCORD_API = new DiscordApiBuilder() + .setToken(MainConfig.getString(ConfigurationEntry.DISCORD_TOKEN)) + .login() + .join(); - Optional channelFuture = DISCORD_API.getTextChannelById( - MainConfig.getString(ConfigurationEntry.DISCORD_CHANNEL)); - Optional adminChannelFuture = DISCORD_API.getTextChannelById( - MainConfig.getString(ConfigurationEntry.DISCORD_ADMIN_CHANNEL)); + Optional channelFuture = DISCORD_API.getTextChannelById( + MainConfig.getString(ConfigurationEntry.DISCORD_CHANNEL)); + Optional adminChannelFuture = DISCORD_API.getTextChannelById( + MainConfig.getString(ConfigurationEntry.DISCORD_ADMIN_CHANNEL)); - if (!channelFuture.isPresent()) { - Log.warning("TFM 4.3 Reloaded could not find your channel, stopping!"); + if (!channelFuture.isPresent()) { + Log.warning("TFM 4.3 Reloaded could not find your channel, stopping!"); - return; - } + return; + } - CHANNEL = channelFuture.get(); - adminChannelFuture.ifPresent(textChannel -> ADMIN_CHANNEL = textChannel); - COMMAND_MANAGER = new DiscordCommandManager(); - COMMAND_MANAGER.init(); + CHANNEL = channelFuture.get(); + adminChannelFuture.ifPresent(textChannel -> ADMIN_CHANNEL = textChannel); + COMMAND_MANAGER = new DiscordCommandManager(); + COMMAND_MANAGER.init(); - CHANNEL.addMessageCreateListener(DiscordBridge::onMessageCreateEvent); - if (adminChannelFuture.isPresent()) { - ADMIN_CHANNEL.addMessageCreateListener(DiscordBridge::onMessageCreateEvent); - } - } catch (Exception e) { - Log.warning( - "Uh oh! It looks like TFM 4.3 Reloaded Discord couldn't start! Please check you have defined the bot's token & channel and also given it the correct permissions! (Read Messages and Send Messages)"); - Log.warning("If you've already set that up however, you may to read the exception below."); - Log.warning( - "If this is a bug with TFM 4.3 Reloaded, please report it at https://github.com/TheDeus-Group/TFM-4.3-Reloaded/issues or https://code.cat.casa/TheDeus-Group/TFM-4.3-Reloaded/issues"); - e.printStackTrace(); - return; - } + CHANNEL.addMessageCreateListener(DiscordBridge::onMessageCreateEvent); + if (adminChannelFuture.isPresent()) { + ADMIN_CHANNEL.addMessageCreateListener(DiscordBridge::onMessageCreateEvent); + } + } catch (Exception e) { + Log.warning( + "Uh oh! It looks like TFM 4.3 Reloaded Discord couldn't start! Please check you have defined the bot's token & channel and also given it the correct permissions! (Read Messages and Send Messages)"); + Log.warning( + "If you've already set that up however, you may to read the exception below."); + Log.warning( + "If this is a bug with TFM 4.3 Reloaded, please report it at https://github.com/TheDeus-Group/TFM-4.3-Reloaded/issues or https://code.cat.casa/TheDeus-Group/TFM-4.3-Reloaded/issues"); + e.printStackTrace(); + return; + } - Log.info("TFM 4.3 Reloaded Discord started."); + Log.info("TFM 4.3 Reloaded Discord started."); - transmitMessage("**Server has started**"); - } + transmitMessage("**Server has started**"); + } - public static String sanitizeMessage(String message) { - Pattern colors = Pattern.compile("§.", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); - Pattern pings = Pattern.compile("@", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); + public static String sanitizeMessage(String message) { + Pattern colors = Pattern.compile("§.", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); + Pattern pings = Pattern.compile("@", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); - if (message.length() > 2000) { - message = message.substring(0, 2000); - } + if (message.length() > 2000) { + message = message.substring(0, 2000); + } - return message.replaceAll(colors.pattern(), "").replaceAll(pings.pattern(), "@\u200B"); - } + return message.replaceAll(colors.pattern(), "").replaceAll(pings.pattern(), "@\u200B"); + } - public static void transmitMessage(String message) { - transmitMessage(message, false); - } + public static void transmitMessage(String message) { + transmitMessage(message, false); + } - public static void transmitMessage(String message, boolean disconnectAfterwards) { - if (CHANNEL == null) { - return; - } - if (!disconnectAfterwards) { - CHANNEL.sendMessage(sanitizeMessage(message)); - } else { - try { - CHANNEL.sendMessage(sanitizeMessage(message)).get(); - } catch (Exception ignored) { - } - CountDownLatch shutdownWaiter = new CountDownLatch(1); + public static void transmitMessage(String message, boolean disconnectAfterwards) { + if (CHANNEL == null) { + return; + } + if (!disconnectAfterwards) { + CHANNEL.sendMessage(sanitizeMessage(message)); + } else { + try { + CHANNEL.sendMessage(sanitizeMessage(message)).get(); + } catch (Exception ignored) { + } + CountDownLatch shutdownWaiter = new CountDownLatch(1); - Thread t = new Thread(() -> { - DISCORD_API.addLostConnectionListener(lostConnectionEvent -> shutdownWaiter.countDown()); - DISCORD_API.disconnect(); + Thread t = new Thread(() -> { + DISCORD_API.addLostConnectionListener( + lostConnectionEvent -> shutdownWaiter.countDown()); + DISCORD_API.disconnect(); - try { - shutdownWaiter.await(30, TimeUnit.SECONDS); - } catch (InterruptedException ignored) { - } - }); - t.start(); - } - } + try { + shutdownWaiter.await(30, TimeUnit.SECONDS); + } catch (InterruptedException ignored) { + } + }); + t.start(); + } + } - public static void transmitAdminMessage(String message) { - transmitAdminMessage(message, false); - } + public static void transmitAdminMessage(String message) { + transmitAdminMessage(message, false); + } - public static void transmitAdminMessage(String message, boolean disconnectAfterwards) { - if (ADMIN_CHANNEL == null) { - return; - } - if (!disconnectAfterwards) { - ADMIN_CHANNEL.sendMessage(sanitizeMessage(message)); - } else { - try { - ADMIN_CHANNEL.sendMessage(sanitizeMessage(message)).get(); - } catch (Exception ignored) { - } - DISCORD_API.disconnect(); - } - } + public static void transmitAdminMessage(String message, boolean disconnectAfterwards) { + if (ADMIN_CHANNEL == null) { + return; + } + if (!disconnectAfterwards) { + ADMIN_CHANNEL.sendMessage(sanitizeMessage(message)); + } else { + try { + ADMIN_CHANNEL.sendMessage(sanitizeMessage(message)).get(); + } catch (Exception ignored) { + } + DISCORD_API.disconnect(); + } + } - public static void stop() { + public static void stop() { - if (Boolean.FALSE.equals(MainConfig.getBoolean(ConfigurationEntry.DISCORD_IS_ENABLED))) { - return; - } + if (Boolean.FALSE.equals(MainConfig.getBoolean(ConfigurationEntry.DISCORD_IS_ENABLED))) { + return; + } - transmitMessage("**Server has stopped**", true); + transmitMessage("**Server has stopped**", true); - Log.info("TFM 4.3 Reloaded Discord stopped."); - } + Log.info("TFM 4.3 Reloaded Discord stopped."); + } - public static String fullySanitizeDiscordMessage(String message) { - String partiallySanitized = sanitizeMessage(message); - return partiallySanitized.replaceAll("([`_~*|\\\\])", "\\\\$1"); - } + public static String fullySanitizeDiscordMessage(String message) { + String partiallySanitized = sanitizeMessage(message); + return partiallySanitized.replaceAll("([`_~*|\\\\])", "\\\\$1"); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java index 8f8d4d6..bacde97 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java @@ -1,26 +1,28 @@ package me.StevenLawson.TotalFreedomMod.discord.command; +import java.util.List; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import java.util.List; - public interface DiscordCommand { - /** - * Can the user execute the command? - * @param user The user who is attempting execution - * @param server Where the user is attempting execution from - * @return If it can be executed - */ - boolean canExecute(User user, Server server); - /** - * Execute the command, and return the results - * @param user The user who executed the command - * @param args The arguments they executed it with - * @param guild - * @return The results as a MessageBuilder - */ - MessageBuilder execute(User user, List args, Server guild); + /** + * Can the user execute the command? + * + * @param user The user who is attempting execution + * @param server Where the user is attempting execution from + * @return If it can be executed + */ + boolean canExecute(User user, Server server); + + /** + * Execute the command, and return the results + * + * @param user The user who executed the command + * @param args The arguments they executed it with + * @param guild + * @return The results as a MessageBuilder + */ + MessageBuilder execute(User user, List args, Server guild); } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java index 4a29574..6f50f26 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java @@ -1,49 +1,61 @@ package me.StevenLawson.TotalFreedomMod.discord.command; -import me.StevenLawson.TotalFreedomMod.discord.commands.*; +import java.awt.Color; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import me.StevenLawson.TotalFreedomMod.discord.commands.AdminConsoleCommand; +import me.StevenLawson.TotalFreedomMod.discord.commands.HelpCommand; +import me.StevenLawson.TotalFreedomMod.discord.commands.ListCommand; +import me.StevenLawson.TotalFreedomMod.discord.commands.TPSCommand; +import me.StevenLawson.TotalFreedomMod.discord.commands.UptimeCommand; import org.javacord.api.entity.channel.TextChannel; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import java.awt.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - public class DiscordCommandManager { - public List commands = new ArrayList<>(); - public void init() { - // Server Commands - commands.add(new ListCommand("list", "Gives a list of online players.", "Server Commands", Collections.singletonList("l"), false)); - commands.add(new TPSCommand("tps", "Lag information regarding the server.", "Server Commands", false)); - commands.add(new AdminConsoleCommand("adminconsole", "Execute admin commands from discord.", "Server Commands", Collections.singletonList("ac"),true)); - commands.add(new UptimeCommand("uptime", "Returns the uptime of the VPS.", "Server Commands", false)); + public List commands = new ArrayList<>(); - // Help - commands.add(new HelpCommand("help", "Displays the help command", "Help", false)); - } + public void init() { + // Server Commands + commands.add(new ListCommand("list", "Gives a list of online players.", "Server Commands", + Collections.singletonList("l"), false)); + commands.add( + new TPSCommand("tps", "Lag information regarding the server.", "Server Commands", + false)); + commands.add(new AdminConsoleCommand("adminconsole", "Execute admin commands from discord.", + "Server Commands", Collections.singletonList("ac"), true)); + commands.add( + new UptimeCommand("uptime", "Returns the uptime of the VPS.", "Server Commands", + false)); - public void parse(String content, User user, Server server, TextChannel channel, String prefix) { - List args = new ArrayList<>(Arrays.asList(content.split(" "))); - String commandOrAlias = args.remove(0).split(prefix)[1]; + // Help + commands.add(new HelpCommand("help", "Displays the help command", "Help", false)); + } - for (ExecutableDiscordCommand command : commands) { - if(command.command.equalsIgnoreCase(commandOrAlias) || command.aliases.contains(commandOrAlias.toLowerCase())) { - if(command.canExecute(user, server)) { - MessageBuilder messageBuilder = command.execute(user, args, server); - messageBuilder.send(channel); - } else { - EmbedBuilder errorEmbed = new EmbedBuilder(); - errorEmbed.setTitle("Command error"); - errorEmbed.setColor(Color.RED); - errorEmbed.setDescription("You don't have permission to execute this command."); - channel.sendMessage(errorEmbed); - } - } - } - } + public void parse(String content, User user, Server server, TextChannel channel, + String prefix) { + List args = new ArrayList<>(Arrays.asList(content.split(" "))); + String commandOrAlias = args.remove(0).split(prefix)[1]; + + for (ExecutableDiscordCommand command : commands) { + if (command.command.equalsIgnoreCase(commandOrAlias) || command.aliases.contains( + commandOrAlias.toLowerCase())) { + if (command.canExecute(user, server)) { + MessageBuilder messageBuilder = command.execute(user, args, server); + messageBuilder.send(channel); + } else { + EmbedBuilder errorEmbed = new EmbedBuilder(); + errorEmbed.setTitle("Command error"); + errorEmbed.setColor(Color.RED); + errorEmbed.setDescription("You don't have permission to execute this command."); + channel.sendMessage(errorEmbed); + } + } + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java index b428edf..812fe28 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java @@ -1,69 +1,73 @@ package me.StevenLawson.TotalFreedomMod.discord.command; import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.List; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.permission.Role; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import java.util.ArrayList; -import java.util.List; - public class ExecutableDiscordCommand implements DiscordCommand { - public String command; - public String description; - public String category; - public List aliases; - //TODO: Add support for more complex permissions - public boolean isAdmin; - /** - * Creates a command - * @param command The string the command is execute by, e.g. list - * @param description What the command does - * @param category The category of the command - * @param aliases Other strings that should execute the command - * @param isAdmin If the command should only be accessible by administrators - */ - public ExecutableDiscordCommand(String command, String description, String category, List aliases, boolean isAdmin) { - this.command = command; - this.description = description; - this.category = category; - this.aliases = ImmutableList.copyOf(aliases); - this.isAdmin = isAdmin; - } + public String command; + public String description; + public String category; + public List aliases; + //TODO: Add support for more complex permissions + public boolean isAdmin; + + /** + * Creates a command + * + * @param command The string the command is execute by, e.g. list + * @param description What the command does + * @param category The category of the command + * @param aliases Other strings that should execute the command + * @param isAdmin If the command should only be accessible by administrators + */ + public ExecutableDiscordCommand(String command, String description, String category, + List aliases, boolean isAdmin) { + this.command = command; + this.description = description; + this.category = category; + this.aliases = ImmutableList.copyOf(aliases); + this.isAdmin = isAdmin; + } - /** - * Creates a command - * @param command The string the command is execute by, e.g. list - * @param description What the command does - * @param category The category of the command - * @param isAdmin If the command should only be accessible by administrators - */ - public ExecutableDiscordCommand(String command, String description, String category, boolean isAdmin) { - this.command = command; - this.description = description; - this.category = category; - this.aliases = ImmutableList.copyOf(new ArrayList<>()); - this.isAdmin = isAdmin; - } + /** + * Creates a command + * + * @param command The string the command is execute by, e.g. list + * @param description What the command does + * @param category The category of the command + * @param isAdmin If the command should only be accessible by administrators + */ + public ExecutableDiscordCommand(String command, String description, String category, + boolean isAdmin) { + this.command = command; + this.description = description; + this.category = category; + this.aliases = ImmutableList.copyOf(new ArrayList<>()); + this.isAdmin = isAdmin; + } - public boolean canExecute(User user, Server server) { - if(this.isAdmin) { - for (Role role : user.getRoles(server)) { - if(role.getName().toLowerCase().contains("admin")) { - return true; - } - } + public boolean canExecute(User user, Server server) { + if (this.isAdmin) { + for (Role role : user.getRoles(server)) { + if (role.getName().toLowerCase().contains("admin")) { + return true; + } + } - return false; - } + return false; + } - return true; - } + return true; + } - public MessageBuilder execute(User user, List args, Server guild) { - return new MessageBuilder().setContent(""); - } + public MessageBuilder execute(User user, List args, Server guild) { + return new MessageBuilder().setContent(""); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java index e2867d3..015897a 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java @@ -1,5 +1,7 @@ package me.StevenLawson.TotalFreedomMod.discord.commands; +import java.awt.Color; +import java.util.List; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.discord.command.ExecutableDiscordCommand; import me.StevenLawson.TotalFreedomMod.discord.sender.DiscordCommandSender; @@ -10,34 +12,36 @@ import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import java.awt.*; -import java.util.List; - public class AdminConsoleCommand extends ExecutableDiscordCommand { - private final EmbedBuilder success = new EmbedBuilder().setTitle("Success").setColor(Color.GREEN).setDescription("Command sent."); - private final EmbedBuilder error = new EmbedBuilder().setTitle("Command error").setColor(Color.RED).setDescription("An error occured. Check your DMs for more info."); - public AdminConsoleCommand(String command, String description, String category, List aliases, boolean isAdmin) { - super(command, description, category, aliases, isAdmin); - } + private final EmbedBuilder success = new EmbedBuilder().setTitle("Success") + .setColor(Color.GREEN).setDescription("Command sent."); + private final EmbedBuilder error = new EmbedBuilder().setTitle("Command error") + .setColor(Color.RED).setDescription("An error occured. Check your DMs for more info."); - @Override - public MessageBuilder execute(User user, List args, Server guild) { - try { - new BukkitRunnable() { + public AdminConsoleCommand(String command, String description, String category, + List aliases, boolean isAdmin) { + super(command, description, category, aliases, isAdmin); + } - @Override - public void run() { - DiscordCommandSender discordCommandSender = new DiscordCommandSender(user, guild); - String command = String.join(" ", args); - Bukkit.dispatchCommand(discordCommandSender, command); - } - }.runTask(TotalFreedomMod.plugin); + @Override + public MessageBuilder execute(User user, List args, Server guild) { + try { + new BukkitRunnable() { - return new MessageBuilder().addEmbed(success); - } catch (Exception e) { - user.sendMessage(String.valueOf(e)); - return new MessageBuilder().addEmbed(error); - } - } + @Override + public void run() { + DiscordCommandSender discordCommandSender = new DiscordCommandSender(user, + guild); + String command = String.join(" ", args); + Bukkit.dispatchCommand(discordCommandSender, command); + } + }.runTask(TotalFreedomMod.plugin); + + return new MessageBuilder().addEmbed(success); + } catch (Exception e) { + user.sendMessage(String.valueOf(e)); + return new MessageBuilder().addEmbed(error); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java index 71fca60..b00a32f 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java @@ -1,5 +1,11 @@ package me.StevenLawson.TotalFreedomMod.discord.commands; +import java.awt.Color; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.config.MainConfig; import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; @@ -9,43 +15,43 @@ import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import java.awt.*; -import java.util.*; -import java.util.List; - public class HelpCommand extends ExecutableDiscordCommand { - public HelpCommand(String command, String description, String category, boolean isAdmin) { - super(command, description, category, isAdmin); - } - @Override - public MessageBuilder execute(User user, List args, Server guild) { - EmbedBuilder embedBuilder = new EmbedBuilder(); - embedBuilder.setColor(Color.GREEN); - embedBuilder.setTitle("Help Command"); - Map> categories = new HashMap<>(); + public HelpCommand(String command, String description, String category, boolean isAdmin) { + super(command, description, category, isAdmin); + } - for (ExecutableDiscordCommand command : DiscordBridge.COMMAND_MANAGER.commands) { - if(!categories.containsKey(command.category)) { - categories.put(command.category, new ArrayList<>(Collections.singletonList(command))); - } else { - List commands = categories.get(command.category); - commands.add(command); - categories.put(command.category, commands); - } - } + @Override + public MessageBuilder execute(User user, List args, Server guild) { + EmbedBuilder embedBuilder = new EmbedBuilder(); + embedBuilder.setColor(Color.GREEN); + embedBuilder.setTitle("Help Command"); + Map> categories = new HashMap<>(); - for (String category : categories.keySet()) { - List commands = categories.get(category); - StringBuilder value = new StringBuilder(); + for (ExecutableDiscordCommand command : DiscordBridge.COMMAND_MANAGER.commands) { + if (!categories.containsKey(command.category)) { + categories.put(command.category, + new ArrayList<>(Collections.singletonList(command))); + } else { + List commands = categories.get(command.category); + commands.add(command); + categories.put(command.category, commands); + } + } - for (ExecutableDiscordCommand command : commands) { - value.append(String.format("**%s%s** - %s%n", MainConfig.getString(ConfigurationEntry.DISCORD_PREFIX), command.command, command.description)); - } + for (String category : categories.keySet()) { + List commands = categories.get(category); + StringBuilder value = new StringBuilder(); - embedBuilder.addField(category, value.toString().trim(), false); - } + for (ExecutableDiscordCommand command : commands) { + value.append(String.format("**%s%s** - %s%n", + MainConfig.getString(ConfigurationEntry.DISCORD_PREFIX), command.command, + command.description)); + } - return new MessageBuilder().addEmbeds(embedBuilder); - } + embedBuilder.addField(category, value.toString().trim(), false); + } + + return new MessageBuilder().addEmbeds(embedBuilder); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java index 1b5efb9..24b5556 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java @@ -39,20 +39,20 @@ public class ListCommand extends ExecutableDiscordCommand { player.getDisplayName()); if (essentialsUser != null) { - if (essentialsUser.isVanished()) { - continue; - } + if (essentialsUser.isVanished()) { + continue; + } } - if (VanishManager.isVanished(player)) { - continue; - } + if (VanishManager.isVanished(player)) { + continue; + } PlayerRank rank = PlayerRank.fromSender(player); - if (!inGameRanks.contains(rank)) { - inGameRanks.add(rank); - } + if (!inGameRanks.contains(rank)) { + inGameRanks.add(rank); + } } Collections.sort(inGameRanks); diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java index 31b0694..91223ec 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java @@ -1,27 +1,29 @@ package me.StevenLawson.TotalFreedomMod.discord.commands; +import java.util.List; import me.StevenLawson.TotalFreedomMod.Server; import me.StevenLawson.TotalFreedomMod.discord.command.ExecutableDiscordCommand; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.user.User; -import java.util.List; - public class TPSCommand extends ExecutableDiscordCommand { - public TPSCommand(String command, String description, String category, boolean isAdmin) { - super(command, description, category, isAdmin); - } - @Override - public MessageBuilder execute(User user, List args, org.javacord.api.entity.server.Server guild) { - EmbedBuilder builder = new EmbedBuilder(); - builder.setTitle("Server lag information"); - builder.addField("TPS", String.valueOf(Math.round(Server.getTPS()))); - builder.addField("Uptime", Server.getUptime()); - builder.addField("Maximum Memory", String.format("%s MB", Math.ceil(Server.getMaxMem()))); - builder.addField("Allocated Memory", String.format("%s MB", Math.floor(Server.getTotalMem()))); - builder.addField("Free Memory", String.format("%s MB", Math.ceil(Server.getFreeMem()))); - return new MessageBuilder().addEmbed(builder); - } + public TPSCommand(String command, String description, String category, boolean isAdmin) { + super(command, description, category, isAdmin); + } + + @Override + public MessageBuilder execute(User user, List args, + org.javacord.api.entity.server.Server guild) { + EmbedBuilder builder = new EmbedBuilder(); + builder.setTitle("Server lag information"); + builder.addField("TPS", String.valueOf(Math.round(Server.getTPS()))); + builder.addField("Uptime", Server.getUptime()); + builder.addField("Maximum Memory", String.format("%s MB", Math.ceil(Server.getMaxMem()))); + builder.addField("Allocated Memory", + String.format("%s MB", Math.floor(Server.getTotalMem()))); + builder.addField("Free Memory", String.format("%s MB", Math.ceil(Server.getFreeMem()))); + return new MessageBuilder().addEmbed(builder); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java index d25e4b3..7adb095 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java @@ -1,5 +1,9 @@ package me.StevenLawson.TotalFreedomMod.discord.commands; +import java.awt.Color; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.List; import me.StevenLawson.TotalFreedomMod.discord.command.ExecutableDiscordCommand; import me.StevenLawson.TotalFreedomMod.exception.PenisException; import org.javacord.api.entity.message.MessageBuilder; @@ -7,38 +11,34 @@ import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; -import java.awt.*; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.List; - public class UptimeCommand extends ExecutableDiscordCommand { - public UptimeCommand(String command, String description, String category, boolean isAdmin) { - super(command, description, category, isAdmin); - } - @Override - public MessageBuilder execute(User user, List args, Server guild) { - EmbedBuilder builder = new EmbedBuilder(); - try { - builder.setTitle("VPS Uptime Information") - .setDescription(getSystemUptime()); - } catch (Exception e) { - builder.setTitle("Command error") - .setColor(Color.RED) - .setDescription("Something went wrong"); - } - return new MessageBuilder().addEmbed(builder); - } + public UptimeCommand(String command, String description, String category, boolean isAdmin) { + super(command, description, category, isAdmin); + } - private String getSystemUptime() throws Exception { - Process uptimeProc = Runtime.getRuntime().exec("uptime"); - BufferedReader in = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream())); - String line = in.readLine(); - if (line != null) { - return line; - } else { - throw new PenisException(); - } - } + @Override + public MessageBuilder execute(User user, List args, Server guild) { + EmbedBuilder builder = new EmbedBuilder(); + try { + builder.setTitle("VPS Uptime Information") + .setDescription(getSystemUptime()); + } catch (Exception e) { + builder.setTitle("Command error") + .setColor(Color.RED) + .setDescription("Something went wrong"); + } + return new MessageBuilder().addEmbed(builder); + } + + private String getSystemUptime() throws Exception { + Process uptimeProc = Runtime.getRuntime().exec("uptime"); + BufferedReader in = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream())); + String line = in.readLine(); + if (line != null) { + return line; + } else { + throw new PenisException(); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java index 24fa839..31d22ca 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.discord.sender; +import java.util.Set; import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; import org.bukkit.Bukkit; import org.bukkit.Server; @@ -11,108 +12,107 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.javacord.api.entity.user.User; -import java.util.Set; - public class DiscordCommandSender implements CommandSender { - private final User user; - private final org.javacord.api.entity.server.Server server; - protected final PermissibleBase perm; - public DiscordCommandSender(User user, org.javacord.api.entity.server.Server server) { - this.user = user; - this.server = server; - this.perm = new PermissibleBase(this); - } + protected final PermissibleBase perm; + private final User user; + private final org.javacord.api.entity.server.Server server; - @Override - public void sendMessage(String s) { - user.sendMessage(DiscordBridge.sanitizeMessage(s)); - } + public DiscordCommandSender(User user, org.javacord.api.entity.server.Server server) { + this.user = user; + this.server = server; + this.perm = new PermissibleBase(this); + } - @Override - public void sendMessage(String[] strings) { - user.sendMessage(DiscordBridge.sanitizeMessage(String.join("\n", strings))); - } + @Override + public void sendMessage(String s) { + user.sendMessage(DiscordBridge.sanitizeMessage(s)); + } - @Override - public Server getServer() { - return Bukkit.getServer(); - } + @Override + public void sendMessage(String[] strings) { + user.sendMessage(DiscordBridge.sanitizeMessage(String.join("\n", strings))); + } - @Override - public String getName() { - return user.getDiscriminatedName(); - } + @Override + public Server getServer() { + return Bukkit.getServer(); + } - @Override - public boolean isPermissionSet(String s) { - return this.perm.isPermissionSet(s); - } + @Override + public String getName() { + return user.getDiscriminatedName(); + } - @Override - public boolean isPermissionSet(Permission permission) { - return this.perm.isPermissionSet(permission); - } + @Override + public boolean isPermissionSet(String s) { + return this.perm.isPermissionSet(s); + } - @Override - public boolean hasPermission(String s) { - return this.perm.hasPermission(s); - } + @Override + public boolean isPermissionSet(Permission permission) { + return this.perm.isPermissionSet(permission); + } - @Override - public boolean hasPermission(Permission permission) { - return this.perm.hasPermission(permission); - } + @Override + public boolean hasPermission(String s) { + return this.perm.hasPermission(s); + } - @Override - public PermissionAttachment addAttachment(Plugin plugin, String s, boolean b) { - return this.perm.addAttachment(plugin, s, b); - } + @Override + public boolean hasPermission(Permission permission) { + return this.perm.hasPermission(permission); + } - @Override - public PermissionAttachment addAttachment(Plugin plugin) { - return this.perm.addAttachment(plugin); - } + @Override + public PermissionAttachment addAttachment(Plugin plugin, String s, boolean b) { + return this.perm.addAttachment(plugin, s, b); + } - @Override - public PermissionAttachment addAttachment(Plugin plugin, String s, boolean b, int i) { - return this.perm.addAttachment(plugin, s, b, i); - } + @Override + public PermissionAttachment addAttachment(Plugin plugin) { + return this.perm.addAttachment(plugin); + } - @Override - public PermissionAttachment addAttachment(Plugin plugin, int i) { - return this.perm.addAttachment(plugin, i); - } + @Override + public PermissionAttachment addAttachment(Plugin plugin, String s, boolean b, int i) { + return this.perm.addAttachment(plugin, s, b, i); + } - @Override - public void removeAttachment(PermissionAttachment permissionAttachment) { - this.perm.removeAttachment(permissionAttachment); - } + @Override + public PermissionAttachment addAttachment(Plugin plugin, int i) { + return this.perm.addAttachment(plugin, i); + } - @Override - public void recalculatePermissions() { - this.perm.recalculatePermissions(); - } + @Override + public void removeAttachment(PermissionAttachment permissionAttachment) { + this.perm.removeAttachment(permissionAttachment); + } - @Override - public Set getEffectivePermissions() { - return this.perm.getEffectivePermissions(); - } + @Override + public void recalculatePermissions() { + this.perm.recalculatePermissions(); + } - @Override - public boolean isOp() { - return true; - } + @Override + public Set getEffectivePermissions() { + return this.perm.getEffectivePermissions(); + } - @Override - public void setOp(boolean b) { - } + @Override + public boolean isOp() { + return true; + } - public User getUser() { - return user; - } + @Override + public void setOp(boolean b) { + } - public org.javacord.api.entity.server.Server getDiscordServer() { - return server; - } + public User getUser() { + return user; + } + + public org.javacord.api.entity.server.Server getDiscordServer() { + return server; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/exception/PenisException.java b/src/main/java/me/StevenLawson/TotalFreedomMod/exception/PenisException.java index a53b061..5013f25 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/exception/PenisException.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/exception/PenisException.java @@ -1,11 +1,12 @@ package me.StevenLawson.TotalFreedomMod.exception; public class PenisException extends Exception { - public PenisException() { - } + public PenisException() { - public PenisException(String name) { - super(name); - } + } + + public PenisException(String name) { + super(name); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/fun/JumpPads.java b/src/main/java/me/StevenLawson/TotalFreedomMod/fun/JumpPads.java index 2146d10..857bb59 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/fun/JumpPads.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/fun/JumpPads.java @@ -8,126 +8,101 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.util.Vector; -public class JumpPads -{ - public static final Material BLOCK_ID; - public static final double DAMPING_COEFFICIENT; - public static final Map PUSH_MAP; - private static JumpPadMode mode; - private static double strength; +public class JumpPads { - static - { - BLOCK_ID = Material.WOOL; - DAMPING_COEFFICIENT = 0.8; - PUSH_MAP = new HashMap(); - mode = JumpPadMode.MADGEEK; - strength = 0.4; - } + public static final Material BLOCK_ID; + public static final double DAMPING_COEFFICIENT; + public static final Map PUSH_MAP; + private static JumpPadMode mode; + private static double strength; - public static void PlayerMoveEvent(PlayerMoveEvent event) - { - if (mode == JumpPadMode.OFF) - { - return; - } + static { + BLOCK_ID = Material.WOOL; + DAMPING_COEFFICIENT = 0.8; + PUSH_MAP = new HashMap(); + mode = JumpPadMode.MADGEEK; + strength = 0.4; + } - final Player player = event.getPlayer(); - final Block block = event.getTo().getBlock(); - final Vector velocity = player.getVelocity().clone(); + public static void PlayerMoveEvent(PlayerMoveEvent event) { + if (mode == JumpPadMode.OFF) { + return; + } - if (mode == JumpPadMode.MADGEEK) - { - Boolean canPush = PUSH_MAP.get(player); - if (canPush == null) - { - canPush = true; - } - if (block.getRelative(0, -1, 0).getType() == BLOCK_ID) - { - if (canPush) - { - velocity.multiply(strength + 0.85).multiply(-1.0); - } - canPush = false; - } - else - { - canPush = true; - } - PUSH_MAP.put(player, canPush); - } - else - { - if (block.getRelative(0, -1, 0).getType() == BLOCK_ID) - { - velocity.add(new Vector(0.0, strength, 0.0)); - } + final Player player = event.getPlayer(); + final Block block = event.getTo().getBlock(); + final Vector velocity = player.getVelocity().clone(); - if (mode == JumpPadMode.NORMAL_AND_SIDEWAYS) - { - if (block.getRelative(1, 0, 0).getType() == BLOCK_ID) - { - velocity.add(new Vector(-DAMPING_COEFFICIENT * strength, 0.0, 0.0)); - } + if (mode == JumpPadMode.MADGEEK) { + Boolean canPush = PUSH_MAP.get(player); + if (canPush == null) { + canPush = true; + } + if (block.getRelative(0, -1, 0).getType() == BLOCK_ID) { + if (canPush) { + velocity.multiply(strength + 0.85).multiply(-1.0); + } + canPush = false; + } else { + canPush = true; + } + PUSH_MAP.put(player, canPush); + } else { + if (block.getRelative(0, -1, 0).getType() == BLOCK_ID) { + velocity.add(new Vector(0.0, strength, 0.0)); + } - if (block.getRelative(-1, 0, 0).getType() == BLOCK_ID) - { - velocity.add(new Vector(DAMPING_COEFFICIENT * strength, 0.0, 0.0)); - } + if (mode == JumpPadMode.NORMAL_AND_SIDEWAYS) { + if (block.getRelative(1, 0, 0).getType() == BLOCK_ID) { + velocity.add(new Vector(-DAMPING_COEFFICIENT * strength, 0.0, 0.0)); + } - if (block.getRelative(0, 0, 1).getType() == BLOCK_ID) - { - velocity.add(new Vector(0.0, 0.0, -DAMPING_COEFFICIENT * strength)); - } + if (block.getRelative(-1, 0, 0).getType() == BLOCK_ID) { + velocity.add(new Vector(DAMPING_COEFFICIENT * strength, 0.0, 0.0)); + } - if (block.getRelative(0, 0, -1).getType() == BLOCK_ID) - { - velocity.add(new Vector(0.0, 0.0, DAMPING_COEFFICIENT * strength)); - } - } - } + if (block.getRelative(0, 0, 1).getType() == BLOCK_ID) { + velocity.add(new Vector(0.0, 0.0, -DAMPING_COEFFICIENT * strength)); + } - if (!player.getVelocity().equals(velocity)) - { - player.setFallDistance(0.0f); - player.setVelocity(velocity); - } - } + if (block.getRelative(0, 0, -1).getType() == BLOCK_ID) { + velocity.add(new Vector(0.0, 0.0, DAMPING_COEFFICIENT * strength)); + } + } + } - public static JumpPadMode getMode() - { - return mode; - } + if (!player.getVelocity().equals(velocity)) { + player.setFallDistance(0.0f); + player.setVelocity(velocity); + } + } - public static void setMode(JumpPadMode mode) - { - JumpPads.mode = mode; - } + public static JumpPadMode getMode() { + return mode; + } - public static double getStrength() - { - return strength; - } + public static void setMode(JumpPadMode mode) { + JumpPads.mode = mode; + } - public static void setStrength(double strength) - { - JumpPads.strength = strength; - } + public static double getStrength() { + return strength; + } - public enum JumpPadMode - { - OFF(false), NORMAL(true), NORMAL_AND_SIDEWAYS(true), MADGEEK(true); - private final boolean on; + public static void setStrength(double strength) { + JumpPads.strength = strength; + } - JumpPadMode(boolean on) - { - this.on = on; - } + public enum JumpPadMode { + OFF(false), NORMAL(true), NORMAL_AND_SIDEWAYS(true), MADGEEK(true); + private final boolean on; - public boolean isOn() - { - return on; - } - } + JumpPadMode(boolean on) { + this.on = on; + } + + public boolean isOn() { + return on; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/gamerule/GameRuleHandler.java b/src/main/java/me/StevenLawson/TotalFreedomMod/gamerule/GameRuleHandler.java index 7c89370..632b75e 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/gamerule/GameRuleHandler.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/gamerule/GameRuleHandler.java @@ -4,117 +4,99 @@ import java.util.EnumMap; import java.util.Iterator; import java.util.List; import java.util.Map; - import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Bukkit; import org.bukkit.World; -public class GameRuleHandler -{ - private static final EnumMap GAME_RULES = new EnumMap(TFM_GameRule.class); +public class GameRuleHandler { - static - { - for (TFM_GameRule gameRule : TFM_GameRule.values()) - { - GAME_RULES.put(gameRule, gameRule.getDefaultValue()); - } - } + private static final EnumMap GAME_RULES = new EnumMap( + TFM_GameRule.class); - private GameRuleHandler() - { - throw new AssertionError(); - } + static { + for (TFM_GameRule gameRule : TFM_GameRule.values()) { + GAME_RULES.put(gameRule, gameRule.getDefaultValue()); + } + } - public static void setGameRule(TFM_GameRule gameRule, boolean value) - { - setGameRule(gameRule, value, true); - } + private GameRuleHandler() { + throw new AssertionError(); + } - public static void setGameRule(TFM_GameRule gameRule, boolean value, boolean doCommit) - { - GAME_RULES.put(gameRule, TFM_GameRule_Value.fromBoolean(value)); - if (doCommit) - { - commitGameRules(); - } - } + public static void setGameRule(TFM_GameRule gameRule, boolean value) { + setGameRule(gameRule, value, true); + } - public static void commitGameRules() - { - List worlds = Bukkit.getWorlds(); - Iterator> it = GAME_RULES.entrySet().iterator(); - while (it.hasNext()) - { - Map.Entry gameRuleEntry = it.next(); - String gameRuleName = gameRuleEntry.getKey().getGameRuleName(); - String gameRuleValue = gameRuleEntry.getValue().toString(); - for (World world : worlds) - { - world.setGameRuleValue(gameRuleName, gameRuleValue); - if (gameRuleEntry.getKey() == TFM_GameRule.DO_DAYLIGHT_CYCLE && !gameRuleEntry.getValue().toBoolean()) - { - Utilities.setWorldTime(world, 6000L); - } - } - } - } + public static void setGameRule(TFM_GameRule gameRule, boolean value, boolean doCommit) { + GAME_RULES.put(gameRule, TFM_GameRule_Value.fromBoolean(value)); + if (doCommit) { + commitGameRules(); + } + } - public enum TFM_GameRule - { - DO_FIRE_TICK("doFireTick", TFM_GameRule_Value.TRUE), - MOB_GRIEFING("mobGriefing", TFM_GameRule_Value.TRUE), - KEEP_INVENTORY("keepInventory", TFM_GameRule_Value.TRUE), - DO_MOB_SPAWNING("doMobSpawning", TFM_GameRule_Value.TRUE), - DO_MOB_LOOT("doMobLoot", TFM_GameRule_Value.TRUE), - DO_TILE_DROPS("doTileDrops", TFM_GameRule_Value.TRUE), - COMMAND_BLOCK_OUTPUT("commandBlockOutput", TFM_GameRule_Value.TRUE), - NATURAL_REGENERATION("naturalRegeneration", TFM_GameRule_Value.TRUE), - DO_DAYLIGHT_CYCLE("doDaylightCycle", TFM_GameRule_Value.TRUE); - private final String gameRuleName; - private final TFM_GameRule_Value defaultValue; + public static void commitGameRules() { + List worlds = Bukkit.getWorlds(); + Iterator> it = GAME_RULES.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry gameRuleEntry = it.next(); + String gameRuleName = gameRuleEntry.getKey().getGameRuleName(); + String gameRuleValue = gameRuleEntry.getValue().toString(); + for (World world : worlds) { + world.setGameRuleValue(gameRuleName, gameRuleValue); + if (gameRuleEntry.getKey() == TFM_GameRule.DO_DAYLIGHT_CYCLE + && !gameRuleEntry.getValue().toBoolean()) { + Utilities.setWorldTime(world, 6000L); + } + } + } + } - TFM_GameRule(String gameRuleName, TFM_GameRule_Value defaultValue) - { - this.gameRuleName = gameRuleName; - this.defaultValue = defaultValue; - } + public enum TFM_GameRule { + DO_FIRE_TICK("doFireTick", TFM_GameRule_Value.TRUE), + MOB_GRIEFING("mobGriefing", TFM_GameRule_Value.TRUE), + KEEP_INVENTORY("keepInventory", TFM_GameRule_Value.TRUE), + DO_MOB_SPAWNING("doMobSpawning", TFM_GameRule_Value.TRUE), + DO_MOB_LOOT("doMobLoot", TFM_GameRule_Value.TRUE), + DO_TILE_DROPS("doTileDrops", TFM_GameRule_Value.TRUE), + COMMAND_BLOCK_OUTPUT("commandBlockOutput", TFM_GameRule_Value.TRUE), + NATURAL_REGENERATION("naturalRegeneration", TFM_GameRule_Value.TRUE), + DO_DAYLIGHT_CYCLE("doDaylightCycle", TFM_GameRule_Value.TRUE); + private final String gameRuleName; + private final TFM_GameRule_Value defaultValue; - public String getGameRuleName() - { - return gameRuleName; - } + TFM_GameRule(String gameRuleName, TFM_GameRule_Value defaultValue) { + this.gameRuleName = gameRuleName; + this.defaultValue = defaultValue; + } - public TFM_GameRule_Value getDefaultValue() - { - return defaultValue; - } - } + public String getGameRuleName() { + return gameRuleName; + } - public enum TFM_GameRule_Value - { - TRUE("true"), FALSE("false"); - private final String value; + public TFM_GameRule_Value getDefaultValue() { + return defaultValue; + } + } - TFM_GameRule_Value(String value) - { - this.value = value; - } + public enum TFM_GameRule_Value { + TRUE("true"), FALSE("false"); + private final String value; - @Override - public String toString() - { - return this.value; - } + TFM_GameRule_Value(String value) { + this.value = value; + } - public boolean toBoolean() - { - return (this.value.equals(TFM_GameRule_Value.TRUE.value)); - } + public static TFM_GameRule_Value fromBoolean(boolean in) { + return (in ? TFM_GameRule_Value.TRUE : TFM_GameRule_Value.FALSE); + } - public static TFM_GameRule_Value fromBoolean(boolean in) - { - return (in ? TFM_GameRule_Value.TRUE : TFM_GameRule_Value.FALSE); - } - } + @Override + public String toString() { + return this.value; + } + + public boolean toBoolean() { + return (this.value.equals(TFM_GameRule_Value.TRUE.value)); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTMLGenerationTools.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTMLGenerationTools.java index 4f93c34..96008be 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTMLGenerationTools.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTMLGenerationTools.java @@ -1,58 +1,54 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; + import java.util.Collection; import java.util.Iterator; import java.util.Map; -import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; -public class HTMLGenerationTools -{ - private HTMLGenerationTools() - { - throw new AssertionError(); - } +public class HTMLGenerationTools { - public static String paragraph(String data) - { - return "

" + escapeHtml4(data) + "

\r\n"; - } + private HTMLGenerationTools() { + throw new AssertionError(); + } - public static String heading(String data, int level) - { - return "" + escapeHtml4(data) + "\r\n"; - } + public static String paragraph(String data) { + return "

" + escapeHtml4(data) + "

\r\n"; + } - public static String list(Map map) - { - StringBuilder output = new StringBuilder(); + public static String heading(String data, int level) { + return "" + escapeHtml4(data) + "\r\n"; + } - output.append("
    \r\n"); + public static String list(Map map) { + StringBuilder output = new StringBuilder(); - Iterator> it = map.entrySet().iterator(); - while (it.hasNext()) - { - Map.Entry entry = it.next(); - output.append("
  • ").append(escapeHtml4(entry.getKey().toString() + " = " + entry.getValue().toString())).append("
  • \r\n"); - } + output.append("
      \r\n"); - output.append("
    \r\n"); + Iterator> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + output.append("
  • ").append( + escapeHtml4(entry.getKey().toString() + " = " + entry.getValue().toString())) + .append("
  • \r\n"); + } - return output.toString(); - } + output.append("
\r\n"); - public static String list(Collection list) - { - StringBuilder output = new StringBuilder(); + return output.toString(); + } - output.append("
    \r\n"); + public static String list(Collection list) { + StringBuilder output = new StringBuilder(); - for (T entry : list) - { - output.append("
  • ").append(escapeHtml4(entry.toString())).append("
  • \r\n"); - } + output.append("
      \r\n"); - output.append("
    \r\n"); + for (T entry : list) { + output.append("
  • ").append(escapeHtml4(entry.toString())).append("
  • \r\n"); + } - return output.toString(); - } + output.append("
\r\n"); + + return output.toString(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDFileModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDFileModule.java index 9448408..e8a17e5 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDFileModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDFileModule.java @@ -1,367 +1,314 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.io.File; +import java.io.FileInputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.httpd.NanoHTTPD.Response; import org.apache.commons.lang3.StringUtils; -import java.io.*; -import java.net.URLEncoder; -import java.util.*; - /* * This class was adapted from https://github.com/NanoHttpd/nanohttpd/blob/master/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java */ public class HTTPDFileModule extends HTTPDModule { - private final File rootDir = new File(ConfigurationEntry.HTTPD_PUBLIC_FOLDER.getString()); - public static final Map MIME_TYPES = new HashMap(); - static { - MIME_TYPES.put("css", "text/css"); - MIME_TYPES.put("htm", "text/html"); - MIME_TYPES.put("html", "text/html"); - MIME_TYPES.put("xml", "text/xml"); - MIME_TYPES.put("java", "text/x-java-source, text/java"); - MIME_TYPES.put("txt", "text/plain"); - MIME_TYPES.put("asc", "text/plain"); - MIME_TYPES.put("yml", "text/yaml"); - MIME_TYPES.put("gif", "image/gif"); - MIME_TYPES.put("jpg", "image/jpeg"); - MIME_TYPES.put("jpeg", "image/jpeg"); - MIME_TYPES.put("png", "image/png"); - MIME_TYPES.put("mp3", "audio/mpeg"); - MIME_TYPES.put("m3u", "audio/mpeg-url"); - MIME_TYPES.put("mp4", "video/mp4"); - MIME_TYPES.put("ogv", "video/ogg"); - MIME_TYPES.put("flv", "video/x-flv"); - MIME_TYPES.put("mov", "video/quicktime"); - MIME_TYPES.put("swf", "application/x-shockwave-flash"); - MIME_TYPES.put("js", "application/javascript"); - MIME_TYPES.put("pdf", "application/pdf"); - MIME_TYPES.put("doc", "application/msword"); - MIME_TYPES.put("ogg", "application/x-ogg"); - MIME_TYPES.put("zip", "application/octet-stream"); - MIME_TYPES.put("exe", "application/octet-stream"); - MIME_TYPES.put("class", "application/octet-stream"); - } + public static final Map MIME_TYPES = new HashMap(); - public HTTPDFileModule(NanoHTTPD.HTTPSession session) { - super(session); - } + static { + MIME_TYPES.put("css", "text/css"); + MIME_TYPES.put("htm", "text/html"); + MIME_TYPES.put("html", "text/html"); + MIME_TYPES.put("xml", "text/xml"); + MIME_TYPES.put("java", "text/x-java-source, text/java"); + MIME_TYPES.put("txt", "text/plain"); + MIME_TYPES.put("asc", "text/plain"); + MIME_TYPES.put("yml", "text/yaml"); + MIME_TYPES.put("gif", "image/gif"); + MIME_TYPES.put("jpg", "image/jpeg"); + MIME_TYPES.put("jpeg", "image/jpeg"); + MIME_TYPES.put("png", "image/png"); + MIME_TYPES.put("mp3", "audio/mpeg"); + MIME_TYPES.put("m3u", "audio/mpeg-url"); + MIME_TYPES.put("mp4", "video/mp4"); + MIME_TYPES.put("ogv", "video/ogg"); + MIME_TYPES.put("flv", "video/x-flv"); + MIME_TYPES.put("mov", "video/quicktime"); + MIME_TYPES.put("swf", "application/x-shockwave-flash"); + MIME_TYPES.put("js", "application/javascript"); + MIME_TYPES.put("pdf", "application/pdf"); + MIME_TYPES.put("doc", "application/msword"); + MIME_TYPES.put("ogg", "application/x-ogg"); + MIME_TYPES.put("zip", "application/octet-stream"); + MIME_TYPES.put("exe", "application/octet-stream"); + MIME_TYPES.put("class", "application/octet-stream"); + } - private File getRootDir() - { - return rootDir; - } + private final File rootDir = new File(ConfigurationEntry.HTTPD_PUBLIC_FOLDER.getString()); - private String encodeUri(String uri) - { - String newUri = ""; - StringTokenizer st = new StringTokenizer(uri, "/ ", true); - while (st.hasMoreTokens()) - { - String tok = st.nextToken(); - if (tok.equals("/")) - { - newUri += "/"; - } - else if (tok.equals(" ")) - { - newUri += "%20"; - } - else - { - try - { - newUri += URLEncoder.encode(tok, "UTF-8"); - } - catch (UnsupportedEncodingException ignored) - { - } - } - } - return newUri; - } + public HTTPDFileModule(NanoHTTPD.HTTPSession session) { + super(session); + } - public Response serveFile(String uri, Map params, File homeDir) - { - Response res = null; + private File getRootDir() { + return rootDir; + } - // Make sure we won't die of an exception later - if (!homeDir.isDirectory()) - { - res = new Response(Response.Status.INTERNAL_ERROR, NanoHTTPD.MIME_PLAINTEXT, "INTERNAL ERRROR: serveFile(): given homeDir is not a directory."); - } + private String encodeUri(String uri) { + String newUri = ""; + StringTokenizer st = new StringTokenizer(uri, "/ ", true); + while (st.hasMoreTokens()) { + String tok = st.nextToken(); + if (tok.equals("/")) { + newUri += "/"; + } else if (tok.equals(" ")) { + newUri += "%20"; + } else { + try { + newUri += URLEncoder.encode(tok, "UTF-8"); + } catch (UnsupportedEncodingException ignored) { + } + } + } + return newUri; + } - if (res == null) - { - // Remove URL arguments - uri = uri.trim().replace(File.separatorChar, '/'); - if (uri.indexOf('?') >= 0) - { - uri = uri.substring(0, uri.indexOf('?')); - } + public Response serveFile(String uri, Map params, File homeDir) { + Response res = null; - // Prohibit getting out of current directory - if (uri.startsWith("src/main") || uri.endsWith("src/main") || uri.contains("../")) - { - res = new Response(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, "FORBIDDEN: Won't serve ../ for security reasons."); - } - } + // Make sure we won't die of an exception later + if (!homeDir.isDirectory()) { + res = new Response(Response.Status.INTERNAL_ERROR, NanoHTTPD.MIME_PLAINTEXT, + "INTERNAL ERRROR: serveFile(): given homeDir is not a directory."); + } - File f = new File(homeDir, uri); - if (res == null && !f.exists()) - { - res = new Response(Response.Status.NOT_FOUND, NanoHTTPD.MIME_PLAINTEXT, "Error 404, file not found."); - } + if (res == null) { + // Remove URL arguments + uri = uri.trim().replace(File.separatorChar, '/'); + if (uri.indexOf('?') >= 0) { + uri = uri.substring(0, uri.indexOf('?')); + } - // List the directory, if necessary - if (res == null && f.isDirectory()) - { - // Browsers get confused without '/' after the - // directory, send a redirect. - if (!uri.endsWith("/")) - { - uri += "/"; - res = new Response(Response.Status.REDIRECT, NanoHTTPD.MIME_HTML, "Redirected: " + uri - + ""); - res.addHeader("Location", uri); - } + // Prohibit getting out of current directory + if (uri.startsWith("src/main") || uri.endsWith("src/main") || uri.contains("../")) { + res = new Response(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, + "FORBIDDEN: Won't serve ../ for security reasons."); + } + } - if (res == null) - { - // First try index.html and index.htm - if (new File(f, "index.html").exists()) - { - f = new File(homeDir, uri + "/index.html"); - } - else if (new File(f, "index.htm").exists()) - { - f = new File(homeDir, uri + "/index.htm"); - } - else if (f.canRead()) - { - // No index file, list the directory if it is readable - res = new Response(listDirectory(uri, f)); - } - else - { - res = new Response(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, "FORBIDDEN: No directory listing."); - } - } - } + File f = new File(homeDir, uri); + if (res == null && !f.exists()) { + res = new Response(Response.Status.NOT_FOUND, NanoHTTPD.MIME_PLAINTEXT, + "Error 404, file not found."); + } - try - { - if (res == null) - { - // Get MIME type from file name extension, if possible - String mime = null; - int dot = f.getCanonicalPath().lastIndexOf('.'); - if (dot >= 0) - { - mime = MIME_TYPES.get(f.getCanonicalPath().substring(dot + 1).toLowerCase()); - } - if (mime == null) - { - mime = HTTPDManager.MIME_DEFAULT_BINARY; - } + // List the directory, if necessary + if (res == null && f.isDirectory()) { + // Browsers get confused without '/' after the + // directory, send a redirect. + if (!uri.endsWith("/")) { + uri += "/"; + res = new Response(Response.Status.REDIRECT, NanoHTTPD.MIME_HTML, + "Redirected: " + uri + + ""); + res.addHeader("Location", uri); + } - // Calculate etag - String etag = Integer.toHexString((f.getAbsolutePath() + f.lastModified() + "" + f.length()).hashCode()); + if (res == null) { + // First try index.html and index.htm + if (new File(f, "index.html").exists()) { + f = new File(homeDir, uri + "/index.html"); + } else if (new File(f, "index.htm").exists()) { + f = new File(homeDir, uri + "/index.htm"); + } else if (f.canRead()) { + // No index file, list the directory if it is readable + res = new Response(listDirectory(uri, f)); + } else { + res = new Response(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, + "FORBIDDEN: No directory listing."); + } + } + } - final long fileLen = f.length(); + try { + if (res == null) { + // Get MIME type from file name extension, if possible + String mime = null; + int dot = f.getCanonicalPath().lastIndexOf('.'); + if (dot >= 0) { + mime = MIME_TYPES.get(f.getCanonicalPath().substring(dot + 1).toLowerCase()); + } + if (mime == null) { + mime = HTTPDManager.MIME_DEFAULT_BINARY; + } - long startFrom = 0; - long endAt = -1; - final String range = params.get("range"); - if (range != null) - { - final String[] rangeParams = StringUtils.split(range, "="); - if (rangeParams.length >= 2) - { - if ("bytes".equalsIgnoreCase(rangeParams[0])) - { - try - { - int minus = rangeParams[1].indexOf('-'); - if (minus > 0) - { - startFrom = Long.parseLong(rangeParams[1].substring(0, minus)); - endAt = Long.parseLong(rangeParams[1].substring(minus + 1)); - } - } - catch (NumberFormatException ignored) - { - } - } - else if ("tail".equalsIgnoreCase(rangeParams[0])) - { - try - { - final long tailLen = Long.parseLong(rangeParams[1]); - if (tailLen < fileLen) - { - startFrom = fileLen - tailLen - 2; - if (startFrom < 0) - { - startFrom = 0; - } - } - } - catch (NumberFormatException ignored) - { - } - } - } - } + // Calculate etag + String etag = Integer.toHexString( + (f.getAbsolutePath() + f.lastModified() + "" + f.length()).hashCode()); - // Change return code and add Content-Range header when skipping is requested - if (range != null && startFrom >= 0) - { - if (startFrom >= fileLen) - { - res = new Response(Response.Status.RANGE_NOT_SATISFIABLE, NanoHTTPD.MIME_PLAINTEXT, ""); - res.addHeader("Content-Range", "bytes 0-0/" + fileLen); - res.addHeader("ETag", etag); - } - else - { - if (endAt < 0) - { - endAt = fileLen - 1; - } - long newLen = endAt - startFrom + 1; - if (newLen < 0) - { - newLen = 0; - } + final long fileLen = f.length(); - final long dataLen = newLen; - FileInputStream fis = new FileInputStream(f) - { - @Override - public int available() throws IOException - { - return (int) dataLen; - } - }; - fis.skip(startFrom); + long startFrom = 0; + long endAt = -1; + final String range = params.get("range"); + if (range != null) { + final String[] rangeParams = StringUtils.split(range, "="); + if (rangeParams.length >= 2) { + if ("bytes".equalsIgnoreCase(rangeParams[0])) { + try { + int minus = rangeParams[1].indexOf('-'); + if (minus > 0) { + startFrom = Long.parseLong(rangeParams[1].substring(0, minus)); + endAt = Long.parseLong(rangeParams[1].substring(minus + 1)); + } + } catch (NumberFormatException ignored) { + } + } else if ("tail".equalsIgnoreCase(rangeParams[0])) { + try { + final long tailLen = Long.parseLong(rangeParams[1]); + if (tailLen < fileLen) { + startFrom = fileLen - tailLen - 2; + if (startFrom < 0) { + startFrom = 0; + } + } + } catch (NumberFormatException ignored) { + } + } + } + } - res = new Response(Response.Status.PARTIAL_CONTENT, mime, fis); - res.addHeader("Content-Length", "" + dataLen); - res.addHeader("Content-Range", "bytes " + startFrom + "-" + endAt + "/" + fileLen); - res.addHeader("ETag", etag); - } - } - else - { - res = new Response(Response.Status.OK, mime, new FileInputStream(f)); - res.addHeader("Content-Length", "" + fileLen); - res.addHeader("ETag", etag); - } - } - } - catch (IOException ioe) - { - res = new Response(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, "FORBIDDEN: Reading file failed."); - } + // Change return code and add Content-Range header when skipping is requested + if (range != null && startFrom >= 0) { + if (startFrom >= fileLen) { + res = new Response(Response.Status.RANGE_NOT_SATISFIABLE, + NanoHTTPD.MIME_PLAINTEXT, ""); + res.addHeader("Content-Range", "bytes 0-0/" + fileLen); + res.addHeader("ETag", etag); + } else { + if (endAt < 0) { + endAt = fileLen - 1; + } + long newLen = endAt - startFrom + 1; + if (newLen < 0) { + newLen = 0; + } - res.addHeader("Accept-Ranges", "bytes"); // Announce that the file server accepts partial content requestes - return res; - } + final long dataLen = newLen; + FileInputStream fis = new FileInputStream(f) { + @Override + public int available() throws IOException { + return (int) dataLen; + } + }; + fis.skip(startFrom); - private String listDirectory(String uri, File f) - { - String heading = "Directory " + uri; - String msg = "" + heading + "" - + "

" + heading + "

"; + res = new Response(Response.Status.PARTIAL_CONTENT, mime, fis); + res.addHeader("Content-Length", "" + dataLen); + res.addHeader("Content-Range", + "bytes " + startFrom + "-" + endAt + "/" + fileLen); + res.addHeader("ETag", etag); + } + } else { + res = new Response(Response.Status.OK, mime, new FileInputStream(f)); + res.addHeader("Content-Length", "" + fileLen); + res.addHeader("ETag", etag); + } + } + } catch (IOException ioe) { + res = new Response(Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, + "FORBIDDEN: Reading file failed."); + } - String up = null; - if (uri.length() > 1) - { - String u = uri.substring(0, uri.length() - 1); - int slash = u.lastIndexOf('/'); - if (slash >= 0 && slash < u.length()) - { - up = uri.substring(0, slash + 1); - } - } + res.addHeader("Accept-Ranges", + "bytes"); // Announce that the file server accepts partial content requestes + return res; + } - List _files = Arrays.asList(f.list(new FilenameFilter() - { - @Override - public boolean accept(File dir, String name) - { - return new File(dir, name).isFile(); - } - })); - Collections.sort(_files); - List directories = Arrays.asList(f.list(new FilenameFilter() - { - @Override - public boolean accept(File dir, String name) - { - return new File(dir, name).isDirectory(); - } - })); - Collections.sort(directories); - if (up != null || directories.size() + _files.size() > 0) - { - msg += "
    "; - if (up != null || directories.size() > 0) - { - msg += "
    "; - if (up != null) - { - msg += "
  • ..
  • "; - } - for (int i = 0; i < directories.size(); i++) - { - String dir = directories.get(i) + "/"; - msg += "
  • " + dir + "
  • "; - } - msg += "
    "; - } - if (_files.size() > 0) - { - msg += "
    "; - for (int i = 0; i < _files.size(); i++) - { - String file = _files.get(i); + private String listDirectory(String uri, File f) { + String heading = "Directory " + uri; + String msg = "" + heading + "" + + "

    " + heading + "

    "; - msg += "
  • " + file + ""; - File curFile = new File(f, file); - long len = curFile.length(); - msg += " ("; - if (len < 1024) - { - msg += len + " bytes"; - } - else if (len < 1024 * 1024) - { - msg += len / 1024 + "." + (len % 1024 / 10 % 100) + " KB"; - } - else - { - msg += len / (1024 * 1024) + "." + len % (1024 * 1024) / 10 % 100 + " MB"; - } - msg += ")
  • "; - } - msg += "
    "; - } - msg += "
"; - } - msg += ""; - return msg; - } + String up = null; + if (uri.length() > 1) { + String u = uri.substring(0, uri.length() - 1); + int slash = u.lastIndexOf('/'); + if (slash >= 0 && slash < u.length()) { + up = uri.substring(0, slash + 1); + } + } - @Override - public Response getResponse() - { - return serveFile(uri, params, getRootDir()); - } + List _files = Arrays.asList(f.list(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return new File(dir, name).isFile(); + } + })); + Collections.sort(_files); + List directories = Arrays.asList(f.list(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return new File(dir, name).isDirectory(); + } + })); + Collections.sort(directories); + if (up != null || directories.size() + _files.size() > 0) { + msg += "
    "; + if (up != null || directories.size() > 0) { + msg += "
    "; + if (up != null) { + msg += "
  • ..
  • "; + } + for (int i = 0; i < directories.size(); i++) { + String dir = directories.get(i) + "/"; + msg += "
  • " + dir + "
  • "; + } + msg += "
    "; + } + if (_files.size() > 0) { + msg += "
    "; + for (int i = 0; i < _files.size(); i++) { + String file = _files.get(i); + + msg += "
  • " + + file + ""; + File curFile = new File(f, file); + long len = curFile.length(); + msg += " ("; + if (len < 1024) { + msg += len + " bytes"; + } else if (len < 1024 * 1024) { + msg += len / 1024 + "." + (len % 1024 / 10 % 100) + " KB"; + } else { + msg += len / (1024 * 1024) + "." + len % (1024 * 1024) / 10 % 100 + " MB"; + } + msg += ")
  • "; + } + msg += "
    "; + } + msg += "
"; + } + msg += ""; + return msg; + } + + @Override + public Response getResponse() { + return serveFile(uri, params, getRootDir()); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDHelpModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDHelpModule.java index 74721c5..582302d 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDHelpModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDHelpModule.java @@ -1,5 +1,16 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.heading; +import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.paragraph; +import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.Bukkit; @@ -7,114 +18,103 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandMap; import org.bukkit.command.PluginIdentifiableCommand; -import java.util.*; - -import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.heading; -import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.paragraph; -import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; - public class HTTPDHelpModule extends HTTPDModule { - public HTTPDHelpModule(NanoHTTPD.HTTPSession session) { - super(session); - } - @Override - public String getBody() { - StringBuilder responseBody = new StringBuilder(); + public HTTPDHelpModule(NanoHTTPD.HTTPSession session) { + super(session); + } - CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(), "commandMap"); - HashMap knownCommands; - if (commandMap == null - || (knownCommands = Utilities.getField(commandMap, "knownCommands")) == null) { - return paragraph("Error loading commands."); - } + private static String buildDescription(Command command) { + StringBuilder sb = new StringBuilder(); - responseBody - .append(heading("Command Help", 1)) - .append(paragraph( - "This page is an automatically generated listing of all plugin commands that are currently live on the server. " - + "Please note that it does not include vanilla server commands.")); + sb.append( + "
  • {$CMD_NAME} - Usage: {$CMD_USAGE}" + .replace("{$CMD_NAME}", escapeHtml4(command.getName().trim())) + .replace("{$CMD_USAGE}", escapeHtml4(command.getUsage().trim()))); - final Map> commandsByPlugin = new HashMap>(); + if (!command.getAliases().isEmpty()) { + sb.append( + " - Aliases: {$CMD_ALIASES}" + .replace("{$CMD_ALIASES}", + escapeHtml4(StringUtils.join(command.getAliases(), ", ")))); + } - final Iterator> itKnownCommands = knownCommands.entrySet().iterator(); - while (itKnownCommands.hasNext()) - { - final Map.Entry entry = itKnownCommands.next(); - final String name = entry.getKey(); - final Command command = entry.getValue(); - if (name.equalsIgnoreCase(command.getName())) - { - String pluginName = "Bukkit Default"; - if (command instanceof PluginIdentifiableCommand) - { - pluginName = ((PluginIdentifiableCommand) command).getPlugin().getName(); - } - List pluginCommands = commandsByPlugin.get(pluginName); - if (pluginCommands == null) - { - commandsByPlugin.put(pluginName, pluginCommands = new ArrayList()); - } - pluginCommands.add(command); - } - } + sb.append( + "
    {$CMD_DESC}
  • \r\n" + .replace("{$CMD_DESC}", escapeHtml4(command.getDescription().trim()))); - final Iterator>> itCommandsByPlugin = commandsByPlugin.entrySet().iterator(); - while (itCommandsByPlugin.hasNext()) - { - final Map.Entry> entry = itCommandsByPlugin.next(); - final String pluginName = entry.getKey(); - final List commands = entry.getValue(); + return sb.toString(); + } - Collections.sort(commands, Comparator.comparing(Command::getName)); + @Override + public String getBody() { + StringBuilder responseBody = new StringBuilder(); - responseBody.append(heading(pluginName, 2)).append("
      \r\n"); + CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(), + "commandMap"); + HashMap knownCommands; + if (commandMap == null + || (knownCommands = Utilities.getField(commandMap, "knownCommands")) == null) { + return paragraph("Error loading commands."); + } - for (Command command : commands) - { - responseBody.append(buildDescription(command)); - } + responseBody + .append(heading("Command Help", 1)) + .append(paragraph( + "This page is an automatically generated listing of all plugin commands that are currently live on the server. " + + "Please note that it does not include vanilla server commands.")); - responseBody.append("
    \r\n"); - } + final Map> commandsByPlugin = new HashMap>(); - return responseBody.toString(); - } + final Iterator> itKnownCommands = knownCommands.entrySet() + .iterator(); + while (itKnownCommands.hasNext()) { + final Map.Entry entry = itKnownCommands.next(); + final String name = entry.getKey(); + final Command command = entry.getValue(); + if (name.equalsIgnoreCase(command.getName())) { + String pluginName = "Bukkit Default"; + if (command instanceof PluginIdentifiableCommand) { + pluginName = ((PluginIdentifiableCommand) command).getPlugin().getName(); + } + List pluginCommands = commandsByPlugin.get(pluginName); + if (pluginCommands == null) { + commandsByPlugin.put(pluginName, pluginCommands = new ArrayList()); + } + pluginCommands.add(command); + } + } - private static String buildDescription(Command command) - { - StringBuilder sb = new StringBuilder(); + final Iterator>> itCommandsByPlugin = commandsByPlugin.entrySet() + .iterator(); + while (itCommandsByPlugin.hasNext()) { + final Map.Entry> entry = itCommandsByPlugin.next(); + final String pluginName = entry.getKey(); + final List commands = entry.getValue(); - sb.append( - "
  • {$CMD_NAME} - Usage: {$CMD_USAGE}" - .replace("{$CMD_NAME}", escapeHtml4(command.getName().trim())) - .replace("{$CMD_USAGE}", escapeHtml4(command.getUsage().trim()))); + Collections.sort(commands, Comparator.comparing(Command::getName)); - if (!command.getAliases().isEmpty()) - { - sb.append( - " - Aliases: {$CMD_ALIASES}" - .replace("{$CMD_ALIASES}", escapeHtml4(StringUtils.join(command.getAliases(), ", ")))); - } + responseBody.append(heading(pluginName, 2)).append("
      \r\n"); - sb.append( - "
      {$CMD_DESC}\r\n" - .replace("{$CMD_DESC}", escapeHtml4(command.getDescription().trim()))); + for (Command command : commands) { + responseBody.append(buildDescription(command)); + } - return sb.toString(); - } + responseBody.append("
    \r\n"); + } - @Override - public String getTitle() - { - return "TotalFreedomMod :: Command Help"; - } + return responseBody.toString(); + } - @Override - public String getStyle() - { - return ".commandName{font-weight:bold;}.commandDescription{padding-left:15px;}li{margin:.15em;padding:.15em;}"; - } + @Override + public String getTitle() { + return "TotalFreedomMod :: Command Help"; + } + + @Override + public String getStyle() { + return ".commandName{font-weight:bold;}.commandDescription{padding-left:15px;}li{margin:.15em;padding:.15em;}"; + } // @Override // public String getScript() // { diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDListModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDListModule.java index 9060472..dcd6d97 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDListModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDListModule.java @@ -1,70 +1,60 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.util.Collection; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import java.util.Collection; - public class HTTPDListModule extends HTTPDModule { - public HTTPDListModule(NanoHTTPD.HTTPSession session) { - super(session); - } - @Override - public String getBody() { - final StringBuilder body = new StringBuilder(); + public HTTPDListModule(NanoHTTPD.HTTPSession session) { + super(session); + } - final Collection onlinePlayers = Bukkit.getOnlinePlayers(); + @Override + public String getBody() { + final StringBuilder body = new StringBuilder(); - body.append("

    There are ").append(onlinePlayers.size()).append("/").append(Bukkit.getMaxPlayers()).append(" players online:

    \r\n"); + final Collection onlinePlayers = Bukkit.getOnlinePlayers(); - body.append("
      \r\n"); + body.append("

      There are ").append(onlinePlayers.size()).append("/") + .append(Bukkit.getMaxPlayers()).append(" players online:

      \r\n"); - for (Player player : onlinePlayers) - { - String prefix = ""; - if (AdminList.isSuperAdmin(player)) - { - if (AdminList.isSeniorAdmin(player)) - { - prefix = "[SrA]"; - } - else - { - prefix = "[SA]"; - } + body.append("
        \r\n"); - if (Utilities.DEVELOPERS.contains(player.getName())) - { - prefix = "[Dev]"; - } + for (Player player : onlinePlayers) { + String prefix = ""; + if (AdminList.isSuperAdmin(player)) { + if (AdminList.isSeniorAdmin(player)) { + prefix = "[SrA]"; + } else { + prefix = "[SA]"; + } - if (player.getName().equals("markbyron")) - { - prefix = "[Owner]"; - } - } - else - { - if (player.isOp()) - { - prefix = "[OP]"; - } - } + if (Utilities.DEVELOPERS.contains(player.getName())) { + prefix = "[Dev]"; + } - body.append("
      • ").append(prefix).append(player.getName()).append("
      • \r\n"); - } + if (player.getName().equals("markbyron")) { + prefix = "[Owner]"; + } + } else { + if (player.isOp()) { + prefix = "[OP]"; + } + } - body.append("
      \r\n"); + body.append("
    • ").append(prefix).append(player.getName()).append("
    • \r\n"); + } - return body.toString(); - } + body.append("
    \r\n"); - @Override - public String getTitle() - { - return "Total Freedom - Online Users"; - } + return body.toString(); + } + + @Override + public String getTitle() { + return "Total Freedom - Online Users"; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDManager.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDManager.java index 2832b63..dd9f3f1 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDManager.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDManager.java @@ -1,5 +1,11 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.concurrent.Callable; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; @@ -9,258 +15,219 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.bukkit.Bukkit; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.concurrent.Callable; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - public class HTTPDManager { - public static String MIME_DEFAULT_BINARY; - // - private static final Pattern EXT_REGEX; - // - public static final int PORT; - // - private static final TFM_HTTPD HTTPD; - private HTTPDManager() { - throw new AssertionError(); - } + // + public static final int PORT; + // + private static final Pattern EXT_REGEX; + // + private static final TFM_HTTPD HTTPD; + public static String MIME_DEFAULT_BINARY; - static - { - MIME_DEFAULT_BINARY = "application/octet-stream"; - EXT_REGEX = Pattern.compile("\\.([^\\.\\s]+)$"); - PORT = ConfigurationEntry.HTTPD_PORT.getInteger(); - HTTPD = new TFM_HTTPD(PORT); - } + static { + MIME_DEFAULT_BINARY = "application/octet-stream"; + EXT_REGEX = Pattern.compile("\\.([^\\.\\s]+)$"); + PORT = ConfigurationEntry.HTTPD_PORT.getInteger(); + HTTPD = new TFM_HTTPD(PORT); + } - public static void start() - { - if (!ConfigurationEntry.HTTPD_ENABLED.getBoolean()) - { - return; - } + private HTTPDManager() { + throw new AssertionError(); + } - try - { - HTTPD.start(); + public static void start() { + if (!ConfigurationEntry.HTTPD_ENABLED.getBoolean()) { + return; + } - if (HTTPD.isAlive()) - { - Log.info("TFM HTTPd started. Listening on port: " + HTTPD.getListeningPort()); - } - else - { - Log.info("Error starting TFM HTTPd."); - } - } - catch (IOException ex) - { - Log.severe(ex); - } - } + try { + HTTPD.start(); - public static void stop() - { - if (!ConfigurationEntry.HTTPD_ENABLED.getBoolean()) { - return; - } + if (HTTPD.isAlive()) { + Log.info("TFM HTTPd started. Listening on port: " + HTTPD.getListeningPort()); + } else { + Log.info("Error starting TFM HTTPd."); + } + } catch (IOException ex) { + Log.severe(ex); + } + } - HTTPD.stop(); + public static void stop() { + if (!ConfigurationEntry.HTTPD_ENABLED.getBoolean()) { + return; + } - Log.info("TFM HTTPd stopped."); - } + HTTPD.stop(); - public static Response serveFileBasic(File file) { - Response response = null; + Log.info("TFM HTTPd stopped."); + } - if (file != null && file.exists()) { - try { - String mimetype = null; + public static Response serveFileBasic(File file) { + Response response = null; - Matcher matcher = EXT_REGEX.matcher(file.getCanonicalPath()); - if (matcher.find()) { - mimetype = HTTPDFileModule.MIME_TYPES.get(matcher.group(1)); - } + if (file != null && file.exists()) { + try { + String mimetype = null; - if (mimetype == null || mimetype.trim().isEmpty()) { - mimetype = MIME_DEFAULT_BINARY; - } + Matcher matcher = EXT_REGEX.matcher(file.getCanonicalPath()); + if (matcher.find()) { + mimetype = HTTPDFileModule.MIME_TYPES.get(matcher.group(1)); + } - response = new Response(Response.Status.OK, mimetype, new FileInputStream(file)); - response.addHeader("Content-Length", "" + file.length()); - } catch (IOException ex) { - Log.severe(ex); - } - } + if (mimetype == null || mimetype.trim().isEmpty()) { + mimetype = MIME_DEFAULT_BINARY; + } - return response; - } + response = new Response(Response.Status.OK, mimetype, new FileInputStream(file)); + response.addHeader("Content-Length", "" + file.length()); + } catch (IOException ex) { + Log.severe(ex); + } + } - private static class TFM_HTTPD extends NanoHTTPD { - public TFM_HTTPD(int port) { - super(port); - } + return response; + } - public TFM_HTTPD(String hostname, int port) { - super(hostname, port); - } + private enum ModuleType { + DUMP(new ModuleExecutable(false, "dump") { + @Override + public Response getResponse(HTTPSession session) { + return new Response(Response.Status.OK, NanoHTTPD.MIME_PLAINTEXT, + "The DUMP module is disabled. It is intended for debugging use only."); + } + }), + HELP(new ModuleExecutable(true, "help") { + @Override + public Response getResponse(HTTPSession session) { + return new HTTPDHelpModule(session).getResponse(); + } + }), + LIST(new ModuleExecutable(true, "list") { + @Override + public Response getResponse(HTTPSession session) { + return new HTTPDListModule(session).getResponse(); + } + }), + FILE(new ModuleExecutable(false, "file") { + @Override + public Response getResponse(HTTPSession session) { + return new HTTPDFileModule(session).getResponse(); + } + }), + SCHEMATIC(new ModuleExecutable(false, "schematic") { + @Override + public Response getResponse(HTTPSession session) { + return new HTTPDSchematicModule(session).getResponse(); + } + }), + PERMBANS(new ModuleExecutable(false, "permbans") { + @Override + public Response getResponse(HTTPSession session) { + return new HTTPDPermanentBansModule(session).getResponse(); + } + }), + PLAYERS(new ModuleExecutable(true, "players") { + @Override + public Response getResponse(HTTPSession session) { + return new HTTPDPlayersModule(session).getResponse(); + } + }), + LOGS(new ModuleExecutable(false, "logs") { + @Override + public Response getResponse(HTTPSession session) { + return new LogFileModule(session).getResponse(); + } + }); + // + private final ModuleExecutable moduleExecutable; - @Override - public Response serve(HTTPSession session) { - Response response; + ModuleType(ModuleExecutable moduleExecutable) { + this.moduleExecutable = moduleExecutable; + } - try { - final String[] args = StringUtils.split(session.getUri(), "/"); - final ModuleType moduleType = args.length >= 1 ? ModuleType.getByName(args[0]) : ModuleType.FILE; - response = moduleType.getModuleExecutable().execute(session); - } catch (Exception ex) { - response = new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, "Error 500: Internal Server Error\r\n" + ex.getMessage() + "\r\n" + ExceptionUtils.getStackTrace(ex)); - } + private static ModuleType getByName(String needle) { + for (ModuleType type : values()) { + if (type.getModuleExecutable().getName().equalsIgnoreCase(needle)) { + return type; + } + } + return FILE; + } - if (response == null) { - response = new Response(Response.Status.NOT_FOUND, MIME_PLAINTEXT, "Error 404: Not Found - The requested resource was not found on this server."); - } + public ModuleExecutable getModuleExecutable() { + return moduleExecutable; + } - return response; - } - } + private abstract static class ModuleExecutable { - private enum ModuleType { - DUMP(new ModuleExecutable(false, "dump") { - @Override - public Response getResponse(HTTPSession session) { - return new Response(Response.Status.OK, NanoHTTPD.MIME_PLAINTEXT, "The DUMP module is disabled. It is intended for debugging use only."); - } - }), - HELP(new ModuleExecutable(true, "help") - { - @Override - public Response getResponse(HTTPSession session) - { - return new HTTPDHelpModule(session).getResponse(); - } - }), - LIST(new ModuleExecutable(true, "list") - { - @Override - public Response getResponse(HTTPSession session) - { - return new HTTPDListModule(session).getResponse(); - } - }), - FILE(new ModuleExecutable(false, "file") - { - @Override - public Response getResponse(HTTPSession session) - { - return new HTTPDFileModule(session).getResponse(); - } - }), - SCHEMATIC(new ModuleExecutable(false, "schematic") - { - @Override - public Response getResponse(HTTPSession session) - { - return new HTTPDSchematicModule(session).getResponse(); - } - }), - PERMBANS(new ModuleExecutable(false, "permbans") - { - @Override - public Response getResponse(HTTPSession session) - { - return new HTTPDPermanentBansModule(session).getResponse(); - } - }), - PLAYERS(new ModuleExecutable(true, "players") - { - @Override - public Response getResponse(HTTPSession session) - { - return new HTTPDPlayersModule(session).getResponse(); - } - }), - LOGS(new ModuleExecutable(false, "logs") - { - @Override - public Response getResponse(HTTPSession session) - { - return new LogFileModule(session).getResponse(); - } - }); - // - private final ModuleExecutable moduleExecutable; + private final boolean runOnBukkitThread; + private final String name; - ModuleType(ModuleExecutable moduleExecutable) - { - this.moduleExecutable = moduleExecutable; - } + public ModuleExecutable(boolean runOnBukkitThread, String name) { + this.runOnBukkitThread = runOnBukkitThread; + this.name = name; + } - private abstract static class ModuleExecutable - { - private final boolean runOnBukkitThread; - private final String name; + public Response execute(final HTTPSession session) { + try { + if (this.runOnBukkitThread) { + return Bukkit.getScheduler() + .callSyncMethod(TotalFreedomMod.plugin, new Callable() { + @Override + public Response call() throws Exception { + return getResponse(session); + } + }).get(); + } else { + return getResponse(session); + } + } catch (Exception ex) { + Log.severe(ex); + } + return null; + } - public ModuleExecutable(boolean runOnBukkitThread, String name) - { - this.runOnBukkitThread = runOnBukkitThread; - this.name = name; - } + public abstract Response getResponse(HTTPSession session); - public Response execute(final HTTPSession session) - { - try - { - if (this.runOnBukkitThread) - { - return Bukkit.getScheduler().callSyncMethod(TotalFreedomMod.plugin, new Callable() - { - @Override - public Response call() throws Exception - { - return getResponse(session); - } - }).get(); - } - else - { - return getResponse(session); - } - } - catch (Exception ex) - { - Log.severe(ex); - } - return null; - } + public String getName() { + return name; + } + } + } - public abstract Response getResponse(HTTPSession session); + private static class TFM_HTTPD extends NanoHTTPD { - public String getName() - { - return name; - } - } + public TFM_HTTPD(int port) { + super(port); + } - public ModuleExecutable getModuleExecutable() - { - return moduleExecutable; - } + public TFM_HTTPD(String hostname, int port) { + super(hostname, port); + } - private static ModuleType getByName(String needle) - { - for (ModuleType type : values()) - { - if (type.getModuleExecutable().getName().equalsIgnoreCase(needle)) - { - return type; - } - } - return FILE; - } - } + @Override + public Response serve(HTTPSession session) { + Response response; + + try { + final String[] args = StringUtils.split(session.getUri(), "/"); + final ModuleType moduleType = + args.length >= 1 ? ModuleType.getByName(args[0]) : ModuleType.FILE; + response = moduleType.getModuleExecutable().execute(session); + } catch (Exception ex) { + response = new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, + "Error 500: Internal Server Error\r\n" + ex.getMessage() + "\r\n" + + ExceptionUtils.getStackTrace(ex)); + } + + if (response == null) { + response = new Response(Response.Status.NOT_FOUND, MIME_PLAINTEXT, + "Error 404: Not Found - The requested resource was not found on this server."); + } + + return response; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDModule.java index 43129fc..dbb8cd9 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDModule.java @@ -1,69 +1,60 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.net.Socket; +import java.util.HashMap; +import java.util.Map; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.httpd.NanoHTTPD.HTTPSession; import me.StevenLawson.TotalFreedomMod.httpd.NanoHTTPD.Method; import me.StevenLawson.TotalFreedomMod.httpd.NanoHTTPD.Response; -import java.net.Socket; -import java.util.HashMap; -import java.util.Map; - public abstract class HTTPDModule { - protected final String uri; - protected final Method method; - protected final Map headers; - protected final Map params; - protected final Socket socket; - protected final HTTPSession session; - public HTTPDModule(HTTPSession session) { - this.uri = session.getUri(); - this.method = session.getMethod(); - this.headers = session.getHeaders(); - this.params = session.getParms(); - this.socket = session.getSocket(); - this.session = session; - } + protected final String uri; + protected final Method method; + protected final Map headers; + protected final Map params; + protected final Socket socket; + protected final HTTPSession session; - public String getBody() - { - return null; - } + public HTTPDModule(HTTPSession session) { + this.uri = session.getUri(); + this.method = session.getMethod(); + this.headers = session.getHeaders(); + this.params = session.getParms(); + this.socket = session.getSocket(); + this.session = session; + } - public String getTitle() - { - return null; - } + public String getBody() { + return null; + } - public String getStyle() - { - return null; - } + public String getTitle() { + return null; + } - public String getScript() - { - return null; - } + public String getStyle() { + return null; + } - public Response getResponse() - { - return new HTTPDPageBuilder(getBody(), getTitle(), getStyle(), getScript()).getResponse(); - } + public String getScript() { + return null; + } - protected final Map getFiles() - { - Map files = new HashMap(); + public Response getResponse() { + return new HTTPDPageBuilder(getBody(), getTitle(), getStyle(), getScript()).getResponse(); + } - try - { - session.parseBody(files); - } - catch (Exception ex) - { - Log.severe(ex); - } + protected final Map getFiles() { + Map files = new HashMap(); - return files; - } + try { + session.parseBody(files); + } catch (Exception ex) { + Log.severe(ex); + } + + return files; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPageBuilder.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPageBuilder.java index 1152a21..c9e9971 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPageBuilder.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPageBuilder.java @@ -3,68 +3,65 @@ package me.StevenLawson.TotalFreedomMod.httpd; import me.StevenLawson.TotalFreedomMod.httpd.NanoHTTPD.Response; public class HTTPDPageBuilder { - private static final String TEMPLATE = "\r\n" - + "\r\n" - + "\r\n" - + "{$TITLE}\r\n" - + "\r\n" - + "{$STYLE}" - + "{$SCRIPT}" - + "\r\n" - + "\r\n{$BODY}\r\n" - + "\r\n"; - private static final String STYLE = "\r\n"; - private static final String SCRIPT = "\r\n" - + "\r\n" - + "\r\n"; - // - private String body = null; - private String title = null; - private String style = null; - private String script = null; - public HTTPDPageBuilder() { - } + private static final String TEMPLATE = "\r\n" + + "\r\n" + + "\r\n" + + "{$TITLE}\r\n" + + "\r\n" + + "{$STYLE}" + + "{$SCRIPT}" + + "\r\n" + + "\r\n{$BODY}\r\n" + + "\r\n"; + private static final String STYLE = "\r\n"; + private static final String SCRIPT = + "\r\n" + + "\r\n" + + "\r\n"; + // + private String body = null; + private String title = null; + private String style = null; + private String script = null; - public HTTPDPageBuilder(String body, String title, String style, String script) { - this.body = body; - this.title = title; - this.style = style; - this.script = script; - } + public HTTPDPageBuilder() { + } - public void setBody(String body) - { - this.body = body; - } + public HTTPDPageBuilder(String body, String title, String style, String script) { + this.body = body; + this.title = title; + this.style = style; + this.script = script; + } - public void setTitle(String title) - { - this.title = title; - } + public void setBody(String body) { + this.body = body; + } - public void setStyle(String style) - { - this.style = style; - } + public void setTitle(String title) { + this.title = title; + } - public void setScript(String script) - { - this.script = script; - } + public void setStyle(String style) { + this.style = style; + } - public Response getResponse() - { - return new Response(this.toString()); - } + public void setScript(String script) { + this.script = script; + } - @Override - public String toString() - { - return TEMPLATE - .replace("{$BODY}", this.body == null ? "" : this.body) - .replace("{$TITLE}", this.title == null ? "" : this.title) - .replace("{$STYLE}", this.style == null ? "" : STYLE.replace("{$STYLE}", this.style)) - .replace("{$SCRIPT}", this.script == null ? "" : SCRIPT.replace("{$SCRIPT}", this.script)); - } + public Response getResponse() { + return new Response(this.toString()); + } + + @Override + public String toString() { + return TEMPLATE + .replace("{$BODY}", this.body == null ? "" : this.body) + .replace("{$TITLE}", this.title == null ? "" : this.title) + .replace("{$STYLE}", this.style == null ? "" : STYLE.replace("{$STYLE}", this.style)) + .replace("{$SCRIPT}", + this.script == null ? "" : SCRIPT.replace("{$SCRIPT}", this.script)); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPermanentBansModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPermanentBansModule.java index f467381..0bd6143 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPermanentBansModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPermanentBansModule.java @@ -1,24 +1,25 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.io.File; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; -import java.io.File; - public class HTTPDPermanentBansModule extends HTTPDModule { - public HTTPDPermanentBansModule(NanoHTTPD.HTTPSession session) { - super(session); - } - @Override - public NanoHTTPD.Response getResponse() { - File permbanFile = new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.PERMBAN_FILENAME); - if (permbanFile.exists()) { - return HTTPDManager.serveFileBasic(new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.PERMBAN_FILENAME)); - } - else - { - return new NanoHTTPD.Response(NanoHTTPD.Response.Status.NOT_FOUND, NanoHTTPD.MIME_PLAINTEXT, - "Error 404: Not Found - The requested resource was not found on this server."); - } - } + public HTTPDPermanentBansModule(NanoHTTPD.HTTPSession session) { + super(session); + } + + @Override + public NanoHTTPD.Response getResponse() { + File permbanFile = new File(TotalFreedomMod.plugin.getDataFolder(), + TotalFreedomMod.PERMBAN_FILENAME); + if (permbanFile.exists()) { + return HTTPDManager.serveFileBasic( + new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.PERMBAN_FILENAME)); + } else { + return new NanoHTTPD.Response(NanoHTTPD.Response.Status.NOT_FOUND, + NanoHTTPD.MIME_PLAINTEXT, + "Error 404: Not Found - The requested resource was not found on this server."); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPlayersModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPlayersModule.java index e664cbd..96fed26 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPlayersModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDPlayersModule.java @@ -1,5 +1,6 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.util.UUID; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; @@ -9,78 +10,71 @@ import org.bukkit.entity.Player; import org.json.simple.JSONArray; import org.json.simple.JSONObject; -import java.util.UUID; - public class HTTPDPlayersModule extends HTTPDModule { - public HTTPDPlayersModule(NanoHTTPD.HTTPSession session) { - super(session); - } - @Override - @SuppressWarnings("unchecked") - public NanoHTTPD.Response getResponse() { - final JSONObject responseObject = new JSONObject(); + public HTTPDPlayersModule(NanoHTTPD.HTTPSession session) { + super(session); + } - final JSONArray players = new JSONArray(); - final JSONArray superadmins = new JSONArray(); - final JSONArray telnetadmins = new JSONArray(); - final JSONArray senioradmins = new JSONArray(); - final JSONArray developers = new JSONArray(); + @Override + @SuppressWarnings("unchecked") + public NanoHTTPD.Response getResponse() { + final JSONObject responseObject = new JSONObject(); - // All online players - for (Player player : TotalFreedomMod.server.getOnlinePlayers()) - { - players.add(player.getName()); - } + final JSONArray players = new JSONArray(); + final JSONArray superadmins = new JSONArray(); + final JSONArray telnetadmins = new JSONArray(); + final JSONArray senioradmins = new JSONArray(); + final JSONArray developers = new JSONArray(); - // Super admins (non-telnet and non-senior) - for (UUID superadmin : AdminList.getSuperUUIDs()) - { - if (AdminList.getSeniorUUIDs().contains(superadmin)) - { - continue; - } + // All online players + for (Player player : TotalFreedomMod.server.getOnlinePlayers()) { + players.add(player.getName()); + } - if (AdminList.getTelnetUUIDs().contains(superadmin)) - { - continue; - } + // Super admins (non-telnet and non-senior) + for (UUID superadmin : AdminList.getSuperUUIDs()) { + if (AdminList.getSeniorUUIDs().contains(superadmin)) { + continue; + } - superadmins.add(getName(superadmin)); - } + if (AdminList.getTelnetUUIDs().contains(superadmin)) { + continue; + } - // Telnet admins (non-senior) - for (UUID telnetadmin : AdminList.getTelnetUUIDs()) - { - if (AdminList.getSeniorUUIDs().contains(telnetadmin)) - { - continue; - } - telnetadmins.add(getName(telnetadmin)); - } + superadmins.add(getName(superadmin)); + } - // Senior admins - for (UUID senioradmin : AdminList.getSeniorUUIDs()) - { - senioradmins.add(getName(senioradmin)); - } + // Telnet admins (non-senior) + for (UUID telnetadmin : AdminList.getTelnetUUIDs()) { + if (AdminList.getSeniorUUIDs().contains(telnetadmin)) { + continue; + } + telnetadmins.add(getName(telnetadmin)); + } - // Developers - developers.addAll(Utilities.DEVELOPERS); + // Senior admins + for (UUID senioradmin : AdminList.getSeniorUUIDs()) { + senioradmins.add(getName(senioradmin)); + } - responseObject.put("players", players); - responseObject.put("superadmins", superadmins); - responseObject.put("telnetadmins", telnetadmins); - responseObject.put("senioradmins", senioradmins); - responseObject.put("developers", developers); + // Developers + developers.addAll(Utilities.DEVELOPERS); - final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString()); - response.addHeader("Access-Control-Allow-Origin", MainConfig.getString(ConfigurationEntry.HTTPD_ORIGIN)); - return response; - } + responseObject.put("players", players); + responseObject.put("superadmins", superadmins); + responseObject.put("telnetadmins", telnetadmins); + responseObject.put("senioradmins", senioradmins); + responseObject.put("developers", developers); - private String getName(UUID uuid) - { - return AdminList.getEntry(uuid).getLastLoginName(); - } + final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, + NanoHTTPD.MIME_JSON, responseObject.toString()); + response.addHeader("Access-Control-Allow-Origin", + MainConfig.getString(ConfigurationEntry.HTTPD_ORIGIN)); + return response; + } + + private String getName(UUID uuid) { + return AdminList.getEntry(uuid).getLastLoginName(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDSchematicModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDSchematicModule.java index 08ffda4..99c90d9 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDSchematicModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDSchematicModule.java @@ -1,5 +1,14 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.admin.Admin; import me.StevenLawson.TotalFreedomMod.admin.AdminList; @@ -9,289 +18,246 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; -import java.io.File; -import java.io.IOException; -import java.util.*; -import java.util.regex.Pattern; - public class HTTPDSchematicModule extends HTTPDModule { - private static final File SCHEMATIC_FOLDER = new File("./plugins/WorldEdit/schematics/"); - private static final String REQUEST_FORM_FILE_ELEMENT_NAME = "schematicFile"; - private static final Pattern SCHEMATIC_FILENAME_LC = Pattern.compile("^[a-z0-9_'!,\\-]{1,30}\\.schematic$"); - private static final String[] SCHEMATIC_FILTER = new String[] - { - "schematic" - }; - private static final String UPLOAD_FORM = "
    \n" - + "

    Select a schematic file to upload. Filenames must be alphanumeric, between 1 and 30 characters long (inclusive), and have a .schematic extension.

    \n" - + "\n" - + "
    \n" - + "\n" - + "
    "; - public HTTPDSchematicModule(NanoHTTPD.HTTPSession session) { - super(session); - } + private static final File SCHEMATIC_FOLDER = new File("./plugins/WorldEdit/schematics/"); + private static final String REQUEST_FORM_FILE_ELEMENT_NAME = "schematicFile"; + private static final Pattern SCHEMATIC_FILENAME_LC = Pattern.compile( + "^[a-z0-9_'!,\\-]{1,30}\\.schematic$"); + private static final String[] SCHEMATIC_FILTER = new String[] + { + "schematic" + }; + private static final String UPLOAD_FORM = + "
    \n" + + "

    Select a schematic file to upload. Filenames must be alphanumeric, between 1 and 30 characters long (inclusive), and have a .schematic extension.

    \n" + + "\n" + + "
    \n" + + "\n" + + "
    "; - @Override - public Response getResponse() - { - try - { - return new HTTPDPageBuilder(body(), title(), null, null).getResponse(); - } - catch (ResponseOverrideException ex) - { - return ex.getResponse(); - } - } + public HTTPDSchematicModule(NanoHTTPD.HTTPSession session) { + super(session); + } - public String title() - { - return "TotalFreedomMod :: Schematic Manager"; - } + private static String getArg(String[] args, int index) { + String out = (args.length == index + 1 ? args[index] : null); + return (out == null ? null : (out.trim().isEmpty() ? null : out.trim())); + } - public String body() throws ResponseOverrideException - { - if (!SCHEMATIC_FOLDER.exists()) - { - return HTMLGenerationTools.paragraph("Can't find the WorldEdit schematic folder."); - } + @Override + public Response getResponse() { + try { + return new HTTPDPageBuilder(body(), title(), null, null).getResponse(); + } catch (ResponseOverrideException ex) { + return ex.getResponse(); + } + } - final StringBuilder out = new StringBuilder(); + public String title() { + return "TotalFreedomMod :: Schematic Manager"; + } - final String[] args = StringUtils.split(uri, "/"); - final ModuleMode mode = ModuleMode.getMode(getArg(args, 1)); + public String body() throws ResponseOverrideException { + if (!SCHEMATIC_FOLDER.exists()) { + return HTMLGenerationTools.paragraph("Can't find the WorldEdit schematic folder."); + } - switch (mode) - { - case LIST: - { - Collection schematics = FileUtils.listFiles(SCHEMATIC_FOLDER, SCHEMATIC_FILTER, false); + final StringBuilder out = new StringBuilder(); - final List schematicsFormatted = new ArrayList(); - for (File schematic : schematics) - { - String filename = StringEscapeUtils.escapeHtml4(schematic.getName()); + final String[] args = StringUtils.split(uri, "/"); + final ModuleMode mode = ModuleMode.getMode(getArg(args, 1)); - if (SCHEMATIC_FILENAME_LC.matcher(filename.trim().toLowerCase()).find()) - { - schematicsFormatted.add("
  • " + filename + "
  • "); - } - else - { - schematicsFormatted.add("
  • " + filename + " - (Illegal filename, can't download)
  • "); - } - } + switch (mode) { + case LIST: { + Collection schematics = FileUtils.listFiles(SCHEMATIC_FOLDER, + SCHEMATIC_FILTER, false); - Collections.sort(schematicsFormatted, new Comparator() - { - @Override - public int compare(String a, String b) - { - return a.toLowerCase().compareTo(b.toLowerCase()); - } - }); + final List schematicsFormatted = new ArrayList(); + for (File schematic : schematics) { + String filename = StringEscapeUtils.escapeHtml4(schematic.getName()); - out - .append(HTMLGenerationTools.heading("Schematics:", 1)) - .append("
      ") - .append(StringUtils.join(schematicsFormatted, "\r\n")) - .append("
    "); + if (SCHEMATIC_FILENAME_LC.matcher(filename.trim().toLowerCase()).find()) { + schematicsFormatted.add( + "
  • " + + filename + "
  • "); + } else { + schematicsFormatted.add( + "
  • " + filename + " - (Illegal filename, can't download)
  • "); + } + } - break; - } - case DOWNLOAD: - { - try - { - throw new ResponseOverrideException(downloadSchematic(params.get("schematicName"))); - } - catch (SchematicTransferException ex) - { - out.append(HTMLGenerationTools.paragraph("Error downloading schematic: " + ex.getMessage())); - } - break; - } - case UPLOAD: - { - final String remoteAddress = socket.getInetAddress().getHostAddress(); - if (!isAuthorized(remoteAddress)) - { - out.append(HTMLGenerationTools.paragraph("Schematic upload access denied: Your IP, " + remoteAddress + ", is not registered to a superadmin on this server.")); - } - else - { - if (method == Method.POST) - { - try - { - uploadSchematic(); - out.append(HTMLGenerationTools.paragraph("Schematic uploaded successfully.")); - } - catch (SchematicTransferException ex) - { - out.append(HTMLGenerationTools.paragraph("Error uploading schematic: " + ex.getMessage())); - } - } - else - { - out.append(UPLOAD_FORM); - } - } - break; - } - default: - { - out.append(HTMLGenerationTools.paragraph("Invalid request mode.")); - break; - } - } + Collections.sort(schematicsFormatted, new Comparator() { + @Override + public int compare(String a, String b) { + return a.toLowerCase().compareTo(b.toLowerCase()); + } + }); - return out.toString(); - } + out + .append(HTMLGenerationTools.heading("Schematics:", 1)) + .append("
      ") + .append(StringUtils.join(schematicsFormatted, "\r\n")) + .append("
    "); - private boolean uploadSchematic() throws SchematicTransferException - { - Map files = getFiles(); + break; + } + case DOWNLOAD: { + try { + throw new ResponseOverrideException( + downloadSchematic(params.get("schematicName"))); + } catch (SchematicTransferException ex) { + out.append(HTMLGenerationTools.paragraph( + "Error downloading schematic: " + ex.getMessage())); + } + break; + } + case UPLOAD: { + final String remoteAddress = socket.getInetAddress().getHostAddress(); + if (!isAuthorized(remoteAddress)) { + out.append(HTMLGenerationTools.paragraph( + "Schematic upload access denied: Your IP, " + remoteAddress + + ", is not registered to a superadmin on this server.")); + } else { + if (method == Method.POST) { + try { + uploadSchematic(); + out.append( + HTMLGenerationTools.paragraph("Schematic uploaded successfully.")); + } catch (SchematicTransferException ex) { + out.append(HTMLGenerationTools.paragraph( + "Error uploading schematic: " + ex.getMessage())); + } + } else { + out.append(UPLOAD_FORM); + } + } + break; + } + default: { + out.append(HTMLGenerationTools.paragraph("Invalid request mode.")); + break; + } + } - final String tempFileName = files.get(REQUEST_FORM_FILE_ELEMENT_NAME); - if (tempFileName == null) - { - throw new SchematicTransferException("No file transmitted to server."); - } + return out.toString(); + } - final File tempFile = new File(tempFileName); - if (!tempFile.exists()) - { - throw new SchematicTransferException(); - } + private boolean uploadSchematic() throws SchematicTransferException { + Map files = getFiles(); - String origFileName = params.get(REQUEST_FORM_FILE_ELEMENT_NAME); - if (origFileName == null || (origFileName = origFileName.trim()).isEmpty()) - { - throw new SchematicTransferException("Can't resolve original file name."); - } + final String tempFileName = files.get(REQUEST_FORM_FILE_ELEMENT_NAME); + if (tempFileName == null) { + throw new SchematicTransferException("No file transmitted to server."); + } - if (tempFile.length() > FileUtils.ONE_KB * 64L) - { - throw new SchematicTransferException("Schematic is too big (64kb max)."); - } + final File tempFile = new File(tempFileName); + if (!tempFile.exists()) { + throw new SchematicTransferException(); + } - if (!SCHEMATIC_FILENAME_LC.matcher(origFileName.toLowerCase()).find()) - { - throw new SchematicTransferException("File name must be alphanumeric, between 1 and 30 characters long (inclusive), and have a \".schematic\" extension."); - } + String origFileName = params.get(REQUEST_FORM_FILE_ELEMENT_NAME); + if (origFileName == null || (origFileName = origFileName.trim()).isEmpty()) { + throw new SchematicTransferException("Can't resolve original file name."); + } - final File targetFile = new File(SCHEMATIC_FOLDER.getPath(), origFileName); - if (targetFile.exists()) - { - throw new SchematicTransferException("Schematic already exists on the server."); - } + if (tempFile.length() > FileUtils.ONE_KB * 64L) { + throw new SchematicTransferException("Schematic is too big (64kb max)."); + } - try - { - FileUtils.copyFile(tempFile, targetFile); - } - catch (IOException ex) - { - Log.severe(ex); - throw new SchematicTransferException(); - } + if (!SCHEMATIC_FILENAME_LC.matcher(origFileName.toLowerCase()).find()) { + throw new SchematicTransferException( + "File name must be alphanumeric, between 1 and 30 characters long (inclusive), and have a \".schematic\" extension."); + } - return true; - } + final File targetFile = new File(SCHEMATIC_FOLDER.getPath(), origFileName); + if (targetFile.exists()) { + throw new SchematicTransferException("Schematic already exists on the server."); + } - private Response downloadSchematic(String schematicName) throws SchematicTransferException - { - if (schematicName == null || !SCHEMATIC_FILENAME_LC.matcher((schematicName = schematicName.trim()).toLowerCase()).find()) - { - throw new SchematicTransferException("Invalid schematic name requested: " + schematicName); - } + try { + FileUtils.copyFile(tempFile, targetFile); + } catch (IOException ex) { + Log.severe(ex); + throw new SchematicTransferException(); + } - final File targetFile = new File(SCHEMATIC_FOLDER.getPath(), schematicName); - if (!targetFile.exists()) - { - throw new SchematicTransferException("Schematic not found: " + schematicName); - } + return true; + } - Response response = HTTPDManager.serveFileBasic(targetFile); + private Response downloadSchematic(String schematicName) throws SchematicTransferException { + if (schematicName == null || !SCHEMATIC_FILENAME_LC.matcher( + (schematicName = schematicName.trim()).toLowerCase()).find()) { + throw new SchematicTransferException( + "Invalid schematic name requested: " + schematicName); + } - response.addHeader("Content-Disposition", "attachment; filename=" + targetFile.getName() + ";"); + final File targetFile = new File(SCHEMATIC_FOLDER.getPath(), schematicName); + if (!targetFile.exists()) { + throw new SchematicTransferException("Schematic not found: " + schematicName); + } - return response; - } + Response response = HTTPDManager.serveFileBasic(targetFile); - private boolean isAuthorized(String remoteAddress) - { - Admin entry = AdminList.getEntryByIp(remoteAddress); - return entry != null && entry.isActivated(); - } + response.addHeader("Content-Disposition", + "attachment; filename=" + targetFile.getName() + ";"); - private static class SchematicTransferException extends Exception - { - public SchematicTransferException() - { - } + return response; + } - public SchematicTransferException(String string) - { - super(string); - } - } + private boolean isAuthorized(String remoteAddress) { + Admin entry = AdminList.getEntryByIp(remoteAddress); + return entry != null && entry.isActivated(); + } - private static class ResponseOverrideException extends Exception - { - private final Response response; + private enum ModuleMode { + LIST("list"), + UPLOAD("upload"), + DOWNLOAD("download"), + INVALID(null); + // + private final String modeName; - public ResponseOverrideException(Response response) - { - this.response = response; - } + ModuleMode(String modeName) { + this.modeName = modeName; + } - public Response getResponse() - { - return response; - } - } + public static ModuleMode getMode(String needle) { + for (ModuleMode mode : values()) { + final String haystack = mode.toString(); + if (haystack != null && haystack.equalsIgnoreCase(needle)) { + return mode; + } + } + return INVALID; + } - private static String getArg(String[] args, int index) - { - String out = (args.length == index + 1 ? args[index] : null); - return (out == null ? null : (out.trim().isEmpty() ? null : out.trim())); - } + @Override + public String toString() { + return this.modeName; + } + } - private enum ModuleMode - { - LIST("list"), - UPLOAD("upload"), - DOWNLOAD("download"), - INVALID(null); - // - private final String modeName; + private static class SchematicTransferException extends Exception { - ModuleMode(String modeName) - { - this.modeName = modeName; - } + public SchematicTransferException() { + } - @Override - public String toString() - { - return this.modeName; - } + public SchematicTransferException(String string) { + super(string); + } + } - public static ModuleMode getMode(String needle) - { - for (ModuleMode mode : values()) - { - final String haystack = mode.toString(); - if (haystack != null && haystack.equalsIgnoreCase(needle)) - { - return mode; - } - } - return INVALID; - } - } + private static class ResponseOverrideException extends Exception { + + private final Response response; + + public ResponseOverrideException(Response response) { + this.response = response; + } + + public Response getResponse() { + return response; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDumpModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDumpModule.java index 86a7e93..cc8f7d3 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDumpModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/HTTPDumpModule.java @@ -1,111 +1,100 @@ package me.StevenLawson.TotalFreedomMod.httpd; -import me.StevenLawson.TotalFreedomMod.Log; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; +import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.list; +import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.paragraph; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Map; - -import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.list; -import static me.StevenLawson.TotalFreedomMod.httpd.HTMLGenerationTools.paragraph; +import me.StevenLawson.TotalFreedomMod.Log; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; public class HTTPDumpModule extends HTTPDModule { - private File echoFile = null; - private final String body; - public HTTPDumpModule(NanoHTTPD.HTTPSession session) { - super(session); + private final String body; + private File echoFile = null; - //Body needs to be computed before getResponse, so we know if a text response or a file echo is needed. - this.body = body(); - } + public HTTPDumpModule(NanoHTTPD.HTTPSession session) { + super(session); - @Override - public NanoHTTPD.Response getResponse() - { - String echo = params.get("echo"); - boolean doEcho = echo != null && ((echo = echo.toLowerCase().trim()).equalsIgnoreCase("true") || echo.equalsIgnoreCase("1")); + //Body needs to be computed before getResponse, so we know if a text response or a file echo is needed. + this.body = body(); + } - if (doEcho && this.echoFile != null && this.echoFile.exists()) - { - return HTTPDManager.serveFileBasic(this.echoFile); - } - else - { - return super.getResponse(); - } - } + @Override + public NanoHTTPD.Response getResponse() { + String echo = params.get("echo"); + boolean doEcho = + echo != null && ((echo = echo.toLowerCase().trim()).equalsIgnoreCase("true") + || echo.equalsIgnoreCase("1")); - @Override - public String getBody() - { - return body; - } + if (doEcho && this.echoFile != null && this.echoFile.exists()) { + return HTTPDManager.serveFileBasic(this.echoFile); + } else { + return super.getResponse(); + } + } - private String body() - { - StringBuilder responseBody = new StringBuilder(); + @Override + public String getBody() { + return body; + } - String remoteAddress = socket.getInetAddress().getHostAddress(); + private String body() { + StringBuilder responseBody = new StringBuilder(); - String[] args = StringUtils.split(uri, "/"); + String remoteAddress = socket.getInetAddress().getHostAddress(); - Map files = getFiles(); + String[] args = StringUtils.split(uri, "/"); - responseBody - .append(paragraph("URI: " + uri)) - .append(paragraph("args (Length: " + args.length + "): " + StringUtils.join(args, ","))) - .append(paragraph("Method: " + method.toString())) - .append(paragraph("Remote Address: " + remoteAddress)) - .append(paragraph("Headers:")) - .append(list(headers)) - .append(paragraph("Params:")) - .append(list(params)) - .append(paragraph("Files:")) - .append(list(files)); + Map files = getFiles(); - Iterator> it = files.entrySet().iterator(); - while (it.hasNext()) - { - Map.Entry entry = it.next(); - String formName = entry.getKey(); - String tempFileName = entry.getValue(); - String origFileName = params.get(formName); + responseBody + .append(paragraph("URI: " + uri)) + .append(paragraph("args (Length: " + args.length + "): " + StringUtils.join(args, ","))) + .append(paragraph("Method: " + method.toString())) + .append(paragraph("Remote Address: " + remoteAddress)) + .append(paragraph("Headers:")) + .append(list(headers)) + .append(paragraph("Params:")) + .append(list(params)) + .append(paragraph("Files:")) + .append(list(files)); - File tempFile = new File(tempFileName); - if (tempFile.exists()) - { - this.echoFile = tempFile; + Iterator> it = files.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String formName = entry.getKey(); + String tempFileName = entry.getValue(); + String origFileName = params.get(formName); - if (origFileName.contains("../")) - { - continue; - } + File tempFile = new File(tempFileName); + if (tempFile.exists()) { + this.echoFile = tempFile; - String targetFileName = "./public_html/uploads/" + origFileName; + if (origFileName.contains("../")) { + continue; + } - File targetFile = new File(targetFileName); + String targetFileName = "./public_html/uploads/" + origFileName; - try - { - FileUtils.copyFile(tempFile, targetFile); - } - catch (IOException ex) - { - Log.severe(ex); - } - } - } + File targetFile = new File(targetFileName); - return responseBody.toString(); - } + try { + FileUtils.copyFile(tempFile, targetFile); + } catch (IOException ex) { + Log.severe(ex); + } + } + } - @Override - public String getTitle() - { - return "TotalFreedomMod :: Request Debug Dumper"; - } + return responseBody.toString(); + } + + @Override + public String getTitle() { + return "TotalFreedomMod :: Request Debug Dumper"; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/LogFileModule.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/LogFileModule.java index 17e9dab..6eef38c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/LogFileModule.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/LogFileModule.java @@ -1,23 +1,21 @@ package me.StevenLawson.TotalFreedomMod.httpd; +import java.io.File; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; -import java.io.File; - public class LogFileModule extends HTTPDFileModule { - public LogFileModule(NanoHTTPD.HTTPSession session) { - super(session); - } - @Override - public NanoHTTPD.Response getResponse() { - if (ConfigurationEntry.LOGS_SECRET.getString().equals(params.get("password"))) - { - return serveFile("latest.log", params, new File("./logs")); - } - else - { - return new NanoHTTPD.Response(NanoHTTPD.Response.Status.FORBIDDEN, NanoHTTPD.MIME_PLAINTEXT, "Incorrect password."); - } - } + public LogFileModule(NanoHTTPD.HTTPSession session) { + super(session); + } + + @Override + public NanoHTTPD.Response getResponse() { + if (ConfigurationEntry.LOGS_SECRET.getString().equals(params.get("password"))) { + return serveFile("latest.log", params, new File("./logs")); + } else { + return new NanoHTTPD.Response(NanoHTTPD.Response.Status.FORBIDDEN, + NanoHTTPD.MIME_PLAINTEXT, "Incorrect password."); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/NanoHTTPD.java b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/NanoHTTPD.java index 9ea59d7..b38a5be 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/NanoHTTPD.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/httpd/NanoHTTPD.java @@ -40,7 +40,8 @@ import me.StevenLawson.TotalFreedomMod.Log; *

    *

    * NanoHTTPD - *

    Copyright (c) 2012-2013 by Paul S. Hawke, 2001,2005-2013 by Jarno Elonen, 2010 by Konstantinos Togias

    + *

    Copyright (c) 2012-2013 by Paul S. Hawke, 2001,2005-2013 by Jarno Elonen, 2010 by + * Konstantinos Togias

    *

    *

    * Features + limitations: @@ -79,1492 +80,1295 @@ import me.StevenLawson.TotalFreedomMod.Log; *

    * See the separate "LICENSE.md" file for the distribution license (Modified BSD licence) */ -public abstract class NanoHTTPD -{ - /** - * Common mime type for dynamic content: plain text - */ - public static final String MIME_PLAINTEXT = "text/plain"; - /** - * Common mime type for dynamic content: html - */ - public static final String MIME_HTML = "text/html"; - // TFM Start - /** - * Common mime type for dynamic content: json - */ - public static final String MIME_JSON = "application/json"; - // TFM End - /** - * Pseudo-Parameter to use to store the actual query string in the parameters map for later re-processing. - */ - private static final String QUERY_STRING_PARAMETER = "NanoHttpd.QUERY_STRING"; - private final String hostname; - private final int myPort; - private ServerSocket myServerSocket; - private Thread myThread; - /** - * Pluggable strategy for asynchronously executing requests. - */ - private AsyncRunner asyncRunner; - /** - * Pluggable strategy for creating and cleaning up temporary files. - */ - private TempFileManagerFactory tempFileManagerFactory; - - /** - * Constructs an HTTP server on given port. - */ - public NanoHTTPD(int port) - { - this(null, port); - } - - /** - * Constructs an HTTP server on given hostname and port. - */ - public NanoHTTPD(String hostname, int port) - { - this.hostname = hostname; - this.myPort = port; - setTempFileManagerFactory(new DefaultTempFileManagerFactory()); - setAsyncRunner(new DefaultAsyncRunner()); - } - - private static final void safeClose(ServerSocket serverSocket) - { - if (serverSocket != null) - { - try - { - serverSocket.close(); - } - catch (IOException e) - { - } - } - } - - private static final void safeClose(Socket socket) - { - if (socket != null) - { - try - { - socket.close(); - } - catch (IOException e) - { - } - } - } - - private static final void safeClose(Closeable closeable) - { - if (closeable != null) - { - try - { - closeable.close(); - } - catch (IOException e) - { - } - } - } - - /** - * Start the server. - * - * @throws IOException if the socket is in use. - */ - public void start() throws IOException - { - myServerSocket = new ServerSocket(); - myServerSocket.bind((hostname != null) ? new InetSocketAddress(hostname, myPort) : new InetSocketAddress(myPort)); - - myThread = new Thread(new Runnable() - { - @Override - public void run() - { - do - { - try - { - final Socket finalAccept = myServerSocket.accept(); - final InputStream inputStream = finalAccept.getInputStream(); - if (inputStream == null) - { - safeClose(finalAccept); - } - else - { - asyncRunner.exec(new Runnable() - { - @Override - public void run() - { - OutputStream outputStream = null; - try - { - outputStream = finalAccept.getOutputStream(); - TempFileManager tempFileManager = tempFileManagerFactory.create(); - HTTPSession session = new HTTPSession(tempFileManager, inputStream, outputStream, finalAccept); - while (!finalAccept.isClosed()) - { - session.execute(); - } - } - catch (Exception e) - { - // When the socket is closed by the client, we throw our own SocketException - // to break the "keep alive" loop above. - if (!(e instanceof SocketException && "NanoHttpd Shutdown".equals(e.getMessage()))) - { - Log.severe(e); - } - } - finally - { - safeClose(outputStream); - safeClose(inputStream); - safeClose(finalAccept); - } - } - }); - } - } - catch (IOException e) - { - } - } - while (!myServerSocket.isClosed()); - } - }); - myThread.setDaemon(true); - myThread.setName("NanoHttpd Main Listener"); - myThread.start(); - } - - /** - * Stop the server. - */ - public void stop() - { - try - { - safeClose(myServerSocket); - myThread.join(); - } - catch (Exception e) - { - Log.severe(e); - } - } - - public final int getListeningPort() - { - return myServerSocket == null ? -1 : myServerSocket.getLocalPort(); - } - - public final boolean wasStarted() - { - return myServerSocket != null && myThread != null; - } - - public final boolean isAlive() - { - return wasStarted() && !myServerSocket.isClosed() && myThread.isAlive(); - } - - /** - * Override this to customize the server. - *

    - *

    - * (By default, this delegates to serveFile() and allows directory listing.) - * - * @param uri Percent-decoded URI without parameters, for example "/index.cgi" - * @param method "GET", "POST" etc. - * @param parms Parsed, percent decoded parameters from URI and, in case of POST, data. - * @param headers Header entries, percent decoded - * @return HTTP response, see class Response for details - */ - @Deprecated - public Response serve(String uri, Method method, Map headers, Map parms, - Map files) - { - return new Response(Response.Status.NOT_FOUND, MIME_PLAINTEXT, "Not Found"); - } - - /** - * Override this to customize the server. - *

    - *

    - * (By default, this delegates to serveFile() and allows directory listing.) - * - * @param session The HTTP session - * @return HTTP response, see class Response for details - */ - public Response serve(HTTPSession session) - { - Map files = new HashMap(); - Method method = session.getMethod(); - if (Method.PUT.equals(method) || Method.POST.equals(method)) - { - try - { - session.parseBody(files); - } - catch (IOException ioe) - { - return new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage()); - } - catch (ResponseException re) - { - return new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage()); - } - } - - return serve(session.getUri(), method, session.getHeaders(), session.getParms(), files); - } - - /** - * Decode percent encoded String values. - * - * @param str the percent encoded String - * @return expanded form of the input, for example "foo%20bar" becomes "foo bar" - */ - protected String decodePercent(String str) - { - String decoded = null; - try - { - decoded = URLDecoder.decode(str, "UTF8"); - } - catch (UnsupportedEncodingException ignored) - { - } - return decoded; - } - - /** - * Decode parameters from a URL, handing the case where a single parameter name might have been - * supplied several times, by return lists of values. In general these lists will contain a single - * element. - * - * @param parms original NanoHttpd parameters values, as passed to the serve() method. - * @return a map of String (parameter name) to List<String> (a list of the values supplied). - */ - protected Map> decodeParameters(Map parms) - { - return this.decodeParameters(parms.get(QUERY_STRING_PARAMETER)); - } - - /** - * Decode parameters from a URL, handing the case where a single parameter name might have been - * supplied several times, by return lists of values. In general these lists will contain a single - * element. - * - * @param queryString a query string pulled from the URL. - * @return a map of String (parameter name) to List<String> (a list of the values supplied). - */ - protected Map> decodeParameters(String queryString) - { - Map> parms = new HashMap>(); - if (queryString != null) - { - StringTokenizer st = new StringTokenizer(queryString, "&"); - while (st.hasMoreTokens()) - { - String e = st.nextToken(); - int sep = e.indexOf('='); - String propertyName = (sep >= 0) ? decodePercent(e.substring(0, sep)).trim() : decodePercent(e).trim(); - if (!parms.containsKey(propertyName)) - { - parms.put(propertyName, new ArrayList()); - } - String propertyValue = (sep >= 0) ? decodePercent(e.substring(sep + 1)) : null; - if (propertyValue != null) - { - parms.get(propertyName).add(propertyValue); - } - } - } - return parms; - } - - // ------------------------------------------------------------------------------- // - // - // Threading Strategy. - // - // ------------------------------------------------------------------------------- // - /** - * Pluggable strategy for asynchronously executing requests. - * - * @param asyncRunner new strategy for handling threads. - */ - public void setAsyncRunner(AsyncRunner asyncRunner) - { - this.asyncRunner = asyncRunner; - } - - // ------------------------------------------------------------------------------- // - // - // Temp file handling strategy. - // - // ------------------------------------------------------------------------------- // - /** - * Pluggable strategy for creating and cleaning up temporary files. - * - * @param tempFileManagerFactory new strategy for handling temp files. - */ - public void setTempFileManagerFactory(TempFileManagerFactory tempFileManagerFactory) - { - this.tempFileManagerFactory = tempFileManagerFactory; - } - - /** - * HTTP Request methods, with the ability to decode a String back to its enum value. - */ - public enum Method - { - GET, PUT, POST, DELETE, HEAD; - - static Method lookup(String method) - { - for (Method m : Method.values()) - { - if (m.toString().equalsIgnoreCase(method)) - { - return m; - } - } - return null; - } - } - - /** - * Pluggable strategy for asynchronously executing requests. - */ - public interface AsyncRunner - { - void exec(Runnable code); - } - - /** - * Factory to create temp file managers. - */ - public interface TempFileManagerFactory - { - TempFileManager create(); - } - - // ------------------------------------------------------------------------------- // - /** - * Temp file manager. - *

    - *

    Temp file managers are created 1-to-1 with incoming requests, to create and cleanup - * temporary files created as a result of handling the request.

    - */ - public interface TempFileManager - { - TempFile createTempFile() throws Exception; - - void clear(); - } - - /** - * A temp file. - *

    - *

    Temp files are responsible for managing the actual temporary storage and cleaning - * themselves up when no longer needed.

    - */ - public interface TempFile - { - OutputStream open() throws Exception; - - void delete() throws Exception; - - String getName(); - } - - /** - * Default threading strategy for NanoHttpd. - *

    - *

    By default, the server spawns a new Thread for every incoming request. These are set - * to daemon status, and named according to the request number. The name is - * useful when profiling the application.

    - */ - public static class DefaultAsyncRunner implements AsyncRunner - { - private long requestCount; - - @Override - public void exec(Runnable code) - { - ++requestCount; - Thread t = new Thread(code); - t.setDaemon(true); - t.setName("NanoHttpd Request Processor (#" + requestCount + ")"); - t.start(); - } - } - - /** - * Default strategy for creating and cleaning up temporary files. - *

    - *

    This class stores its files in the standard location (that is, - * wherever java.io.tmpdir points to). Files are added - * to an internal list, and deleted when no longer needed (that is, - * when clear() is invoked at the end of processing a - * request).

    - */ - public static class DefaultTempFileManager implements TempFileManager - { - private final String tmpdir; - private final List tempFiles; - - public DefaultTempFileManager() - { - tmpdir = System.getProperty("java.io.tmpdir"); - tempFiles = new ArrayList(); - } - - @Override - public TempFile createTempFile() throws Exception - { - DefaultTempFile tempFile = new DefaultTempFile(tmpdir); - tempFiles.add(tempFile); - return tempFile; - } - - @Override - public void clear() - { - for (TempFile file : tempFiles) - { - try - { - file.delete(); - } - catch (Exception ignored) - { - } - } - tempFiles.clear(); - } - } - - /** - * Default strategy for creating and cleaning up temporary files. - *

    - *

    By default, files are created by File.createTempFile() in - * the directory specified.

    - */ - public static class DefaultTempFile implements TempFile - { - private final File file; - private final OutputStream fstream; - - public DefaultTempFile(String tempdir) throws IOException - { - file = File.createTempFile("NanoHTTPD-", "", new File(tempdir)); - fstream = new FileOutputStream(file); - } - - @Override - public OutputStream open() throws Exception - { - return fstream; - } - - @Override - public void delete() throws Exception - { - safeClose(fstream); - file.delete(); - } - - @Override - public String getName() - { - return file.getAbsolutePath(); - } - } - - /** - * HTTP response. Return one of these from serve(). - */ - public static class Response - { - /** - * HTTP status code after processing, e.g. "200 OK", HTTP_OK - */ - private Status status; - /** - * MIME type of content, e.g. "text/html" - */ - private String mimeType; - /** - * Data of the response, may be null. - */ - private InputStream data; - /** - * Headers for the HTTP response. Use addHeader() to add lines. - */ - private final Map header = new HashMap(); - /** - * The request method that spawned this response. - */ - private Method requestMethod; - /** - * Use chunkedTransfer - */ - private boolean chunkedTransfer; - - /** - * Default constructor: response = HTTP_OK, mime = MIME_HTML and your supplied message - */ - public Response(String msg) - { - this(Status.OK, MIME_HTML, msg); - } - - /** - * Basic constructor. - */ - public Response(Status status, String mimeType, InputStream data) - { - this.status = status; - this.mimeType = mimeType; - this.data = data; - } - - /** - * Convenience method that makes an InputStream out of given text. - */ - public Response(Status status, String mimeType, String txt) - { - this.status = status; - this.mimeType = mimeType; - this.data = txt != null ? new ByteArrayInputStream(txt.getBytes(StandardCharsets.UTF_8)) : null; - } - - /** - * Adds given line to the header. - */ - public void addHeader(String name, String value) - { - header.put(name, value); - } - - /** - * Sends given response to the socket. - */ - private void send(OutputStream outputStream) - { - String mime = mimeType; - SimpleDateFormat gmtFrmt = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 'GMT'", Locale.US); - gmtFrmt.setTimeZone(TimeZone.getTimeZone("GMT")); - - try - { - if (status == null) - { - throw new Error("sendResponse(): Status can't be null."); - } - PrintWriter pw = new PrintWriter(outputStream); - pw.print("HTTP/1.1 " + status.getDescription() + " \r\n"); - - if (mime != null) - { - pw.print("Content-Type: " + mime + "\r\n"); - } - - if (header == null || header.get("Date") == null) - { - pw.print("Date: " + gmtFrmt.format(new Date()) + "\r\n"); - } - - if (header != null) - { - for (String key : header.keySet()) - { - String value = header.get(key); - pw.print(key + ": " + value + "\r\n"); - } - } - - pw.print("Connection: keep-alive\r\n"); - - if (requestMethod != Method.HEAD && chunkedTransfer) - { - sendAsChunked(outputStream, pw); - } - else - { - sendAsFixedLength(outputStream, pw); - } - outputStream.flush(); - safeClose(data); - } - catch (IOException ioe) - { - // Couldn't write? No can do. - } - } - - private void sendAsChunked(OutputStream outputStream, PrintWriter pw) throws IOException - { - pw.print("Transfer-Encoding: chunked\r\n"); - pw.print("\r\n"); - pw.flush(); - int BUFFER_SIZE = 16 * 1024; - byte[] CRLF = "\r\n".getBytes(); - byte[] buff = new byte[BUFFER_SIZE]; - int read; - while ((read = data.read(buff)) > 0) - { - outputStream.write(String.format("%x\r\n", read).getBytes()); - outputStream.write(buff, 0, read); - outputStream.write(CRLF); - } - outputStream.write(String.format("0\r\n\r\n").getBytes()); - } - - private void sendAsFixedLength(OutputStream outputStream, PrintWriter pw) throws IOException - { - int pending = data != null ? data.available() : 0; // This is to support partial sends, see serveFile() - pw.print("Content-Length: " + pending + "\r\n"); - - pw.print("\r\n"); - pw.flush(); - - if (requestMethod != Method.HEAD && data != null) - { - int BUFFER_SIZE = 16 * 1024; - byte[] buff = new byte[BUFFER_SIZE]; - while (pending > 0) - { - int read = data.read(buff, 0, ((pending > BUFFER_SIZE) ? BUFFER_SIZE : pending)); - if (read <= 0) - { - break; - } - outputStream.write(buff, 0, read); - - pending -= read; - } - } - } - - public Status getStatus() - { - return status; - } - - public void setStatus(Status status) - { - this.status = status; - } - - public String getMimeType() - { - return mimeType; - } - - public void setMimeType(String mimeType) - { - this.mimeType = mimeType; - } - - public InputStream getData() - { - return data; - } - - public void setData(InputStream data) - { - this.data = data; - } - - public Method getRequestMethod() - { - return requestMethod; - } - - public void setRequestMethod(Method requestMethod) - { - this.requestMethod = requestMethod; - } - - public void setChunkedTransfer(boolean chunkedTransfer) - { - this.chunkedTransfer = chunkedTransfer; - } - - /** - * Some HTTP response status codes - */ - public enum Status - { - OK(200, "OK"), CREATED(201, "Created"), ACCEPTED(202, "Accepted"), NO_CONTENT(204, "No Content"), PARTIAL_CONTENT(206, "Partial Content"), REDIRECT(301, - "Moved Permanently"), NOT_MODIFIED(304, "Not Modified"), BAD_REQUEST(400, "Bad Request"), UNAUTHORIZED(401, - "Unauthorized"), FORBIDDEN(403, "Forbidden"), NOT_FOUND(404, "Not Found"), RANGE_NOT_SATISFIABLE(416, - "Requested Range Not Satisfiable"), INTERNAL_ERROR(500, "Internal Server Error"); - private final int requestStatus; - private final String description; - - Status(int requestStatus, String description) - { - this.requestStatus = requestStatus; - this.description = description; - } - - public int getRequestStatus() - { - return this.requestStatus; - } - - public String getDescription() - { - return "" + this.requestStatus + " " + description; - } - } - } - - public static final class ResponseException extends Exception - { - private final Response.Status status; - - public ResponseException(Response.Status status, String message) - { - super(message); - this.status = status; - } - - public ResponseException(Response.Status status, String message, Exception e) - { - super(message, e); - this.status = status; - } - - public Response.Status getStatus() - { - return status; - } - } - - /** - * Default strategy for creating and cleaning up temporary files. - */ - private class DefaultTempFileManagerFactory implements TempFileManagerFactory - { - @Override - public TempFileManager create() - { - return new DefaultTempFileManager(); - } - } - - /** - * Handles one session, i.e. parses the HTTP request and returns the response. - */ - protected class HTTPSession - { - public static final int BUFSIZE = 8192; - private final TempFileManager tempFileManager; - private final OutputStream outputStream; - private final Socket socket; - private InputStream inputStream; - private int splitbyte; - private int rlen; - private String uri; - private Method method; - private Map parms; - private Map headers; - private CookieHandler cookies; - - public HTTPSession(TempFileManager tempFileManager, InputStream inputStream, OutputStream outputStream, Socket socket) - { - this.tempFileManager = tempFileManager; - this.inputStream = inputStream; - this.outputStream = outputStream; - this.socket = socket; - } - - public void execute() throws IOException - { - try - { - // Read the first 8192 bytes. - // The full header should fit in here. - // Apache's default header limit is 8KB. - // Do NOT assume that a single read will get the entire header at once! - byte[] buf = new byte[BUFSIZE]; - splitbyte = 0; - rlen = 0; - { - int read = inputStream.read(buf, 0, BUFSIZE); - if (read == -1) - { - // socket was been closed - throw new SocketException("NanoHttpd Shutdown"); - } - while (read > 0) - { - rlen += read; - splitbyte = findHeaderEnd(buf, rlen); - if (splitbyte > 0) - { - break; - } - read = inputStream.read(buf, rlen, BUFSIZE - rlen); - } - } - - if (splitbyte < rlen) - { - ByteArrayInputStream splitInputStream = new ByteArrayInputStream(buf, splitbyte, rlen - splitbyte); - SequenceInputStream sequenceInputStream = new SequenceInputStream(splitInputStream, inputStream); - inputStream = sequenceInputStream; - } - - parms = new HashMap(); - headers = new HashMap(); - - // Create a BufferedReader for parsing the header. - BufferedReader hin = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf, 0, rlen))); - - // Decode the header into parms and header java properties - Map pre = new HashMap(); - decodeHeader(hin, pre, parms, headers); - - method = Method.lookup(pre.get("method")); - if (method == null) - { - throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Syntax error."); - } - - uri = pre.get("uri"); - - cookies = new CookieHandler(headers); - - // Ok, now do the serve() - Response r = serve(this); - if (r == null) - { - throw new ResponseException(Response.Status.INTERNAL_ERROR, "SERVER INTERNAL ERROR: Serve() returned a null response."); - } - else - { - cookies.unloadQueue(r); - r.setRequestMethod(method); - r.send(outputStream); - } - } - catch (SocketException e) - { - // throw it out to close socket object (finalAccept) - throw e; - } - catch (IOException ioe) - { - Response r = new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage()); - r.send(outputStream); - safeClose(outputStream); - } - catch (ResponseException re) - { - Response r = new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage()); - r.send(outputStream); - safeClose(outputStream); - } - finally - { - tempFileManager.clear(); - } - } - - protected void parseBody(Map files) throws IOException, ResponseException - { - RandomAccessFile randomAccessFile = null; - BufferedReader in = null; - try - { - - randomAccessFile = getTmpBucket(); - - long size; - if (headers.containsKey("content-length")) - { - size = Integer.parseInt(headers.get("content-length")); - } - else if (splitbyte < rlen) - { - size = rlen - splitbyte; - } - else - { - size = 0; - } - - // Now read all the body and write it to f - byte[] buf = new byte[512]; - while (rlen >= 0 && size > 0) - { - rlen = inputStream.read(buf, 0, 512); - size -= rlen; - if (rlen > 0) - { - randomAccessFile.write(buf, 0, rlen); - } - } - - // Get the raw body as a byte [] - ByteBuffer fbuf = randomAccessFile.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, randomAccessFile.length()); - randomAccessFile.seek(0); - - // Create a BufferedReader for easily reading it as string. - InputStream bin = new FileInputStream(randomAccessFile.getFD()); - in = new BufferedReader(new InputStreamReader(bin)); - - // If the method is POST, there may be parameters - // in data section, too, read it: - if (Method.POST.equals(method)) - { - String contentType = ""; - String contentTypeHeader = headers.get("content-type"); - - StringTokenizer st = null; - if (contentTypeHeader != null) - { - st = new StringTokenizer(contentTypeHeader, ",; "); - if (st.hasMoreTokens()) - { - contentType = st.nextToken(); - } - } - - if ("multipart/form-data".equalsIgnoreCase(contentType)) - { - // Handle multipart/form-data - if (!st.hasMoreTokens()) - { - throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but boundary missing. Usage: GET /example/file.html"); - } - - String boundaryStartString = "boundary="; - int boundaryContentStart = contentTypeHeader.indexOf(boundaryStartString) + boundaryStartString.length(); - String boundary = contentTypeHeader.substring(boundaryContentStart); - if (boundary.startsWith("\"") && boundary.endsWith("\"")) - { - boundary = boundary.substring(1, boundary.length() - 1); - } - - decodeMultipartData(boundary, fbuf, in, parms, files); - } - else - { - // Handle application/x-www-form-urlencoded - String postLine = ""; - char[] pbuf = new char[512]; - int read = in.read(pbuf); - while (read >= 0 && !postLine.endsWith("\r\n")) - { - postLine += String.valueOf(pbuf, 0, read); - read = in.read(pbuf); - } - postLine = postLine.trim(); - decodeParms(postLine, parms); - } - } - else if (Method.PUT.equals(method)) - { - files.put("content", saveTmpFile(fbuf, 0, fbuf.limit())); - } - } - finally - { - safeClose(randomAccessFile); - safeClose(in); - } - } - - /** - * Decodes the sent headers and loads the data into Key/value pairs - */ - private void decodeHeader(BufferedReader in, Map pre, Map parms, Map headers) - throws ResponseException - { - try - { - // Read the request line - String inLine = in.readLine(); - if (inLine == null) - { - return; - } - - StringTokenizer st = new StringTokenizer(inLine); - if (!st.hasMoreTokens()) - { - throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Syntax error. Usage: GET /example/file.html"); - } - - pre.put("method", st.nextToken()); - - if (!st.hasMoreTokens()) - { - throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Missing URI. Usage: GET /example/file.html"); - } - - String uri = st.nextToken(); - - // Decode parameters from the URI - int qmi = uri.indexOf('?'); - if (qmi >= 0) - { - decodeParms(uri.substring(qmi + 1), parms); - uri = decodePercent(uri.substring(0, qmi)); - } - else - { - uri = decodePercent(uri); - } - - // If there's another token, it's protocol version, - // followed by HTTP headers. Ignore version but parse headers. - // NOTE: this now forces header names lowercase since they are - // case insensitive and vary by client. - if (st.hasMoreTokens()) - { - String line = in.readLine(); - while (line != null && line.trim().length() > 0) - { - int p = line.indexOf(':'); - if (p >= 0) - { - headers.put(line.substring(0, p).trim().toLowerCase(), line.substring(p + 1).trim()); - } - line = in.readLine(); - } - } - - pre.put("uri", uri); - } - catch (IOException ioe) - { - throw new ResponseException(Response.Status.INTERNAL_ERROR, "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage(), ioe); - } - } - - /** - * Decodes the Multipart Body data and put it into Key/Value pairs. - */ - private void decodeMultipartData(String boundary, ByteBuffer fbuf, BufferedReader in, Map parms, - Map files) throws ResponseException - { - try - { - int[] bpositions = getBoundaryPositions(fbuf, boundary.getBytes()); - int boundarycount = 1; - String mpline = in.readLine(); - while (mpline != null) - { - if (!mpline.contains(boundary)) - { - throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but next chunk does not start with boundary. Usage: GET /example/file.html"); - } - boundarycount++; - Map item = new HashMap(); - mpline = in.readLine(); - while (mpline != null && mpline.trim().length() > 0) - { - int p = mpline.indexOf(':'); - if (p != -1) - { - item.put(mpline.substring(0, p).trim().toLowerCase(), mpline.substring(p + 1).trim()); - } - mpline = in.readLine(); - } - if (mpline != null) - { - String contentDisposition = item.get("content-disposition"); - if (contentDisposition == null) - { - throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but no content-disposition info found. Usage: GET /example/file.html"); - } - StringTokenizer st = new StringTokenizer(contentDisposition, "; "); - Map disposition = new HashMap(); - while (st.hasMoreTokens()) - { - String token = st.nextToken(); - int p = token.indexOf('='); - if (p != -1) - { - disposition.put(token.substring(0, p).trim().toLowerCase(), token.substring(p + 1).trim()); - } - } - String pname = disposition.get("name"); - pname = pname.substring(1, pname.length() - 1); - - String value = ""; - if (item.get("content-type") == null) - { - while (mpline != null && !mpline.contains(boundary)) - { - mpline = in.readLine(); - if (mpline != null) - { - int d = mpline.indexOf(boundary); - if (d == -1) - { - value += mpline; - } - else - { - value += mpline.substring(0, d - 2); - } - } - } - } - else - { - if (boundarycount > bpositions.length) - { - throw new ResponseException(Response.Status.INTERNAL_ERROR, "Error processing request"); - } - int offset = stripMultipartHeaders(fbuf, bpositions[boundarycount - 2]); - String path = saveTmpFile(fbuf, offset, bpositions[boundarycount - 1] - offset - 4); - files.put(pname, path); - value = disposition.get("filename"); - value = value.substring(1, value.length() - 1); - do - { - mpline = in.readLine(); - } - while (mpline != null && !mpline.contains(boundary)); - } - parms.put(pname, value); - } - } - } - catch (IOException ioe) - { - throw new ResponseException(Response.Status.INTERNAL_ERROR, "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage(), ioe); - } - } - - /** - * Find byte index separating header from body. It must be the last byte of the first two sequential new lines. - */ - private int findHeaderEnd(final byte[] buf, int rlen) - { - int splitbyte = 0; - while (splitbyte + 3 < rlen) - { - if (buf[splitbyte] == '\r' && buf[splitbyte + 1] == '\n' && buf[splitbyte + 2] == '\r' && buf[splitbyte + 3] == '\n') - { - return splitbyte + 4; - } - splitbyte++; - } - return 0; - } - - /** - * Find the byte positions where multipart boundaries start. - */ - private int[] getBoundaryPositions(ByteBuffer b, byte[] boundary) - { - int matchcount = 0; - int matchbyte = -1; - List matchbytes = new ArrayList(); - for (int i = 0; i < b.limit(); i++) - { - if (b.get(i) == boundary[matchcount]) - { - if (matchcount == 0) - { - matchbyte = i; - } - matchcount++; - if (matchcount == boundary.length) - { - matchbytes.add(matchbyte); - matchcount = 0; - matchbyte = -1; - } - } - else - { - i -= matchcount; - matchcount = 0; - matchbyte = -1; - } - } - int[] ret = new int[matchbytes.size()]; - for (int i = 0; i < ret.length; i++) - { - ret[i] = matchbytes.get(i); - } - return ret; - } - - /** - * Retrieves the content of a sent file and saves it to a temporary file. The full path to the saved file is returned. - */ - private String saveTmpFile(ByteBuffer b, int offset, int len) - { - String path = ""; - if (len > 0) - { - FileOutputStream fileOutputStream = null; - try - { - TempFile tempFile = tempFileManager.createTempFile(); - ByteBuffer src = b.duplicate(); - fileOutputStream = new FileOutputStream(tempFile.getName()); - FileChannel dest = fileOutputStream.getChannel(); - src.position(offset).limit(offset + len); - dest.write(src.slice()); - path = tempFile.getName(); - } - catch (Exception e) - { // Catch exception if any - Log.severe(e); - } - finally - { - safeClose(fileOutputStream); - } - } - return path; - } - - private RandomAccessFile getTmpBucket() - { - try - { - TempFile tempFile = tempFileManager.createTempFile(); - return new RandomAccessFile(tempFile.getName(), "rw"); - } - catch (Exception e) - { - Log.severe(e); - } - return null; - } - - /** - * It returns the offset separating multipart file headers from the file's data. - */ - private int stripMultipartHeaders(ByteBuffer b, int offset) - { - int i; - for (i = offset; i < b.limit(); i++) - { - if (b.get(i) == '\r' && b.get(++i) == '\n' && b.get(++i) == '\r' && b.get(++i) == '\n') - { - break; - } - } - return i + 1; - } - - /** - * Decodes parameters in percent-encoded URI-format ( e.g. "name=Jack%20Daniels&pass=Single%20Malt" ) and - * adds them to given Map. NOTE: this doesn't support multiple identical keys due to the simplicity of Map. - */ - private void decodeParms(String parms, Map p) - { - if (parms == null) - { - p.put(QUERY_STRING_PARAMETER, ""); - return; - } - - p.put(QUERY_STRING_PARAMETER, parms); - StringTokenizer st = new StringTokenizer(parms, "&"); - while (st.hasMoreTokens()) - { - String e = st.nextToken(); - int sep = e.indexOf('='); - if (sep >= 0) - { - p.put(decodePercent(e.substring(0, sep)).trim(), - decodePercent(e.substring(sep + 1))); - } - else - { - p.put(decodePercent(e).trim(), ""); - } - } - } - - public final Map getParms() - { - return parms; - } - - public final Map getHeaders() - { - return headers; - } - - public final String getUri() - { - return uri; - } - - public final Method getMethod() - { - return method; - } - - public final InputStream getInputStream() - { - return inputStream; - } - - public CookieHandler getCookies() - { - return cookies; - } - - public Socket getSocket() - { - return socket; - } - } - - public static class Cookie - { - private final String n; - private final String v; - private final String e; - - public Cookie(String name, String value, String expires) - { - n = name; - v = value; - e = expires; - } - - public Cookie(String name, String value) - { - this(name, value, 30); - } - - public Cookie(String name, String value, int numDays) - { - n = name; - v = value; - e = getHTTPTime(numDays); - } - - public String getHTTPHeader() - { - String fmt = "%s=%s; expires=%s"; - return String.format(fmt, n, v, e); - } - - public static String getHTTPTime(int days) - { - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); - dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); - calendar.add(Calendar.DAY_OF_MONTH, days); - return dateFormat.format(calendar.getTime()); - } - } - - /** - * Provides rudimentary support for cookies. - * Doesn't support 'path', 'secure' nor 'httpOnly'. - * Feel free to improve it and/or add unsupported features. - * - * @author LordFokas - */ - public class CookieHandler implements Iterable - { - private final HashMap cookies = new HashMap(); - private final ArrayList queue = new ArrayList(); - - public CookieHandler(Map httpHeaders) - { - String raw = httpHeaders.get("cookie"); - if (raw != null) - { - String[] tokens = raw.split(";"); - for (String token : tokens) - { - String[] data = token.trim().split("="); - if (data.length == 2) - { - cookies.put(data[0], data[1]); - } - } - } - } - - @Override - public Iterator iterator() - { - return cookies.keySet().iterator(); - } - - /** - * Read a cookie from the HTTP Headers. - * - * @param name The cookie's name. - * @return The cookie's value if it exists, null otherwise. - */ - public String read(String name) - { - return cookies.get(name); - } - - /** - * Sets a cookie. - * - * @param name The cookie's name. - * @param value The cookie's value. - * @param expires How many days until the cookie expires. - */ - public void set(String name, String value, int expires) - { - queue.add(new Cookie(name, value, Cookie.getHTTPTime(expires))); - } - - public void set(Cookie cookie) - { - queue.add(cookie); - } - - /** - * Set a cookie with an expiration date from a month ago, effectively deleting it on the client side. - * - * @param name The cookie name. - */ - public void delete(String name) - { - set(name, "-delete-", -30); - } - - /** - * Internally used by the webserver to add all queued cookies into the Response's HTTP Headers. - * - * @param response The Response object to which headers the queued cookies will be added. - */ - public void unloadQueue(Response response) - { - for (Cookie cookie : queue) - { - response.addHeader("Set-Cookie", cookie.getHTTPHeader()); - } - } - } +public abstract class NanoHTTPD { + + /** + * Common mime type for dynamic content: plain text + */ + public static final String MIME_PLAINTEXT = "text/plain"; + /** + * Common mime type for dynamic content: html + */ + public static final String MIME_HTML = "text/html"; + // TFM Start + /** + * Common mime type for dynamic content: json + */ + public static final String MIME_JSON = "application/json"; + // TFM End + /** + * Pseudo-Parameter to use to store the actual query string in the parameters map for later + * re-processing. + */ + private static final String QUERY_STRING_PARAMETER = "NanoHttpd.QUERY_STRING"; + private final String hostname; + private final int myPort; + private ServerSocket myServerSocket; + private Thread myThread; + /** + * Pluggable strategy for asynchronously executing requests. + */ + private AsyncRunner asyncRunner; + /** + * Pluggable strategy for creating and cleaning up temporary files. + */ + private TempFileManagerFactory tempFileManagerFactory; + + /** + * Constructs an HTTP server on given port. + */ + public NanoHTTPD(int port) { + this(null, port); + } + + /** + * Constructs an HTTP server on given hostname and port. + */ + public NanoHTTPD(String hostname, int port) { + this.hostname = hostname; + this.myPort = port; + setTempFileManagerFactory(new DefaultTempFileManagerFactory()); + setAsyncRunner(new DefaultAsyncRunner()); + } + + private static final void safeClose(ServerSocket serverSocket) { + if (serverSocket != null) { + try { + serverSocket.close(); + } catch (IOException e) { + } + } + } + + private static final void safeClose(Socket socket) { + if (socket != null) { + try { + socket.close(); + } catch (IOException e) { + } + } + } + + private static final void safeClose(Closeable closeable) { + if (closeable != null) { + try { + closeable.close(); + } catch (IOException e) { + } + } + } + + /** + * Start the server. + * + * @throws IOException if the socket is in use. + */ + public void start() throws IOException { + myServerSocket = new ServerSocket(); + myServerSocket.bind((hostname != null) ? new InetSocketAddress(hostname, myPort) + : new InetSocketAddress(myPort)); + + myThread = new Thread(new Runnable() { + @Override + public void run() { + do { + try { + final Socket finalAccept = myServerSocket.accept(); + final InputStream inputStream = finalAccept.getInputStream(); + if (inputStream == null) { + safeClose(finalAccept); + } else { + asyncRunner.exec(new Runnable() { + @Override + public void run() { + OutputStream outputStream = null; + try { + outputStream = finalAccept.getOutputStream(); + TempFileManager tempFileManager = tempFileManagerFactory.create(); + HTTPSession session = new HTTPSession(tempFileManager, + inputStream, outputStream, finalAccept); + while (!finalAccept.isClosed()) { + session.execute(); + } + } catch (Exception e) { + // When the socket is closed by the client, we throw our own SocketException + // to break the "keep alive" loop above. + if (!(e instanceof SocketException + && "NanoHttpd Shutdown".equals(e.getMessage()))) { + Log.severe(e); + } + } finally { + safeClose(outputStream); + safeClose(inputStream); + safeClose(finalAccept); + } + } + }); + } + } catch (IOException e) { + } + } + while (!myServerSocket.isClosed()); + } + }); + myThread.setDaemon(true); + myThread.setName("NanoHttpd Main Listener"); + myThread.start(); + } + + /** + * Stop the server. + */ + public void stop() { + try { + safeClose(myServerSocket); + myThread.join(); + } catch (Exception e) { + Log.severe(e); + } + } + + public final int getListeningPort() { + return myServerSocket == null ? -1 : myServerSocket.getLocalPort(); + } + + public final boolean wasStarted() { + return myServerSocket != null && myThread != null; + } + + public final boolean isAlive() { + return wasStarted() && !myServerSocket.isClosed() && myThread.isAlive(); + } + + /** + * Override this to customize the server. + *

    + *

    + * (By default, this delegates to serveFile() and allows directory listing.) + * + * @param uri Percent-decoded URI without parameters, for example "/index.cgi" + * @param method "GET", "POST" etc. + * @param parms Parsed, percent decoded parameters from URI and, in case of POST, data. + * @param headers Header entries, percent decoded + * @return HTTP response, see class Response for details + */ + @Deprecated + public Response serve(String uri, Method method, Map headers, + Map parms, + Map files) { + return new Response(Response.Status.NOT_FOUND, MIME_PLAINTEXT, "Not Found"); + } + + /** + * Override this to customize the server. + *

    + *

    + * (By default, this delegates to serveFile() and allows directory listing.) + * + * @param session The HTTP session + * @return HTTP response, see class Response for details + */ + public Response serve(HTTPSession session) { + Map files = new HashMap(); + Method method = session.getMethod(); + if (Method.PUT.equals(method) || Method.POST.equals(method)) { + try { + session.parseBody(files); + } catch (IOException ioe) { + return new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, + "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage()); + } catch (ResponseException re) { + return new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage()); + } + } + + return serve(session.getUri(), method, session.getHeaders(), session.getParms(), files); + } + + /** + * Decode percent encoded String values. + * + * @param str the percent encoded String + * @return expanded form of the input, for example "foo%20bar" becomes "foo bar" + */ + protected String decodePercent(String str) { + String decoded = null; + try { + decoded = URLDecoder.decode(str, "UTF8"); + } catch (UnsupportedEncodingException ignored) { + } + return decoded; + } + + /** + * Decode parameters from a URL, handing the case where a single parameter name might have been + * supplied several times, by return lists of values. In general these lists will contain a + * single element. + * + * @param parms original NanoHttpd parameters values, as passed to the + * serve() method. + * @return a map of String (parameter name) to List<String> (a + * list of the values supplied). + */ + protected Map> decodeParameters(Map parms) { + return this.decodeParameters(parms.get(QUERY_STRING_PARAMETER)); + } + + /** + * Decode parameters from a URL, handing the case where a single parameter name might have been + * supplied several times, by return lists of values. In general these lists will contain a + * single element. + * + * @param queryString a query string pulled from the URL. + * @return a map of String (parameter name) to List<String> (a + * list of the values supplied). + */ + protected Map> decodeParameters(String queryString) { + Map> parms = new HashMap>(); + if (queryString != null) { + StringTokenizer st = new StringTokenizer(queryString, "&"); + while (st.hasMoreTokens()) { + String e = st.nextToken(); + int sep = e.indexOf('='); + String propertyName = (sep >= 0) ? decodePercent(e.substring(0, sep)).trim() + : decodePercent(e).trim(); + if (!parms.containsKey(propertyName)) { + parms.put(propertyName, new ArrayList()); + } + String propertyValue = (sep >= 0) ? decodePercent(e.substring(sep + 1)) : null; + if (propertyValue != null) { + parms.get(propertyName).add(propertyValue); + } + } + } + return parms; + } + + // ------------------------------------------------------------------------------- // + // + // Threading Strategy. + // + // ------------------------------------------------------------------------------- // + + /** + * Pluggable strategy for asynchronously executing requests. + * + * @param asyncRunner new strategy for handling threads. + */ + public void setAsyncRunner(AsyncRunner asyncRunner) { + this.asyncRunner = asyncRunner; + } + + // ------------------------------------------------------------------------------- // + // + // Temp file handling strategy. + // + // ------------------------------------------------------------------------------- // + + /** + * Pluggable strategy for creating and cleaning up temporary files. + * + * @param tempFileManagerFactory new strategy for handling temp files. + */ + public void setTempFileManagerFactory(TempFileManagerFactory tempFileManagerFactory) { + this.tempFileManagerFactory = tempFileManagerFactory; + } + + /** + * HTTP Request methods, with the ability to decode a String back to its enum + * value. + */ + public enum Method { + GET, PUT, POST, DELETE, HEAD; + + static Method lookup(String method) { + for (Method m : Method.values()) { + if (m.toString().equalsIgnoreCase(method)) { + return m; + } + } + return null; + } + } + + /** + * Pluggable strategy for asynchronously executing requests. + */ + public interface AsyncRunner { + + void exec(Runnable code); + } + + /** + * Factory to create temp file managers. + */ + public interface TempFileManagerFactory { + + TempFileManager create(); + } + + // ------------------------------------------------------------------------------- // + + /** + * Temp file manager. + *

    + *

    Temp file managers are created 1-to-1 with incoming requests, to create and cleanup + * temporary files created as a result of handling the request.

    + */ + public interface TempFileManager { + + TempFile createTempFile() throws Exception; + + void clear(); + } + + /** + * A temp file. + *

    + *

    Temp files are responsible for managing the actual temporary storage and cleaning + * themselves up when no longer needed.

    + */ + public interface TempFile { + + OutputStream open() throws Exception; + + void delete() throws Exception; + + String getName(); + } + + /** + * Default threading strategy for NanoHttpd. + *

    + *

    By default, the server spawns a new Thread for every incoming request. These are set + * to daemon status, and named according to the request number. The name is useful when + * profiling the application.

    + */ + public static class DefaultAsyncRunner implements AsyncRunner { + + private long requestCount; + + @Override + public void exec(Runnable code) { + ++requestCount; + Thread t = new Thread(code); + t.setDaemon(true); + t.setName("NanoHttpd Request Processor (#" + requestCount + ")"); + t.start(); + } + } + + /** + * Default strategy for creating and cleaning up temporary files. + *

    + *

    This class stores its files in the standard location (that is, + * wherever java.io.tmpdir points to). Files are added to an internal list, and + * deleted when no longer needed (that is, when clear() is invoked at the end of + * processing a request).

    + */ + public static class DefaultTempFileManager implements TempFileManager { + + private final String tmpdir; + private final List tempFiles; + + public DefaultTempFileManager() { + tmpdir = System.getProperty("java.io.tmpdir"); + tempFiles = new ArrayList(); + } + + @Override + public TempFile createTempFile() throws Exception { + DefaultTempFile tempFile = new DefaultTempFile(tmpdir); + tempFiles.add(tempFile); + return tempFile; + } + + @Override + public void clear() { + for (TempFile file : tempFiles) { + try { + file.delete(); + } catch (Exception ignored) { + } + } + tempFiles.clear(); + } + } + + /** + * Default strategy for creating and cleaning up temporary files. + *

    + *

    By default, files are created by File.createTempFile() in + * the directory specified.

    + */ + public static class DefaultTempFile implements TempFile { + + private final File file; + private final OutputStream fstream; + + public DefaultTempFile(String tempdir) throws IOException { + file = File.createTempFile("NanoHTTPD-", "", new File(tempdir)); + fstream = new FileOutputStream(file); + } + + @Override + public OutputStream open() throws Exception { + return fstream; + } + + @Override + public void delete() throws Exception { + safeClose(fstream); + file.delete(); + } + + @Override + public String getName() { + return file.getAbsolutePath(); + } + } + + /** + * HTTP response. Return one of these from serve(). + */ + public static class Response { + + /** + * Headers for the HTTP response. Use addHeader() to add lines. + */ + private final Map header = new HashMap(); + /** + * HTTP status code after processing, e.g. "200 OK", HTTP_OK + */ + private Status status; + /** + * MIME type of content, e.g. "text/html" + */ + private String mimeType; + /** + * Data of the response, may be null. + */ + private InputStream data; + /** + * The request method that spawned this response. + */ + private Method requestMethod; + /** + * Use chunkedTransfer + */ + private boolean chunkedTransfer; + + /** + * Default constructor: response = HTTP_OK, mime = MIME_HTML and your supplied message + */ + public Response(String msg) { + this(Status.OK, MIME_HTML, msg); + } + + /** + * Basic constructor. + */ + public Response(Status status, String mimeType, InputStream data) { + this.status = status; + this.mimeType = mimeType; + this.data = data; + } + + /** + * Convenience method that makes an InputStream out of given text. + */ + public Response(Status status, String mimeType, String txt) { + this.status = status; + this.mimeType = mimeType; + this.data = + txt != null ? new ByteArrayInputStream(txt.getBytes(StandardCharsets.UTF_8)) : null; + } + + /** + * Adds given line to the header. + */ + public void addHeader(String name, String value) { + header.put(name, value); + } + + /** + * Sends given response to the socket. + */ + private void send(OutputStream outputStream) { + String mime = mimeType; + SimpleDateFormat gmtFrmt = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 'GMT'", + Locale.US); + gmtFrmt.setTimeZone(TimeZone.getTimeZone("GMT")); + + try { + if (status == null) { + throw new Error("sendResponse(): Status can't be null."); + } + PrintWriter pw = new PrintWriter(outputStream); + pw.print("HTTP/1.1 " + status.getDescription() + " \r\n"); + + if (mime != null) { + pw.print("Content-Type: " + mime + "\r\n"); + } + + if (header == null || header.get("Date") == null) { + pw.print("Date: " + gmtFrmt.format(new Date()) + "\r\n"); + } + + if (header != null) { + for (String key : header.keySet()) { + String value = header.get(key); + pw.print(key + ": " + value + "\r\n"); + } + } + + pw.print("Connection: keep-alive\r\n"); + + if (requestMethod != Method.HEAD && chunkedTransfer) { + sendAsChunked(outputStream, pw); + } else { + sendAsFixedLength(outputStream, pw); + } + outputStream.flush(); + safeClose(data); + } catch (IOException ioe) { + // Couldn't write? No can do. + } + } + + private void sendAsChunked(OutputStream outputStream, PrintWriter pw) throws IOException { + pw.print("Transfer-Encoding: chunked\r\n"); + pw.print("\r\n"); + pw.flush(); + int BUFFER_SIZE = 16 * 1024; + byte[] CRLF = "\r\n".getBytes(); + byte[] buff = new byte[BUFFER_SIZE]; + int read; + while ((read = data.read(buff)) > 0) { + outputStream.write(String.format("%x\r\n", read).getBytes()); + outputStream.write(buff, 0, read); + outputStream.write(CRLF); + } + outputStream.write(String.format("0\r\n\r\n").getBytes()); + } + + private void sendAsFixedLength(OutputStream outputStream, PrintWriter pw) + throws IOException { + int pending = data != null ? data.available() + : 0; // This is to support partial sends, see serveFile() + pw.print("Content-Length: " + pending + "\r\n"); + + pw.print("\r\n"); + pw.flush(); + + if (requestMethod != Method.HEAD && data != null) { + int BUFFER_SIZE = 16 * 1024; + byte[] buff = new byte[BUFFER_SIZE]; + while (pending > 0) { + int read = data.read(buff, 0, + ((pending > BUFFER_SIZE) ? BUFFER_SIZE : pending)); + if (read <= 0) { + break; + } + outputStream.write(buff, 0, read); + + pending -= read; + } + } + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public String getMimeType() { + return mimeType; + } + + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } + + public InputStream getData() { + return data; + } + + public void setData(InputStream data) { + this.data = data; + } + + public Method getRequestMethod() { + return requestMethod; + } + + public void setRequestMethod(Method requestMethod) { + this.requestMethod = requestMethod; + } + + public void setChunkedTransfer(boolean chunkedTransfer) { + this.chunkedTransfer = chunkedTransfer; + } + + /** + * Some HTTP response status codes + */ + public enum Status { + OK(200, "OK"), CREATED(201, "Created"), ACCEPTED(202, "Accepted"), NO_CONTENT(204, + "No Content"), PARTIAL_CONTENT(206, "Partial Content"), REDIRECT(301, + "Moved Permanently"), NOT_MODIFIED(304, "Not Modified"), BAD_REQUEST(400, + "Bad Request"), UNAUTHORIZED(401, + "Unauthorized"), FORBIDDEN(403, "Forbidden"), NOT_FOUND(404, + "Not Found"), RANGE_NOT_SATISFIABLE(416, + "Requested Range Not Satisfiable"), INTERNAL_ERROR(500, "Internal Server Error"); + private final int requestStatus; + private final String description; + + Status(int requestStatus, String description) { + this.requestStatus = requestStatus; + this.description = description; + } + + public int getRequestStatus() { + return this.requestStatus; + } + + public String getDescription() { + return "" + this.requestStatus + " " + description; + } + } + } + + public static final class ResponseException extends Exception { + + private final Response.Status status; + + public ResponseException(Response.Status status, String message) { + super(message); + this.status = status; + } + + public ResponseException(Response.Status status, String message, Exception e) { + super(message, e); + this.status = status; + } + + public Response.Status getStatus() { + return status; + } + } + + public static class Cookie { + + private final String n; + private final String v; + private final String e; + + public Cookie(String name, String value, String expires) { + n = name; + v = value; + e = expires; + } + + public Cookie(String name, String value) { + this(name, value, 30); + } + + public Cookie(String name, String value, int numDays) { + n = name; + v = value; + e = getHTTPTime(numDays); + } + + public static String getHTTPTime(int days) { + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", + Locale.US); + dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); + calendar.add(Calendar.DAY_OF_MONTH, days); + return dateFormat.format(calendar.getTime()); + } + + public String getHTTPHeader() { + String fmt = "%s=%s; expires=%s"; + return String.format(fmt, n, v, e); + } + } + + /** + * Default strategy for creating and cleaning up temporary files. + */ + private class DefaultTempFileManagerFactory implements TempFileManagerFactory { + + @Override + public TempFileManager create() { + return new DefaultTempFileManager(); + } + } + + /** + * Handles one session, i.e. parses the HTTP request and returns the response. + */ + protected class HTTPSession { + + public static final int BUFSIZE = 8192; + private final TempFileManager tempFileManager; + private final OutputStream outputStream; + private final Socket socket; + private InputStream inputStream; + private int splitbyte; + private int rlen; + private String uri; + private Method method; + private Map parms; + private Map headers; + private CookieHandler cookies; + + public HTTPSession(TempFileManager tempFileManager, InputStream inputStream, + OutputStream outputStream, Socket socket) { + this.tempFileManager = tempFileManager; + this.inputStream = inputStream; + this.outputStream = outputStream; + this.socket = socket; + } + + public void execute() throws IOException { + try { + // Read the first 8192 bytes. + // The full header should fit in here. + // Apache's default header limit is 8KB. + // Do NOT assume that a single read will get the entire header at once! + byte[] buf = new byte[BUFSIZE]; + splitbyte = 0; + rlen = 0; + { + int read = inputStream.read(buf, 0, BUFSIZE); + if (read == -1) { + // socket was been closed + throw new SocketException("NanoHttpd Shutdown"); + } + while (read > 0) { + rlen += read; + splitbyte = findHeaderEnd(buf, rlen); + if (splitbyte > 0) { + break; + } + read = inputStream.read(buf, rlen, BUFSIZE - rlen); + } + } + + if (splitbyte < rlen) { + ByteArrayInputStream splitInputStream = new ByteArrayInputStream(buf, splitbyte, + rlen - splitbyte); + SequenceInputStream sequenceInputStream = new SequenceInputStream( + splitInputStream, inputStream); + inputStream = sequenceInputStream; + } + + parms = new HashMap(); + headers = new HashMap(); + + // Create a BufferedReader for parsing the header. + BufferedReader hin = new BufferedReader( + new InputStreamReader(new ByteArrayInputStream(buf, 0, rlen))); + + // Decode the header into parms and header java properties + Map pre = new HashMap(); + decodeHeader(hin, pre, parms, headers); + + method = Method.lookup(pre.get("method")); + if (method == null) { + throw new ResponseException(Response.Status.BAD_REQUEST, + "BAD REQUEST: Syntax error."); + } + + uri = pre.get("uri"); + + cookies = new CookieHandler(headers); + + // Ok, now do the serve() + Response r = serve(this); + if (r == null) { + throw new ResponseException(Response.Status.INTERNAL_ERROR, + "SERVER INTERNAL ERROR: Serve() returned a null response."); + } else { + cookies.unloadQueue(r); + r.setRequestMethod(method); + r.send(outputStream); + } + } catch (SocketException e) { + // throw it out to close socket object (finalAccept) + throw e; + } catch (IOException ioe) { + Response r = new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, + "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage()); + r.send(outputStream); + safeClose(outputStream); + } catch (ResponseException re) { + Response r = new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage()); + r.send(outputStream); + safeClose(outputStream); + } finally { + tempFileManager.clear(); + } + } + + protected void parseBody(Map files) throws IOException, ResponseException { + RandomAccessFile randomAccessFile = null; + BufferedReader in = null; + try { + + randomAccessFile = getTmpBucket(); + + long size; + if (headers.containsKey("content-length")) { + size = Integer.parseInt(headers.get("content-length")); + } else if (splitbyte < rlen) { + size = rlen - splitbyte; + } else { + size = 0; + } + + // Now read all the body and write it to f + byte[] buf = new byte[512]; + while (rlen >= 0 && size > 0) { + rlen = inputStream.read(buf, 0, 512); + size -= rlen; + if (rlen > 0) { + randomAccessFile.write(buf, 0, rlen); + } + } + + // Get the raw body as a byte [] + ByteBuffer fbuf = randomAccessFile.getChannel() + .map(FileChannel.MapMode.READ_ONLY, 0, randomAccessFile.length()); + randomAccessFile.seek(0); + + // Create a BufferedReader for easily reading it as string. + InputStream bin = new FileInputStream(randomAccessFile.getFD()); + in = new BufferedReader(new InputStreamReader(bin)); + + // If the method is POST, there may be parameters + // in data section, too, read it: + if (Method.POST.equals(method)) { + String contentType = ""; + String contentTypeHeader = headers.get("content-type"); + + StringTokenizer st = null; + if (contentTypeHeader != null) { + st = new StringTokenizer(contentTypeHeader, ",; "); + if (st.hasMoreTokens()) { + contentType = st.nextToken(); + } + } + + if ("multipart/form-data".equalsIgnoreCase(contentType)) { + // Handle multipart/form-data + if (!st.hasMoreTokens()) { + throw new ResponseException(Response.Status.BAD_REQUEST, + "BAD REQUEST: Content type is multipart/form-data but boundary missing. Usage: GET /example/file.html"); + } + + String boundaryStartString = "boundary="; + int boundaryContentStart = contentTypeHeader.indexOf(boundaryStartString) + + boundaryStartString.length(); + String boundary = contentTypeHeader.substring(boundaryContentStart); + if (boundary.startsWith("\"") && boundary.endsWith("\"")) { + boundary = boundary.substring(1, boundary.length() - 1); + } + + decodeMultipartData(boundary, fbuf, in, parms, files); + } else { + // Handle application/x-www-form-urlencoded + String postLine = ""; + char[] pbuf = new char[512]; + int read = in.read(pbuf); + while (read >= 0 && !postLine.endsWith("\r\n")) { + postLine += String.valueOf(pbuf, 0, read); + read = in.read(pbuf); + } + postLine = postLine.trim(); + decodeParms(postLine, parms); + } + } else if (Method.PUT.equals(method)) { + files.put("content", saveTmpFile(fbuf, 0, fbuf.limit())); + } + } finally { + safeClose(randomAccessFile); + safeClose(in); + } + } + + /** + * Decodes the sent headers and loads the data into Key/value pairs + */ + private void decodeHeader(BufferedReader in, Map pre, + Map parms, Map headers) + throws ResponseException { + try { + // Read the request line + String inLine = in.readLine(); + if (inLine == null) { + return; + } + + StringTokenizer st = new StringTokenizer(inLine); + if (!st.hasMoreTokens()) { + throw new ResponseException(Response.Status.BAD_REQUEST, + "BAD REQUEST: Syntax error. Usage: GET /example/file.html"); + } + + pre.put("method", st.nextToken()); + + if (!st.hasMoreTokens()) { + throw new ResponseException(Response.Status.BAD_REQUEST, + "BAD REQUEST: Missing URI. Usage: GET /example/file.html"); + } + + String uri = st.nextToken(); + + // Decode parameters from the URI + int qmi = uri.indexOf('?'); + if (qmi >= 0) { + decodeParms(uri.substring(qmi + 1), parms); + uri = decodePercent(uri.substring(0, qmi)); + } else { + uri = decodePercent(uri); + } + + // If there's another token, it's protocol version, + // followed by HTTP headers. Ignore version but parse headers. + // NOTE: this now forces header names lowercase since they are + // case insensitive and vary by client. + if (st.hasMoreTokens()) { + String line = in.readLine(); + while (line != null && line.trim().length() > 0) { + int p = line.indexOf(':'); + if (p >= 0) { + headers.put(line.substring(0, p).trim().toLowerCase(), + line.substring(p + 1).trim()); + } + line = in.readLine(); + } + } + + pre.put("uri", uri); + } catch (IOException ioe) { + throw new ResponseException(Response.Status.INTERNAL_ERROR, + "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage(), ioe); + } + } + + /** + * Decodes the Multipart Body data and put it into Key/Value pairs. + */ + private void decodeMultipartData(String boundary, ByteBuffer fbuf, BufferedReader in, + Map parms, + Map files) throws ResponseException { + try { + int[] bpositions = getBoundaryPositions(fbuf, boundary.getBytes()); + int boundarycount = 1; + String mpline = in.readLine(); + while (mpline != null) { + if (!mpline.contains(boundary)) { + throw new ResponseException(Response.Status.BAD_REQUEST, + "BAD REQUEST: Content type is multipart/form-data but next chunk does not start with boundary. Usage: GET /example/file.html"); + } + boundarycount++; + Map item = new HashMap(); + mpline = in.readLine(); + while (mpline != null && mpline.trim().length() > 0) { + int p = mpline.indexOf(':'); + if (p != -1) { + item.put(mpline.substring(0, p).trim().toLowerCase(), + mpline.substring(p + 1).trim()); + } + mpline = in.readLine(); + } + if (mpline != null) { + String contentDisposition = item.get("content-disposition"); + if (contentDisposition == null) { + throw new ResponseException(Response.Status.BAD_REQUEST, + "BAD REQUEST: Content type is multipart/form-data but no content-disposition info found. Usage: GET /example/file.html"); + } + StringTokenizer st = new StringTokenizer(contentDisposition, "; "); + Map disposition = new HashMap(); + while (st.hasMoreTokens()) { + String token = st.nextToken(); + int p = token.indexOf('='); + if (p != -1) { + disposition.put(token.substring(0, p).trim().toLowerCase(), + token.substring(p + 1).trim()); + } + } + String pname = disposition.get("name"); + pname = pname.substring(1, pname.length() - 1); + + String value = ""; + if (item.get("content-type") == null) { + while (mpline != null && !mpline.contains(boundary)) { + mpline = in.readLine(); + if (mpline != null) { + int d = mpline.indexOf(boundary); + if (d == -1) { + value += mpline; + } else { + value += mpline.substring(0, d - 2); + } + } + } + } else { + if (boundarycount > bpositions.length) { + throw new ResponseException(Response.Status.INTERNAL_ERROR, + "Error processing request"); + } + int offset = stripMultipartHeaders(fbuf, bpositions[boundarycount - 2]); + String path = saveTmpFile(fbuf, offset, + bpositions[boundarycount - 1] - offset - 4); + files.put(pname, path); + value = disposition.get("filename"); + value = value.substring(1, value.length() - 1); + do { + mpline = in.readLine(); + } + while (mpline != null && !mpline.contains(boundary)); + } + parms.put(pname, value); + } + } + } catch (IOException ioe) { + throw new ResponseException(Response.Status.INTERNAL_ERROR, + "SERVER INTERNAL ERROR: IOException: " + ioe.getMessage(), ioe); + } + } + + /** + * Find byte index separating header from body. It must be the last byte of the first two + * sequential new lines. + */ + private int findHeaderEnd(final byte[] buf, int rlen) { + int splitbyte = 0; + while (splitbyte + 3 < rlen) { + if (buf[splitbyte] == '\r' && buf[splitbyte + 1] == '\n' + && buf[splitbyte + 2] == '\r' && buf[splitbyte + 3] == '\n') { + return splitbyte + 4; + } + splitbyte++; + } + return 0; + } + + /** + * Find the byte positions where multipart boundaries start. + */ + private int[] getBoundaryPositions(ByteBuffer b, byte[] boundary) { + int matchcount = 0; + int matchbyte = -1; + List matchbytes = new ArrayList(); + for (int i = 0; i < b.limit(); i++) { + if (b.get(i) == boundary[matchcount]) { + if (matchcount == 0) { + matchbyte = i; + } + matchcount++; + if (matchcount == boundary.length) { + matchbytes.add(matchbyte); + matchcount = 0; + matchbyte = -1; + } + } else { + i -= matchcount; + matchcount = 0; + matchbyte = -1; + } + } + int[] ret = new int[matchbytes.size()]; + for (int i = 0; i < ret.length; i++) { + ret[i] = matchbytes.get(i); + } + return ret; + } + + /** + * Retrieves the content of a sent file and saves it to a temporary file. The full path to + * the saved file is returned. + */ + private String saveTmpFile(ByteBuffer b, int offset, int len) { + String path = ""; + if (len > 0) { + FileOutputStream fileOutputStream = null; + try { + TempFile tempFile = tempFileManager.createTempFile(); + ByteBuffer src = b.duplicate(); + fileOutputStream = new FileOutputStream(tempFile.getName()); + FileChannel dest = fileOutputStream.getChannel(); + src.position(offset).limit(offset + len); + dest.write(src.slice()); + path = tempFile.getName(); + } catch (Exception e) { // Catch exception if any + Log.severe(e); + } finally { + safeClose(fileOutputStream); + } + } + return path; + } + + private RandomAccessFile getTmpBucket() { + try { + TempFile tempFile = tempFileManager.createTempFile(); + return new RandomAccessFile(tempFile.getName(), "rw"); + } catch (Exception e) { + Log.severe(e); + } + return null; + } + + /** + * It returns the offset separating multipart file headers from the file's data. + */ + private int stripMultipartHeaders(ByteBuffer b, int offset) { + int i; + for (i = offset; i < b.limit(); i++) { + if (b.get(i) == '\r' && b.get(++i) == '\n' && b.get(++i) == '\r' + && b.get(++i) == '\n') { + break; + } + } + return i + 1; + } + + /** + * Decodes parameters in percent-encoded URI-format ( e.g. "name=Jack%20Daniels&pass=Single%20Malt" + * ) and adds them to given Map. NOTE: this doesn't support multiple identical keys due to + * the simplicity of Map. + */ + private void decodeParms(String parms, Map p) { + if (parms == null) { + p.put(QUERY_STRING_PARAMETER, ""); + return; + } + + p.put(QUERY_STRING_PARAMETER, parms); + StringTokenizer st = new StringTokenizer(parms, "&"); + while (st.hasMoreTokens()) { + String e = st.nextToken(); + int sep = e.indexOf('='); + if (sep >= 0) { + p.put(decodePercent(e.substring(0, sep)).trim(), + decodePercent(e.substring(sep + 1))); + } else { + p.put(decodePercent(e).trim(), ""); + } + } + } + + public final Map getParms() { + return parms; + } + + public final Map getHeaders() { + return headers; + } + + public final String getUri() { + return uri; + } + + public final Method getMethod() { + return method; + } + + public final InputStream getInputStream() { + return inputStream; + } + + public CookieHandler getCookies() { + return cookies; + } + + public Socket getSocket() { + return socket; + } + } + + /** + * Provides rudimentary support for cookies. Doesn't support 'path', 'secure' nor 'httpOnly'. + * Feel free to improve it and/or add unsupported features. + * + * @author LordFokas + */ + public class CookieHandler implements Iterable { + + private final HashMap cookies = new HashMap(); + private final ArrayList queue = new ArrayList(); + + public CookieHandler(Map httpHeaders) { + String raw = httpHeaders.get("cookie"); + if (raw != null) { + String[] tokens = raw.split(";"); + for (String token : tokens) { + String[] data = token.trim().split("="); + if (data.length == 2) { + cookies.put(data[0], data[1]); + } + } + } + } + + @Override + public Iterator iterator() { + return cookies.keySet().iterator(); + } + + /** + * Read a cookie from the HTTP Headers. + * + * @param name The cookie's name. + * @return The cookie's value if it exists, null otherwise. + */ + public String read(String name) { + return cookies.get(name); + } + + /** + * Sets a cookie. + * + * @param name The cookie's name. + * @param value The cookie's value. + * @param expires How many days until the cookie expires. + */ + public void set(String name, String value, int expires) { + queue.add(new Cookie(name, value, Cookie.getHTTPTime(expires))); + } + + public void set(Cookie cookie) { + queue.add(cookie); + } + + /** + * Set a cookie with an expiration date from a month ago, effectively deleting it on the + * client side. + * + * @param name The cookie name. + */ + public void delete(String name) { + set(name, "-delete-", -30); + } + + /** + * Internally used by the webserver to add all queued cookies into the Response's HTTP + * Headers. + * + * @param response The Response object to which headers the queued cookies will be added. + */ + public void unloadQueue(Response response) { + for (Cookie cookie : queue) { + response.addHeader("Set-Cookie", cookie.getHTTPHeader()); + } + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/BlockListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/BlockListener.java index 61c17f1..e4c62f0 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/BlockListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/BlockListener.java @@ -15,247 +15,230 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.block.*; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockFromToEvent; +import org.bukkit.event.block.BlockIgniteEvent; +import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; public class BlockListener implements Listener { - @EventHandler(priority = EventPriority.HIGH) - public void onBlockBurn(BlockBurnEvent event) { - if (!ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean()) { - event.setCancelled(true); - } - } - @EventHandler(priority = EventPriority.HIGH) - public void onBlockIgnite(BlockIgniteEvent event) - { - if (!ConfigurationEntry.ALLOW_FIRE_PLACE.getBoolean()) - { - event.setCancelled(true); - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onBlockBurn(BlockBurnEvent event) { + if (!ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean()) { + event.setCancelled(true); + } + } - @EventHandler(priority = EventPriority.NORMAL) - public void onBlockBreak(BlockBreakEvent event) - { - final Player player = event.getPlayer(); - final Location location = event.getBlock().getLocation(); + @EventHandler(priority = EventPriority.HIGH) + public void onBlockIgnite(BlockIgniteEvent event) { + if (!ConfigurationEntry.ALLOW_FIRE_PLACE.getBoolean()) { + event.setCancelled(true); + } + } - if (ConfigurationEntry.NUKE_MONITOR_ENABLED.getBoolean()) - { - final PlayerData playerdata = PlayerData.getPlayerData(player); + @EventHandler(priority = EventPriority.NORMAL) + public void onBlockBreak(BlockBreakEvent event) { + final Player player = event.getPlayer(); + final Location location = event.getBlock().getLocation(); - final Location playerLocation = player.getLocation(); + if (ConfigurationEntry.NUKE_MONITOR_ENABLED.getBoolean()) { + final PlayerData playerdata = PlayerData.getPlayerData(player); - final double nukeMonitorRange = ConfigurationEntry.NUKE_MONITOR_RANGE.getDouble().doubleValue(); + final Location playerLocation = player.getLocation(); - boolean outOfRange = false; - if (!playerLocation.getWorld().equals(location.getWorld())) - { - outOfRange = true; - } - else if (playerLocation.distanceSquared(location) > (nukeMonitorRange * nukeMonitorRange)) - { - outOfRange = true; - } + final double nukeMonitorRange = ConfigurationEntry.NUKE_MONITOR_RANGE.getDouble() + .doubleValue(); - if (outOfRange) - { - if (playerdata.incrementAndGetFreecamDestroyCount() > ConfigurationEntry.FREECAM_TRIGGER_COUNT.getInteger()) - { - Utilities.bcastMsg(player.getName() + " has been flagged for possible freecam nuking.", ChatColor.RED); - Utilities.autoEject(player, "Freecam (extended range) block breaking is not permitted on this server."); + boolean outOfRange = false; + if (!playerLocation.getWorld().equals(location.getWorld())) { + outOfRange = true; + } else if (playerLocation.distanceSquared(location) > (nukeMonitorRange + * nukeMonitorRange)) { + outOfRange = true; + } - playerdata.resetFreecamDestroyCount(); + if (outOfRange) { + if (playerdata.incrementAndGetFreecamDestroyCount() + > ConfigurationEntry.FREECAM_TRIGGER_COUNT.getInteger()) { + Utilities.bcastMsg( + player.getName() + " has been flagged for possible freecam nuking.", + ChatColor.RED); + Utilities.autoEject(player, + "Freecam (extended range) block breaking is not permitted on this server."); - event.setCancelled(true); - return; - } - } + playerdata.resetFreecamDestroyCount(); - final Long lastRan = HeartBeat.getLastRan(); - if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis()) - { - // Log.warning("Heartbeat service timeout - can't check block place/break rates."); - } - else - { - if (playerdata.incrementAndGetBlockDestroyCount() > ConfigurationEntry.NUKE_MONITOR_COUNT_BREAK.getInteger()) - { - Utilities.bcastMsg(player.getName() + " is breaking blocks too fast!", ChatColor.RED); - Utilities.autoEject(player, "You are breaking blocks too fast. Nukers are not permitted on this server."); + event.setCancelled(true); + return; + } + } - playerdata.resetBlockDestroyCount(); + final Long lastRan = HeartBeat.getLastRan(); + if (lastRan == null + || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis()) { + // Log.warning("Heartbeat service timeout - can't check block place/break rates."); + } else { + if (playerdata.incrementAndGetBlockDestroyCount() + > ConfigurationEntry.NUKE_MONITOR_COUNT_BREAK.getInteger()) { + Utilities.bcastMsg(player.getName() + " is breaking blocks too fast!", + ChatColor.RED); + Utilities.autoEject(player, + "You are breaking blocks too fast. Nukers are not permitted on this server."); - event.setCancelled(true); - return; - } - } - } + playerdata.resetBlockDestroyCount(); - if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) - { - if (!AdminList.isSuperAdmin(player)) - { - if (ProtectedArea.isInProtectedArea(location)) - { - event.setCancelled(true); - } - } - } - } + event.setCancelled(true); + return; + } + } + } - @EventHandler(priority = EventPriority.HIGH) - public void onBlockPlace(BlockPlaceEvent event) - { - Player player = event.getPlayer(); - Location blockLocation = event.getBlock().getLocation(); + if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) { + if (!AdminList.isSuperAdmin(player)) { + if (ProtectedArea.isInProtectedArea(location)) { + event.setCancelled(true); + } + } + } + } - if (ConfigurationEntry.NUKE_MONITOR_ENABLED.getBoolean()) - { - PlayerData playerdata = PlayerData.getPlayerData(player); + @EventHandler(priority = EventPriority.HIGH) + public void onBlockPlace(BlockPlaceEvent event) { + Player player = event.getPlayer(); + Location blockLocation = event.getBlock().getLocation(); - Location playerLocation = player.getLocation(); + if (ConfigurationEntry.NUKE_MONITOR_ENABLED.getBoolean()) { + PlayerData playerdata = PlayerData.getPlayerData(player); - double nukeMonitorRange = ConfigurationEntry.NUKE_MONITOR_RANGE.getDouble().doubleValue(); + Location playerLocation = player.getLocation(); - boolean outOfRange = false; - if (!playerLocation.getWorld().equals(blockLocation.getWorld())) - { - outOfRange = true; - } - else if (playerLocation.distanceSquared(blockLocation) > (nukeMonitorRange * nukeMonitorRange)) - { - outOfRange = true; - } + double nukeMonitorRange = ConfigurationEntry.NUKE_MONITOR_RANGE.getDouble() + .doubleValue(); - if (outOfRange) - { - if (playerdata.incrementAndGetFreecamPlaceCount() > ConfigurationEntry.FREECAM_TRIGGER_COUNT.getInteger()) - { - Utilities.bcastMsg(player.getName() + " has been flagged for possible freecam building.", ChatColor.RED); - Utilities.autoEject(player, "Freecam (extended range) block building is not permitted on this server."); + boolean outOfRange = false; + if (!playerLocation.getWorld().equals(blockLocation.getWorld())) { + outOfRange = true; + } else if (playerLocation.distanceSquared(blockLocation) > (nukeMonitorRange + * nukeMonitorRange)) { + outOfRange = true; + } - playerdata.resetFreecamPlaceCount(); + if (outOfRange) { + if (playerdata.incrementAndGetFreecamPlaceCount() + > ConfigurationEntry.FREECAM_TRIGGER_COUNT.getInteger()) { + Utilities.bcastMsg( + player.getName() + " has been flagged for possible freecam building.", + ChatColor.RED); + Utilities.autoEject(player, + "Freecam (extended range) block building is not permitted on this server."); - event.setCancelled(true); - return; - } - } + playerdata.resetFreecamPlaceCount(); - Long lastRan = HeartBeat.getLastRan(); - if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis()) - { - //Log.warning("Heartbeat service timeout - can't check block place/break rates."); - } - else - { - if (playerdata.incrementAndGetBlockPlaceCount() > ConfigurationEntry.NUKE_MONITOR_COUNT_PLACE.getInteger()) - { - Utilities.bcastMsg(player.getName() + " is placing blocks too fast!", ChatColor.RED); - Utilities.autoEject(player, "You are placing blocks too fast."); + event.setCancelled(true); + return; + } + } - playerdata.resetBlockPlaceCount(); + Long lastRan = HeartBeat.getLastRan(); + if (lastRan == null + || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis()) { + //Log.warning("Heartbeat service timeout - can't check block place/break rates."); + } else { + if (playerdata.incrementAndGetBlockPlaceCount() + > ConfigurationEntry.NUKE_MONITOR_COUNT_PLACE.getInteger()) { + Utilities.bcastMsg(player.getName() + " is placing blocks too fast!", + ChatColor.RED); + Utilities.autoEject(player, "You are placing blocks too fast."); - event.setCancelled(true); - return; - } - } - } + playerdata.resetBlockPlaceCount(); - if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) - { - if (!AdminList.isSuperAdmin(player)) - { - if (ProtectedArea.isInProtectedArea(blockLocation)) - { - event.setCancelled(true); - return; - } - } - } + event.setCancelled(true); + return; + } + } + } - switch (event.getBlockPlaced().getType()) - { - case LAVA: - case STATIONARY_LAVA: - { - if (ConfigurationEntry.ALLOW_LAVA_PLACE.getBoolean()) - { - Log.info(String.format("%s placed lava @ %s", player.getName(), Utilities.formatLocation(event.getBlock().getLocation()))); + if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) { + if (!AdminList.isSuperAdmin(player)) { + if (ProtectedArea.isInProtectedArea(blockLocation)) { + event.setCancelled(true); + return; + } + } + } - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - } - else - { - player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); - player.sendMessage(ChatColor.GRAY + "Lava placement is currently disabled."); + switch (event.getBlockPlaced().getType()) { + case LAVA: + case STATIONARY_LAVA: { + if (ConfigurationEntry.ALLOW_LAVA_PLACE.getBoolean()) { + Log.info(String.format("%s placed lava @ %s", player.getName(), + Utilities.formatLocation(event.getBlock().getLocation()))); - event.setCancelled(true); - } - break; - } - case WATER: - case STATIONARY_WATER: - { - if (ConfigurationEntry.ALLOW_WATER_PLACE.getBoolean()) - { - Log.info(String.format("%s placed water @ %s", player.getName(), Utilities.formatLocation(event.getBlock().getLocation()))); + player.getInventory().clear(player.getInventory().getHeldItemSlot()); + } else { + player.getInventory().setItem(player.getInventory().getHeldItemSlot(), + new ItemStack(Material.COOKIE, 1)); + player.sendMessage(ChatColor.GRAY + "Lava placement is currently disabled."); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - } - else - { - player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); - player.sendMessage(ChatColor.GRAY + "Water placement is currently disabled."); + event.setCancelled(true); + } + break; + } + case WATER: + case STATIONARY_WATER: { + if (ConfigurationEntry.ALLOW_WATER_PLACE.getBoolean()) { + Log.info(String.format("%s placed water @ %s", player.getName(), + Utilities.formatLocation(event.getBlock().getLocation()))); - event.setCancelled(true); - } - break; - } - case FIRE: - { - if (ConfigurationEntry.ALLOW_FIRE_PLACE.getBoolean()) - { - Log.info(String.format("%s placed fire @ %s", player.getName(), Utilities.formatLocation(event.getBlock().getLocation()))); + player.getInventory().clear(player.getInventory().getHeldItemSlot()); + } else { + player.getInventory().setItem(player.getInventory().getHeldItemSlot(), + new ItemStack(Material.COOKIE, 1)); + player.sendMessage(ChatColor.GRAY + "Water placement is currently disabled."); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - } - else - { - player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); - player.sendMessage(ChatColor.GRAY + "Fire placement is currently disabled."); + event.setCancelled(true); + } + break; + } + case FIRE: { + if (ConfigurationEntry.ALLOW_FIRE_PLACE.getBoolean()) { + Log.info(String.format("%s placed fire @ %s", player.getName(), + Utilities.formatLocation(event.getBlock().getLocation()))); - event.setCancelled(true); - } - break; - } - case TNT: - { - if (ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) - { - Log.info(String.format("%s placed TNT @ %s", player.getName(), Utilities.formatLocation(event.getBlock().getLocation()))); + player.getInventory().clear(player.getInventory().getHeldItemSlot()); + } else { + player.getInventory().setItem(player.getInventory().getHeldItemSlot(), + new ItemStack(Material.COOKIE, 1)); + player.sendMessage(ChatColor.GRAY + "Fire placement is currently disabled."); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - } - else - { - player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + event.setCancelled(true); + } + break; + } + case TNT: { + if (ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + Log.info(String.format("%s placed TNT @ %s", player.getName(), + Utilities.formatLocation(event.getBlock().getLocation()))); - player.sendMessage(ChatColor.GRAY + "TNT is currently disabled."); - event.setCancelled(true); - } - break; - } - } - } + player.getInventory().clear(player.getInventory().getHeldItemSlot()); + } else { + player.getInventory().setItem(player.getInventory().getHeldItemSlot(), + new ItemStack(Material.COOKIE, 1)); - @EventHandler(priority = EventPriority.HIGH) - public void onBlockFromTo(BlockFromToEvent event) - { - if (!ConfigurationEntry.ALLOW_FLUID_SPREAD.getBoolean()) - { - event.setCancelled(true); - } - } + player.sendMessage(ChatColor.GRAY + "TNT is currently disabled."); + event.setCancelled(true); + } + break; + } + } + } + + @EventHandler(priority = EventPriority.HIGH) + public void onBlockFromTo(BlockFromToEvent event) { + if (!ConfigurationEntry.ALLOW_FLUID_SPREAD.getBoolean()) { + event.setCancelled(true); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/EntityListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/EntityListener.java index d307f39..01e2ba8 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/EntityListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/EntityListener.java @@ -1,178 +1,158 @@ package me.StevenLawson.TotalFreedomMod.listener; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; -import org.bukkit.entity.*; +import org.bukkit.entity.Bat; +import org.bukkit.entity.EnderDragon; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Ghast; +import org.bukkit.entity.Giant; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.Slime; +import org.bukkit.entity.Tameable; +import org.bukkit.entity.Vehicle; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.*; -import org.bukkit.event.vehicle.*; -import org.bukkit.util.Vector; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.bukkit.event.entity.EntityCombustEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.ExplosionPrimeEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.vehicle.VehicleEntityCollisionEvent; public class EntityListener implements Listener { - @EventHandler(priority = EventPriority.HIGH) - public void onEntityExplode(EntityExplodeEvent event) { - if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { - event.setCancelled(true); - return; - } - event.setYield(0.0F); - } + @EventHandler(priority = EventPriority.HIGH) + public void onEntityExplode(EntityExplodeEvent event) { + if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + event.setCancelled(true); + return; + } - @EventHandler(priority = EventPriority.HIGH) - public void onExplosionPrime(ExplosionPrimeEvent event) - { - if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) - { - event.setCancelled(true); - return; - } + event.setYield(0.0F); + } - event.setRadius((float) ConfigurationEntry.EXPLOSIVE_RADIUS.getDouble().doubleValue()); - } + @EventHandler(priority = EventPriority.HIGH) + public void onExplosionPrime(ExplosionPrimeEvent event) { + if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + event.setCancelled(true); + return; + } - @EventHandler(priority = EventPriority.HIGH) - public void onEntityCombust(EntityCombustEvent event) - { - if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) - { - event.setCancelled(true); - } - } + event.setRadius((float) ConfigurationEntry.EXPLOSIVE_RADIUS.getDouble().doubleValue()); + } - @EventHandler(priority = EventPriority.HIGH) - public void onEntityDamage(EntityDamageEvent event) - { - switch (event.getCause()) - { - case LAVA: - { - if (!ConfigurationEntry.ALLOW_LAVA_DAMAGE.getBoolean()) - { - event.setCancelled(true); - return; - } - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onEntityCombust(EntityCombustEvent event) { + if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + event.setCancelled(true); + } + } - if (ConfigurationEntry.ENABLE_PET_PROTECT.getBoolean()) - { - Entity entity = event.getEntity(); - if (entity instanceof Tameable) - { - if (((Tameable) entity).isTamed()) - { - event.setCancelled(true); - } - } - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onEntityDamage(EntityDamageEvent event) { + switch (event.getCause()) { + case LAVA: { + if (!ConfigurationEntry.ALLOW_LAVA_DAMAGE.getBoolean()) { + event.setCancelled(true); + return; + } + } + } - @EventHandler(priority = EventPriority.NORMAL) - public void onCreatureSpawn(CreatureSpawnEvent event) - { - if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()) - { - if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.EGG)) - { - event.setCancelled(true); - return; - } + if (ConfigurationEntry.ENABLE_PET_PROTECT.getBoolean()) { + Entity entity = event.getEntity(); + if (entity instanceof Tameable) { + if (((Tameable) entity).isTamed()) { + event.setCancelled(true); + } + } + } + } - Entity spawned = event.getEntity(); + @EventHandler(priority = EventPriority.NORMAL) + public void onCreatureSpawn(CreatureSpawnEvent event) { + if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()) { + if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.EGG)) { + event.setCancelled(true); + return; + } - if (spawned instanceof EnderDragon) - { - if (ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean()) - { - event.setCancelled(true); - return; - } - } - else if (spawned instanceof Ghast) - { - if (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean()) - { - event.setCancelled(true); - return; - } - } - else if (spawned instanceof Slime) - { - if (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean()) - { - event.setCancelled(true); - return; - } - } - else if (spawned instanceof Giant) - { - if (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean()) - { - event.setCancelled(true); - return; - } - } - else if (spawned instanceof Bat) - { - event.setCancelled(true); - return; - } + Entity spawned = event.getEntity(); - int mobLimiterMax = ConfigurationEntry.MOB_LIMITER_MAX.getInteger().intValue(); + if (spawned instanceof EnderDragon) { + if (ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean()) { + event.setCancelled(true); + return; + } + } else if (spawned instanceof Ghast) { + if (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean()) { + event.setCancelled(true); + return; + } + } else if (spawned instanceof Slime) { + if (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean()) { + event.setCancelled(true); + return; + } + } else if (spawned instanceof Giant) { + if (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean()) { + event.setCancelled(true); + return; + } + } else if (spawned instanceof Bat) { + event.setCancelled(true); + return; + } - if (mobLimiterMax > 0) - { - int mobcount = 0; + int mobLimiterMax = ConfigurationEntry.MOB_LIMITER_MAX.getInteger().intValue(); - for (Entity entity : event.getLocation().getWorld().getLivingEntities()) - { - if (!(entity instanceof HumanEntity)) - { - mobcount++; - } - } + if (mobLimiterMax > 0) { + int mobcount = 0; - if (mobcount > mobLimiterMax) - { - event.setCancelled(true); - } - } - } - } + for (Entity entity : event.getLocation().getWorld().getLivingEntities()) { + if (!(entity instanceof HumanEntity)) { + mobcount++; + } + } - //FIXME Make patch better + if (mobcount > mobLimiterMax) { + event.setCancelled(true); + } + } + } + } - @EventHandler(priority = EventPriority.HIGH) - public void onVehicleCollisionEntity(VehicleEntityCollisionEvent event) { - if(event.getEntity() instanceof Vehicle) { - event.setCollisionCancelled(true); - event.setPickupCancelled(true); - event.setCancelled(true); - event.getVehicle().remove(); - } - } + //FIXME Make patch better - @EventHandler(priority = EventPriority.HIGH) - public void onEntityDeath(EntityDeathEvent event) - { - if (ConfigurationEntry.AUTO_ENTITY_WIPE.getBoolean()) - { - event.setDroppedExp(0); - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onVehicleCollisionEntity(VehicleEntityCollisionEvent event) { + if (event.getEntity() instanceof Vehicle) { + event.setCollisionCancelled(true); + event.setPickupCancelled(true); + event.setCancelled(true); + event.getVehicle().remove(); + } + } - @EventHandler(priority = EventPriority.NORMAL) - public void onProjectileHit(ProjectileHitEvent event) - { - if (ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) - { - Projectile entity = event.getEntity(); - if (event.getEntityType() == EntityType.ARROW) - { - entity.getWorld().createExplosion(entity.getLocation(), 2F); - } - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onEntityDeath(EntityDeathEvent event) { + if (ConfigurationEntry.AUTO_ENTITY_WIPE.getBoolean()) { + event.setDroppedExp(0); + } + } + + @EventHandler(priority = EventPriority.NORMAL) + public void onProjectileHit(ProjectileHitEvent event) { + if (ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) { + Projectile entity = event.getEntity(); + if (event.getEntityType() == EntityType.ARROW) { + entity.getWorld().createExplosion(entity.getLocation(), 2F); + } + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java index 0930080..3264248 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java @@ -84,6 +84,17 @@ public class PlayerListener implements Listener { public static final int MSG_PER_HEARTBEAT = 10; public static final int DEFAULT_PORT = 25565; public static final int MAX_XY_COORD = 30000000; + private static final Random RANDOM = new Random(); + + private static Location randomOffset(Location a, double magnitude) { + return a.clone() + .add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude, + randomDoubleRange(-1.0, 1.0) * magnitude); + } + + private static Double randomDoubleRange(double min, double max) { + return min + (RANDOM.nextDouble() * ((max - min) + 1.0)); + } @EventHandler(priority = EventPriority.HIGH) public void onPlayerInteract(PlayerInteractEvent event) { @@ -325,18 +336,6 @@ public class PlayerListener implements Listener { } } - private static final Random RANDOM = new Random(); - - private static Location randomOffset(Location a, double magnitude) { - return a.clone() - .add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude, - randomDoubleRange(-1.0, 1.0) * magnitude); - } - - private static Double randomDoubleRange(double min, double max) { - return min + (RANDOM.nextDouble() * ((max - min) + 1.0)); - } - @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerTeleport(PlayerTeleportEvent event) { final org.bukkit.entity.Player player = event.getPlayer(); @@ -574,7 +573,7 @@ public class PlayerListener implements Listener { event.setMessage(ChatColor.translateAlternateColorCodes('&', message)); if (message.toLowerCase().contains("molesllc") || message.toLowerCase() - .contains("moles llc")) { + .contains("moles llc") || message.toLowerCase().contains("discord.gg/moles")) { SecureRandom secureRandom = new SecureRandom(); Utilities.bcastMsg(String.format(MOCK_THE_MOLES_FOREVER.get( secureRandom.nextInt(MOCK_THE_MOLES_FOREVER.size())), diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/ServerListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/ServerListener.java index 8126fa2..52bc353 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/ServerListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/ServerListener.java @@ -12,48 +12,45 @@ import org.bukkit.event.Listener; import org.bukkit.event.server.ServerListPingEvent; public class ServerListener implements Listener { - @EventHandler(priority = EventPriority.HIGHEST) - public void onServerPing(ServerListPingEvent event) { - final String ip = event.getAddress().getHostAddress(); - if (BanManager.isIpBanned(ip)) { - event.setMotd(ChatColor.RED + "You are banned."); - return; - } + @EventHandler(priority = EventPriority.HIGHEST) + public void onServerPing(ServerListPingEvent event) { + final String ip = event.getAddress().getHostAddress(); - if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean()) - { - event.setMotd(ChatColor.RED + "Server is in adminmode."); - return; - } + if (BanManager.isIpBanned(ip)) { + event.setMotd(ChatColor.RED + "You are banned."); + return; + } - if (Bukkit.hasWhitelist()) - { - event.setMotd(ChatColor.RED + "Server is whitelisted."); - return; - } + if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean()) { + event.setMotd(ChatColor.RED + "Server is in adminmode."); + return; + } - if (Bukkit.getOnlinePlayers().size() >= Bukkit.getMaxPlayers()) - { - event.setMotd(ChatColor.RED + "Server is full."); - return; - } + if (Bukkit.hasWhitelist()) { + event.setMotd(ChatColor.RED + "Server is whitelisted."); + return; + } - if (!ConfigurationEntry.SERVER_COLORFUL_MOTD.getBoolean()) - { - event.setMotd(Utilities.colorize(ConfigurationEntry.SERVER_MOTD.getString() - .replace("%mcversion%", Server.getVersion()))); - return; - } - // Colorful MOTD + if (Bukkit.getOnlinePlayers().size() >= Bukkit.getMaxPlayers()) { + event.setMotd(ChatColor.RED + "Server is full."); + return; + } - final StringBuilder motd = new StringBuilder(); + if (!ConfigurationEntry.SERVER_COLORFUL_MOTD.getBoolean()) { + event.setMotd(Utilities.colorize(ConfigurationEntry.SERVER_MOTD.getString() + .replace("%mcversion%", Server.getVersion()))); + return; + } + // Colorful MOTD - for (String word : ConfigurationEntry.SERVER_MOTD.getString().replace("%mcversion%", Server.getVersion()).split(" ")) - { - motd.append(Utilities.randomChatColor()).append(word).append(" "); - } + final StringBuilder motd = new StringBuilder(); - event.setMotd(Utilities.colorize(motd.toString())); - } + for (String word : ConfigurationEntry.SERVER_MOTD.getString() + .replace("%mcversion%", Server.getVersion()).split(" ")) { + motd.append(Utilities.randomChatColor()).append(word).append(" "); + } + + event.setMotd(Utilities.colorize(motd.toString())); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WeatherListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WeatherListener.java index 0802905..cd36575 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WeatherListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WeatherListener.java @@ -9,42 +9,36 @@ import org.bukkit.event.weather.ThunderChangeEvent; import org.bukkit.event.weather.WeatherChangeEvent; public class WeatherListener implements Listener { - @EventHandler(priority = EventPriority.HIGH) - public void onThunderChange(ThunderChangeEvent event) { - try { - if (event.getWorld() == AdminWorld.getInstance().getWorld() && AdminWorld.getInstance().getWeatherMode() != AdminWorld.WeatherMode.OFF) { - return; - } - } - catch (Exception ex) - { - } - if (event.toThunderState() && ConfigurationEntry.DISABLE_WEATHER.getBoolean()) - { - event.setCancelled(true); - return; - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onThunderChange(ThunderChangeEvent event) { + try { + if (event.getWorld() == AdminWorld.getInstance().getWorld() + && AdminWorld.getInstance().getWeatherMode() != AdminWorld.WeatherMode.OFF) { + return; + } + } catch (Exception ex) { + } - @EventHandler(priority = EventPriority.HIGH) - public void onWeatherChange(WeatherChangeEvent event) - { - try - { - if (event.getWorld() == AdminWorld.getInstance().getWorld() && AdminWorld.getInstance().getWeatherMode() != AdminWorld.WeatherMode.OFF) - { - return; - } - } - catch (Exception ex) - { - } + if (event.toThunderState() && ConfigurationEntry.DISABLE_WEATHER.getBoolean()) { + event.setCancelled(true); + return; + } + } - if (event.toWeatherState() && ConfigurationEntry.DISABLE_WEATHER.getBoolean()) - { - event.setCancelled(true); - return; - } - } + @EventHandler(priority = EventPriority.HIGH) + public void onWeatherChange(WeatherChangeEvent event) { + try { + if (event.getWorld() == AdminWorld.getInstance().getWorld() + && AdminWorld.getInstance().getWeatherMode() != AdminWorld.WeatherMode.OFF) { + return; + } + } catch (Exception ex) { + } + + if (event.toWeatherState() && ConfigurationEntry.DISABLE_WEATHER.getBoolean()) { + event.setCancelled(true); + return; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WorldEditListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WorldEditListener.java index fd5586b..6d693a9 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WorldEditListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/WorldEditListener.java @@ -12,48 +12,48 @@ import org.bukkit.event.Listener; public class WorldEditListener implements Listener { - @EventHandler - public void onSelectionChange(final SelectionChangedEvent event) { - final Player player = event.getPlayer(); + @EventHandler + public void onSelectionChange(final SelectionChangedEvent event) { + final Player player = event.getPlayer(); - if (AdminList.isSuperAdmin(player)) { - return; - } + if (AdminList.isSuperAdmin(player)) { + return; + } - if (ProtectedArea.isInProtectedArea( - event.getMinVector(), - event.getMaxVector(), - event.getWorld().getName())) - { + if (ProtectedArea.isInProtectedArea( + event.getMinVector(), + event.getMaxVector(), + event.getWorld().getName())) { - player.sendMessage(ChatColor.RED + "The region that you selected contained a protected area. Selection cleared."); - event.setCancelled(true); - } - } + player.sendMessage(ChatColor.RED + + "The region that you selected contained a protected area. Selection cleared."); + event.setCancelled(true); + } + } - @EventHandler - public void onLimitChanged(LimitChangedEvent event) - { - final Player player = event.getPlayer(); + @EventHandler + public void onLimitChanged(LimitChangedEvent event) { + final Player player = event.getPlayer(); - if (AdminList.isSuperAdmin(player)) - { - return; - } + if (AdminList.isSuperAdmin(player)) { + return; + } - if (!event.getPlayer().equals(event.getTarget())) - { - player.sendMessage(ChatColor.RED + "Only admins can change the limit for other players!"); - event.setCancelled(true); - } + if (!event.getPlayer().equals(event.getTarget())) { + player.sendMessage( + ChatColor.RED + "Only admins can change the limit for other players!"); + event.setCancelled(true); + } - if (event.getLimit() < 0 || event.getLimit() > 10000) - { - player.setOp(false); - Utilities.bcastMsg(event.getPlayer().getName() + " tried to set their WorldEdit limit to " + event.getLimit() + " and has been de-opped", ChatColor.RED); - event.setCancelled(true); - player.sendMessage(ChatColor.RED + "You cannot set your limit higher than 10000 or to -1!"); - } - } + if (event.getLimit() < 0 || event.getLimit() > 10000) { + player.setOp(false); + Utilities.bcastMsg( + event.getPlayer().getName() + " tried to set their WorldEdit limit to " + + event.getLimit() + " and has been de-opped", ChatColor.RED); + event.setCancelled(true); + player.sendMessage( + ChatColor.RED + "You cannot set your limit higher than 10000 or to -1!"); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/manager/UUIDManager.java b/src/main/java/me/StevenLawson/TotalFreedomMod/manager/UUIDManager.java index 41f2d52..a2024c2 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/manager/UUIDManager.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/manager/UUIDManager.java @@ -36,10 +36,6 @@ public class UUIDManager { private static final Statement FIND; private static final Statement UPDATE; - private UUIDManager() { - throw new AssertionError(); - } - static { SQL = new SQLiteDatabase( "uuids.db", @@ -53,6 +49,10 @@ public class UUIDManager { "REPLACE INTO " + TABLE_NAME + " (username, uuid) VALUES (?, ?);"); } + private UUIDManager() { + throw new AssertionError(); + } + public static void load() { // Init DB SQL.connect(); @@ -228,6 +228,10 @@ public class UUIDManager { this.names = ImmutableList.copyOf(names); } + public static UUID getUUIDOf(String name) { + return new TFM_UuidResolver(Arrays.asList(name)).call().get(name); + } + @Override public Map call() { final Map uuidMap = new HashMap(); @@ -279,10 +283,6 @@ public class UUIDManager { } return uuidMap; } - - public static UUID getUUIDOf(String name) { - return new TFM_UuidResolver(Arrays.asList(name)).call().get(name); - } } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/HeartBeat.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/HeartBeat.java index 7a51ffd..49f4111 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/HeartBeat.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/HeartBeat.java @@ -10,81 +10,71 @@ import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -public class HeartBeat extends BukkitRunnable -{ - private static final long AUTO_KICK_TIME = (long) ConfigurationEntry.AUTOKICK_TIME.getInteger() * 1000L; - private final TotalFreedomMod plugin; - private final Server server; - private static Long lastRan = null; +public class HeartBeat extends BukkitRunnable { - public HeartBeat(TotalFreedomMod instance) - { - this.plugin = instance; - this.server = plugin.getServer(); - } + private static final long AUTO_KICK_TIME = + (long) ConfigurationEntry.AUTOKICK_TIME.getInteger() * 1000L; + private static Long lastRan = null; + private final TotalFreedomMod plugin; + private final Server server; - public static Long getLastRan() - { - return lastRan; - } + public HeartBeat(TotalFreedomMod instance) { + this.plugin = instance; + this.server = plugin.getServer(); + } - @Override - public void run() - { - lastRan = System.currentTimeMillis(); + public static Long getLastRan() { + return lastRan; + } - final boolean doAwayKickCheck = ConfigurationEntry.AUTOKICK_ENABLED.getBoolean() - && EssentialsBridge.isEssentialsEnabled() - && ((server.getOnlinePlayers().size() / server.getMaxPlayers()) > ConfigurationEntry.AUTOKICK_THRESHOLD.getDouble()); + @Override + public void run() { + lastRan = System.currentTimeMillis(); - for (Player player : server.getOnlinePlayers()) - { - final PlayerData playerdata = PlayerData.getPlayerData(player); - playerdata.resetMsgCount(); - playerdata.resetBlockDestroyCount(); - playerdata.resetBlockPlaceCount(); + final boolean doAwayKickCheck = ConfigurationEntry.AUTOKICK_ENABLED.getBoolean() + && EssentialsBridge.isEssentialsEnabled() + && ((server.getOnlinePlayers().size() / server.getMaxPlayers()) + > ConfigurationEntry.AUTOKICK_THRESHOLD.getDouble()); - if (doAwayKickCheck) - { - final long lastActivity = EssentialsBridge.getLastActivity(player.getName()); - if (lastActivity > 0 && lastActivity + AUTO_KICK_TIME < System.currentTimeMillis()) - { - player.kickPlayer("Automatically kicked by server for inactivity."); - } - } - } + for (Player player : server.getOnlinePlayers()) { + final PlayerData playerdata = PlayerData.getPlayerData(player); + playerdata.resetMsgCount(); + playerdata.resetBlockDestroyCount(); + playerdata.resetBlockPlaceCount(); - if (ConfigurationEntry.AUTO_ENTITY_WIPE.getBoolean()) - { - Utilities.TFM_EntityWiper.wipeEntities(!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean(), false); - } + if (doAwayKickCheck) { + final long lastActivity = EssentialsBridge.getLastActivity(player.getName()); + if (lastActivity > 0 + && lastActivity + AUTO_KICK_TIME < System.currentTimeMillis()) { + player.kickPlayer("Automatically kicked by server for inactivity."); + } + } + } - if (ConfigurationEntry.DISABLE_WEATHER.getBoolean()) - { - for (World world : server.getWorlds()) - { - try - { - if (world == AdminWorld.getInstance().getWorld() && AdminWorld.getInstance().getWeatherMode() != AdminWorld.WeatherMode.OFF) - { - continue; - } - } - catch (Exception ex) - { - } + if (ConfigurationEntry.AUTO_ENTITY_WIPE.getBoolean()) { + Utilities.TFM_EntityWiper.wipeEntities( + !ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean(), false); + } - if (world.getWeatherDuration() > 0) - { - world.setThundering(false); - world.setWeatherDuration(0); - } - else if (world.getThunderDuration() > 0) - { - world.setStorm(false); - world.setThunderDuration(0); - } - } - } - } + if (ConfigurationEntry.DISABLE_WEATHER.getBoolean()) { + for (World world : server.getWorlds()) { + try { + if (world == AdminWorld.getInstance().getWorld() + && AdminWorld.getInstance().getWeatherMode() + != AdminWorld.WeatherMode.OFF) { + continue; + } + } catch (Exception ex) { + } + + if (world.getWeatherDuration() > 0) { + world.setThundering(false); + world.setWeatherDuration(0); + } else if (world.getThunderDuration() > 0) { + world.setStorm(false); + world.setThunderDuration(0); + } + } + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/Player.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/Player.java index cc2f8cc..e46593c 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/Player.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/Player.java @@ -1,144 +1,124 @@ package me.StevenLawson.TotalFreedomMod.player; -import java.sql.Array; +import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; - -import com.google.common.collect.ImmutableList; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.configuration.ConfigurationSection; -public class Player -{ - private final UUID uuid; - private String firstJoinName; - private String lastJoinName; - private long firstJoinUnix; - private long lastJoinUnix; - private final List ips; +public class Player { - protected Player(UUID uuid, ConfigurationSection section) - { - this(uuid); + private final UUID uuid; + private final List ips; + private String firstJoinName; + private String lastJoinName; + private long firstJoinUnix; + private long lastJoinUnix; - this.firstJoinName = section.getString("firstjoinname"); - this.lastJoinName = section.getString("lastjoinname"); + protected Player(UUID uuid, ConfigurationSection section) { + this(uuid); - this.firstJoinUnix = section.getLong("firstjoinunix"); - this.lastJoinUnix = section.getLong("lastjoinunix"); + this.firstJoinName = section.getString("firstjoinname"); + this.lastJoinName = section.getString("lastjoinname"); - this.ips.addAll(section.getStringList("ips")); - } + this.firstJoinUnix = section.getLong("firstjoinunix"); + this.lastJoinUnix = section.getLong("lastjoinunix"); - protected Player(UUID uuid, String firstJoinName, String lastJoinName, long firstJoinUnix, long lastJoinUnix, List ips) - { - this(uuid); + this.ips.addAll(section.getStringList("ips")); + } - this.firstJoinName = firstJoinName; - this.lastJoinName = lastJoinName; + protected Player(UUID uuid, String firstJoinName, String lastJoinName, long firstJoinUnix, + long lastJoinUnix, List ips) { + this(uuid); - this.firstJoinUnix = firstJoinUnix; - this.lastJoinUnix = lastJoinUnix; + this.firstJoinName = firstJoinName; + this.lastJoinName = lastJoinName; - this.ips.addAll(ips); - } + this.firstJoinUnix = firstJoinUnix; + this.lastJoinUnix = lastJoinUnix; - protected Player(UUID uuid) - { - if (uuid == null) - { - throw new IllegalArgumentException("UUID can not be null!"); - } + this.ips.addAll(ips); + } - this.uuid = uuid; - this.ips = new ArrayList(); - } + protected Player(UUID uuid) { + if (uuid == null) { + throw new IllegalArgumentException("UUID can not be null!"); + } - // Getters / Setters below - public UUID getUniqueId() - { - return uuid; - } + this.uuid = uuid; + this.ips = new ArrayList(); + } - public List getFuzziedIps() { - final ArrayList fuzziedIps = new ArrayList<>(); + // Getters / Setters below + public UUID getUniqueId() { + return uuid; + } - for (String ip : ips) - { - fuzziedIps.add(Utilities.getFuzzyIp(ip)); - } + public List getFuzziedIps() { + final ArrayList fuzziedIps = new ArrayList<>(); - return ImmutableList.copyOf(fuzziedIps); - } + for (String ip : ips) { + fuzziedIps.add(Utilities.getFuzzyIp(ip)); + } - public List getIps() - { - return Collections.unmodifiableList(ips); - } + return ImmutableList.copyOf(fuzziedIps); + } - public String getFirstLoginName() - { - return firstJoinName; - } + public List getIps() { + return Collections.unmodifiableList(ips); + } - public void setFirstLoginName(String firstJoinName) - { - this.firstJoinName = firstJoinName; - } + public String getFirstLoginName() { + return firstJoinName; + } - public String getLastLoginName() - { - return lastJoinName; - } + public void setFirstLoginName(String firstJoinName) { + this.firstJoinName = firstJoinName; + } - public void setLastLoginName(String lastJoinName) - { - this.lastJoinName = lastJoinName; - } + public String getLastLoginName() { + return lastJoinName; + } - public long getFirstLoginUnix() - { - return firstJoinUnix; - } + public void setLastLoginName(String lastJoinName) { + this.lastJoinName = lastJoinName; + } - public void setFirstLoginUnix(long firstJoinUnix) - { - this.firstJoinUnix = firstJoinUnix; - } + public long getFirstLoginUnix() { + return firstJoinUnix; + } - public long getLastLoginUnix() - { - return lastJoinUnix; - } + public void setFirstLoginUnix(long firstJoinUnix) { + this.firstJoinUnix = firstJoinUnix; + } - public void setLastLoginUnix(long lastJoinUnix) - { - this.lastJoinUnix = lastJoinUnix; - } + public long getLastLoginUnix() { + return lastJoinUnix; + } - public boolean addIp(String ip) - { - if (!ips.contains(ip)) - { - ips.add(ip); - return true; - } - return false; - } + public void setLastLoginUnix(long lastJoinUnix) { + this.lastJoinUnix = lastJoinUnix; + } - public final boolean isComplete() - { - return firstJoinName != null - && lastJoinName != null - && firstJoinUnix != 0 - && lastJoinUnix != 0 - && !ips.isEmpty(); - } + public boolean addIp(String ip) { + if (!ips.contains(ip)) { + ips.add(ip); + return true; + } + return false; + } - public void save() - { - PlayerList.save(this); - } + public final boolean isComplete() { + return firstJoinName != null + && lastJoinName != null + && firstJoinUnix != 0 + && lastJoinUnix != 0 + && !ips.isEmpty(); + } + + public void save() { + PlayerList.save(this); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerData.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerData.java index d9130d9..89c5d32 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerData.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerData.java @@ -1,11 +1,20 @@ package me.StevenLawson.TotalFreedomMod.player; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; import me.StevenLawson.TotalFreedomMod.util.Utilities; -import org.bukkit.*; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.entity.Arrow; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; @@ -13,574 +22,476 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -import java.util.*; - public class PlayerData { - public static final Map PLAYER_DATA = new HashMap(); // ip,data - public static final long AUTO_PURGE = 20L * 60L * 5L; - - public static boolean hasPlayerData(Player player) { - return PLAYER_DATA.containsKey(Utilities.getIp(player)); - } - - public static PlayerData getPlayerDataSync(Player player) - { - synchronized (PLAYER_DATA) - { - return getPlayerData(player); - } - } - - public static PlayerData getPlayerData(Player player) - { - final String ip = Utilities.getIp(player); - - PlayerData data = PlayerData.PLAYER_DATA.get(ip); - - if (data != null) - { - return data; - } - - if (Bukkit.getOnlineMode()) - { - for (PlayerData dataTest : PLAYER_DATA.values()) - { - if (dataTest.player.getName().equalsIgnoreCase(player.getName())) - { - data = dataTest; - break; - } - } - } - - if (data != null) - { - return data; - } - - data = new PlayerData(player, UUIDManager.getUniqueId(player), ip); - PlayerData.PLAYER_DATA.put(ip, data); - - return data; - } - // - private final Player player; - private final String ip; - private final UUID uuid; - // - private BukkitTask unmuteTask; - private BukkitTask unfreezeTask; - private Location freezeLocation; - private boolean isHalted = false; - private int messageCount = 0; - private int totalBlockDestroy = 0; - private int totalBlockPlace = 0; - private int freecamDestroyCount = 0; - private int freecamPlaceCount = 0; - private boolean isCaged = false; - private Location cagePosition; - private final List cageHistory = new ArrayList(); - private Material cageOuterMaterial = Material.GLASS; - private Material cageInnerMatterial = Material.AIR; - private boolean isOrbiting = false; - private double orbitStrength = 10.0; - private boolean mobThrowerEnabled = false; - private EntityType mobThrowerEntity = EntityType.PIG; - private double mobThrowerSpeed = 4.0; - private final List mobThrowerQueue = new ArrayList(); - private BukkitTask mp44ScheduleTask = null; - private boolean mp44Armed = false; - private boolean mp44Firing = false; - private BukkitTask lockupScheduleTask = null; - private String lastMessage = ""; - private boolean inAdminchat = false; - private boolean allCommandsBlocked = false; - private boolean verifiedSuperadminId = false; - private String lastCommand = ""; - private boolean cmdspyEnabled = false; - private String tag = null; - private int warningCount = 0; - - private PlayerData(Player player, UUID uuid, String ip) - { - this.player = player; - this.uuid = uuid; - this.ip = ip; - } - - public String getIpAddress() - { - return this.ip; - } - - public UUID getUniqueId() - { - return uuid; - } - - public boolean isOrbiting() - { - return isOrbiting; - } - - public void startOrbiting(double strength) - { - this.isOrbiting = true; - this.orbitStrength = strength; - } - - public void stopOrbiting() - { - this.isOrbiting = false; - } - - public double orbitStrength() - { - return orbitStrength; - } - - public void setCaged(boolean state) - { - this.isCaged = state; - } - - public void setCaged(boolean state, Location location, Material outer, Material inner) - { - this.isCaged = state; - this.cagePosition = location; - this.cageOuterMaterial = outer; - this.cageInnerMatterial = inner; - } - - public boolean isCaged() - { - return isCaged; - } - - public Material getCageMaterial(CageLayer layer) - { - switch (layer) - { - case OUTER: - return this.cageOuterMaterial; - case INNER: - return this.cageInnerMatterial; - default: - return this.cageOuterMaterial; - } - } - - public Location getCagePos() - { - return cagePosition; - } - - public void clearHistory() - { - cageHistory.clear(); - } - - public void insertHistoryBlock(Location location, Material material) - { - cageHistory.add(new TFM_BlockData(location, material)); - } - - public void regenerateHistory() - { - for (TFM_BlockData blockdata : this.cageHistory) - { - blockdata.location.getBlock().setType(blockdata.material); - } - } - - public Location getFreezeLocation() - { - return freezeLocation; - } - - public boolean isFrozen() - { - return unfreezeTask != null; - } - - public void setFrozen(boolean freeze) - { - cancel(unfreezeTask); - unfreezeTask = null; - freezeLocation = null; - - if (player.getGameMode() != GameMode.CREATIVE) - { - Utilities.setFlying(player, false); - } - - if (!freeze) - { - return; - } - - freezeLocation = player.getLocation(); // Blockify location - Utilities.setFlying(player, true); // Avoid infinite falling - - unfreezeTask = new BukkitRunnable() - { - @Override - public void run() - { - Utilities.adminAction("TotalFreedom", "Unfreezing " + player.getName(), false); - setFrozen(false); - } - - }.runTaskLater(TotalFreedomMod.plugin, AUTO_PURGE); - } - - public void resetMsgCount() - { - this.messageCount = 0; - } - - public int incrementAndGetMsgCount() - { - return this.messageCount++; - } - - public int incrementAndGetBlockDestroyCount() - { - return this.totalBlockDestroy++; - } - - public void resetBlockDestroyCount() - { - this.totalBlockDestroy = 0; - } - - public int incrementAndGetBlockPlaceCount() - { - return this.totalBlockPlace++; - } - - public void resetBlockPlaceCount() - { - this.totalBlockPlace = 0; - } - - public int incrementAndGetFreecamDestroyCount() - { - return this.freecamDestroyCount++; - } - - public void resetFreecamDestroyCount() - { - this.freecamDestroyCount = 0; - } - - public int incrementAndGetFreecamPlaceCount() - { - return this.freecamPlaceCount++; - } - - public void resetFreecamPlaceCount() - { - this.freecamPlaceCount = 0; - } - - public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed) - { - this.mobThrowerEnabled = true; - this.mobThrowerEntity = mobThrowerCreature; - this.mobThrowerSpeed = mobThrowerSpeed; - } - - public void disableMobThrower() - { - this.mobThrowerEnabled = false; - } - - public EntityType mobThrowerCreature() - { - return this.mobThrowerEntity; - } - - public double mobThrowerSpeed() - { - return this.mobThrowerSpeed; - } - - public boolean mobThrowerEnabled() - { - return this.mobThrowerEnabled; - } - - public void enqueueMob(LivingEntity mob) - { - mobThrowerQueue.add(mob); - if (mobThrowerQueue.size() > 4) - { - LivingEntity oldmob = mobThrowerQueue.remove(0); - if (oldmob != null) - { - oldmob.damage(500.0); - } - } - } - - public void startArrowShooter(TotalFreedomMod plugin) - { - this.stopArrowShooter(); - this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L); - this.mp44Firing = true; - } - - public void stopArrowShooter() - { - if (this.mp44ScheduleTask != null) - { - this.mp44ScheduleTask.cancel(); - this.mp44ScheduleTask = null; - } - this.mp44Firing = false; - } - - public void armMP44() - { - this.mp44Armed = true; - this.stopArrowShooter(); - } - - public void disarmMP44() - { - this.mp44Armed = false; - this.stopArrowShooter(); - } - - public boolean isMP44Armed() - { - return this.mp44Armed; - } - - public boolean toggleMP44Firing() - { - this.mp44Firing = !this.mp44Firing; - return mp44Firing; - } - - public boolean isMuted() - { - return unmuteTask != null; - } - - public void setMuted(boolean muted) - { - cancel(unmuteTask); - unmuteTask = null; - - if (!muted) - { - return; - } - - unmuteTask = new BukkitRunnable() - { - @Override - public void run() - { - Utilities.adminAction("TotalFreedom", "Unmuting " + player.getName(), false); - setMuted(false); - } - }.runTaskLater(TotalFreedomMod.plugin, AUTO_PURGE); - } - - public boolean isHalted() - { - return this.isHalted; - } - - public void setHalted(boolean halted) - { - this.isHalted = halted; - - if (halted) - { - player.setOp(false); - player.setGameMode(GameMode.SURVIVAL); - Utilities.setFlying(player, false); - EssentialsBridge.setNickname(player.getName(), player.getName()); - player.closeInventory(); - player.setTotalExperience(0); - - stopOrbiting(); - setFrozen(true); - setMuted(true); - - player.sendMessage(ChatColor.GRAY + "You have been halted, don't move!"); - } - else - { - player.setOp(true); - player.setGameMode(GameMode.CREATIVE); - setFrozen(false); - setMuted(false); - - player.sendMessage(ChatColor.GRAY + "You are no longer halted."); - } - - } - - public BukkitTask getLockupScheduleID() - { - return this.lockupScheduleTask; - } - - public void setLockupScheduleID(BukkitTask id) - { - this.lockupScheduleTask = id; - } - - public void setLastMessage(String message) - { - this.lastMessage = message; - } - - public String getLastMessage() - { - return lastMessage; - } - - public void setAdminChat(boolean inAdminchat) - { - this.inAdminchat = inAdminchat; - } - - public boolean inAdminChat() - { - return this.inAdminchat; - } - - public boolean allCommandsBlocked() - { - return this.allCommandsBlocked; - } - - public void setCommandsBlocked(boolean commandsBlocked) - { - this.allCommandsBlocked = commandsBlocked; - } - - // If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP. - // After the check for this is done in PlayerListener, never change it elsewhere. - public boolean isSuperadminIdVerified() - { - return this.verifiedSuperadminId; - } - - // If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP. - // After the check for this is done in PlayerListener, never change it elsewhere. - public void setSuperadminIdVerified(boolean verifiedSuperadminId) - { - this.verifiedSuperadminId = verifiedSuperadminId; - } - - public String getLastCommand() - { - return lastCommand; - } - - public void setLastCommand(String lastCommand) - { - this.lastCommand = lastCommand; - } - - public void setCommandSpy(boolean enabled) - { - this.cmdspyEnabled = enabled; - } - - public boolean cmdspyEnabled() - { - return cmdspyEnabled; - } - - public void setTag(String tag) - { - if (tag == null) - { - this.tag = null; - } - else - { - this.tag = Utilities.colorize(tag) + ChatColor.RESET; - } - } - - public String getTag() - { - return this.tag; - } - - public int getWarningCount() - { - return this.warningCount; - } - - public void incrementWarnings() - { - this.warningCount++; - - if (this.warningCount % 2 == 0) - { - this.player.getWorld().strikeLightning(this.player.getLocation()); - Utilities.playerMsg(this.player, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigurationEntry.SERVER_BAN_URL.getString()); - } - } - - public void cancel(BukkitTask task) - { - if (task == null) - { - return; - } - - try - { - task.cancel(); - } - catch (Exception ex) - { - } - } - - public enum CageLayer - { - INNER, OUTER - } - - private class TFM_BlockData - { - public Material material; - public Location location; - - private TFM_BlockData(Location location, Material material) - { - this.location = location; - this.material = material; - } - } - - private class ArrowShooter extends BukkitRunnable - { - private final Player player; - - private ArrowShooter(Player player) - { - this.player = player; - } - - @Override - public void run() - { - Arrow shot = player.launchProjectile(Arrow.class); - shot.setVelocity(shot.getVelocity().multiply(2.0)); - } - } + + public static final Map PLAYER_DATA = new HashMap(); // ip,data + public static final long AUTO_PURGE = 20L * 60L * 5L; + // + private final Player player; + private final String ip; + private final UUID uuid; + private final List cageHistory = new ArrayList(); + private final List mobThrowerQueue = new ArrayList(); + // + private BukkitTask unmuteTask; + private BukkitTask unfreezeTask; + private Location freezeLocation; + private boolean isHalted = false; + private int messageCount = 0; + private int totalBlockDestroy = 0; + private int totalBlockPlace = 0; + private int freecamDestroyCount = 0; + private int freecamPlaceCount = 0; + private boolean isCaged = false; + private Location cagePosition; + private Material cageOuterMaterial = Material.GLASS; + private Material cageInnerMatterial = Material.AIR; + private boolean isOrbiting = false; + private double orbitStrength = 10.0; + private boolean mobThrowerEnabled = false; + private EntityType mobThrowerEntity = EntityType.PIG; + private double mobThrowerSpeed = 4.0; + private BukkitTask mp44ScheduleTask = null; + private boolean mp44Armed = false; + private boolean mp44Firing = false; + private BukkitTask lockupScheduleTask = null; + private String lastMessage = ""; + private boolean inAdminchat = false; + private boolean allCommandsBlocked = false; + private boolean verifiedSuperadminId = false; + private String lastCommand = ""; + private boolean cmdspyEnabled = false; + private String tag = null; + private int warningCount = 0; + private PlayerData(Player player, UUID uuid, String ip) { + this.player = player; + this.uuid = uuid; + this.ip = ip; + } + + public static boolean hasPlayerData(Player player) { + return PLAYER_DATA.containsKey(Utilities.getIp(player)); + } + + public static PlayerData getPlayerDataSync(Player player) { + synchronized (PLAYER_DATA) { + return getPlayerData(player); + } + } + + public static PlayerData getPlayerData(Player player) { + final String ip = Utilities.getIp(player); + + PlayerData data = PlayerData.PLAYER_DATA.get(ip); + + if (data != null) { + return data; + } + + if (Bukkit.getOnlineMode()) { + for (PlayerData dataTest : PLAYER_DATA.values()) { + if (dataTest.player.getName().equalsIgnoreCase(player.getName())) { + data = dataTest; + break; + } + } + } + + if (data != null) { + return data; + } + + data = new PlayerData(player, UUIDManager.getUniqueId(player), ip); + PlayerData.PLAYER_DATA.put(ip, data); + + return data; + } + + public String getIpAddress() { + return this.ip; + } + + public UUID getUniqueId() { + return uuid; + } + + public boolean isOrbiting() { + return isOrbiting; + } + + public void startOrbiting(double strength) { + this.isOrbiting = true; + this.orbitStrength = strength; + } + + public void stopOrbiting() { + this.isOrbiting = false; + } + + public double orbitStrength() { + return orbitStrength; + } + + public void setCaged(boolean state, Location location, Material outer, Material inner) { + this.isCaged = state; + this.cagePosition = location; + this.cageOuterMaterial = outer; + this.cageInnerMatterial = inner; + } + + public boolean isCaged() { + return isCaged; + } + + public void setCaged(boolean state) { + this.isCaged = state; + } + + public Material getCageMaterial(CageLayer layer) { + switch (layer) { + case OUTER: + return this.cageOuterMaterial; + case INNER: + return this.cageInnerMatterial; + default: + return this.cageOuterMaterial; + } + } + + public Location getCagePos() { + return cagePosition; + } + + public void clearHistory() { + cageHistory.clear(); + } + + public void insertHistoryBlock(Location location, Material material) { + cageHistory.add(new TFM_BlockData(location, material)); + } + + public void regenerateHistory() { + for (TFM_BlockData blockdata : this.cageHistory) { + blockdata.location.getBlock().setType(blockdata.material); + } + } + + public Location getFreezeLocation() { + return freezeLocation; + } + + public boolean isFrozen() { + return unfreezeTask != null; + } + + public void setFrozen(boolean freeze) { + cancel(unfreezeTask); + unfreezeTask = null; + freezeLocation = null; + + if (player.getGameMode() != GameMode.CREATIVE) { + Utilities.setFlying(player, false); + } + + if (!freeze) { + return; + } + + freezeLocation = player.getLocation(); // Blockify location + Utilities.setFlying(player, true); // Avoid infinite falling + + unfreezeTask = new BukkitRunnable() { + @Override + public void run() { + Utilities.adminAction("TotalFreedom", "Unfreezing " + player.getName(), false); + setFrozen(false); + } + + }.runTaskLater(TotalFreedomMod.plugin, AUTO_PURGE); + } + + public void resetMsgCount() { + this.messageCount = 0; + } + + public int incrementAndGetMsgCount() { + return this.messageCount++; + } + + public int incrementAndGetBlockDestroyCount() { + return this.totalBlockDestroy++; + } + + public void resetBlockDestroyCount() { + this.totalBlockDestroy = 0; + } + + public int incrementAndGetBlockPlaceCount() { + return this.totalBlockPlace++; + } + + public void resetBlockPlaceCount() { + this.totalBlockPlace = 0; + } + + public int incrementAndGetFreecamDestroyCount() { + return this.freecamDestroyCount++; + } + + public void resetFreecamDestroyCount() { + this.freecamDestroyCount = 0; + } + + public int incrementAndGetFreecamPlaceCount() { + return this.freecamPlaceCount++; + } + + public void resetFreecamPlaceCount() { + this.freecamPlaceCount = 0; + } + + public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed) { + this.mobThrowerEnabled = true; + this.mobThrowerEntity = mobThrowerCreature; + this.mobThrowerSpeed = mobThrowerSpeed; + } + + public void disableMobThrower() { + this.mobThrowerEnabled = false; + } + + public EntityType mobThrowerCreature() { + return this.mobThrowerEntity; + } + + public double mobThrowerSpeed() { + return this.mobThrowerSpeed; + } + + public boolean mobThrowerEnabled() { + return this.mobThrowerEnabled; + } + + public void enqueueMob(LivingEntity mob) { + mobThrowerQueue.add(mob); + if (mobThrowerQueue.size() > 4) { + LivingEntity oldmob = mobThrowerQueue.remove(0); + if (oldmob != null) { + oldmob.damage(500.0); + } + } + } + + public void startArrowShooter(TotalFreedomMod plugin) { + this.stopArrowShooter(); + this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L); + this.mp44Firing = true; + } + + public void stopArrowShooter() { + if (this.mp44ScheduleTask != null) { + this.mp44ScheduleTask.cancel(); + this.mp44ScheduleTask = null; + } + this.mp44Firing = false; + } + + public void armMP44() { + this.mp44Armed = true; + this.stopArrowShooter(); + } + + public void disarmMP44() { + this.mp44Armed = false; + this.stopArrowShooter(); + } + + public boolean isMP44Armed() { + return this.mp44Armed; + } + + public boolean toggleMP44Firing() { + this.mp44Firing = !this.mp44Firing; + return mp44Firing; + } + + public boolean isMuted() { + return unmuteTask != null; + } + + public void setMuted(boolean muted) { + cancel(unmuteTask); + unmuteTask = null; + + if (!muted) { + return; + } + + unmuteTask = new BukkitRunnable() { + @Override + public void run() { + Utilities.adminAction("TotalFreedom", "Unmuting " + player.getName(), false); + setMuted(false); + } + }.runTaskLater(TotalFreedomMod.plugin, AUTO_PURGE); + } + + public boolean isHalted() { + return this.isHalted; + } + + public void setHalted(boolean halted) { + this.isHalted = halted; + + if (halted) { + player.setOp(false); + player.setGameMode(GameMode.SURVIVAL); + Utilities.setFlying(player, false); + EssentialsBridge.setNickname(player.getName(), player.getName()); + player.closeInventory(); + player.setTotalExperience(0); + + stopOrbiting(); + setFrozen(true); + setMuted(true); + + player.sendMessage(ChatColor.GRAY + "You have been halted, don't move!"); + } else { + player.setOp(true); + player.setGameMode(GameMode.CREATIVE); + setFrozen(false); + setMuted(false); + + player.sendMessage(ChatColor.GRAY + "You are no longer halted."); + } + + } + + public BukkitTask getLockupScheduleID() { + return this.lockupScheduleTask; + } + + public void setLockupScheduleID(BukkitTask id) { + this.lockupScheduleTask = id; + } + + public String getLastMessage() { + return lastMessage; + } + + public void setLastMessage(String message) { + this.lastMessage = message; + } + + public void setAdminChat(boolean inAdminchat) { + this.inAdminchat = inAdminchat; + } + + public boolean inAdminChat() { + return this.inAdminchat; + } + + public boolean allCommandsBlocked() { + return this.allCommandsBlocked; + } + + public void setCommandsBlocked(boolean commandsBlocked) { + this.allCommandsBlocked = commandsBlocked; + } + + // If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP. + // After the check for this is done in PlayerListener, never change it elsewhere. + public boolean isSuperadminIdVerified() { + return this.verifiedSuperadminId; + } + + // If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP. + // After the check for this is done in PlayerListener, never change it elsewhere. + public void setSuperadminIdVerified(boolean verifiedSuperadminId) { + this.verifiedSuperadminId = verifiedSuperadminId; + } + + public String getLastCommand() { + return lastCommand; + } + + public void setLastCommand(String lastCommand) { + this.lastCommand = lastCommand; + } + + public void setCommandSpy(boolean enabled) { + this.cmdspyEnabled = enabled; + } + + public boolean cmdspyEnabled() { + return cmdspyEnabled; + } + + public String getTag() { + return this.tag; + } + + public void setTag(String tag) { + if (tag == null) { + this.tag = null; + } else { + this.tag = Utilities.colorize(tag) + ChatColor.RESET; + } + } + + public int getWarningCount() { + return this.warningCount; + } + + public void incrementWarnings() { + this.warningCount++; + + if (this.warningCount % 2 == 0) { + this.player.getWorld().strikeLightning(this.player.getLocation()); + Utilities.playerMsg(this.player, ChatColor.RED + + "You have been warned at least twice now, make sure to read the rules at " + + ConfigurationEntry.SERVER_BAN_URL.getString()); + } + } + + public void cancel(BukkitTask task) { + if (task == null) { + return; + } + + try { + task.cancel(); + } catch (Exception ex) { + } + } + + public enum CageLayer { + INNER, OUTER + } + + private class TFM_BlockData { + + public Material material; + public Location location; + + private TFM_BlockData(Location location, Material material) { + this.location = location; + this.material = material; + } + } + + private class ArrowShooter extends BukkitRunnable { + + private final Player player; + + private ArrowShooter(Player player) { + this.player = player; + } + + @Override + public void run() { + Arrow shot = player.launchProjectile(Arrow.class); + shot.setVelocity(shot.getVelocity().multiply(2.0)); + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerList.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerList.java index 06a64fe..79d4bb2 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerList.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerList.java @@ -1,6 +1,12 @@ package me.StevenLawson.TotalFreedomMod.player; import com.google.common.collect.Sets; +import java.io.File; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.config.Configuration; @@ -8,164 +14,162 @@ import me.StevenLawson.TotalFreedomMod.manager.UUIDManager; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Bukkit; -import java.io.File; -import java.util.*; - public class PlayerList { - private static final Map PLAYER_LIST = new HashMap(); + private static final Map PLAYER_LIST = new HashMap(); - private PlayerList() { - throw new AssertionError(); - } + private PlayerList() { + throw new AssertionError(); + } - public static Set getAllPlayers() { - return Collections.unmodifiableSet(Sets.newHashSet(PLAYER_LIST.values())); - } + public static Set getAllPlayers() { + return Collections.unmodifiableSet(Sets.newHashSet(PLAYER_LIST.values())); + } - public static void load() { - PLAYER_LIST.clear(); + public static void load() { + PLAYER_LIST.clear(); - // Load online players - for (org.bukkit.entity.Player player : Bukkit.getOnlinePlayers()) { - getEntry(player); - } + // Load online players + for (org.bukkit.entity.Player player : Bukkit.getOnlinePlayers()) { + getEntry(player); + } - Log.info("Loaded playerdata for " + PLAYER_LIST.size() + " players"); - } + Log.info("Loaded playerdata for " + PLAYER_LIST.size() + " players"); + } - public static void saveAll() { - for (Player entry : PLAYER_LIST.values()) { - save(entry); - } - } + public static void saveAll() { + for (Player entry : PLAYER_LIST.values()) { + save(entry); + } + } - // May return null - public static Player getEntry(UUID uuid) { - if (PLAYER_LIST.containsKey(uuid)) { - return PLAYER_LIST.get(uuid); - } + // May return null + public static Player getEntry(UUID uuid) { + if (PLAYER_LIST.containsKey(uuid)) { + return PLAYER_LIST.get(uuid); + } - final File configFile = getConfigFile(uuid); + final File configFile = getConfigFile(uuid); - if (!configFile.exists()) { - return null; - } + if (!configFile.exists()) { + return null; + } - final Player entry = new Player(uuid, getConfig(uuid)); + final Player entry = new Player(uuid, getConfig(uuid)); - if (entry.isComplete()) { - PLAYER_LIST.put(uuid, entry); - return entry; - } else { - Log.warning("Could not load entry: Entry is not complete!"); - configFile.delete(); - } + if (entry.isComplete()) { + PLAYER_LIST.put(uuid, entry); + return entry; + } else { + Log.warning("Could not load entry: Entry is not complete!"); + configFile.delete(); + } - return null; - } + return null; + } - public static Player getEntry(org.bukkit.entity.Player player) { - final UUID uuid = UUIDManager.getUniqueId(player); - Player entry = getEntry(uuid); + public static Player getEntry(org.bukkit.entity.Player player) { + final UUID uuid = UUIDManager.getUniqueId(player); + Player entry = getEntry(uuid); - if (entry != null) { - return entry; - } + if (entry != null) { + return entry; + } - final long unix = Utilities.getUnixTime(); - entry = new Player(uuid); - entry.setFirstLoginName(player.getName()); - entry.setLastLoginName(player.getName()); - entry.setFirstLoginUnix(unix); - entry.setLastLoginUnix(unix); - entry.addIp(Utilities.getIp(player)); + final long unix = Utilities.getUnixTime(); + entry = new Player(uuid); + entry.setFirstLoginName(player.getName()); + entry.setLastLoginName(player.getName()); + entry.setFirstLoginUnix(unix); + entry.setLastLoginUnix(unix); + entry.addIp(Utilities.getIp(player)); - save(entry); - PLAYER_LIST.put(uuid, entry); + save(entry); + PLAYER_LIST.put(uuid, entry); - return entry; - } + return entry; + } - public static void removeEntry(org.bukkit.entity.Player player) { - final UUID uuid = UUIDManager.getUniqueId(player); + public static void removeEntry(org.bukkit.entity.Player player) { + final UUID uuid = UUIDManager.getUniqueId(player); - if (!PLAYER_LIST.containsKey(uuid)) { - return; - } + if (!PLAYER_LIST.containsKey(uuid)) { + return; + } - save(PLAYER_LIST.get(uuid)); + save(PLAYER_LIST.get(uuid)); - PLAYER_LIST.remove(uuid); - } + PLAYER_LIST.remove(uuid); + } - public static boolean existsEntry(org.bukkit.entity.Player player) { - return existsEntry(UUIDManager.getUniqueId(player)); - } + public static boolean existsEntry(org.bukkit.entity.Player player) { + return existsEntry(UUIDManager.getUniqueId(player)); + } - public static boolean existsEntry(UUID uuid) { - return getConfigFile(uuid).exists(); - } + public static boolean existsEntry(UUID uuid) { + return getConfigFile(uuid).exists(); + } - public static void setUniqueId(Player entry, UUID newUuid) { - if (entry.getUniqueId().equals(newUuid)) { - Log.warning("Not setting new UUID: UUIDs match!"); - return; - } + public static void setUniqueId(Player entry, UUID newUuid) { + if (entry.getUniqueId().equals(newUuid)) { + Log.warning("Not setting new UUID: UUIDs match!"); + return; + } - // Add new entry - final Player newEntry = new Player( - newUuid, - entry.getFirstLoginName(), - entry.getLastLoginName(), - entry.getFirstLoginUnix(), - entry.getLastLoginUnix(), - entry.getIps()); - newEntry.save(); - PLAYER_LIST.put(newUuid, newEntry); + // Add new entry + final Player newEntry = new Player( + newUuid, + entry.getFirstLoginName(), + entry.getLastLoginName(), + entry.getFirstLoginUnix(), + entry.getLastLoginUnix(), + entry.getIps()); + newEntry.save(); + PLAYER_LIST.put(newUuid, newEntry); - // Remove old entry - PLAYER_LIST.remove(entry.getUniqueId()); - final File oldFile = getConfigFile(entry.getUniqueId()); - if (oldFile.exists() && !oldFile.delete()) { - Log.warning("Could not delete config: " + getConfigFile(entry.getUniqueId()).getName()); - } - } + // Remove old entry + PLAYER_LIST.remove(entry.getUniqueId()); + final File oldFile = getConfigFile(entry.getUniqueId()); + if (oldFile.exists() && !oldFile.delete()) { + Log.warning("Could not delete config: " + getConfigFile(entry.getUniqueId()).getName()); + } + } - public static void purgeAll() { - for (File file : getConfigFolder().listFiles()) { - file.delete(); - } + public static void purgeAll() { + for (File file : getConfigFolder().listFiles()) { + file.delete(); + } - // Load online players - load(); - } + // Load online players + load(); + } - public static File getConfigFolder() { - return new File(TotalFreedomMod.plugin.getDataFolder(), "players"); - } + public static File getConfigFolder() { + return new File(TotalFreedomMod.plugin.getDataFolder(), "players"); + } - public static File getConfigFile(UUID uuid) { - return new File(getConfigFolder(), uuid + ".yml"); - } + public static File getConfigFile(UUID uuid) { + return new File(getConfigFolder(), uuid + ".yml"); + } - public static Configuration getConfig(UUID uuid) { - final Configuration config = new Configuration(TotalFreedomMod.plugin, getConfigFile(uuid), false); - config.load(); - return config; - } + public static Configuration getConfig(UUID uuid) { + final Configuration config = new Configuration(TotalFreedomMod.plugin, getConfigFile(uuid), + false); + config.load(); + return config; + } - public static void save(Player entry) { - if (!entry.isComplete()) { - throw new IllegalArgumentException("Entry is not complete!"); - } + public static void save(Player entry) { + if (!entry.isComplete()) { + throw new IllegalArgumentException("Entry is not complete!"); + } - final Configuration config = getConfig(entry.getUniqueId()); - config.set("firstjoinname", entry.getFirstLoginName()); - config.set("lastjoinname", entry.getLastLoginName()); - config.set("firstjoinunix", entry.getFirstLoginUnix()); - config.set("lastjoinunix", entry.getLastLoginUnix()); - config.set("ips", entry.getIps()); - config.save(); - } + final Configuration config = getConfig(entry.getUniqueId()); + config.set("firstjoinname", entry.getFirstLoginName()); + config.set("lastjoinname", entry.getLastLoginName()); + config.set("firstjoinunix", entry.getFirstLoginUnix()); + config.set("lastjoinunix", entry.getLastLoginUnix()); + config.set("ips", entry.getIps()); + config.save(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java index c065882..8902a0b 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java @@ -1,6 +1,11 @@ package me.StevenLawson.TotalFreedomMod.player; +import static me.StevenLawson.TotalFreedomMod.util.Utilities.DEVELOPERS; + import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; import me.StevenLawson.TotalFreedomMod.admin.Admin; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; @@ -12,181 +17,158 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.javacord.api.entity.permission.Role; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; +public enum PlayerRank implements Comparator, Comparable { + IMPOSTOR("an " + ChatColor.YELLOW + ChatColor.UNDERLINE + "Impostor", + ChatColor.YELLOW.toString() + ChatColor.UNDERLINE + "[IMP]", "Impostors", 0), + NON_OP("a " + ChatColor.GREEN + "Non-OP", ChatColor.GREEN.toString(), "Non-Operators", 1), + OP("an " + ChatColor.RED + "OP", ChatColor.RED + "[OP]", "Operators", 2), + SUPER("a " + ChatColor.GOLD + "Super Admin", ChatColor.GOLD + "[SA]", "Super Admins", 3), + TELNET("a " + ChatColor.DARK_GREEN + "Super Telnet Admin", ChatColor.DARK_GREEN + "[STA]", + "Super Telnet Admins", 4), + SENIOR("a " + ChatColor.LIGHT_PURPLE + "Senior Admin", ChatColor.LIGHT_PURPLE + "[SrA]", + "Senior Admins", 5), + DEVELOPER("a " + ChatColor.DARK_PURPLE + "Developer", ChatColor.DARK_PURPLE + "[Dev]", + "Developers", 6), + OWNER("an " + ChatColor.BLUE + "Owner", ChatColor.BLUE + "[Owner]", "Owners", 7), + CONSOLE("The " + ChatColor.DARK_PURPLE + "Console", ChatColor.DARK_PURPLE + "[Console]", 8); + private final String loginMessage; + private final String prefix; -import static me.StevenLawson.TotalFreedomMod.util.Utilities.DEVELOPERS; -import static me.StevenLawson.TotalFreedomMod.util.Utilities.getPluginFile; - -public enum PlayerRank implements Comparator, Comparable -{ - IMPOSTOR("an " + ChatColor.YELLOW + ChatColor.UNDERLINE + "Impostor", ChatColor.YELLOW.toString() + ChatColor.UNDERLINE + "[IMP]", "Impostors", 0), - NON_OP("a " + ChatColor.GREEN + "Non-OP", ChatColor.GREEN.toString(), "Non-Operators", 1), - OP("an " + ChatColor.RED + "OP", ChatColor.RED + "[OP]", "Operators" ,2), - SUPER("a " + ChatColor.GOLD + "Super Admin", ChatColor.GOLD + "[SA]", "Super Admins", 3), - TELNET("a " + ChatColor.DARK_GREEN + "Super Telnet Admin", ChatColor.DARK_GREEN + "[STA]", "Super Telnet Admins", 4), - SENIOR("a " + ChatColor.LIGHT_PURPLE + "Senior Admin", ChatColor.LIGHT_PURPLE + "[SrA]", "Senior Admins", 5), - DEVELOPER("a " + ChatColor.DARK_PURPLE + "Developer", ChatColor.DARK_PURPLE + "[Dev]", "Developers", 6), - OWNER("an " + ChatColor.BLUE + "Owner", ChatColor.BLUE + "[Owner]", "Owners", 7), - CONSOLE("The " + ChatColor.DARK_PURPLE + "Console", ChatColor.DARK_PURPLE + "[Console]", 8); - private final String loginMessage; - private final String prefix; - - private final String plural; - private final int ordinal; + private final String plural; + private final int ordinal; - PlayerRank(String loginMessage, String prefix, int ordinal) { - this.loginMessage = loginMessage; - this.prefix = prefix; - this.plural = ""; - this.ordinal = ordinal; - } + PlayerRank(String loginMessage, String prefix, int ordinal) { + this.loginMessage = loginMessage; + this.prefix = prefix; + this.plural = ""; + this.ordinal = ordinal; + } - PlayerRank(String loginMessage, String prefix, String plural, int ordinal) - { - this.loginMessage = loginMessage; - this.prefix = prefix; - this.plural = plural; - this.ordinal = ordinal; - } + PlayerRank(String loginMessage, String prefix, String plural, int ordinal) { + this.loginMessage = loginMessage; + this.prefix = prefix; + this.plural = plural; + this.ordinal = ordinal; + } - public static String getLoginMessage(CommandSender sender) - { - // Handle console - if (!(sender instanceof Player)) - { - return fromSender(sender).getLoginMessage(); - } + public static String getLoginMessage(CommandSender sender) { + // Handle console + if (!(sender instanceof Player)) { + return fromSender(sender).getLoginMessage(); + } - // Handle admins - final Admin entry = AdminList.getEntry((Player) sender); - if (entry == null) - { - // Player is not an admin - return fromSender(sender).getLoginMessage(); - } + // Handle admins + final Admin entry = AdminList.getEntry((Player) sender); + if (entry == null) { + // Player is not an admin + return fromSender(sender).getLoginMessage(); + } - // Custom login message - final String loginMessage = entry.getCustomLoginMessage(); + // Custom login message + final String loginMessage = entry.getCustomLoginMessage(); - if (loginMessage == null || loginMessage.isEmpty()) - { - return fromSender(sender).getLoginMessage(); - } + if (loginMessage == null || loginMessage.isEmpty()) { + return fromSender(sender).getLoginMessage(); + } - return ChatColor.translateAlternateColorCodes('&', loginMessage); - } + return ChatColor.translateAlternateColorCodes('&', loginMessage); + } - public static PlayerRank fromSender(CommandSender sender) - { - if (sender instanceof DiscordCommandSender) { - DiscordCommandSender discordSender = (DiscordCommandSender) sender; - List roles = discordSender.getUser().getRoles(discordSender.getDiscordServer()); + public static PlayerRank fromSender(CommandSender sender) { + if (sender instanceof DiscordCommandSender) { + DiscordCommandSender discordSender = (DiscordCommandSender) sender; + List roles = discordSender.getUser().getRoles(discordSender.getDiscordServer()); - for (Role role : roles) { - if(role.getName().toLowerCase().contains("senior")) { - return SENIOR; - } - } + for (Role role : roles) { + if (role.getName().toLowerCase().contains("senior")) { + return SENIOR; + } + } - return SUPER; - } - if (!(sender instanceof Player)) - { - return CONSOLE; - } + return SUPER; + } + if (!(sender instanceof Player)) { + return CONSOLE; + } - if (AdminList.isAdminImpostor((Player) sender)) - { - return IMPOSTOR; - } + if (AdminList.isAdminImpostor((Player) sender)) { + return IMPOSTOR; + } + + final Admin entry = AdminList.getEntryByIp(Utilities.getIp((Player) sender)); + + final PlayerRank rank; + + if (entry != null && entry.isActivated()) { + if (ConfigurationEntry.SERVER_OWNERS.getList().contains(sender.getName())) { + return OWNER; + } + + if (entry.isSeniorAdmin()) { + rank = SENIOR; + } else if (entry.isTelnetAdmin()) { + rank = TELNET; + } else { + rank = SUPER; + } + } else { + if (DEVELOPERS.contains(sender.getName())) { + return DEVELOPER; + } else if (sender.isOp()) { + rank = OP; + } else { + rank = NON_OP; + } + + } + return rank; + } + + public String getPrefix() { + return prefix; + } + + public String getLoginMessage() { + return loginMessage; + } - final Admin entry = AdminList.getEntryByIp(Utilities.getIp((Player) sender)); + public String getPlural() { + return plural; + } - final PlayerRank rank; + public int getOrdinal() { + return ordinal; + } - if (entry != null && entry.isActivated()) - { - if (ConfigurationEntry.SERVER_OWNERS.getList().contains(sender.getName())) - { - return OWNER; - } + public List getWithRank() { + List inGame = new ArrayList<>(); - if (entry.isSeniorAdmin()) - { - rank = SENIOR; - } - else if (entry.isTelnetAdmin()) - { - rank = TELNET; - } - else - { - rank = SUPER; - } - } - else - { - if (DEVELOPERS.contains(sender.getName())) { - return DEVELOPER; - } else if (sender.isOp()) - { - rank = OP; - } - else - { - rank = NON_OP; - } + for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { + if (fromSender(onlinePlayer).equals(this)) { + inGame.add(onlinePlayer); + } + } - } - return rank; - } + return ImmutableList.copyOf(inGame); + } - public String getPrefix() - { - return prefix; - } + public List getInGameUsernames() { + List inGame = new ArrayList<>(); - public String getLoginMessage() - { - return loginMessage; - } + for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { + if (fromSender(onlinePlayer).equals(this)) { + inGame.add(onlinePlayer.getName()); + } + } + return ImmutableList.copyOf(inGame); - public String getPlural() { - return plural; - } + } - public int getOrdinal() { - return ordinal; - } - - public List getWithRank() { - List inGame = new ArrayList<>(); - - for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { - if(fromSender(onlinePlayer).equals(this)) inGame.add(onlinePlayer); - } - - return ImmutableList.copyOf(inGame); - } - - public List getInGameUsernames() { - List inGame = new ArrayList<>(); - - for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { - if(fromSender(onlinePlayer).equals(this)) inGame.add(onlinePlayer.getName()); - } - - return ImmutableList.copyOf(inGame); - - } - - @Override - public int compare(PlayerRank o1, PlayerRank o2) { - return o1.ordinal - o2.ordinal; - } + @Override + public int compare(PlayerRank o1, PlayerRank o2) { + return o1.ordinal - o2.ordinal; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/sql/SQLiteDatabase.java b/src/main/java/me/StevenLawson/TotalFreedomMod/sql/SQLiteDatabase.java index 6bd15bc..d8905ec 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/sql/SQLiteDatabase.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/sql/SQLiteDatabase.java @@ -1,141 +1,121 @@ package me.StevenLawson.TotalFreedomMod.sql; -import me.StevenLawson.TotalFreedomMod.Log; -import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; -import me.StevenLawson.TotalFreedomMod.util.SQLUtil; -import me.husky.Database; -import me.husky.sqlite.SQLite; - import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import me.StevenLawson.TotalFreedomMod.Log; +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import me.StevenLawson.TotalFreedomMod.util.SQLUtil; +import me.husky.Database; +import me.husky.sqlite.SQLite; public class SQLiteDatabase { - private final Database sql; - private final String table; - private final String fields; - private final List statements; + private final Database sql; + private final String table; + private final String fields; + private final List statements; - public SQLiteDatabase(String filename, String table, String fields) { - this.sql = new SQLite(TotalFreedomMod.plugin, filename); - this.table = table; - this.fields = fields; - this.statements = new ArrayList(); - } + public SQLiteDatabase(String filename, String table, String fields) { + this.sql = new SQLite(TotalFreedomMod.plugin, filename); + this.table = table; + this.fields = fields; + this.statements = new ArrayList(); + } - public Statement addPreparedStatement(String query) - { - if (sql.checkConnection()) - { - throw new IllegalStateException("Can not add prepared statements after connecting!"); - } + public Statement addPreparedStatement(String query) { + if (sql.checkConnection()) { + throw new IllegalStateException("Can not add prepared statements after connecting!"); + } - final Statement statement = new Statement(query); - statements.add(statement); - return statement; - } + final Statement statement = new Statement(query); + statements.add(statement); + return statement; + } - @Deprecated - public Database db() - { - return sql; - } + @Deprecated + public Database db() { + return sql; + } - public boolean connect() - { - if (sql.checkConnection()) - { - return true; - } + public boolean connect() { + if (sql.checkConnection()) { + return true; + } - final Connection con = sql.openConnection(); - if (con == null) - { - return false; - } + final Connection con = sql.openConnection(); + if (con == null) { + return false; + } - if (!SQLUtil.hasTable(con, table)) { - Log.info("Creating table: " + table); + if (!SQLUtil.hasTable(con, table)) { + Log.info("Creating table: " + table); - if (!SQLUtil.createTable(con, table, fields)) { - Log.severe("Could not create table: " + table); - return false; - } - } + if (!SQLUtil.createTable(con, table, fields)) { + Log.severe("Could not create table: " + table); + return false; + } + } - // Prepare statements - for (Statement statement : statements) - { - if (!statement.prepare()) - { - return false; - } - } + // Prepare statements + for (Statement statement : statements) { + if (!statement.prepare()) { + return false; + } + } - return true; - } + return true; + } - public void close() - { - sql.closeConnection(); - } + public void close() { + sql.closeConnection(); + } - public int purge() - { - if (!connect()) - { - return 0; - } + public int purge() { + if (!connect()) { + return 0; + } - Log.warning("Truncating table: " + table); + Log.warning("Truncating table: " + table); - final int result = SQLUtil.updateQuery(sql.getConnection(), "DELETE FROM " + table + ";"); + final int result = SQLUtil.updateQuery(sql.getConnection(), "DELETE FROM " + table + ";"); - if (result == -1) - { - Log.warning("Could not truncate table: " + table); - } + if (result == -1) { + Log.warning("Could not truncate table: " + table); + } - return result; - } + return result; + } - public class Statement - { - private final String query; - private PreparedStatement statement; + public class Statement { - private Statement(String query) - { - this.query = query; - } + private final String query; + private PreparedStatement statement; - private boolean prepare() - { - try - { - statement = sql.getConnection().prepareStatement(query); - return true; - } - catch (SQLException ex) - { - Log.severe("Could not prepare statement: " + query); - Log.severe(ex); - return false; - } - } + private Statement(String query) { + this.query = query; + } - public void invalidate() - { - statement = null; - statements.remove(this); - } + private boolean prepare() { + try { + statement = sql.getConnection().prepareStatement(query); + return true; + } catch (SQLException ex) { + Log.severe("Could not prepare statement: " + query); + Log.severe(ex); + return false; + } + } - public PreparedStatement getStatement() - { - return statement; - } - } + public void invalidate() { + statement = null; + statements.remove(this); + } + + public PreparedStatement getStatement() { + return statement; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/util/DeprecationUtil.java b/src/main/java/me/StevenLawson/TotalFreedomMod/util/DeprecationUtil.java index ee0a2aa..ee9a2c8 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/util/DeprecationUtil.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/util/DeprecationUtil.java @@ -10,55 +10,46 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.material.MaterialData; @SuppressWarnings("deprecation") -public class DeprecationUtil -{ - public static Block getTargetBlock(LivingEntity entity, HashSet< Byte> transparent, int maxDistance) - { - return entity.getTargetBlock(transparent, maxDistance); - } +public class DeprecationUtil { - public static OfflinePlayer getOfflinePlayer(Server server, String name) - { - return server.getOfflinePlayer(name); - } + public static Block getTargetBlock(LivingEntity entity, HashSet transparent, + int maxDistance) { + return entity.getTargetBlock(transparent, maxDistance); + } - public static Material getMaterial(int id) - { - return Material.getMaterial(id); - } + public static OfflinePlayer getOfflinePlayer(Server server, String name) { + return server.getOfflinePlayer(name); + } - public static byte getData_MaterialData(MaterialData md) - { - return md.getData(); - } + public static Material getMaterial(int id) { + return Material.getMaterial(id); + } - public static void setData_MaterialData(MaterialData md, byte data) - { - md.setData(data); - } + public static byte getData_MaterialData(MaterialData md) { + return md.getData(); + } - public static byte getData_Block(Block block) - { - return block.getData(); - } + public static void setData_MaterialData(MaterialData md, byte data) { + md.setData(data); + } - public static void setData_Block(Block block, byte data) - { - block.setData(data); - } + public static byte getData_Block(Block block) { + return block.getData(); + } - public static org.bukkit.material.Lever makeLeverWithData(byte data) - { - return new org.bukkit.material.Lever(Material.LEVER, data); - } + public static void setData_Block(Block block, byte data) { + block.setData(data); + } - public static int getTypeId_Block(Block block) - { - return block.getTypeId(); - } + public static org.bukkit.material.Lever makeLeverWithData(byte data) { + return new org.bukkit.material.Lever(Material.LEVER, data); + } - public static String getName_EntityType(EntityType et) - { - return et.getName(); - } + public static int getTypeId_Block(Block block) { + return block.getTypeId(); + } + + public static String getName_EntityType(EntityType et) { + return et.getName(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/util/SQLUtil.java b/src/main/java/me/StevenLawson/TotalFreedomMod/util/SQLUtil.java index 478d8c1..f599147 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/util/SQLUtil.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/util/SQLUtil.java @@ -1,100 +1,75 @@ package me.StevenLawson.TotalFreedomMod.util; -import me.StevenLawson.TotalFreedomMod.Log; - import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; +import me.StevenLawson.TotalFreedomMod.Log; public class SQLUtil { - public static boolean hasTable(Connection con, String table) { - try { - final DatabaseMetaData dbm = con.getMetaData(); - final ResultSet tables = dbm.getTables(null, null, table, null); - return tables.next(); - } - catch (SQLException ex) - { - Log.severe(ex); - return false; - } - } + public static boolean hasTable(Connection con, String table) { + try { + final DatabaseMetaData dbm = con.getMetaData(); + final ResultSet tables = dbm.getTables(null, null, table, null); + return tables.next(); + } catch (SQLException ex) { + Log.severe(ex); + return false; + } + } - public static ResultSet executeQuery(Connection con, String query) - { - try - { - return con.createStatement().executeQuery(query); - } - catch (SQLException ex) - { - Log.severe(ex); - return null; - } - } + public static ResultSet executeQuery(Connection con, String query) { + try { + return con.createStatement().executeQuery(query); + } catch (SQLException ex) { + Log.severe(ex); + return null; + } + } - public static int updateQuery(Connection con, String query) - { - try - { - return con.createStatement().executeUpdate(query); - } - catch (SQLException ex) - { - Log.severe(ex); - return -1; - } - } + public static int updateQuery(Connection con, String query) { + try { + return con.createStatement().executeUpdate(query); + } catch (SQLException ex) { + Log.severe(ex); + return -1; + } + } - public static boolean createTable(Connection con, String name, String fields) - { - try - { - con.createStatement().execute("CREATE TABLE " + name + " (" + fields + ");"); - return true; - } - catch (SQLException ex) - { - Log.severe(ex); - return false; - } - } + public static boolean createTable(Connection con, String name, String fields) { + try { + con.createStatement().execute("CREATE TABLE " + name + " (" + fields + ");"); + return true; + } catch (SQLException ex) { + Log.severe(ex); + return false; + } + } - public static void close(ResultSet result) - { - if (result == null) - { - return; - } + public static void close(ResultSet result) { + if (result == null) { + return; + } - try - { - result.close(); - } - catch (SQLException ex) - { - Log.severe(ex); - } - } + try { + result.close(); + } catch (SQLException ex) { + Log.severe(ex); + } + } - public static boolean hasData(ResultSet result) - { - if (result == null) - { - return false; - } + public static boolean hasData(ResultSet result) { + if (result == null) { + return false; + } - try - { - return result.next(); - } - catch (SQLException ex) - { - Log.severe(ex); - return false; - } - } + try { + return result.next(); + } catch (SQLException ex) { + Log.severe(ex); + return false; + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/util/SynchronousUtil.java b/src/main/java/me/StevenLawson/TotalFreedomMod/util/SynchronousUtil.java index 094b981..56ff243 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/util/SynchronousUtil.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/util/SynchronousUtil.java @@ -6,76 +6,61 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -public class SynchronousUtil -{ +public class SynchronousUtil { - public static void playerMsg(final Player player, final String message) - { - new BukkitRunnable() - { + public static void playerMsg(final Player player, final String message) { + new BukkitRunnable() { - @Override - public void run() - { - Utilities.playerMsg(player, message); - } + @Override + public void run() { + Utilities.playerMsg(player, message); + } - }.runTask(TotalFreedomMod.plugin); - } + }.runTask(TotalFreedomMod.plugin); + } - public static void playerKick(final Player player, final String reason) - { - new BukkitRunnable() - { + public static void playerKick(final Player player, final String reason) { + new BukkitRunnable() { - @Override - public void run() - { - player.kickPlayer(reason); - } + @Override + public void run() { + player.kickPlayer(reason); + } - }.runTask(TotalFreedomMod.plugin); - } + }.runTask(TotalFreedomMod.plugin); + } - public static void adminChatMessage(final CommandSender sender, final String message, final boolean isRed) - { - new BukkitRunnable() - { + public static void adminChatMessage(final CommandSender sender, final String message, + final boolean isRed) { + new BukkitRunnable() { - @Override - public void run() - { - Utilities.adminChatMessage(sender, message, isRed); - } + @Override + public void run() { + Utilities.adminChatMessage(sender, message, isRed); + } - }.runTask(TotalFreedomMod.plugin); - } + }.runTask(TotalFreedomMod.plugin); + } - public static void autoEject(final Player player, final String kickMessage) - { - new BukkitRunnable() - { + public static void autoEject(final Player player, final String kickMessage) { + new BukkitRunnable() { - @Override - public void run() - { - Utilities.autoEject(player, kickMessage); - } + @Override + public void run() { + Utilities.autoEject(player, kickMessage); + } - }.runTask(TotalFreedomMod.plugin); - } + }.runTask(TotalFreedomMod.plugin); + } - public static void bcastMsg(final String message, final ChatColor color) - { - new BukkitRunnable() - { + public static void bcastMsg(final String message, final ChatColor color) { + new BukkitRunnable() { - @Override - public void run() - { - Utilities.bcastMsg(message, color); - } + @Override + public void run() { + Utilities.bcastMsg(message, color); + } - }.runTask(TotalFreedomMod.plugin); - } + }.runTask(TotalFreedomMod.plugin); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java b/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java index 9f57b6e..de3e6e2 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java @@ -76,14 +76,11 @@ import org.bukkit.util.FileUtil; public class Utilities { - private static final Map ejectTracker = new HashMap(); public static final Map mobtypes = new HashMap(); // See https://github.com/TotalFreedom/License - None of the listed names may be removed. public static final List DEVELOPERS = Arrays.asList("Madgeek1450", "Prozza", "DarthSalmon", "AcidicCyanide", "Wild1145", "WickedGamingUK", "G6_", "videogamesm12", "maniaplay", "evanbt"); - private static final Random RANDOM = new Random(); - public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z"; public static final Map CHAT_COLOR_NAMES = new HashMap(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_BLUE, @@ -98,6 +95,9 @@ public class Utilities { ChatColor.RED, ChatColor.LIGHT_PURPLE, ChatColor.YELLOW); + private static final Map ejectTracker = new HashMap(); + private static final Random RANDOM = new Random(); + public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z"; static { for (EntityType type : EntityType.values()) { @@ -900,6 +900,10 @@ public class Utilities { } } + public enum EjectMethod { + STRIKE_ONE, STRIKE_TWO, STRIKE_THREE + } + public static class TFM_EntityWiper { private static final List> WIPEABLES = new ArrayList>(); @@ -963,10 +967,6 @@ public class Utilities { } } - public enum EjectMethod { - STRIKE_ONE, STRIKE_TWO, STRIKE_THREE - } - public static class MethodTimer { private long lastStart; diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/world/AdminWorld.java b/src/main/java/me/StevenLawson/TotalFreedomMod/world/AdminWorld.java index 28bd233..8af32c2 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/world/AdminWorld.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/world/AdminWorld.java @@ -1,12 +1,24 @@ package me.StevenLawson.TotalFreedomMod.world; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.gamerule.GameRuleHandler; import org.apache.commons.lang3.StringUtils; -import org.bukkit.*; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.WorldType; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.command.CommandSender; @@ -14,334 +26,280 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.scheduler.BukkitRunnable; -import java.util.*; -import java.util.Map.Entry; +public final class AdminWorld extends CustomWorld { -public final class AdminWorld extends CustomWorld -{ - private static final long CACHE_CLEAR_FREQUENCY = 30L * 1000L; //30 seconds, milliseconds - private static final long TP_COOLDOWN_TIME = 500L; //0.5 seconds, milliseconds - private static final String GENERATION_PARAMETERS = ConfigurationEntry.FLATLANDS_GENERATE_PARAMS.getString(); - private static final String WORLD_NAME = "adminworld"; - // - private final Map teleportCooldown = new HashMap(); - private final Map accessCache = new HashMap(); - // - private Long cacheLastCleared = null; - private final Map guestList = new HashMap(); // Guest, Supervisor - private WeatherMode weatherMode = WeatherMode.OFF; - private TimeOfDay timeOfDay = TimeOfDay.INHERIT; + private static final long CACHE_CLEAR_FREQUENCY = 30L * 1000L; //30 seconds, milliseconds + private static final long TP_COOLDOWN_TIME = 500L; //0.5 seconds, milliseconds + private static final String GENERATION_PARAMETERS = ConfigurationEntry.FLATLANDS_GENERATE_PARAMS.getString(); + private static final String WORLD_NAME = "adminworld"; + // + private final Map teleportCooldown = new HashMap(); + private final Map accessCache = new HashMap(); + private final Map guestList = new HashMap(); // Guest, Supervisor + // + private Long cacheLastCleared = null; + private WeatherMode weatherMode = WeatherMode.OFF; + private TimeOfDay timeOfDay = TimeOfDay.INHERIT; - private AdminWorld() - { - } + private AdminWorld() { + } - @Override - public void sendToWorld(Player player) - { - if (!canAccessWorld(player)) - { - return; - } + public static AdminWorld getInstance() { + return AdminWorldHolder.INSTANCE; + } - super.sendToWorld(player); - } + @Override + public void sendToWorld(Player player) { + if (!canAccessWorld(player)) { + return; + } - @Override - protected World generateWorld() - { - WorldCreator worldCreator = new WorldCreator(WORLD_NAME); - worldCreator.generateStructures(false); - worldCreator.type(WorldType.NORMAL); - worldCreator.environment(World.Environment.NORMAL); - worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS)); + super.sendToWorld(player); + } - World world = Bukkit.getServer().createWorld(worldCreator); + @Override + protected World generateWorld() { + WorldCreator worldCreator = new WorldCreator(WORLD_NAME); + worldCreator.generateStructures(false); + worldCreator.type(WorldType.NORMAL); + worldCreator.environment(World.Environment.NORMAL); + worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS)); - world.setSpawnFlags(false, false); - world.setSpawnLocation(0, 50, 0); + World world = Bukkit.getServer().createWorld(worldCreator); - Block welcomeSignBlock = world.getBlockAt(0, 50, 0); - welcomeSignBlock.setType(Material.SIGN_POST); - org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState(); + world.setSpawnFlags(false, false); + world.setSpawnLocation(0, 50, 0); - org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData(); - signData.setFacingDirection(BlockFace.NORTH); + Block welcomeSignBlock = world.getBlockAt(0, 50, 0); + welcomeSignBlock.setType(Material.SIGN_POST); + org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState(); - welcomeSign.setLine(0, ChatColor.GREEN + "AdminWorld"); - welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---"); - welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point"); - welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); - welcomeSign.update(); + org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData(); + signData.setFacingDirection(BlockFace.NORTH); - GameRuleHandler.commitGameRules(); + welcomeSign.setLine(0, ChatColor.GREEN + "AdminWorld"); + welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---"); + welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point"); + welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); + welcomeSign.update(); - return world; - } + GameRuleHandler.commitGameRules(); - public boolean addGuest(Player guest, Player supervisor) - { - if (guest == supervisor || AdminList.isSuperAdmin(guest)) - { - return false; - } + return world; + } - if (AdminList.isSuperAdmin(supervisor)) - { - guestList.put(guest, supervisor); - wipeAccessCache(); - return true; - } + public boolean addGuest(Player guest, Player supervisor) { + if (guest == supervisor || AdminList.isSuperAdmin(guest)) { + return false; + } - return false; - } + if (AdminList.isSuperAdmin(supervisor)) { + guestList.put(guest, supervisor); + wipeAccessCache(); + return true; + } - public Player removeGuest(Player guest) - { - final Player player = guestList.remove(guest); - wipeAccessCache(); - return player; - } + return false; + } - public Player removeGuest(String partialName) - { - partialName = partialName.toLowerCase(); - final Iterator it = guestList.keySet().iterator(); + public Player removeGuest(Player guest) { + final Player player = guestList.remove(guest); + wipeAccessCache(); + return player; + } - while (it.hasNext()) - { - final Player player = it.next(); - if (player.getName().toLowerCase().contains(partialName)) - { - removeGuest(player); - return player; - } - } + public Player removeGuest(String partialName) { + partialName = partialName.toLowerCase(); + final Iterator it = guestList.keySet().iterator(); - return null; - } + while (it.hasNext()) { + final Player player = it.next(); + if (player.getName().toLowerCase().contains(partialName)) { + removeGuest(player); + return player; + } + } - public String guestListToString() - { - final List output = new ArrayList(); - final Iterator> it = guestList.entrySet().iterator(); - while (it.hasNext()) - { - final Entry entry = it.next(); - final Player player = entry.getKey(); - final Player supervisor = entry.getValue(); - output.add(player.getName() + " (Supervisor: " + supervisor.getName() + ")"); - } - return StringUtils.join(output, ", "); - } + return null; + } - public void purgeGuestList() - { - guestList.clear(); - wipeAccessCache(); - } + public String guestListToString() { + final List output = new ArrayList(); + final Iterator> it = guestList.entrySet().iterator(); + while (it.hasNext()) { + final Entry entry = it.next(); + final Player player = entry.getKey(); + final Player supervisor = entry.getValue(); + output.add(player.getName() + " (Supervisor: " + supervisor.getName() + ")"); + } + return StringUtils.join(output, ", "); + } - public boolean validateMovement(PlayerMoveEvent event) - { - World world; - try - { - world = getWorld(); - } - catch (Exception ex) - { - return true; - } + public void purgeGuestList() { + guestList.clear(); + wipeAccessCache(); + } - if (world != null && event.getTo().getWorld() == world) - { - final Player player = event.getPlayer(); - if (!canAccessWorld(player)) - { - Long lastTP = teleportCooldown.get(player); - long currentTimeMillis = System.currentTimeMillis(); - if (lastTP == null || lastTP.longValue() + TP_COOLDOWN_TIME <= currentTimeMillis) - { - teleportCooldown.put(player, currentTimeMillis); - Log.info(player.getName() + " attempted to access the AdminWorld."); - new BukkitRunnable() - { - @Override - public void run() - { - player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation()); - } - }.runTaskLater(TotalFreedomMod.plugin, 1L); - } - event.setCancelled(true); - return false; - } - } + public boolean validateMovement(PlayerMoveEvent event) { + World world; + try { + world = getWorld(); + } catch (Exception ex) { + return true; + } - return true; - } + if (world != null && event.getTo().getWorld() == world) { + final Player player = event.getPlayer(); + if (!canAccessWorld(player)) { + Long lastTP = teleportCooldown.get(player); + long currentTimeMillis = System.currentTimeMillis(); + if (lastTP == null || lastTP.longValue() + TP_COOLDOWN_TIME <= currentTimeMillis) { + teleportCooldown.put(player, currentTimeMillis); + Log.info(player.getName() + " attempted to access the AdminWorld."); + new BukkitRunnable() { + @Override + public void run() { + player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation()); + } + }.runTaskLater(TotalFreedomMod.plugin, 1L); + } + event.setCancelled(true); + return false; + } + } - public void wipeAccessCache() - { - cacheLastCleared = System.currentTimeMillis(); - accessCache.clear(); - } + return true; + } - public boolean canAccessWorld(final Player player) - { - long currentTimeMillis = System.currentTimeMillis(); - if (cacheLastCleared == null || cacheLastCleared.longValue() + CACHE_CLEAR_FREQUENCY <= currentTimeMillis) - { - cacheLastCleared = currentTimeMillis; - accessCache.clear(); - } + public void wipeAccessCache() { + cacheLastCleared = System.currentTimeMillis(); + accessCache.clear(); + } - Boolean cached = accessCache.get(player); - if (cached == null) - { - boolean canAccess = AdminList.isSuperAdmin(player); - if (!canAccess) - { - Player supervisor = guestList.get(player); - canAccess = supervisor != null && supervisor.isOnline() && AdminList.isSuperAdmin(supervisor); - if (!canAccess) - { - guestList.remove(player); - } - } - cached = canAccess; - accessCache.put(player, cached); - } - return cached; - } + public boolean canAccessWorld(final Player player) { + long currentTimeMillis = System.currentTimeMillis(); + if (cacheLastCleared == null + || cacheLastCleared.longValue() + CACHE_CLEAR_FREQUENCY <= currentTimeMillis) { + cacheLastCleared = currentTimeMillis; + accessCache.clear(); + } - public enum WeatherMode - { - OFF("off"), - RAIN("rain"), - STORM("storm,thunderstorm"); - // - private final List aliases; + Boolean cached = accessCache.get(player); + if (cached == null) { + boolean canAccess = AdminList.isSuperAdmin(player); + if (!canAccess) { + Player supervisor = guestList.get(player); + canAccess = supervisor != null && supervisor.isOnline() && AdminList.isSuperAdmin( + supervisor); + if (!canAccess) { + guestList.remove(player); + } + } + cached = canAccess; + accessCache.put(player, cached); + } + return cached; + } - WeatherMode(String aliases) - { - this.aliases = Arrays.asList(StringUtils.split(aliases, ",")); - } + public WeatherMode getWeatherMode() { + return weatherMode; + } - private void setWorldToWeather(World world) - { - world.setStorm(this == RAIN || this == STORM); - world.setWeatherDuration(this == RAIN || this == STORM ? 20 * 60 * 5 : 0); + public void setWeatherMode(final WeatherMode weatherMode) { + this.weatherMode = weatherMode; - world.setThundering(this == STORM); - world.setThunderDuration(this == STORM ? 20 * 60 * 5 : 0); - } + try { + weatherMode.setWorldToWeather(getWorld()); + } catch (Exception ex) { + } + } - public static WeatherMode getByAlias(String needle) - { - needle = needle.toLowerCase(); - for (WeatherMode mode : values()) - { - if (mode.aliases.contains(needle)) - { - return mode; - } - } - return null; - } - } + public TimeOfDay getTimeOfDay() { + return timeOfDay; + } - public enum TimeOfDay - { - INHERIT(), - SUNRISE("sunrise,morning", 0), - NOON("noon,midday,day", 6000), - SUNSET("sunset,evening", 12000), - MIDNIGHT("midnight,night", 18000); - // - private final int timeTicks; - private final List aliases; + public void setTimeOfDay(final TimeOfDay timeOfDay) { + this.timeOfDay = timeOfDay; - TimeOfDay() - { - this.timeTicks = 0; - this.aliases = null; - } + try { + timeOfDay.setWorldToTime(getWorld()); + } catch (Exception ex) { + } + } - TimeOfDay(String aliases, int timeTicks) - { - this.timeTicks = timeTicks; - this.aliases = Arrays.asList(StringUtils.split(aliases, ",")); - } + public enum WeatherMode { + OFF("off"), + RAIN("rain"), + STORM("storm,thunderstorm"); + // + private final List aliases; - public int getTimeTicks() - { - return timeTicks; - } + WeatherMode(String aliases) { + this.aliases = Arrays.asList(StringUtils.split(aliases, ",")); + } - public void setWorldToTime(World world) - { - long time = world.getTime(); - time -= time % 24000; - world.setTime(time + 24000 + getTimeTicks()); - } + public static WeatherMode getByAlias(String needle) { + needle = needle.toLowerCase(); + for (WeatherMode mode : values()) { + if (mode.aliases.contains(needle)) { + return mode; + } + } + return null; + } - public static TimeOfDay getByAlias(String needle) - { - needle = needle.toLowerCase(); - for (TimeOfDay time : values()) - { - if (time.aliases != null && time.aliases.contains(needle)) - { - return time; - } - } - return null; - } - } + private void setWorldToWeather(World world) { + world.setStorm(this == RAIN || this == STORM); + world.setWeatherDuration(this == RAIN || this == STORM ? 20 * 60 * 5 : 0); - public WeatherMode getWeatherMode() - { - return weatherMode; - } + world.setThundering(this == STORM); + world.setThunderDuration(this == STORM ? 20 * 60 * 5 : 0); + } + } - public void setWeatherMode(final WeatherMode weatherMode) - { - this.weatherMode = weatherMode; + public enum TimeOfDay { + INHERIT(), + SUNRISE("sunrise,morning", 0), + NOON("noon,midday,day", 6000), + SUNSET("sunset,evening", 12000), + MIDNIGHT("midnight,night", 18000); + // + private final int timeTicks; + private final List aliases; - try - { - weatherMode.setWorldToWeather(getWorld()); - } - catch (Exception ex) - { - } - } + TimeOfDay() { + this.timeTicks = 0; + this.aliases = null; + } - public TimeOfDay getTimeOfDay() - { - return timeOfDay; - } + TimeOfDay(String aliases, int timeTicks) { + this.timeTicks = timeTicks; + this.aliases = Arrays.asList(StringUtils.split(aliases, ",")); + } - public void setTimeOfDay(final TimeOfDay timeOfDay) - { - this.timeOfDay = timeOfDay; + public static TimeOfDay getByAlias(String needle) { + needle = needle.toLowerCase(); + for (TimeOfDay time : values()) { + if (time.aliases != null && time.aliases.contains(needle)) { + return time; + } + } + return null; + } - try - { - timeOfDay.setWorldToTime(getWorld()); - } - catch (Exception ex) - { - } - } + public int getTimeTicks() { + return timeTicks; + } - public static AdminWorld getInstance() - { - return AdminWorldHolder.INSTANCE; - } + public void setWorldToTime(World world) { + long time = world.getTime(); + time -= time % 24000; + world.setTime(time + 24000 + getTimeTicks()); + } + } - private static class AdminWorldHolder { - private static final AdminWorld INSTANCE = new AdminWorld(); - } + private static class AdminWorldHolder { + + private static final AdminWorld INSTANCE = new AdminWorld(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomBlockPopulator.java b/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomBlockPopulator.java index 3e13d28..2fd5274 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomBlockPopulator.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomBlockPopulator.java @@ -23,39 +23,31 @@ import org.bukkit.World; import org.bukkit.generator.BlockPopulator; @SuppressWarnings("deprecation") -public class CleanroomBlockPopulator extends BlockPopulator -{ +public class CleanroomBlockPopulator extends BlockPopulator { - byte[] layerDataValues; + byte[] layerDataValues; - protected CleanroomBlockPopulator(byte[] layerDataValues) - { - this.layerDataValues = layerDataValues; - } + protected CleanroomBlockPopulator(byte[] layerDataValues) { + this.layerDataValues = layerDataValues; + } - @Override - public void populate(World world, Random random, Chunk chunk) - { - if (layerDataValues != null) - { - int x = chunk.getX() << 4; - int z = chunk.getZ() << 4; + @Override + public void populate(World world, Random random, Chunk chunk) { + if (layerDataValues != null) { + int x = chunk.getX() << 4; + int z = chunk.getZ() << 4; - for (int y = 0; y < layerDataValues.length; y++) - { - byte dataValue = layerDataValues[y]; - if (dataValue == 0) - { - continue; - } - for (int xx = 0; xx < 16; xx++) - { - for (int zz = 0; zz < 16; zz++) - { - world.getBlockAt(x + xx, y, z + zz).setData(dataValue); - } - } - } - } - } + for (int y = 0; y < layerDataValues.length; y++) { + byte dataValue = layerDataValues[y]; + if (dataValue == 0) { + continue; + } + for (int xx = 0; xx < 16; xx++) { + for (int zz = 0; zz < 16; zz++) { + world.getBlockAt(x + xx, y, z + zz).setData(dataValue); + } + } + } + } + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomChunkGenerator.java b/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomChunkGenerator.java index 4ba388e..ee7b569 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomChunkGenerator.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/world/CleanroomChunkGenerator.java @@ -18,6 +18,7 @@ package me.StevenLawson.TotalFreedomMod.world; import static java.lang.System.arraycopy; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -31,206 +32,181 @@ import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; @SuppressWarnings("deprecation") -public class CleanroomChunkGenerator extends ChunkGenerator -{ - private static final Logger log = Bukkit.getLogger(); - private short[] layer; - private byte[] layerDataValues; +public class CleanroomChunkGenerator extends ChunkGenerator { - public CleanroomChunkGenerator() - { - this("64,stone"); - } + private static final Logger log = Bukkit.getLogger(); + private short[] layer; + private byte[] layerDataValues; - public CleanroomChunkGenerator(String id) - { - if (id != null) - { - try - { - int y = 0; + public CleanroomChunkGenerator() { + this("64,stone"); + } - layer = new short[128]; // Default to 128, will be resized later if required - layerDataValues = null; + public CleanroomChunkGenerator(String id) { + if (id != null) { + try { + int y = 0; - if ((id.length() > 0) && (id.charAt(0) == '.')) // Is the first character a '.'? If so, skip bedrock generation. - { - id = id.substring(1); // Skip bedrock then and remove the . - } - else // Guess not, bedrock at layer0 it is then. - { - layer[y++] = (short) Material.BEDROCK.getId(); - } + layer = new short[128]; // Default to 128, will be resized later if required + layerDataValues = null; - if (id.length() > 0) - { - String[] tokens = id.split("[,]"); + if ((id.length() > 0) && (id.charAt(0) + == '.')) // Is the first character a '.'? If so, skip bedrock generation. + { + id = id.substring(1); // Skip bedrock then and remove the . + } else // Guess not, bedrock at layer0 it is then. + { + layer[y++] = (short) Material.BEDROCK.getId(); + } - if ((tokens.length % 2) != 0) - { - throw new Exception(); - } + if (id.length() > 0) { + String[] tokens = id.split("[,]"); - for (int i = 0; i < tokens.length; i += 2) - { - int height = Integer.parseInt(tokens[i]); - if (height <= 0) - { - log.warning("[CleanroomGenerator] Invalid height '" + tokens[i] + "'. Using 64 instead."); - height = 64; - } + if ((tokens.length % 2) != 0) { + throw new Exception(); + } - String[] materialTokens = tokens[i + 1].split("[:]", 2); - byte dataValue = 0; - if (materialTokens.length == 2) - { - try - { - // Lets try to read the data value - dataValue = Byte.parseByte(materialTokens[1]); - } - catch (Exception e) - { - log.warning("[CleanroomGenerator] Invalid Data Value '" + materialTokens[1] + "'. Defaulting to 0."); - dataValue = 0; - } - } - Material mat = Material.matchMaterial(materialTokens[0]); - if (mat == null) - { - try - { - // Mabe it's an integer? - mat = Material.getMaterial(Integer.parseInt(materialTokens[0])); - } - catch (Exception e) - { - // Well, I guess it wasn't an integer after all... Awkward... - } + for (int i = 0; i < tokens.length; i += 2) { + int height = Integer.parseInt(tokens[i]); + if (height <= 0) { + log.warning("[CleanroomGenerator] Invalid height '" + tokens[i] + + "'. Using 64 instead."); + height = 64; + } - if (mat == null) - { - log.warning("[CleanroomGenerator] Invalid Block ID '" + materialTokens[0] + "'. Defaulting to stone."); - mat = Material.STONE; - } - } + String[] materialTokens = tokens[i + 1].split("[:]", 2); + byte dataValue = 0; + if (materialTokens.length == 2) { + try { + // Lets try to read the data value + dataValue = Byte.parseByte(materialTokens[1]); + } catch (Exception e) { + log.warning( + "[CleanroomGenerator] Invalid Data Value '" + materialTokens[1] + + "'. Defaulting to 0."); + dataValue = 0; + } + } + Material mat = Material.matchMaterial(materialTokens[0]); + if (mat == null) { + try { + // Mabe it's an integer? + mat = Material.getMaterial(Integer.parseInt(materialTokens[0])); + } catch (Exception e) { + // Well, I guess it wasn't an integer after all... Awkward... + } - if (!mat.isBlock()) - { - log.warning("[CleanroomGenerator] Error, '" + materialTokens[0] + "' is not a block. Defaulting to stone."); - mat = Material.STONE; - } + if (mat == null) { + log.warning( + "[CleanroomGenerator] Invalid Block ID '" + materialTokens[0] + + "'. Defaulting to stone."); + mat = Material.STONE; + } + } - if (y + height > layer.length) - { - short[] newLayer = new short[Math.max(y + height, layer.length * 2)]; - arraycopy(layer, 0, newLayer, 0, y); - layer = newLayer; - if (layerDataValues != null) - { - byte[] newLayerDataValues = new byte[Math.max(y + height, layerDataValues.length * 2)]; - arraycopy(layerDataValues, 0, newLayerDataValues, 0, y); - layerDataValues = newLayerDataValues; - } - } + if (!mat.isBlock()) { + log.warning("[CleanroomGenerator] Error, '" + materialTokens[0] + + "' is not a block. Defaulting to stone."); + mat = Material.STONE; + } - Arrays.fill(layer, y, y + height, (short) mat.getId()); - if (dataValue != 0) - { - if (layerDataValues == null) - { - layerDataValues = new byte[layer.length]; - } - Arrays.fill(layerDataValues, y, y + height, dataValue); - } - y += height; - } - } + if (y + height > layer.length) { + short[] newLayer = new short[Math.max(y + height, layer.length * 2)]; + arraycopy(layer, 0, newLayer, 0, y); + layer = newLayer; + if (layerDataValues != null) { + byte[] newLayerDataValues = new byte[Math.max(y + height, + layerDataValues.length * 2)]; + arraycopy(layerDataValues, 0, newLayerDataValues, 0, y); + layerDataValues = newLayerDataValues; + } + } - // Trim to size - if (layer.length > y) - { - short[] newLayer = new short[y]; - arraycopy(layer, 0, newLayer, 0, y); - layer = newLayer; - } - if (layerDataValues != null && layerDataValues.length > y) - { - byte[] newLayerDataValues = new byte[y]; - arraycopy(layerDataValues, 0, newLayerDataValues, 0, y); - layerDataValues = newLayerDataValues; - } - } - catch (Exception e) - { - log.severe("[CleanroomGenerator] Error parsing CleanroomGenerator ID '" + id + "'. using defaults '64,1': " + e); - e.printStackTrace(); - layerDataValues = null; - layer = new short[65]; - layer[0] = (short) Material.BEDROCK.getId(); - Arrays.fill(layer, 1, 65, (short) Material.STONE.getId()); - } - } - else - { - layerDataValues = null; - layer = new short[65]; - layer[0] = (short) Material.BEDROCK.getId(); - Arrays.fill(layer, 1, 65, (short) Material.STONE.getId()); - } - } + Arrays.fill(layer, y, y + height, (short) mat.getId()); + if (dataValue != 0) { + if (layerDataValues == null) { + layerDataValues = new byte[layer.length]; + } + Arrays.fill(layerDataValues, y, y + height, dataValue); + } + y += height; + } + } - @Override - public short[][] generateExtBlockSections(World world, Random random, int x, int z, BiomeGrid biomes) - { - int maxHeight = world.getMaxHeight(); - if (layer.length > maxHeight) - { - log.warning("[CleanroomGenerator] Error, chunk height " + layer.length + " is greater than the world max height (" + maxHeight + "). Trimming to world max height."); - short[] newLayer = new short[maxHeight]; - arraycopy(layer, 0, newLayer, 0, maxHeight); - layer = newLayer; - } - short[][] result = new short[maxHeight / 16][]; // 16x16x16 chunks - for (int i = 0; i < layer.length; i += 16) - { - result[i >> 4] = new short[4096]; - for (int y = 0; y < Math.min(16, layer.length - i); y++) - { - Arrays.fill(result[i >> 4], y * 16 * 16, (y + 1) * 16 * 16, layer[i + y]); - } - } + // Trim to size + if (layer.length > y) { + short[] newLayer = new short[y]; + arraycopy(layer, 0, newLayer, 0, y); + layer = newLayer; + } + if (layerDataValues != null && layerDataValues.length > y) { + byte[] newLayerDataValues = new byte[y]; + arraycopy(layerDataValues, 0, newLayerDataValues, 0, y); + layerDataValues = newLayerDataValues; + } + } catch (Exception e) { + log.severe("[CleanroomGenerator] Error parsing CleanroomGenerator ID '" + id + + "'. using defaults '64,1': " + e); + e.printStackTrace(); + layerDataValues = null; + layer = new short[65]; + layer[0] = (short) Material.BEDROCK.getId(); + Arrays.fill(layer, 1, 65, (short) Material.STONE.getId()); + } + } else { + layerDataValues = null; + layer = new short[65]; + layer[0] = (short) Material.BEDROCK.getId(); + Arrays.fill(layer, 1, 65, (short) Material.STONE.getId()); + } + } - return result; - } + @Override + public short[][] generateExtBlockSections(World world, Random random, int x, int z, + BiomeGrid biomes) { + int maxHeight = world.getMaxHeight(); + if (layer.length > maxHeight) { + log.warning("[CleanroomGenerator] Error, chunk height " + layer.length + + " is greater than the world max height (" + maxHeight + + "). Trimming to world max height."); + short[] newLayer = new short[maxHeight]; + arraycopy(layer, 0, newLayer, 0, maxHeight); + layer = newLayer; + } + short[][] result = new short[maxHeight / 16][]; // 16x16x16 chunks + for (int i = 0; i < layer.length; i += 16) { + result[i >> 4] = new short[4096]; + for (int y = 0; y < Math.min(16, layer.length - i); y++) { + Arrays.fill(result[i >> 4], y * 16 * 16, (y + 1) * 16 * 16, layer[i + y]); + } + } - @Override - public List getDefaultPopulators(World world) - { - if (layerDataValues != null) - { - return Arrays.asList(new CleanroomBlockPopulator(layerDataValues)); - } - else - { - // This is the default, but just in case default populators change to stock minecraft populators by default... - return new ArrayList(); - } - } + return result; + } - @Override - public Location getFixedSpawnLocation(World world, Random random) - { - if (!world.isChunkLoaded(0, 0)) - { - world.loadChunk(0, 0); - } + @Override + public List getDefaultPopulators(World world) { + if (layerDataValues != null) { + return Arrays.asList(new CleanroomBlockPopulator(layerDataValues)); + } else { + // This is the default, but just in case default populators change to stock minecraft populators by default... + return new ArrayList(); + } + } - if ((world.getHighestBlockYAt(0, 0) <= 0) && (world.getBlockAt(0, 0, 0).getType() == Material.AIR)) // SPACE! - { - return new Location(world, 0, 64, 0); // Lets allow people to drop a little before hitting the void then shall we? - } + @Override + public Location getFixedSpawnLocation(World world, Random random) { + if (!world.isChunkLoaded(0, 0)) { + world.loadChunk(0, 0); + } - return new Location(world, 0, world.getHighestBlockYAt(0, 0), 0); - } + if ((world.getHighestBlockYAt(0, 0) <= 0) && (world.getBlockAt(0, 0, 0).getType() + == Material.AIR)) // SPACE! + { + return new Location(world, 0, 64, + 0); // Lets allow people to drop a little before hitting the void then shall we? + } + + return new Location(world, 0, world.getHighestBlockYAt(0, 0), 0); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/world/CustomWorld.java b/src/main/java/me/StevenLawson/TotalFreedomMod/world/CustomWorld.java index 749473e..70a56f1 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/world/CustomWorld.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/world/CustomWorld.java @@ -4,36 +4,29 @@ import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; -public abstract class CustomWorld -{ - private World world; +public abstract class CustomWorld { - protected abstract World generateWorld(); + private World world; - public void sendToWorld(Player player) - { - try - { - player.teleport(getWorld().getSpawnLocation()); - } - catch (Exception ex) - { - player.sendMessage(ex.getMessage()); - } - } + protected abstract World generateWorld(); - public final World getWorld() throws Exception - { - if (world == null || !Bukkit.getWorlds().contains(world)) - { - world = generateWorld(); - } + public void sendToWorld(Player player) { + try { + player.teleport(getWorld().getSpawnLocation()); + } catch (Exception ex) { + player.sendMessage(ex.getMessage()); + } + } - if (world == null) - { - throw new Exception("World not loaded."); - } + public final World getWorld() throws Exception { + if (world == null || !Bukkit.getWorlds().contains(world)) { + world = generateWorld(); + } - return world; - } + if (world == null) { + throw new Exception("World not loaded."); + } + + return world; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/world/FlatlandsWorld.java b/src/main/java/me/StevenLawson/TotalFreedomMod/world/FlatlandsWorld.java index ac83a9b..3c54eac 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/world/FlatlandsWorld.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/world/FlatlandsWorld.java @@ -1,96 +1,89 @@ package me.StevenLawson.TotalFreedomMod.world; +import java.io.File; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.gamerule.GameRuleHandler; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.io.FileUtils; -import org.bukkit.*; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.WorldType; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; -import java.io.File; +public class FlatlandsWorld extends CustomWorld { -public class FlatlandsWorld extends CustomWorld -{ - private static final String GENERATION_PARAMETERS = ConfigurationEntry.FLATLANDS_GENERATE_PARAMS.getString(); - private static final String WORLD_NAME = "flatlands"; + private static final String GENERATION_PARAMETERS = ConfigurationEntry.FLATLANDS_GENERATE_PARAMS.getString(); + private static final String WORLD_NAME = "flatlands"; - private FlatlandsWorld() - { - } + private FlatlandsWorld() { + } - @Override - protected World generateWorld() - { - if (!ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) - { - return null; - } + public static void wipeFlatlandsIfFlagged() { + boolean doFlatlandsWipe = false; + try { + doFlatlandsWipe = Utilities.getSavedFlag("do_wipe_flatlands"); + } catch (Exception ex) { + } - wipeFlatlandsIfFlagged(); + if (doFlatlandsWipe) { + if (Bukkit.getServer().getWorld("flatlands") == null) { + Log.info("Wiping flatlands."); + Utilities.setSavedFlag("do_wipe_flatlands", false); + FileUtils.deleteQuietly(new File("./flatlands")); + } else { + Log.severe("Can't wipe flatlands, it is already loaded."); + } + } + } - WorldCreator worldCreator = new WorldCreator(WORLD_NAME); - worldCreator.generateStructures(false); - worldCreator.type(WorldType.NORMAL); - worldCreator.environment(World.Environment.NORMAL); - worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS)); + public static FlatlandsWorld getInstance() { + return FlatlandsWorldHolder.INSTANCE; + } - World world = Bukkit.getServer().createWorld(worldCreator); + @Override + protected World generateWorld() { + if (!ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) { + return null; + } - world.setSpawnFlags(false, false); - world.setSpawnLocation(0, 50, 0); + wipeFlatlandsIfFlagged(); - Block welcomeSignBlock = world.getBlockAt(0, 50, 0); - welcomeSignBlock.setType(Material.SIGN_POST); - org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState(); + WorldCreator worldCreator = new WorldCreator(WORLD_NAME); + worldCreator.generateStructures(false); + worldCreator.type(WorldType.NORMAL); + worldCreator.environment(World.Environment.NORMAL); + worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS)); - org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData(); - signData.setFacingDirection(BlockFace.NORTH); + World world = Bukkit.getServer().createWorld(worldCreator); - welcomeSign.setLine(0, ChatColor.GREEN + "Flatlands"); - welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---"); - welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point"); - welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); - welcomeSign.update(); + world.setSpawnFlags(false, false); + world.setSpawnLocation(0, 50, 0); - GameRuleHandler.commitGameRules(); + Block welcomeSignBlock = world.getBlockAt(0, 50, 0); + welcomeSignBlock.setType(Material.SIGN_POST); + org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState(); - return world; - } + org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData(); + signData.setFacingDirection(BlockFace.NORTH); - public static void wipeFlatlandsIfFlagged() - { - boolean doFlatlandsWipe = false; - try - { - doFlatlandsWipe = Utilities.getSavedFlag("do_wipe_flatlands"); - } - catch (Exception ex) - { - } + welcomeSign.setLine(0, ChatColor.GREEN + "Flatlands"); + welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---"); + welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point"); + welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); + welcomeSign.update(); - if (doFlatlandsWipe) - { - if (Bukkit.getServer().getWorld("flatlands") == null) - { - Log.info("Wiping flatlands."); - Utilities.setSavedFlag("do_wipe_flatlands", false); - FileUtils.deleteQuietly(new File("./flatlands")); - } - else - { - Log.severe("Can't wipe flatlands, it is already loaded."); - } - } - } + GameRuleHandler.commitGameRules(); - public static FlatlandsWorld getInstance() - { - return FlatlandsWorldHolder.INSTANCE; - } + return world; + } - private static class FlatlandsWorldHolder { - private static final FlatlandsWorld INSTANCE = new FlatlandsWorld(); - } + private static class FlatlandsWorldHolder { + + private static final FlatlandsWorld INSTANCE = new FlatlandsWorld(); + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/world/ProtectedArea.java b/src/main/java/me/StevenLawson/TotalFreedomMod/world/ProtectedArea.java index c13dac2..2ce50d8 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/world/ProtectedArea.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/world/ProtectedArea.java @@ -1,5 +1,16 @@ package me.StevenLawson.TotalFreedomMod.world; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import me.StevenLawson.TotalFreedomMod.Log; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; @@ -8,319 +19,268 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.util.Vector; -import java.io.*; -import java.util.*; +public class ProtectedArea { -public class ProtectedArea -{ - public static final double MAX_RADIUS = 50.0; - private static final Map PROTECTED_AREAS = new HashMap(); + public static final double MAX_RADIUS = 50.0; + private static final Map PROTECTED_AREAS = new HashMap(); - private ProtectedArea() - { - throw new AssertionError(); - } + private ProtectedArea() { + throw new AssertionError(); + } - public static boolean isInProtectedArea(final Location modifyLocation) - { - boolean doSave = false; - boolean inProtectedArea = false; + public static boolean isInProtectedArea(final Location modifyLocation) { + boolean doSave = false; + boolean inProtectedArea = false; - final Iterator> it = ProtectedArea.PROTECTED_AREAS.entrySet().iterator(); + final Iterator> it = ProtectedArea.PROTECTED_AREAS.entrySet() + .iterator(); - while (it.hasNext()) - { - final SerializableProtectedRegion region = it.next().getValue(); + while (it.hasNext()) { + final SerializableProtectedRegion region = it.next().getValue(); - Location regionCenter = null; - try - { - regionCenter = region.getLocation(); - } - catch (SerializableProtectedRegion.CantFindWorldException ex) - { - it.remove(); - doSave = true; - continue; - } + Location regionCenter = null; + try { + regionCenter = region.getLocation(); + } catch (SerializableProtectedRegion.CantFindWorldException ex) { + it.remove(); + doSave = true; + continue; + } - if (regionCenter != null) - { - if (modifyLocation.getWorld() == regionCenter.getWorld()) - { - final double regionRadius = region.getRadius(); - if (modifyLocation.distanceSquared(regionCenter) <= (regionRadius * regionRadius)) - { - inProtectedArea = true; - break; - } - } - } - } + if (regionCenter != null) { + if (modifyLocation.getWorld() == regionCenter.getWorld()) { + final double regionRadius = region.getRadius(); + if (modifyLocation.distanceSquared(regionCenter) <= (regionRadius + * regionRadius)) { + inProtectedArea = true; + break; + } + } + } + } - if (doSave) - { - save(); - } + if (doSave) { + save(); + } - return inProtectedArea; - } + return inProtectedArea; + } - public static boolean isInProtectedArea(final Vector min, final Vector max, final String worldName) - { - boolean doSave = false; - boolean inProtectedArea = false; + public static boolean isInProtectedArea(final Vector min, final Vector max, + final String worldName) { + boolean doSave = false; + boolean inProtectedArea = false; - final Iterator> it = ProtectedArea.PROTECTED_AREAS.entrySet().iterator(); + final Iterator> it = ProtectedArea.PROTECTED_AREAS.entrySet() + .iterator(); - while (it.hasNext()) - { - final SerializableProtectedRegion region = it.next().getValue(); + while (it.hasNext()) { + final SerializableProtectedRegion region = it.next().getValue(); - Location regionCenter = null; - try - { - regionCenter = region.getLocation(); - } - catch (SerializableProtectedRegion.CantFindWorldException ex) - { - it.remove(); - doSave = true; - continue; - } + Location regionCenter = null; + try { + regionCenter = region.getLocation(); + } catch (SerializableProtectedRegion.CantFindWorldException ex) { + it.remove(); + doSave = true; + continue; + } - if (regionCenter != null) - { - if (worldName.equals(regionCenter.getWorld().getName())) - { - if (cubeIntersectsSphere(min, max, regionCenter.toVector(), region.getRadius())) - { - inProtectedArea = true; - break; - } - } - } - } + if (regionCenter != null) { + if (worldName.equals(regionCenter.getWorld().getName())) { + if (cubeIntersectsSphere(min, max, regionCenter.toVector(), + region.getRadius())) { + inProtectedArea = true; + break; + } + } + } + } - if (doSave) - { - save(); - } + if (doSave) { + save(); + } - return inProtectedArea; - } + return inProtectedArea; + } - private static boolean cubeIntersectsSphere(Vector min, Vector max, Vector sphere, double radius) - { - double d = square(radius); + private static boolean cubeIntersectsSphere(Vector min, Vector max, Vector sphere, + double radius) { + double d = square(radius); - if (sphere.getX() < min.getX()) - { - d -= square(sphere.getX() - min.getX()); - } - else if (sphere.getX() > max.getX()) - { - d -= square(sphere.getX() - max.getX()); - } - if (sphere.getY() < min.getY()) - { - d -= square(sphere.getY() - min.getY()); - } - else if (sphere.getY() > max.getY()) - { - d -= square(sphere.getY() - max.getY()); - } - if (sphere.getZ() < min.getZ()) - { - d -= square(sphere.getZ() - min.getZ()); - } - else if (sphere.getZ() > max.getZ()) - { - d -= square(sphere.getZ() - max.getZ()); - } + if (sphere.getX() < min.getX()) { + d -= square(sphere.getX() - min.getX()); + } else if (sphere.getX() > max.getX()) { + d -= square(sphere.getX() - max.getX()); + } + if (sphere.getY() < min.getY()) { + d -= square(sphere.getY() - min.getY()); + } else if (sphere.getY() > max.getY()) { + d -= square(sphere.getY() - max.getY()); + } + if (sphere.getZ() < min.getZ()) { + d -= square(sphere.getZ() - min.getZ()); + } else if (sphere.getZ() > max.getZ()) { + d -= square(sphere.getZ() - max.getZ()); + } - return d > 0; - } + return d > 0; + } - private static double square(double v) - { - return v * v; - } + private static double square(double v) { + return v * v; + } - public static void addProtectedArea(String label, Location location, double radius) - { - ProtectedArea.PROTECTED_AREAS.put(label.toLowerCase(), new SerializableProtectedRegion(location, radius)); - save(); - } + public static void addProtectedArea(String label, Location location, double radius) { + ProtectedArea.PROTECTED_AREAS.put(label.toLowerCase(), + new SerializableProtectedRegion(location, radius)); + save(); + } - public static void removeProtectedArea(String label) - { - ProtectedArea.PROTECTED_AREAS.remove(label.toLowerCase()); - save(); - } + public static void removeProtectedArea(String label) { + ProtectedArea.PROTECTED_AREAS.remove(label.toLowerCase()); + save(); + } - public static void clearProtectedAreas() - { - clearProtectedAreas(true); - } + public static void clearProtectedAreas() { + clearProtectedAreas(true); + } - public static void clearProtectedAreas(boolean createSpawnpointProtectedAreas) - { - ProtectedArea.PROTECTED_AREAS.clear(); + public static void clearProtectedAreas(boolean createSpawnpointProtectedAreas) { + ProtectedArea.PROTECTED_AREAS.clear(); - if (createSpawnpointProtectedAreas) - { - autoAddSpawnpoints(); - } + if (createSpawnpointProtectedAreas) { + autoAddSpawnpoints(); + } - save(); - } + save(); + } - public static void cleanProtectedAreas() - { - boolean doSave = false; + public static void cleanProtectedAreas() { + boolean doSave = false; - final Iterator> it = ProtectedArea.PROTECTED_AREAS.entrySet().iterator(); + final Iterator> it = ProtectedArea.PROTECTED_AREAS.entrySet() + .iterator(); - while (it.hasNext()) - { - try - { - it.next().getValue().getLocation(); - } - catch (SerializableProtectedRegion.CantFindWorldException ex) - { - it.remove(); - doSave = true; - } - } + while (it.hasNext()) { + try { + it.next().getValue().getLocation(); + } catch (SerializableProtectedRegion.CantFindWorldException ex) { + it.remove(); + doSave = true; + } + } - if (doSave) - { - save(); - } - } + if (doSave) { + save(); + } + } - public static Set getProtectedAreaLabels() - { - return ProtectedArea.PROTECTED_AREAS.keySet(); - } + public static Set getProtectedAreaLabels() { + return ProtectedArea.PROTECTED_AREAS.keySet(); + } - public static void save() - { - try - { - FileOutputStream fos = new FileOutputStream(new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.PROTECTED_AREA_FILENAME)); - ObjectOutputStream oos = new ObjectOutputStream(fos); - oos.writeObject(ProtectedArea.PROTECTED_AREAS); - oos.close(); - fos.close(); - } - catch (Exception ex) - { - Log.severe(ex); - } - } + public static void save() { + try { + FileOutputStream fos = new FileOutputStream( + new File(TotalFreedomMod.plugin.getDataFolder(), + TotalFreedomMod.PROTECTED_AREA_FILENAME)); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(ProtectedArea.PROTECTED_AREAS); + oos.close(); + fos.close(); + } catch (Exception ex) { + Log.severe(ex); + } + } - @SuppressWarnings("unchecked") - public static void load() - { - if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) - { - return; - } + @SuppressWarnings("unchecked") + public static void load() { + if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) { + return; + } - File input = new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.PROTECTED_AREA_FILENAME); - try - { - if (input.exists()) - { - FileInputStream fis = new FileInputStream(input); - ObjectInputStream ois = new ObjectInputStream(fis); - ProtectedArea.PROTECTED_AREAS.clear(); - ProtectedArea.PROTECTED_AREAS.putAll((HashMap) ois.readObject()); - ois.close(); - fis.close(); - } - } - catch (Exception ex) - { - input.delete(); - Log.severe(ex); - } + File input = new File(TotalFreedomMod.plugin.getDataFolder(), + TotalFreedomMod.PROTECTED_AREA_FILENAME); + try { + if (input.exists()) { + FileInputStream fis = new FileInputStream(input); + ObjectInputStream ois = new ObjectInputStream(fis); + ProtectedArea.PROTECTED_AREAS.clear(); + ProtectedArea.PROTECTED_AREAS.putAll( + (HashMap) ois.readObject()); + ois.close(); + fis.close(); + } + } catch (Exception ex) { + input.delete(); + Log.severe(ex); + } - cleanProtectedAreas(); - } + cleanProtectedAreas(); + } - public static void autoAddSpawnpoints() - { - if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) - { - return; - } + public static void autoAddSpawnpoints() { + if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) { + return; + } - if (ConfigurationEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) - { - for (World world : Bukkit.getWorlds()) - { - ProtectedArea.addProtectedArea("spawn_" + world.getName(), world.getSpawnLocation(), ConfigurationEntry.PROTECTAREA_RADIUS.getDouble()); - } - } - } + if (ConfigurationEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) { + for (World world : Bukkit.getWorlds()) { + ProtectedArea.addProtectedArea("spawn_" + world.getName(), world.getSpawnLocation(), + ConfigurationEntry.PROTECTAREA_RADIUS.getDouble()); + } + } + } - public static class SerializableProtectedRegion implements Serializable - { - private final double x, y, z; - private final double radius; - private final String worldName; - private final UUID worldUUID; - private transient Location location = null; + public static class SerializableProtectedRegion implements Serializable { - public SerializableProtectedRegion(final Location location, final double radius) - { - this.x = location.getX(); - this.y = location.getY(); - this.z = location.getZ(); - this.radius = radius; - this.worldName = location.getWorld().getName(); - this.worldUUID = location.getWorld().getUID(); - this.location = location; - } + private final double x, y, z; + private final double radius; + private final String worldName; + private final UUID worldUUID; + private transient Location location = null; - public Location getLocation() throws CantFindWorldException - { - if (this.location == null) - { - World world = Bukkit.getWorld(this.worldUUID); + public SerializableProtectedRegion(final Location location, final double radius) { + this.x = location.getX(); + this.y = location.getY(); + this.z = location.getZ(); + this.radius = radius; + this.worldName = location.getWorld().getName(); + this.worldUUID = location.getWorld().getUID(); + this.location = location; + } - if (world == null) - { - world = Bukkit.getWorld(this.worldName); - } + public Location getLocation() throws CantFindWorldException { + if (this.location == null) { + World world = Bukkit.getWorld(this.worldUUID); - if (world == null) - { - throw new CantFindWorldException("Can't find world " + this.worldName + ", UUID: " + this.worldUUID.toString()); - } + if (world == null) { + world = Bukkit.getWorld(this.worldName); + } - location = new Location(world, x, y, z); - } - return this.location; - } + if (world == null) { + throw new CantFindWorldException( + "Can't find world " + this.worldName + ", UUID: " + + this.worldUUID.toString()); + } - public double getRadius() - { - return radius; - } + location = new Location(world, x, y, z); + } + return this.location; + } - public static class CantFindWorldException extends Exception - { - private static final long serialVersionUID = 1L; + public double getRadius() { + return radius; + } - public CantFindWorldException(String string) - { - super(string); - } - } - } + public static class CantFindWorldException extends Exception { + + private static final long serialVersionUID = 1L; + + public CantFindWorldException(String string) { + super(string); + } + } + } } diff --git a/src/main/java/me/husky/Database.java b/src/main/java/me/husky/Database.java index 311022b..cb39c48 100644 --- a/src/main/java/me/husky/Database.java +++ b/src/main/java/me/husky/Database.java @@ -4,53 +4,50 @@ import java.sql.Connection; import org.bukkit.plugin.Plugin; /** - * Abstract Database class, serves as a base for any connection method (MySQL, - * SQLite, etc.) + * Abstract Database class, serves as a base for any connection method (MySQL, SQLite, etc.) * * @author -_Husky_- * @author tips48 */ -public abstract class Database -{ +public abstract class Database { - /** - * Plugin instance, use for plugin.getDataFolder() and plugin.getLogger() - */ - protected Plugin plugin; + /** + * Plugin instance, use for plugin.getDataFolder() and plugin.getLogger() + */ + protected Plugin plugin; - /** - * Creates a new Database - * - * @param plugin Plugin instance - */ - protected Database(Plugin plugin) - { - this.plugin = plugin; - } + /** + * Creates a new Database + * + * @param plugin Plugin instance + */ + protected Database(Plugin plugin) { + this.plugin = plugin; + } - /** - * Opens a connection with the database - * - * @return Connection opened - */ - public abstract Connection openConnection(); + /** + * Opens a connection with the database + * + * @return Connection opened + */ + public abstract Connection openConnection(); - /** - * Checks if a connection is open with the database - * - * @return true if a connection is open - */ - public abstract boolean checkConnection(); + /** + * Checks if a connection is open with the database + * + * @return true if a connection is open + */ + public abstract boolean checkConnection(); - /** - * Gets the connection with the database - * - * @return Connection with the database, null if none - */ - public abstract Connection getConnection(); + /** + * Gets the connection with the database + * + * @return Connection with the database, null if none + */ + public abstract Connection getConnection(); - /** - * Closes the connection with the database - */ - public abstract void closeConnection(); + /** + * Closes the connection with the database + */ + public abstract void closeConnection(); } diff --git a/src/main/java/me/husky/mysql/MySQL.java b/src/main/java/me/husky/mysql/MySQL.java index b798801..7445914 100644 --- a/src/main/java/me/husky/mysql/MySQL.java +++ b/src/main/java/me/husky/mysql/MySQL.java @@ -15,154 +15,126 @@ import org.bukkit.plugin.Plugin; * @author -_Husky_- * @author tips48 */ -public class MySQL extends Database -{ +public class MySQL extends Database { - private final String user; - private final String database; - private final String password; - private final String port; - private final String hostname; + private final String user; + private final String database; + private final String password; + private final String port; + private final String hostname; - private Connection connection; + private Connection connection; - /** - * Creates a new MySQL instance - * - * @param plugin Plugin instance - * @param hostname Name of the host - * @param port Port number - * @param database Database name - * @param username Username - * @param password Password - */ - public MySQL(Plugin plugin, String hostname, String port, String database, String username, String password) - { - super(plugin); - this.hostname = hostname; - this.port = port; - this.database = database; - this.user = username; - this.password = password; - this.connection = null; - } + /** + * Creates a new MySQL instance + * + * @param plugin Plugin instance + * @param hostname Name of the host + * @param port Port number + * @param database Database name + * @param username Username + * @param password Password + */ + public MySQL(Plugin plugin, String hostname, String port, String database, String username, + String password) { + super(plugin); + this.hostname = hostname; + this.port = port; + this.database = database; + this.user = username; + this.password = password; + this.connection = null; + } - @Override - public Connection openConnection() - { - try - { - Class.forName("com.mysql.jdbc.Driver"); - connection = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database, this.user, this.password); - } - catch (SQLException e) - { - plugin.getLogger().log(Level.SEVERE, "Could not connect to MySQL server! because: " + e.getMessage()); - } - catch (ClassNotFoundException e) - { - plugin.getLogger().log(Level.SEVERE, "JDBC Driver not found!"); - } - return connection; - } + @Override + public Connection openConnection() { + try { + Class.forName("com.mysql.jdbc.Driver"); + connection = DriverManager.getConnection( + "jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database, this.user, + this.password); + } catch (SQLException e) { + plugin.getLogger() + .log(Level.SEVERE, "Could not connect to MySQL server! because: " + e.getMessage()); + } catch (ClassNotFoundException e) { + plugin.getLogger().log(Level.SEVERE, "JDBC Driver not found!"); + } + return connection; + } - @Override - public boolean checkConnection() - { - return connection != null; - } + @Override + public boolean checkConnection() { + return connection != null; + } - @Override - public Connection getConnection() - { - return connection; - } + @Override + public Connection getConnection() { + return connection; + } - @Override - public void closeConnection() - { - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - plugin.getLogger().log(Level.SEVERE, "Error closing the MySQL Connection!"); - e.printStackTrace(); - } - } - } + @Override + public void closeConnection() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "Error closing the MySQL Connection!"); + e.printStackTrace(); + } + } + } - public ResultSet querySQL(String query) - { - Connection c = null; + public ResultSet querySQL(String query) { + Connection c = null; - if (checkConnection()) - { - c = getConnection(); - } - else - { - c = openConnection(); - } + if (checkConnection()) { + c = getConnection(); + } else { + c = openConnection(); + } - Statement s = null; + Statement s = null; - try - { - s = c.createStatement(); - } - catch (SQLException e1) - { - e1.printStackTrace(); - } + try { + s = c.createStatement(); + } catch (SQLException e1) { + e1.printStackTrace(); + } - ResultSet ret = null; + ResultSet ret = null; - try - { - ret = s.executeQuery(query); - } - catch (SQLException e) - { - e.printStackTrace(); - } + try { + ret = s.executeQuery(query); + } catch (SQLException e) { + e.printStackTrace(); + } - closeConnection(); + closeConnection(); - return ret; - } + return ret; + } - public void updateSQL(String update) - { + public void updateSQL(String update) { - Connection c = null; + Connection c = null; - if (checkConnection()) - { - c = getConnection(); - } - else - { - c = openConnection(); - } + if (checkConnection()) { + c = getConnection(); + } else { + c = openConnection(); + } - Statement s = null; + Statement s = null; - try - { - s = c.createStatement(); - s.executeUpdate(update); - } - catch (SQLException e1) - { - e1.printStackTrace(); - } + try { + s = c.createStatement(); + s.executeUpdate(update); + } catch (SQLException e1) { + e1.printStackTrace(); + } - closeConnection(); + closeConnection(); - } + } } diff --git a/src/main/java/me/husky/sqlite/SQLite.java b/src/main/java/me/husky/sqlite/SQLite.java index 7d7c6fa..81bb85b 100644 --- a/src/main/java/me/husky/sqlite/SQLite.java +++ b/src/main/java/me/husky/sqlite/SQLite.java @@ -14,92 +14,72 @@ import org.bukkit.plugin.Plugin; * * @author tips48 */ -public class SQLite extends Database -{ +public class SQLite extends Database { - private final String dbLocation; + private final String dbLocation; - private Connection connection; + private Connection connection; - /** - * Creates a new SQLite instance - * - * @param plugin Plugin instance - * @param dbLocation Location of the Database (Must end in .db) - */ - public SQLite(Plugin plugin, String dbLocation) - { - super(plugin); - this.dbLocation = dbLocation; - this.connection = null; - } + /** + * Creates a new SQLite instance + * + * @param plugin Plugin instance + * @param dbLocation Location of the Database (Must end in .db) + */ + public SQLite(Plugin plugin, String dbLocation) { + super(plugin); + this.dbLocation = dbLocation; + this.connection = null; + } - @Override - public Connection openConnection() - { - File file = new File(dbLocation); - if (!(file.exists())) - { - try - { - file.createNewFile(); - } - catch (IOException e) - { - plugin.getLogger().log(Level.SEVERE, "Unable to create database!"); - } - } - try - { - Class.forName("org.sqlite.JDBC"); - connection = DriverManager.getConnection("jdbc:sqlite:" + plugin.getDataFolder().toPath() + "/" + dbLocation); - } - catch (SQLException e) - { - plugin.getLogger().log(Level.SEVERE, "Could not connect to SQLite server! because: " + e.getMessage()); - } - catch (ClassNotFoundException e) - { - plugin.getLogger().log(Level.SEVERE, "JDBC Driver not found!"); - } - return connection; - } + @Override + public Connection openConnection() { + File file = new File(dbLocation); + if (!(file.exists())) { + try { + file.createNewFile(); + } catch (IOException e) { + plugin.getLogger().log(Level.SEVERE, "Unable to create database!"); + } + } + try { + Class.forName("org.sqlite.JDBC"); + connection = DriverManager.getConnection( + "jdbc:sqlite:" + plugin.getDataFolder().toPath() + "/" + dbLocation); + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, + "Could not connect to SQLite server! because: " + e.getMessage()); + } catch (ClassNotFoundException e) { + plugin.getLogger().log(Level.SEVERE, "JDBC Driver not found!"); + } + return connection; + } - @Override - public boolean checkConnection() - { - try - { - return connection != null && !connection.isClosed(); - } - catch (SQLException e) - { - e.printStackTrace(); - return false; - } - } + @Override + public boolean checkConnection() { + try { + return connection != null && !connection.isClosed(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } - @Override - public Connection getConnection() - { - return connection; - } + @Override + public Connection getConnection() { + return connection; + } - @Override - public void closeConnection() - { - if (connection != null) - { - try - { - connection.close(); - } - catch (SQLException e) - { - plugin.getLogger().log(Level.SEVERE, "Error closing the SQLite Connection!"); - e.printStackTrace(); - } - } - } + @Override + public void closeConnection() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + plugin.getLogger().log(Level.SEVERE, "Error closing the SQLite Connection!"); + e.printStackTrace(); + } + } + } } diff --git a/src/main/resources/permban.yml b/src/main/resources/permban.yml index 3853cec..ae17613 100644 --- a/src/main/resources/permban.yml +++ b/src/main/resources/permban.yml @@ -3,8 +3,8 @@ # badplayer1: - - 123.123.123.123 - - 321.321.321.321 + - 123.123.123.123 + - 321.321.321.321 badplayer2: - - 111.111.111.111 -badplayer3: [] + - 111.111.111.111 +badplayer3: [ ] diff --git a/src/main/resources/superadmin.yml b/src/main/resources/superadmin.yml index 0dff25e..b03fa74 100644 --- a/src/main/resources/superadmin.yml +++ b/src/main/resources/superadmin.yml @@ -12,9 +12,9 @@ admins: is_senior_admin: true is_telnet_admin: true ips: - - 123.456.789.012 + - 123.456.789.012 console_aliases: - - example + - example last_login: Thu, 1 Jan 1970 00:00:00 +0000 custom_login_message: the &5example&b! # 1156a81a-23fb-435e-9aff-fe9c2ea7e82d: