diff --git a/.idea/misc.xml b/.idea/misc.xml index 43612005..be85aa37 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,10 @@ + + + + + - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 39d73362..7015c4d7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 5.6 + 2020.9 jar @@ -104,6 +104,11 @@ rayzr-repo https://cdn.rawgit.com/Rayzr522/maven-repo/master/ + + + ess-repo + https://ci.ender.zone/plugin/repository/everything/ + @@ -117,14 +122,14 @@ commons-io commons-io - 2.6 + 2.7 compile org.apache.commons commons-lang3 - 3.9 + 3.11 compile @@ -153,6 +158,7 @@ com.github.TFPatches TF-LibsDisguises 0cfa32159a + provided @@ -165,28 +171,28 @@ net.ess3 EssentialsX - 2.16.1 + 2.18.0 provided net.dv8tion JDA - 4.0.0_39 + 4.2.0_168 provided net.coreprotect coreprotect - 2.16.3 + 2.18.2 provided com.sk89q.worldguard worldguard-bukkit - 7.0.2 + 7.0.3 provided @@ -201,6 +207,7 @@ me.rayzr522 jsonmessage 1.0.0 + compile @@ -237,9 +244,10 @@ - com.github.speedxx + com.github.TFPatches TFGuilds - master + ad93b9ed00 + provided @@ -247,6 +255,13 @@ maven-checkstyle-plugin 3.1.1 + + + net.dean.jraw + JRAW + 1.1.0 + provided + @@ -331,7 +346,8 @@ - + + @@ -407,6 +423,7 @@ commons-codec:commons-codec org.reflections:reflections javassist:javassist + me.rayzr522:jsonmessage diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AMP.java b/src/main/java/me/totalfreedom/totalfreedommod/AMP.java new file mode 100644 index 00000000..3bf1de6c --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/AMP.java @@ -0,0 +1,187 @@ +package me.totalfreedom.totalfreedommod; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import joptsimple.internal.Strings; +import lombok.Getter; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; +import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +public class AMP extends FreedomService +{ + + public String URL = ConfigEntry.AMP_URL.getString(); + private String API_URL = URL + "/API/Core"; + private String USERNAME = ConfigEntry.AMP_USERNAME.getString(); + private String PASSWORD = ConfigEntry.AMP_PASSWORD.getString(); + private String SESSION_ID; + + @Getter + private boolean enabled = !Strings.isNullOrEmpty(URL); + + private final List headers = Arrays.asList("Accept:application/json"); + + public void onStart() + { + if (enabled) + { + login(); + } + } + + public void onStop() + { + if (enabled) + { + logout(); + } + } + + public void login() + { + JSONObject json = new JSONObject(); + json.put("username", USERNAME); + json.put("password", PASSWORD); + json.put("token", ""); + json.put("rememberMe", false); + + String response; + try + { + response = FUtil.sendRequest(API_URL + "/Login", "POST", headers, json.toJSONString()); + } + catch (IOException e) + { + e.printStackTrace(); + return; + } + + JSONObject jsonResponse; + try + { + jsonResponse = (JSONObject)new JSONParser().parse(response); + } + catch (ParseException e) + { + e.printStackTrace(); + return; + } + + Object sessionID = jsonResponse.get("sessionID"); + if (sessionID == null) + { + FLog.warning("Invalid AMP credentials have been specified in the config"); + enabled = false; + return; + } + SESSION_ID = sessionID.toString(); + FLog.info("Logged into AMP"); + } + + public void logout() + { + JSONObject json = new JSONObject(); + json.put("SESSIONID", SESSION_ID); + + try + { + FUtil.sendRequest(API_URL + "/Logout", "POST", headers, json.toJSONString()); + } + catch (IOException e) + { + e.printStackTrace(); + return; + } + + FLog.info("Logged out of AMP"); + } + + public void updateAccountStatus(StaffMember staffMember) + { + String username = staffMember.getAmpUsername(); + + if (username == null || !enabled) + { + return; + } + + if (!staffMember.isActive() || staffMember.getRank() != Rank.ADMIN) + { + FLog.debug("Disabling amp acc"); + setAccountEnabled(username, false); + return; + } + + FLog.debug("Enabling amp acc"); + setAccountEnabled(username, true); + } + + public void createAccount(String username, String password) + { + makeAccount(username); + setPassword(username, password); + } + + public void setAccountEnabled(String username, boolean enable) + { + JSONObject json = new JSONObject(); + json.put("Username", username); + json.put("Disabled", !enable); + json.put("PasswordExpires", false); + json.put("CannotChangePassword", false); + json.put("MustChangePassword", false); + json.put("SESSIONID", SESSION_ID); + + try + { + FUtil.sendRequest(API_URL + "/UpdateUserInfo", "POST", headers, json.toJSONString()); + } + catch (IOException e) + { + e.printStackTrace(); + return; + } + } + + private void makeAccount(String username) + { + JSONObject json = new JSONObject(); + json.put("Username", username); + json.put("SESSIONID", SESSION_ID); + + try + { + FUtil.sendRequest(API_URL + "/CreateUser", "POST", headers, json.toJSONString()); + } + catch (IOException e) + { + e.printStackTrace(); + return; + } + } + + public void setPassword(String username, String password) + { + JSONObject json = new JSONObject(); + json.put("Username", username); + json.put("NewPassword", password); + json.put("SESSIONID", SESSION_ID); + + try + { + FUtil.sendRequest(API_URL + "/ResetUserPassword", "POST", headers, json.toJSONString()); + } + catch (IOException e) + { + e.printStackTrace(); + return; + } + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java b/src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java index 54764e87..af015222 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java @@ -62,7 +62,7 @@ public class AntiSpam extends FreedomService { final Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { return; } @@ -109,7 +109,7 @@ public class AntiSpam extends FreedomService return; } - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { return; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java b/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java index e70033d3..e70bbf36 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java @@ -1,15 +1,13 @@ package me.totalfreedom.totalfreedommod; -import com.sk89q.worldedit.bukkit.BukkitConfiguration; import java.io.File; -import me.totalfreedom.totalfreedommod.banning.PermbanList; +import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.permissions.PermissionConfig; import me.totalfreedom.totalfreedommod.punishments.PunishmentList; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.util.FileUtil; -import org.yaml.snakeyaml.Yaml; public class BackupManager extends FreedomService { @@ -31,7 +29,7 @@ public class BackupManager extends FreedomService public void createAllBackups() { createBackups(TotalFreedomMod.CONFIG_FILENAME, true); - createBackups(PermbanList.CONFIG_FILENAME); + createBackups(IndefiniteBanList.CONFIG_FILENAME); createBackups(PermissionConfig.PERMISSIONS_FILENAME, true); createBackups(PunishmentList.CONFIG_FILENAME); createBackups("database.db"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java b/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java index 079ef884..3c9c33bf 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java @@ -1,11 +1,11 @@ package me.totalfreedom.totalfreedommod; import com.google.common.base.Strings; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Displayable; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FSync; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -65,7 +65,7 @@ public class ChatManager extends FreedomService return; } - if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player)) + if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.sl.isStaff(player)) { event.setCancelled(true); playerMsg(player, "Chat is currently disabled.", org.bukkit.ChatColor.RED); @@ -87,10 +87,10 @@ public class ChatManager extends FreedomService return; } - // Check for adminchat - if (fPlayer.inAdminChat()) + // Check for staffchat + if (fPlayer.inStaffChat()) { - FSync.adminChatMessage(player, message); + FSync.staffChatMessage(player, message); event.setCancelled(true); return; } @@ -123,7 +123,7 @@ public class ChatManager extends FreedomService } // Check for mentions - Boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player); + Boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.sl.isStaff(player); for (Player p : server.getOnlinePlayers()) { if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) @@ -136,76 +136,44 @@ public class ChatManager extends FreedomService event.setFormat(format); // Send to discord - if (!ConfigEntry.ADMIN_ONLY_MODE.getBoolean() && !Bukkit.hasWhitelist() && !plugin.pl.getPlayer(player).isMuted() && !plugin.tfg.inGuildChat(player)) + if (!ConfigEntry.STAFF_ONLY_MODE.getBoolean() && !Bukkit.hasWhitelist() && !plugin.pl.getPlayer(player).isMuted() && !plugin.tfg.inGuildChat(player)) { plugin.dc.messageChatChannel(plugin.dc.deformat(player.getName()) + " \u00BB " + ChatColor.stripColor(message)); } } - public ChatColor getColor(Admin admin, Displayable display) + public ChatColor getColor(Displayable display) { ChatColor color = display.getColor(); - if (admin.getOldTags()) - { - - if (color.equals(ChatColor.AQUA)) - { - color = ChatColor.GOLD; - } - else if (color.equals(ChatColor.GOLD)) - { - color = ChatColor.LIGHT_PURPLE; - } - else if (color.equals(ChatColor.DARK_RED)) - { - color = ChatColor.BLUE; - } - } return color; } - public String getColoredTag(Admin admin, Displayable display) + public String getColoredTag(Displayable display) { ChatColor color = display.getColor(); - if (admin.getOldTags()) - { - - if (color.equals(ChatColor.AQUA)) - { - color = ChatColor.GOLD; - } - else if (color.equals(ChatColor.GOLD)) - { - color = ChatColor.LIGHT_PURPLE; - } - else if (color.equals(ChatColor.DARK_RED)) - { - color = ChatColor.BLUE; - } - } return color + display.getAbbr(); } - public void adminChat(CommandSender sender, String message) + public void staffChat(CommandSender sender, String message) { Displayable display = plugin.rm.getDisplay(sender); - FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true); + FLog.info("[STAFF] " + sender.getName() + " " + display.getTag() + ": " + message, true); for (Player player : server.getOnlinePlayers()) { - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { - Admin admin = plugin.al.getAdmin(player); - if (!Strings.isNullOrEmpty(admin.getAcFormat())) + StaffMember staffMember = plugin.sl.getAdmin(player); + if (!Strings.isNullOrEmpty(staffMember.getAcFormat())) { - String format = admin.getAcFormat(); - ChatColor color = getColor(admin, display); + String format = staffMember.getAcFormat(); + ChatColor color = getColor(display); String msg = format.replace("%name%", sender.getName()).replace("%rank%", display.getAbbr()).replace("%rankcolor%", color.toString()).replace("%msg%", message); player.sendMessage(FUtil.colorize(msg)); } else { - player.sendMessage("[" + ChatColor.AQUA + "ADMIN" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + sender.getName() + ChatColor.DARK_GRAY + " [" + getColoredTag(admin, display) + ChatColor.DARK_GRAY + "]" + ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(message)); + player.sendMessage("[" + ChatColor.AQUA + "STAFF" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + sender.getName() + ChatColor.DARK_GRAY + " [" + getColoredTag(display) + ChatColor.DARK_GRAY + "]" + ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(message)); } } } @@ -215,7 +183,7 @@ public class ChatManager extends FreedomService { for (Player player : server.getOnlinePlayers()) { - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { playerMsg(player, ChatColor.RED + "[REPORTS] " + ChatColor.GOLD + reporter.getName() + " has reported " + reported.getName() + " for " + report); FLog.info("[REPORTS] " + reporter.getName() + " has reported " + reported.getName() + " for " + report); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java index 4da218d3..5bc0ddc0 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java @@ -23,9 +23,9 @@ public class CommandSpy extends FreedomService { for (Player player : server.getOnlinePlayers()) { - if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy()) + if (plugin.sl.isStaff(player) && plugin.sl.getAdmin(player).getCommandSpy()) { - if (plugin.al.isAdmin(event.getPlayer()) && !plugin.al.isSeniorAdmin(player)) + if (plugin.sl.isStaff(event.getPlayer()) && !plugin.sl.isAdmin(player)) { continue; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java index d8960ab8..bb13eebf 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java @@ -23,4 +23,34 @@ public class FreedomServiceHandler { return services.size(); } + + public void startServices() + { + for (FreedomService service : getServices()) + { + try + { + service.onStart(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } + + public void stopServices() + { + for (FreedomService service : getServices()) + { + try + { + service.onStop(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index f921bd71..77907ee2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -24,7 +24,6 @@ import org.bukkit.scheduler.BukkitRunnable; public class LoginProcess extends FreedomService { - public static final int DEFAULT_PORT = 25565; public static final int MIN_USERNAME_LENGTH = 2; public static final int MAX_USERNAME_LENGTH = 20; @@ -53,7 +52,7 @@ public class LoginProcess extends FreedomService public void onPlayerPreLogin(AsyncPlayerPreLoginEvent event) { final String ip = event.getAddress().getHostAddress().trim(); - final boolean isAdmin = plugin.al.getEntryByIp(ip) != null; + final boolean isStaff = plugin.sl.getEntryByIp(ip) != null; // Check if the player is already online for (Player onlinePlayer : server.getOnlinePlayers()) @@ -63,10 +62,10 @@ public class LoginProcess extends FreedomService continue; } - if (isAdmin) + if (isStaff) { event.allow(); - FSync.playerKick(onlinePlayer, "An admin just logged in with the username you are using."); + FSync.playerKick(onlinePlayer, "A staff member just logged in with the username you are using."); return; } @@ -113,11 +112,11 @@ public class LoginProcess extends FreedomService } } - // Check if player is admin - final boolean isAdmin = plugin.al.getEntryByIp(ip) != null; + // Check if player is staff + final boolean isStaff = plugin.sl.getEntryByIp(ip) != null; // Validation below this point - if (isAdmin) // Player is admin + if (isStaff) // Player is staff { // Force-allow log in event.allow(); @@ -127,9 +126,9 @@ public class LoginProcess extends FreedomService { for (Player onlinePlayer : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(onlinePlayer)) + if (!plugin.sl.isStaff(onlinePlayer)) { - onlinePlayer.kickPlayer("You have been kicked to free up room for an admin."); + onlinePlayer.kickPlayer("You have been kicked to free up room for a staff member."); count--; } @@ -149,7 +148,7 @@ public class LoginProcess extends FreedomService return; } - // Player is not an admin + // Player is not a staff member // Server full check if (server.getOnlinePlayers().size() >= server.getMaxPlayers()) { @@ -157,10 +156,10 @@ public class LoginProcess extends FreedomService return; } - // Admin-only mode - if (ConfigEntry.ADMIN_ONLY_MODE.getBoolean()) + // Staff-only mode + if (ConfigEntry.STAFF_ONLY_MODE.getBoolean()) { - event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server is temporarily open to admins only."); + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server is temporarily open to staff only."); return; } @@ -226,7 +225,7 @@ public class LoginProcess extends FreedomService player.setPlayerListFooter(FUtil.colorize(ConfigEntry.SERVER_TABLIST_FOOTER.getString()).replace("\\n", "\n")); } - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { String tag = playerData.getTag(); if (tag != null) @@ -244,7 +243,7 @@ public class LoginProcess extends FreedomService FLog.info(noteMessage); for (Player p : server.getOnlinePlayers()) { - if (plugin.al.isAdminImpostor(p)) + if (plugin.sl.isStaffImpostor(p)) { notice.send(p); } @@ -257,9 +256,9 @@ public class LoginProcess extends FreedomService @Override public void run() { - if (ConfigEntry.ADMIN_ONLY_MODE.getBoolean()) + if (ConfigEntry.STAFF_ONLY_MODE.getBoolean()) { - player.sendMessage(ChatColor.RED + "Server is currently closed to non-admins."); + player.sendMessage(ChatColor.RED + "Server is currently closed to non-staff."); } if (lockdownEnabled) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java index 97891bef..203d3e77 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java @@ -45,7 +45,7 @@ public class Muter extends FreedomService return; } - if (plugin.al.isAdminSync(player)) + if (plugin.sl.isStaffSync(player)) { fPlayer.setMuted(false); MUTED_PLAYERS.remove(player.getName()); @@ -70,7 +70,7 @@ public class Muter extends FreedomService } String message = event.getMessage(); - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { fPlayer.setMuted(false); return; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ProtectArea.java b/src/main/java/me/totalfreedom/totalfreedommod/ProtectArea.java deleted file mode 100644 index 9dbcde21..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/ProtectArea.java +++ /dev/null @@ -1,392 +0,0 @@ -package me.totalfreedom.totalfreedommod; - -import com.google.common.collect.Maps; -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.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.util.FLog; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.util.Vector; - -public class ProtectArea extends FreedomService -{ - - public static final String DATA_FILENAME = "protectedareas.dat"; - public static final double MAX_RADIUS = 50.0; - // - private final Map areas = Maps.newHashMap(); - - @Override - public void onStart() - { - if (!ConfigEntry.PROTECTAREA_ENABLED.getBoolean()) - { - return; - } - - File input = new File(plugin.getDataFolder(), DATA_FILENAME); - try - { - if (input.exists()) - { - FileInputStream fis = new FileInputStream(input); - ObjectInputStream ois = new ObjectInputStream(fis); - areas.clear(); - areas.putAll((HashMap)ois.readObject()); - ois.close(); - fis.close(); - } - } - catch (Exception ex) - { - input.delete(); - FLog.severe(ex); - } - - cleanProtectedAreas(); - } - - @Override - public void onStop() - { - save(); - } - - public void save() - { - try - { - FileOutputStream fos = new FileOutputStream(new File(plugin.getDataFolder(), DATA_FILENAME)); - ObjectOutputStream oos = new ObjectOutputStream(fos); - oos.writeObject(areas); - oos.close(); - fos.close(); - } - catch (Exception ex) - { - FLog.severe(ex); - } - } - - @EventHandler(priority = EventPriority.NORMAL) - public void onBlockBreak(BlockBreakEvent event) - { - if (!ConfigEntry.PROTECTAREA_ENABLED.getBoolean()) - { - return; - } - - final Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) - { - return; - } - - final Location location = event.getBlock().getLocation(); - - if (isInProtectedArea(location)) - { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.NORMAL) - public void onBlockPlace(BlockPlaceEvent event) - { - if (!ConfigEntry.PROTECTAREA_ENABLED.getBoolean()) - { - return; - } - - final Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) - { - return; - } - - final Location location = event.getBlock().getLocation(); - - if (isInProtectedArea(location)) - { - event.setCancelled(true); - } - } - - public boolean isInProtectedArea(final Location modifyLocation) - { - boolean doSave = false; - boolean inProtectedArea = false; - - final Iterator> it = areas.entrySet().iterator(); - - 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; - } - - 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(); - } - - return inProtectedArea; - } - - public boolean isInProtectedArea(final Vector min, final Vector max, final String worldName) - { - boolean doSave = false; - boolean inProtectedArea = false; - - final Iterator> it = areas.entrySet().iterator(); - - 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; - } - - if (regionCenter != null) - { - if (worldName.equals(regionCenter.getWorld().getName())) - { - if (cubeIntersectsSphere(min, max, regionCenter.toVector(), region.getRadius())) - { - inProtectedArea = true; - break; - } - } - } - } - - if (doSave) - { - save(); - } - - return inProtectedArea; - } - - private 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()); - } - - return d > 0; - } - - private double square(double v) - { - return v * v; - } - - public void addProtectedArea(String label, Location location, double radius) - { - areas.put(label.toLowerCase(), new SerializableProtectedRegion(location, radius)); - save(); - } - - public void removeProtectedArea(String label) - { - areas.remove(label.toLowerCase()); - save(); - } - - public void clearProtectedAreas() - { - clearProtectedAreas(true); - } - - public void clearProtectedAreas(boolean createSpawnpointProtectedAreas) - { - areas.clear(); - - if (createSpawnpointProtectedAreas) - { - autoAddSpawnpoints(); - } - - save(); - } - - public void cleanProtectedAreas() - { - boolean doSave = false; - - final Iterator> it = areas.entrySet().iterator(); - - while (it.hasNext()) - { - try - { - it.next().getValue().getLocation(); - } - catch (SerializableProtectedRegion.CantFindWorldException ex) - { - it.remove(); - doSave = true; - } - } - - if (doSave) - { - save(); - } - } - - public Set getProtectedAreaLabels() - { - return areas.keySet(); - } - - public void autoAddSpawnpoints() - { - if (!ConfigEntry.PROTECTAREA_ENABLED.getBoolean()) - { - return; - } - - if (ConfigEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) - { - for (World world : Bukkit.getWorlds()) - { - addProtectedArea("spawn_" + world.getName(), world.getSpawnLocation(), ConfigEntry.PROTECTAREA_RADIUS.getDouble()); - } - } - } - - public static class SerializableProtectedRegion implements Serializable - { - - private static final long serialVersionUID = 213123517828282L; - private final double x, y, z; - private final double radius; - private final String worldName; - private final UUID worldUUID; - private transient Location location = null; - - 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; - } - - public Location getLocation() throws CantFindWorldException - { - if (this.location == null) - { - World world = Bukkit.getWorld(this.worldUUID); - - if (world == null) - { - world = Bukkit.getWorld(this.worldName); - } - - if (world == null) - { - throw new CantFindWorldException("Can't find world " + this.worldName + ", UUID: " + this.worldUUID.toString()); - } - - location = new Location(world, x, y, z); - } - return this.location; - } - - public double getRadius() - { - return radius; - } - - public class CantFindWorldException extends Exception - { - - private static final long serialVersionUID = 1L; - - public CantFindWorldException(String string) - { - super(string); - } - } - - } - -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Reddit.java b/src/main/java/me/totalfreedom/totalfreedommod/Reddit.java new file mode 100644 index 00000000..fa0ae291 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/Reddit.java @@ -0,0 +1,223 @@ +package me.totalfreedom.totalfreedommod; + +import com.google.common.base.Strings; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.player.PlayerData; +import me.totalfreedom.totalfreedommod.rank.Displayable; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.Title; +import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; +import net.dean.jraw.ApiException; +import net.dean.jraw.RedditClient; +import net.dean.jraw.http.OkHttpNetworkAdapter; +import net.dean.jraw.http.UserAgent; +import net.dean.jraw.models.CurrentFlair; +import net.dean.jraw.models.Flair; +import net.dean.jraw.oauth.Credentials; +import net.dean.jraw.oauth.OAuthHelper; +import net.dean.jraw.references.SubredditReference; +import org.bukkit.entity.Player; + +public class Reddit extends FreedomService +{ + private final String SUBREDDIT_NAME = ConfigEntry.REDDIT_SUBREDDIT_NAME.getString(); + private final String USERNAME = ConfigEntry.REDDIT_USERNAME.getString(); + private final String PASSWORD = ConfigEntry.REDDIT_PASSWORD.getString(); + private final String CLIENT_ID = ConfigEntry.REDDIT_CLIENT_ID.getString(); + private final String CLIENT_SECRET = ConfigEntry.REDDIT_CLIENT_SECRET.getString(); + + private final UserAgent userAgent = new UserAgent("bot", "me.totalfreedom.reddit", plugin.build.version, USERNAME); + private final Credentials credentials = Credentials.script(USERNAME, PASSWORD, CLIENT_ID, CLIENT_SECRET); + + private RedditClient reddit = null; + private SubredditReference subreddit = null; + + private HashMap linkCodes = new HashMap<>(); + private HashMap pending = new HashMap<>(); + + private Map flairList = new HashMap<>(); + + private Map flairNameList = new HashMap<>(); + + private List noFlairDisplays = Arrays.asList(Title.VERIFIED_STAFF, Rank.IMPOSTOR, Rank.NON_OP, Rank.OP); + + public boolean enabled = false; + + @Override + public void onStart() + { + enabled = ConfigEntry.REDDIT_CLIENT_ID.getString() == null; + if (!enabled) + { + return; + } + + if (reddit == null) + { + try + { + reddit = OAuthHelper.automatic(new OkHttpNetworkAdapter(userAgent), credentials); + reddit.setLogHttp(FUtil.inDeveloperMode()); + } + catch (NoClassDefFoundError e) + { + FLog.warning("The JRAW plugin is not installed, therefore the Reddit service cannot start."); + FLog.warning("To resolve this error, please download the latest JRAW from: https://github.com/TFPatches/Minecraft-JRAW/releases"); + enabled = false; + return; + } + catch (NullPointerException e) + { + FLog.warning("Invalid Reddit credentials specified, please double check everything in the config."); + enabled = false; + return; + } + } + + if (subreddit == null) + { + subreddit = reddit.subreddit(SUBREDDIT_NAME); + } + + loadFlairList(); + } + + @Override + public void onStop() + { + } + + public void setFlair(String username, String flairID) + { + List flairs = subreddit.userFlairOptions(); + Flair flair = null; + for (Flair f : flairs) + { + if (f.getId().equals(flairID)) + { + flair = f; + break; + } + } + + if (flair == null) + { + return; + } + + subreddit.otherUserFlair(username).updateToTemplate(flair.getId(), ""); + } + + public void removeFlair(String username) + { + subreddit.otherUserFlair(username).updateToTemplate("", ""); + } + + public void sendModMessage(String username, String subject, String body) throws ApiException + { + reddit.me().inbox().compose("/r/" + SUBREDDIT_NAME, username, subject, body); + } + + public String addLinkCode(PlayerData data, String username) + { + String code = FUtil.randomAlphanumericString(10); + linkCodes.put(code, data); + pending.put(data, username); + return code; + } + + public String checkLinkCode(String code) + { + PlayerData data = linkCodes.get(code); + String username = pending.get(data); + if (data == null || username == null) + { + return null; + } + + linkCodes.remove(code); + pending.remove(data); + + data.setRedditUsername(username); + plugin.pl.save(data); + + return username; + } + + public boolean updateFlair(Player player) + { + if (!enabled) + { + return false; + } + + PlayerData data = plugin.pl.getData(player); + String username = data.getRedditUsername(); + Displayable display = plugin.rm.getDisplay(player); + if (username == null) + { + FLog.debug("No Reddit account"); + return false; + } + + CurrentFlair currentFlair = subreddit.otherUserFlair(username).current(); + String currentFlairName = currentFlair.getText(); + String currentFlairID = currentFlair.getId(); + String neededFlairID = flairList.get(display); + String neededFlairName = flairNameList.get(display); + + FLog.debug("Current ID: " + currentFlairID); + FLog.debug("Needed ID: " + neededFlairID); + + FLog.debug("Current Name: " + currentFlairName); + FLog.debug("Needed Name: " + neededFlairName); + + + // Work around + //if (currentFlairID == null && neededFlairID != null || currentFlairID != null && neededFlairID != null && !currentFlairID.equals(neededFlairID)) + if (Strings.isNullOrEmpty(currentFlairName) && neededFlairName != null || !Strings.isNullOrEmpty(currentFlairName) && neededFlairName != null && !currentFlairName.equals(neededFlairName)) + { + FLog.debug("Setting flair"); + setFlair(username, neededFlairID); + return true; + } + + if (noFlairDisplays.contains(display) && !Strings.isNullOrEmpty(currentFlairName)) + { + FLog.debug("Removing flair"); + removeFlair(username); + return true; + } + + return false; + } + + public void loadFlairList() + { + flairList.put(Title.OWNER, ConfigEntry.REDDIT_SERVER_OWNER_FLAIR_ID.getString()); + flairList.put(Title.EXECUTIVE, ConfigEntry.REDDIT_EXECUTIVE_FLAIR_ID.getString()); + flairList.put(Title.ASSISTANT_EXECUTIVE, ConfigEntry.REDDIT_ASSISTANT_EXECUTIVE_FLAIR_ID.getString()); + flairList.put(Title.DEVELOPER, ConfigEntry.REDDIT_DEVELOPER_FLAIR_ID.getString()); + flairList.put(Rank.ADMIN, ConfigEntry.REDDIT_ADMIN_FLAIR_ID.getString()); + flairList.put(Rank.MOD, ConfigEntry.REDDIT_MOD_FLAIR_ID.getString()); + flairList.put(Rank.TRIAL_MOD, ConfigEntry.REDDIT_TRIAL_MOD_FLAIR_ID.getString()); + flairList.put(Title.MASTER_BUILDER, ConfigEntry.REDDIT_MASTER_BUILDER_FLAIR_ID.getString()); + flairList.put(Title.DONATOR, ConfigEntry.REDDIT_DONATOR_FLAIR_ID.getString()); + + // Work around because the current flair id keeps returning null, either a JRAW bug or a reddit bug + flairNameList.put(Title.OWNER, "Server Owner"); + flairNameList.put(Title.EXECUTIVE, "Executive"); + flairNameList.put(Title.ASSISTANT_EXECUTIVE, "Assistant Executive"); + flairNameList.put(Title.DEVELOPER, "Developer"); + flairNameList.put(Rank.ADMIN, "Admin"); + flairNameList.put(Rank.MOD, "Mod"); + flairNameList.put(Rank.TRIAL_MOD, "Trial Mod"); + flairNameList.put(Title.MASTER_BUILDER, "Master Builder"); + flairNameList.put(Title.DONATOR, "Premium"); + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java b/src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java index a5a91ab8..e87f8005 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java @@ -30,9 +30,9 @@ public class ServerPing extends FreedomService return; } - if (ConfigEntry.ADMIN_ONLY_MODE.getBoolean()) + if (ConfigEntry.STAFF_ONLY_MODE.getBoolean()) { - event.setMotd(FUtil.colorize(ConfigEntry.SERVER_ADMINMODE_MOTD.getString())); + event.setMotd(FUtil.colorize(ConfigEntry.SERVER_STAFFMODE_MOTD.getString())); return; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index c14763a0..a0381323 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -3,11 +3,8 @@ package me.totalfreedom.totalfreedommod; import java.io.File; import java.io.InputStream; import java.util.Properties; -import java.util.Set; -import me.totalfreedom.totalfreedommod.admin.ActivityLog; -import me.totalfreedom.totalfreedommod.admin.AdminList; import me.totalfreedom.totalfreedommod.banning.BanManager; -import me.totalfreedom.totalfreedommod.banning.PermbanList; +import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.blocking.BlockBlocker; import me.totalfreedom.totalfreedommod.blocking.EditBlocker; import me.totalfreedom.totalfreedommod.blocking.EventBlocker; @@ -27,7 +24,6 @@ import me.totalfreedom.totalfreedommod.bridge.WorldEditBridge; import me.totalfreedom.totalfreedommod.bridge.WorldGuardBridge; import me.totalfreedom.totalfreedommod.caging.Cager; import me.totalfreedom.totalfreedommod.command.CommandLoader; -import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.config.MainConfig; import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.freeze.Freezer; @@ -46,6 +42,8 @@ import me.totalfreedom.totalfreedommod.rank.RankManager; import me.totalfreedom.totalfreedommod.shop.Shop; import me.totalfreedom.totalfreedommod.shop.Votifier; import me.totalfreedom.totalfreedommod.sql.SQLite; +import me.totalfreedom.totalfreedommod.staff.ActivityLog; +import me.totalfreedom.totalfreedommod.staff.StaffList; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.MethodTimer; @@ -57,17 +55,17 @@ import org.bukkit.Bukkit; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; -import org.reflections.Reflections; import org.spigotmc.SpigotConfig; public class TotalFreedomMod extends JavaPlugin { private static TotalFreedomMod plugin; + public static TotalFreedomMod getPlugin() { return plugin; } + public static final String CONFIG_FILENAME = "config.yml"; // public static final BuildProperties build = new BuildProperties(); @@ -87,7 +85,7 @@ public class TotalFreedomMod extends JavaPlugin public SavedFlags sf; public WorldManager wm; public LogViewer lv; - public AdminList al; + public StaffList sl; public ActivityLog acl; public RankManager rm; public CommandBlocker cb; @@ -108,9 +106,9 @@ public class TotalFreedomMod extends JavaPlugin public Discord dc; public PunishmentList pul; public BanManager bm; - public PermbanList pm; + public IndefiniteBanList im; public PermissionManager pem; - public ProtectArea pa; + public Reddit rd; public GameRuleHandler gr; public CommandSpy cs; public Cager ca; @@ -137,6 +135,7 @@ public class TotalFreedomMod extends JavaPlugin public EntityWiper ew; public Sitter st; public VanishHandler vh; + public AMP amp; //public HubWorldRestrictions hwr; // @@ -185,17 +184,17 @@ public class TotalFreedomMod extends JavaPlugin config = new MainConfig(); config.load(); + if (FUtil.inDeveloperMode()) + { + FLog.debug("Developer mode enabled."); + } + cl = new CommandLoader(); cl.loadCommands(); BackupManager backups = new BackupManager(); backups.createAllBackups(); - if (FUtil.inDeveloperMode()) - { - FLog.debug("Developer mode enabled."); - } - permissions = new PermissionConfig(this); permissions.load(); @@ -205,7 +204,7 @@ public class TotalFreedomMod extends JavaPlugin wm = new WorldManager(); lv = new LogViewer(); sql = new SQLite(); - al = new AdminList(); + sl = new StaffList(); acl = new ActivityLog(); rm = new RankManager(); cb = new CommandBlocker(); @@ -226,14 +225,15 @@ public class TotalFreedomMod extends JavaPlugin dc = new Discord(); pul = new PunishmentList(); bm = new BanManager(); - pm = new PermbanList(); + im = new IndefiniteBanList(); pem = new PermissionManager(); - pa = new ProtectArea(); + rd = new Reddit(); gr = new GameRuleHandler(); snp = new SignBlocker(); ew = new EntityWiper(); st = new Sitter(); vh = new VanishHandler(); + amp = new AMP(); // Single admin utils cs = new CommandSpy(); @@ -271,28 +271,16 @@ public class TotalFreedomMod extends JavaPlugin fab = new FAWEBridge(); wgb = new WorldGuardBridge(); - for (FreedomService service : fsh.getServices()) - { - service.onStart(); - } + fsh.startServices(); - FLog.info("Started " + fsh.getServiceAmount() + "services."); + FLog.info("Started " + fsh.getServiceAmount() + " services."); timer.update(); FLog.info("Version " + pluginVersion + " for " + ServerInterface.COMPILE_NMS_VERSION + " enabled in " + timer.getTotal() + "ms"); - // Metrics @ https://bstats.org/plugin/bukkit/TotalFreedomMod - new Metrics(this); + // Metrics @ https://bstats.org/plugin/bukkit/TotalFreedomMod/2966 + new Metrics(this, 2966); - // Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438 - new BukkitRunnable() - { - @Override - public void run() - { - plugin.pa.autoAddSpawnpoints(); - } - }.runTaskLater(plugin, 60L); // little workaround to stop spigot from autorestarting - causing AMP to detach from process. SpigotConfig.config.set("settings.restart-on-crash", false); } @@ -301,10 +289,7 @@ public class TotalFreedomMod extends JavaPlugin public void onDisable() { // Stop services and bridges - for (FreedomService service : fsh.getServices()) - { - service.onStop(); - } + fsh.stopServices(); getServer().getScheduler().cancelTasks(plugin); @@ -313,7 +298,6 @@ public class TotalFreedomMod extends JavaPlugin public static class BuildProperties { - public String author; public String codename; public String version; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java index 7d1e586d..d08cbfda 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java @@ -31,7 +31,7 @@ public class VanishHandler extends FreedomService for (Player p : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player) && plugin.al.isVanished(p.getName())) + if (!plugin.sl.isAdmin(player) && plugin.sl.isVanished(p.getName())) { player.hidePlayer(plugin, p); } @@ -39,17 +39,17 @@ public class VanishHandler extends FreedomService for (Player p : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(p) && plugin.al.isVanished(player.getName())) + if (!plugin.sl.isAdmin(p) && plugin.sl.isVanished(player.getName())) { p.hidePlayer(plugin, player); } } - if (plugin.al.isVanished(player.getName())) + if (plugin.sl.isVanished(player.getName())) { plugin.esb.setVanished(player.getName(), true); FLog.info(player.getName() + " joined while still vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has joined silently."); + plugin.sl.messageAllStaff(ChatColor.YELLOW + player.getName() + " has joined silently."); event.setJoinMessage(null); new BukkitRunnable() @@ -57,7 +57,7 @@ public class VanishHandler extends FreedomService @Override public void run() { - if (!plugin.al.isVanished(player.getName())) + if (!plugin.sl.isVanished(player.getName())) { this.cancel(); } @@ -73,11 +73,11 @@ public class VanishHandler extends FreedomService { Player player = event.getPlayer(); - if (plugin.al.isVanished(player.getName())) + if (plugin.sl.isVanished(player.getName())) { event.setQuitMessage(null); FLog.info(player.getName() + " left while still vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has left silently."); + plugin.sl.messageAllStaff(ChatColor.YELLOW + player.getName() + " has left silently."); } } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java deleted file mode 100644 index 8d2f5b54..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java +++ /dev/null @@ -1,370 +0,0 @@ -package me.totalfreedom.totalfreedommod.admin; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import lombok.Getter; -import me.totalfreedom.totalfreedommod.FreedomService; -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FLog; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class AdminList extends FreedomService -{ - @Getter - private final Set allAdmins = Sets.newHashSet(); // Includes disabled admins - // Only active admins below - @Getter - private final Set activeAdmins = Sets.newHashSet(); - private final Map nameTable = Maps.newHashMap(); - private final Map ipTable = Maps.newHashMap(); - public final List verifiedNoAdmins = new ArrayList<>(); - public final Map> verifiedNoAdminIps = Maps.newHashMap(); - public static List vanished = new ArrayList<>(); - - @Override - public void onStart() - { - load(); - deactivateOldEntries(false); - } - - @Override - public void onStop() - { - } - - public void load() - { - allAdmins.clear(); - try - { - ResultSet adminSet = plugin.sql.getAdminList(); - { - while (adminSet.next()) - { - Admin admin = new Admin(adminSet); - allAdmins.add(admin); - } - } - } - catch (SQLException e) - { - FLog.severe("Failed to load adminlist: " + e.getMessage()); - } - - updateTables(); - FLog.info("Loaded " + allAdmins.size() + " admins (" + nameTable.size() + " active, " + ipTable.size() + " IPs)"); - } - - public void messageAllAdmins(String message) - { - for (Player player : server.getOnlinePlayers()) - { - if (isAdmin(player)) - { - player.sendMessage(message); - } - } - } - - public synchronized boolean isAdminSync(CommandSender sender) - { - return isAdmin(sender); - } - - public List getActiveAdminNames() - { - List names = new ArrayList(); - for (Admin admin : activeAdmins) - { - names.add(admin.getName()); - } - return names; - } - - public boolean isAdmin(CommandSender sender) - { - if (!(sender instanceof Player)) - { - return true; - } - - Admin admin = getAdmin((Player)sender); - - return admin != null && admin.isActive(); - } - - public boolean isTelnetAdmin(CommandSender sender) - { - Admin admin = getAdmin(sender); - if (admin == null) - { - return false; - } - - return admin.getRank().ordinal() >= Rank.TELNET_ADMIN.ordinal(); - } - - public boolean isSeniorAdmin(CommandSender sender) - { - Admin admin = getAdmin(sender); - if (admin == null) - { - return false; - } - - return admin.getRank().ordinal() >= Rank.SENIOR_ADMIN.ordinal(); - } - - public Admin getAdmin(CommandSender sender) - { - if (sender instanceof Player) - { - return getAdmin((Player)sender); - } - - return getEntryByName(sender.getName()); - } - - public Admin getAdmin(Player player) - { - // Find admin - String ip = FUtil.getIp(player); - Admin admin = getEntryByName(player.getName()); - - // Admin by name - if (admin != null) - { - // Check if we're in online mode, - // Or the players IP is in the admin entry - if (Bukkit.getOnlineMode() || admin.getIps().contains(ip)) - { - if (!admin.getIps().contains(ip)) - { - // Add the new IP if we have to - admin.addIp(ip); - save(admin); - updateTables(); - } - return admin; - } - } - - // Admin by ip - admin = getEntryByIp(ip); - if (admin != null) - { - // Set the new username - String oldName = admin.getName(); - admin.setName(player.getName()); - plugin.sql.updateAdminName(oldName, admin.getName()); - updateTables(); - } - - return null; - } - - public Admin getEntryByName(String name) - { - return nameTable.get(name.toLowerCase()); - } - - public Admin getEntryByIp(String ip) - { - return ipTable.get(ip); - } - - public Admin getEntryByIpFuzzy(String needleIp) - { - final Admin directAdmin = getEntryByIp(needleIp); - if (directAdmin != null) - { - return directAdmin; - } - - for (String ip : ipTable.keySet()) - { - if (FUtil.fuzzyIpMatch(needleIp, ip, 3)) - { - return ipTable.get(ip); - } - } - - return null; - } - - public void updateLastLogin(Player player) - { - final Admin admin = getAdmin(player); - if (admin == null) - { - return; - } - - admin.setLastLogin(new Date()); - admin.setName(player.getName()); - save(admin); - } - - public boolean isAdminImpostor(Player player) - { - return getEntryByName(player.getName()) != null && !isAdmin(player) && !isVerifiedAdmin(player); - } - - public boolean isVerifiedAdmin(Player player) - { - return verifiedNoAdmins.contains(player.getName()) && verifiedNoAdminIps.get(player.getName()).contains(FUtil.getIp(player)); - } - - public boolean isIdentityMatched(Player player) - { - if (Bukkit.getOnlineMode()) - { - return true; - } - - Admin admin = getAdmin(player); - return admin == null ? false : admin.getName().equalsIgnoreCase(player.getName()); - } - - public boolean addAdmin(Admin admin) - { - if (!admin.isValid()) - { - logger.warning("Could not add admin: " + admin.getName() + " Admin is missing details!"); - return false; - } - - // Store admin, update views - allAdmins.add(admin); - updateTables(); - - // Save admin - plugin.sql.addAdmin(admin); - - return true; - } - - public boolean removeAdmin(Admin admin) - { - if (admin.getRank().isAtLeast(Rank.TELNET_ADMIN)) - { - if (plugin.btb != null) - { - plugin.btb.killTelnetSessions(admin.getName()); - } - } - - // Remove admin, update views - if (!allAdmins.remove(admin)) - { - return false; - } - updateTables(); - - // Unsave admin - plugin.sql.removeAdmin(admin); - - return true; - } - - public void updateTables() - { - activeAdmins.clear(); - nameTable.clear(); - ipTable.clear(); - - for (Admin admin : allAdmins) - { - if (!admin.isActive()) - { - continue; - } - - activeAdmins.add(admin); - nameTable.put(admin.getName().toLowerCase(), admin); - - for (String ip : admin.getIps()) - { - ipTable.put(ip, admin); - } - - } - } - - public Set getAdminNames() - { - return nameTable.keySet(); - } - - public Set getAdminIps() - { - return ipTable.keySet(); - } - - public void save(Admin admin) - { - try - { - ResultSet currentSave = plugin.sql.getAdminByName(admin.getName()); - for (Map.Entry entry : admin.toSQLStorable().entrySet()) - { - Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); - if (storedValue != null && !storedValue.equals(entry.getValue()) || storedValue == null && entry.getValue() != null || entry.getValue() == null) - { - plugin.sql.setAdminValue(admin, entry.getKey(), entry.getValue()); - } - } - } - catch (SQLException e) - { - FLog.severe("Failed to save admin: " + e.getMessage()); - } - } - - public void deactivateOldEntries(boolean verbose) - { - for (Admin admin : allAdmins) - { - if (!admin.isActive() || admin.getRank().isAtLeast(Rank.SENIOR_ADMIN)) - { - continue; - } - - final Date lastLogin = admin.getLastLogin(); - final long lastLoginHours = TimeUnit.HOURS.convert(new Date().getTime() - lastLogin.getTime(), TimeUnit.MILLISECONDS); - - if (lastLoginHours < ConfigEntry.ADMINLIST_CLEAN_THESHOLD_HOURS.getInteger()) - { - continue; - } - - if (verbose) - { - FUtil.adminAction("TotalFreedomMod", "Deactivating admin " + admin.getName() + ", inactive for " + lastLoginHours + " hours", true); - } - - admin.setActive(false); - save(admin); - } - - updateTables(); - } - - public boolean isVanished(String player) - { - return vanished.contains(player); - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java index 11a56c04..0dc1e56e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java @@ -10,17 +10,16 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.UUID; import lombok.Getter; import lombok.Setter; import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.config.IConfig; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -public class Ban implements IConfig +public class Ban { public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd \'at\' HH:mm:ss z"); @@ -29,6 +28,9 @@ public class Ban implements IConfig @Setter private String username = null; @Getter + @Setter + private UUID uuid = null; + @Getter private final List ips = Lists.newArrayList(); @Getter @Setter @@ -47,9 +49,10 @@ public class Ban implements IConfig { } - public Ban(String username, String ip, String by, Date at, Date expire, String reason) + public Ban(String username, UUID uuid, String ip, String by, Date at, Date expire, String reason) { this(username, + uuid, Arrays.asList(ip), by, at, @@ -57,9 +60,10 @@ public class Ban implements IConfig reason); } - public Ban(String username, List ips, String by, Date at, Date expire, String reason) + public Ban(String username, UUID uuid, List ips, String by, Date at, Date expire, String reason) { this.username = username; + this.uuid = uuid; if (ips != null) { this.ips.addAll(ips); @@ -80,12 +84,12 @@ public class Ban implements IConfig public static Ban forPlayerIp(Player player, CommandSender by, Date expiry, String reason) { - return new Ban(null, Arrays.asList(FUtil.getIp(player)), by.getName(), Date.from(Instant.now()), expiry, reason); + return new Ban(null, null, Arrays.asList(FUtil.getIp(player)), by.getName(), Date.from(Instant.now()), expiry, reason); } public static Ban forPlayerIp(String ip, CommandSender by, Date expiry, String reason) { - return new Ban(null, ip, by.getName(), Date.from(Instant.now()), expiry, reason); + return new Ban(null, null, ip, by.getName(), Date.from(Instant.now()), expiry, reason); } // @@ -98,7 +102,8 @@ public class Ban implements IConfig public static Ban forPlayerName(String player, CommandSender by, Date expiry, String reason) { return new Ban(player, - new ArrayList(), + null, + new ArrayList<>(), by.getName(), Date.from(Instant.now()), expiry, @@ -115,6 +120,7 @@ public class Ban implements IConfig public static Ban forPlayer(Player player, CommandSender by, Date expiry, String reason) { return new Ban(player.getName(), + player.getUniqueId(), FUtil.getIp(player), by.getName(), Date.from(Instant.now()), @@ -125,6 +131,7 @@ public class Ban implements IConfig public static Ban forPlayerFuzzy(Player player, CommandSender by, Date expiry, String reason) { return new Ban(player.getName(), + player.getUniqueId(), FUtil.getFuzzyIp(FUtil.getIp(player)), by.getName(), Date.from(Instant.now()), @@ -137,6 +144,11 @@ public class Ban implements IConfig return username != null && !username.isEmpty(); } + public boolean hasUUID() + { + return uuid != null; + } + public boolean addIp(String ip) { return ips.add(ip); @@ -238,31 +250,6 @@ public class Ban implements IConfig return !(hasUsername() && !(getUsername().equalsIgnoreCase(ban.getUsername()))); } - @Override - public int hashCode() - { - int hash = 7; - hash = 79 * hash + (this.username != null ? this.username.toLowerCase().hashCode() : 0); - hash = 79 * hash + (this.ips != null ? this.ips.hashCode() : 0); - return hash; - } - - @Override - public void loadFrom(ConfigurationSection cs) - { - } - - @Override - public void saveTo(ConfigurationSection cs) - { - } - - @Override - public boolean isValid() - { - return username != null || !ips.isEmpty(); - } - private void dedupeIps() { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java index 76ee3c27..c07a3979 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java @@ -12,6 +12,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.UUID; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; @@ -27,8 +28,9 @@ public class BanManager extends FreedomService { private final Set bans = Sets.newHashSet(); - private final Map ipBans = Maps.newHashMap(); private final Map nameBans = Maps.newHashMap(); + private final Map uuidBans = Maps.newHashMap(); + private final Map ipBans = Maps.newHashMap(); private final List unbannableUsernames = Lists.newArrayList(); // @@ -44,12 +46,18 @@ public class BanManager extends FreedomService while (banSet.next()) { String name = banSet.getString("name"); + UUID uuid = null; + String strUUID = banSet.getString("uuid"); + if (strUUID != null) + { + uuid = UUID.fromString(strUUID); + } List ips = FUtil.stringToList(banSet.getString("ips")); String by = banSet.getString("by"); Date at = new Date(banSet.getLong("at")); Date expires = new Date(banSet.getLong("expires")); String reason = banSet.getString("reason"); - Ban ban = new Ban(name, ips, by, at, expires, reason); + Ban ban = new Ban(name, uuid, ips, by, at, expires, reason); bans.add(ban); } } @@ -136,6 +144,18 @@ public class BanManager extends FreedomService return null; } + public Ban getByUUID(UUID uuid) + { + final Ban directBan = uuidBans.get(uuid); + + if (directBan != null && !directBan.isExpired()) + { + return directBan; + } + + return null; + } + public Ban unbanIp(String ip) { final Ban ban = getByIp(ip); @@ -224,13 +244,19 @@ public class BanManager extends FreedomService public void onPlayerLogin(PlayerLoginEvent event) { final String username = event.getPlayer().getName(); + final UUID uuid = event.getPlayer().getUniqueId(); final String ip = FUtil.getIp(event); // Regular ban Ban ban = getByUsername(username); if (ban == null) { - ban = getByIp(ip); + ban = getByUUID(uuid); + + if (ban == null) + { + ban = getByIp(ip); + } } if (ban != null && !ban.isExpired()) @@ -245,7 +271,7 @@ public class BanManager extends FreedomService final Player player = event.getPlayer(); final PlayerData data = plugin.pl.getData(player); - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { return; } @@ -279,6 +305,7 @@ public class BanManager extends FreedomService } nameBans.clear(); + uuidBans.clear(); ipBans.clear(); for (Ban ban : bans) { @@ -287,6 +314,11 @@ public class BanManager extends FreedomService nameBans.put(ban.getUsername().toLowerCase(), ban); } + if (ban.hasUUID()) + { + uuidBans.put(ban.getUuid(), ban); + } + if (ban.hasIps()) { for (String ip : ban.getIps()) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java new file mode 100644 index 00000000..1e3efcbe --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java @@ -0,0 +1,63 @@ +package me.totalfreedom.totalfreedommod.banning; + +import com.google.common.collect.Lists; +import java.util.List; +import java.util.UUID; +import lombok.Getter; +import lombok.Setter; +import me.totalfreedom.totalfreedommod.config.IConfig; +import me.totalfreedom.totalfreedommod.util.FLog; +import org.bukkit.configuration.ConfigurationSection; + +public class IndefiniteBan implements IConfig +{ + + @Getter + @Setter + private String username = null; + @Getter + @Setter + private UUID uuid = null; + @Getter + private final List ips = Lists.newArrayList(); + @Getter + @Setter + private String reason = null; + + public IndefiniteBan() + { + } + + @Override + public void loadFrom(ConfigurationSection cs) + { + this.username = cs.getName(); + try + { + String strUUID = cs.getString("uuid", null); + if (strUUID != null) + { + UUID uuid = UUID.fromString(strUUID); + this.uuid = uuid; + } + } + catch (IllegalArgumentException e) + { + FLog.warning("Failed to load indefinite banned UUID for " + this.username + ". Make sure the UUID is in the correct format with dashes."); + } + this.ips.clear(); + this.ips.addAll(cs.getStringList("ips")); + this.reason = cs.getString("reason", null); + } + + @Override + public void saveTo(ConfigurationSection cs) + { + } + + @Override + public boolean isValid() + { + return username != null; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBanList.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBanList.java new file mode 100644 index 00000000..042cdf75 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBanList.java @@ -0,0 +1,140 @@ +package me.totalfreedom.totalfreedommod.banning; + +import com.google.common.base.Strings; +import com.google.common.collect.Sets; +import java.util.Set; +import java.util.UUID; +import lombok.Getter; +import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.config.YamlConfig; +import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.ChatColor; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerLoginEvent; + +public class IndefiniteBanList extends FreedomService +{ + + public static final String CONFIG_FILENAME = "indefinitebans.yml"; + + @Getter + private final Set indefBans = Sets.newHashSet(); + + @Getter + private int nameBanCount = 0; + + @Getter + private int uuidBanCount = 0; + + @Getter + private int ipBanCount = 0; + + @Override + public void onStart() + { + indefBans.clear(); + + final YamlConfig config = new YamlConfig(plugin, CONFIG_FILENAME, true); + config.load(); + + for (String name : config.getKeys(false)) + { + if (!config.isConfigurationSection(name)) + { + FLog.warning("Could not load indefinite ban for " + name + ": Invalid format!"); + continue; + } + + IndefiniteBan indefBan = new IndefiniteBan(); + ConfigurationSection cs = config.getConfigurationSection(name); + indefBan.loadFrom(cs); + + if (!indefBan.isValid()) + { + FLog.warning("Not adding indefinite ban for " + name + ": Missing information."); + continue; + } + + indefBans.add(indefBan); + } + + updateCount(); + + FLog.info("Loaded " + nameBanCount + " indefinite name bans, " + uuidBanCount + " UUID bans, and " + ipBanCount + " ip bans"); + } + + @Override + public void onStop() + { + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerLogin(PlayerLoginEvent event) + { + final String username = event.getPlayer().getName(); + final UUID uuid = event.getPlayer().getUniqueId(); + final String ip = FUtil.getIp(event); + + String bannedBy = ""; + IndefiniteBan ban = null; + + for (IndefiniteBan indefBan : indefBans) + { + if (username.toLowerCase().equals(indefBan.getUsername().toLowerCase())) + { + bannedBy = "username"; + ban = indefBan; + break; + } + else if (indefBan.getUuid() != null && indefBan.getUuid().equals(uuid)) + { + bannedBy = "UUID"; + ban = indefBan; + break; + } + else if (indefBan.getIps().contains(ip)) + { + bannedBy = "IP address"; + ban = indefBan; + break; + } + } + + if (ban != null) + { + String kickMessage = ChatColor.RED + "Your " + bannedBy + " is indefinitely banned from this server."; + String reason = ban.getReason(); + if (!Strings.isNullOrEmpty(reason)) + { + kickMessage += "\nReason: " + ChatColor.GOLD + reason; + } + String appealURL = ConfigEntry.SERVER_INDEFBAN_URL.getString(); + if (!Strings.isNullOrEmpty(appealURL)) + { + kickMessage += ChatColor.RED + "\n\nRelease procedures are available at\n" + ChatColor.GOLD + ConfigEntry.SERVER_INDEFBAN_URL.getString(); + } + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, kickMessage); + } + } + + private void updateCount() + { + nameBanCount = 0; + uuidBanCount = 0; + ipBanCount = 0; + + for (IndefiniteBan indefBan : indefBans) + { + nameBanCount += 1; + if (indefBan.getUuid() != null) + { + uuidBanCount += 1; + } + ipBanCount += indefBan.getIps().size(); + } + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/PermbanList.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/PermbanList.java deleted file mode 100644 index 7265bab6..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/PermbanList.java +++ /dev/null @@ -1,92 +0,0 @@ -package me.totalfreedom.totalfreedommod.banning; - -import com.google.common.collect.Sets; -import java.util.Set; -import lombok.Getter; -import me.totalfreedom.totalfreedommod.FreedomService; -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.config.YamlConfig; -import me.totalfreedom.totalfreedommod.util.FLog; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerLoginEvent; - -public class PermbanList extends FreedomService -{ - - public static final String CONFIG_FILENAME = "permbans.yml"; - - @Getter - private final Set permbannedNames = Sets.newHashSet(); - @Getter - private final Set permbannedIps = Sets.newHashSet(); - - @Override - public void onStart() - { - permbannedNames.clear(); - permbannedIps.clear(); - - final YamlConfig config = new YamlConfig(plugin, CONFIG_FILENAME, true); - config.load(); - - for (String name : config.getKeys(false)) - { - permbannedNames.add(name.toLowerCase().trim()); - permbannedIps.addAll(config.getStringList(name)); - } - - FLog.info("Loaded " + permbannedIps.size() + " perm IP bans and " + permbannedNames.size() + " perm username bans."); - } - - @Override - public void onStop() - { - } - - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerLogin(PlayerLoginEvent event) - { - final String username = event.getPlayer().getName(); - final String ip = FUtil.getIp(event); - - // Permbanned IPs - for (String testIp : getPermbannedIps()) - { - if (FUtil.fuzzyIpMatch(testIp, ip, 4)) - { - event.disallow(PlayerLoginEvent.Result.KICK_OTHER, - ChatColor.RED + "Your IP address is permanently banned from this server.\n" - + "Release procedures are available at\n" - + ChatColor.GOLD + ConfigEntry.SERVER_PERMBAN_URL.getString()); - return; - } - } - - // Permbanned usernames - for (String testPlayer : getPermbannedNames()) - { - if (testPlayer.equalsIgnoreCase(username)) - { - event.disallow(PlayerLoginEvent.Result.KICK_OTHER, - ChatColor.RED + "Your username is permanently banned from this server.\n" - + "Release procedures are available at\n" - + ChatColor.GOLD + ConfigEntry.SERVER_PERMBAN_URL.getString()); - return; - } - } - - } - - public Set getPermbannedNames() - { - return this.permbannedNames; - } - - public Set getPermbannedIps() - { - return this.permbannedIps; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java index 0a7217e0..a27c4248 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java @@ -30,7 +30,7 @@ public class EditBlocker extends FreedomService return; } - if (plugin.al.isAdminSync(event.getPlayer())) + if (plugin.sl.isStaffSync(event.getPlayer())) { fPlayer.setEditBlocked(false); return; @@ -49,7 +49,7 @@ public class EditBlocker extends FreedomService return; } - if (plugin.al.isAdminSync(event.getPlayer())) + if (plugin.sl.isStaffSync(event.getPlayer())) { fPlayer.setEditBlocked(false); return; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java index 9917d90e..0e774701 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java @@ -11,13 +11,21 @@ import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; import org.bukkit.block.data.AnaloguePowerable; -import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Powerable; import org.bukkit.entity.Entity; import org.bukkit.entity.Tameable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.block.*; +import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockDispenseEvent; +import org.bukkit.event.block.BlockFromToEvent; +import org.bukkit.event.block.BlockGrowEvent; +import org.bukkit.event.block.BlockIgniteEvent; +import org.bukkit.event.block.BlockPhysicsEvent; +import org.bukkit.event.block.BlockPistonExtendEvent; +import org.bukkit.event.block.BlockPistonRetractEvent; +import org.bukkit.event.block.BlockRedstoneEvent; +import org.bukkit.event.block.LeavesDecayEvent; import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; @@ -27,7 +35,6 @@ import org.bukkit.event.entity.FireworkExplodeEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.material.Redstone; public class EventBlocker extends FreedomService { @@ -141,7 +148,7 @@ public class EventBlocker extends FreedomService @EventHandler(priority = EventPriority.NORMAL) public void onPlayerDropItem(PlayerDropItemEvent event) { - if (!plugin.al.isAdmin(event.getPlayer())) + if (!plugin.sl.isStaff(event.getPlayer())) { event.setCancelled(true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java index f33e740b..b2dfadb2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java @@ -5,7 +5,6 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.block.Biome; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -91,7 +90,7 @@ public class InteractBlocker extends FreedomService { case WATER_BUCKET: { - if (plugin.al.isAdmin(player) || ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) + if (plugin.sl.isStaff(player) || ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) { break; } @@ -104,7 +103,7 @@ public class InteractBlocker extends FreedomService case LAVA_BUCKET: { - if (plugin.al.isAdmin(player) || ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) + if (plugin.sl.isStaff(player) || ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) { break; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java index b6efd382..de388454 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java @@ -61,7 +61,7 @@ public class PVPBlocker extends FreedomService } } - if (player != null & !plugin.al.isAdmin(player)) + if (player != null & !plugin.sl.isStaff(player)) { if (player.getGameMode() == GameMode.CREATIVE) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlocker.java index a0414fa2..0f19a90e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlocker.java @@ -12,6 +12,7 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandMap; import org.bukkit.command.CommandSender; @@ -19,7 +20,6 @@ import org.bukkit.command.SimpleCommandMap; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.Bukkit; import org.bukkit.plugin.SimplePluginManager; public class CommandBlocker extends FreedomService @@ -171,7 +171,7 @@ public class CommandBlocker extends FreedomService for (String part : commandParts) { - if (command.startsWith("/") && !plugin.al.isAdmin(sender) && (part.contains("#copy") || part.contains("#clipboard"))) + if (command.startsWith("/") && !plugin.sl.isStaff(sender) && (part.contains("#copy") || part.contains("#clipboard"))) { FUtil.playerMsg(sender, "WorldEdit copy variables are disabled."); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java index 84f7b6eb..cfb6e03c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java @@ -1,8 +1,8 @@ package me.totalfreedom.totalfreedommod.blocking.command; import me.totalfreedom.totalfreedommod.TotalFreedomMod; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -40,10 +40,10 @@ public enum CommandBlockerRank return TELNET; } - Admin admin = TotalFreedomMod.plugin().al.getAdmin(sender); - if (admin != null) + StaffMember staffMember = TotalFreedomMod.plugin().sl.getAdmin(sender); + if (staffMember != null) { - if (admin.getRank() == Rank.SENIOR_ADMIN) + if (staffMember.getRank() == Rank.ADMIN) { return SENIOR; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java index 607ad49d..f791e2ee 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java @@ -10,8 +10,8 @@ import me.totalfreedom.bukkittelnet.api.TelnetPreLoginEvent; import me.totalfreedom.bukkittelnet.api.TelnetRequestDataTagsEvent; import me.totalfreedom.bukkittelnet.session.ClientSession; import me.totalfreedom.totalfreedommod.FreedomService; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -43,15 +43,15 @@ public class BukkitTelnetBridge extends FreedomService return; } - final Admin admin = plugin.al.getEntryByIpFuzzy(ip); + final StaffMember staffMember = plugin.sl.getEntryByIpFuzzy(ip); - if (admin == null || !admin.isActive() || !admin.getRank().hasConsoleVariant()) + if (staffMember == null || !staffMember.isActive() || !staffMember.getRank().hasConsoleVariant()) { return; } event.setBypassPassword(true); - event.setName(admin.getName()); + event.setName(staffMember.getName()); } @EventHandler(priority = EventPriority.NORMAL) @@ -77,14 +77,14 @@ public class BukkitTelnetBridge extends FreedomService boolean isTelnetAdmin = false; boolean isSeniorAdmin = false; - final Admin admin = plugin.al.getAdmin(player); - if (admin != null) + final StaffMember staffMember = plugin.sl.getAdmin(player); + if (staffMember != null) { - boolean active = admin.isActive(); + boolean active = staffMember.isActive(); isAdmin = active; - isSeniorAdmin = active && admin.getRank() == Rank.SENIOR_ADMIN; - isTelnetAdmin = active && (isSeniorAdmin || admin.getRank() == Rank.TELNET_ADMIN); + isSeniorAdmin = active && staffMember.getRank() == Rank.ADMIN; + isTelnetAdmin = active && (isSeniorAdmin || staffMember.getRank() == Rank.MOD); } playerTags.put("tfm.admin.isAdmin", isAdmin); @@ -121,22 +121,22 @@ public class BukkitTelnetBridge extends FreedomService return bukkitTelnetPlugin; } - public List getConnectedAdmins() + public List getConnectedAdmins() { - List admins = new ArrayList<>(); + List staffMembers = new ArrayList<>(); final BukkitTelnet telnet = getBukkitTelnetPlugin(); if (telnet != null) { for (ClientSession session : telnet.appender.getSessions()) { - Admin admin = plugin.al.getEntryByName(session.getUserName().toLowerCase()); - if (admin != null && !admins.contains(admin)) + StaffMember staffMember = plugin.sl.getEntryByName(session.getUserName().toLowerCase()); + if (staffMember != null && !staffMembers.contains(staffMember)) { - admins.add(admin); + staffMembers.add(staffMember); } } } - return admins; + return staffMembers; } public void killTelnetSessions(final String name) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java index 20cc105e..bf3cdca0 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java @@ -1,16 +1,15 @@ package me.totalfreedom.totalfreedommod.bridge; +import me.libraryaddict.disguise.BlockedDisguises; import me.libraryaddict.disguise.DisguiseAPI; import me.libraryaddict.disguise.LibsDisguises; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.util.FLog; -import me.libraryaddict.disguise.BlockedDisguises; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; public class LibsDisguisesBridge extends FreedomService { - private LibsDisguises libsDisguisesPlugin = null; @Override @@ -64,7 +63,7 @@ public class LibsDisguisesBridge extends FreedomService return null; } - public void undisguiseAll(boolean admins) + public void undisguiseAll(boolean staff) { try { @@ -79,7 +78,7 @@ public class LibsDisguisesBridge extends FreedomService { if (DisguiseAPI.isDisguised(player)) { - if (!admins && plugin.al.isAdmin(player)) + if (!staff && plugin.sl.isStaff(player)) { continue; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java b/src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java index f006955c..504d9f72 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java @@ -31,7 +31,7 @@ public class Cager extends FreedomService { Player player = event.getPlayer(); if (player == null - || plugin.al.isAdmin(player)) + || plugin.sl.isStaff(player)) { return; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java index 9da62dee..fd11e02d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java @@ -65,7 +65,6 @@ public class CommandLoader extends FreedomService { try { - FLog.debug("Loading command class " + commandClass.getSimpleName()); add(commandClass.newInstance()); } catch (InstantiationException | IllegalAccessException | ExceptionInInitializerError ex) @@ -73,10 +72,7 @@ public class CommandLoader extends FreedomService FLog.warning("Failed to register command: /" + commandClass.getSimpleName().replace("Command_" , "")); } } - } - public int getCommandAmount() - { - return commands.size(); + FLog.info("Loaded " + commands.size() + " commands"); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java index b5b00c9c..3db48004 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java @@ -8,7 +8,7 @@ import me.totalfreedom.totalfreedommod.rank.Rank; public @interface CommandPermissions { - Rank level() default Rank.IMPOSTOR; + Rank level() default Rank.NON_OP; SourceType source() default SourceType.BOTH; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java index 1252dce1..49736cd2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java @@ -28,7 +28,7 @@ public class Command_adventure extends FreedomCommand return true; } - checkRank(Rank.SUPER_ADMIN); + checkRank(Rank.TRIAL_MOD); if (args[0].equals("-a")) { @@ -37,7 +37,7 @@ public class Command_adventure extends FreedomCommand targetPlayer.setGameMode(GameMode.ADVENTURE); } - FUtil.adminAction(sender.getName(), "Changing everyone's gamemode to adventure", false); + FUtil.staffAction(sender.getName(), "Changing everyone's gamemode to adventure", false); msg("Your gamemode has been set to adventure."); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java index 3127abbf..5fc4ba28 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java @@ -9,7 +9,7 @@ import org.bukkit.entity.AreaEffectCloud; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Clears lingering potion area effect clouds.", usage = "/", aliases = "aec") public class Command_aeclear extends FreedomCommand { @@ -17,7 +17,7 @@ public class Command_aeclear extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - FUtil.adminAction(sender.getName(), "Removing all area effect clouds.", true); + FUtil.staffAction(sender.getName(), "Removing all area effect clouds.", true); int removed = 0; for (World world : server.getWorlds()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_amp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_amp.java new file mode 100644 index 00000000..edaf44ef --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_amp.java @@ -0,0 +1,101 @@ +package me.totalfreedom.totalfreedommod.command; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import me.totalfreedom.totalfreedommod.player.PlayerData; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Manage your AMP account", usage = "/ ") +public class Command_amp extends FreedomCommand +{ + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + + if (!plugin.amp.isEnabled()) + { + msg("AMP integration is currently disabled.", ChatColor.RED); + return true; + } + + PlayerData playerData = getData(playerSender); + + if (playerData.getDiscordID() == null) + { + msg("You must have a linked discord account.", ChatColor.RED); + return true; + } + + if (args.length == 0) + { + return false; + } + + if (args[0].equals("create")) + { + msg("Creating your AMP account...", ChatColor.GREEN); + StaffMember staffMember = getAdmin(playerSender); + + if (staffMember.getAmpUsername() != null) + { + msg("You already have an AMP account.", ChatColor.RED); + return true; + } + + String username = sender.getName(); + String password = FUtil.randomString(30); + + staffMember.setAmpUsername(username); + plugin.sl.save(staffMember); + plugin.sl.updateTables(); + + plugin.amp.createAccount(username, password); + plugin.dc.sendAMPInfo(playerData, username, password); + msg("Successfully created your AMP account. Check your DMs from " + plugin.dc.formatBotTag() + " on discord to get your credentials.", ChatColor.GREEN); + return true; + } + else if (args[0].equals("resetpassword")) + { + StaffMember staffMember = getAdmin(playerSender); + + if (staffMember.getAmpUsername() == null) + { + msg("You do not have an AMP account.", ChatColor.RED); + return true; + } + + msg("Resetting your password...", ChatColor.GREEN); + + String username = staffMember.getAmpUsername(); + String password = FUtil.randomString(30); + plugin.amp.setPassword(username,password); + plugin.dc.sendAMPInfo(playerData, username, password); + + msg("Successfully reset your AMP account password. Check your DMs from " + plugin.dc.formatBotTag() + " on discord to get your credentials.", ChatColor.GREEN); + return true; + } + + return false; + } + + @Override + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) + { + if (args.length == 1 && plugin.sl.isAdmin(sender)) + { + return Arrays.asList("create", "resetpassword"); + } + + return Collections.emptyList(); + } + +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java index 4abaf2b0..8e216bc1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.MOD, source = SourceType.BOTH) @CommandParameters(description = "Make an announcement anonymously to operators.", usage = "/ ") public class Command_announce extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java index 66aa34f5..37a74954 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java @@ -5,7 +5,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Toggle whether or not a player has their inventory automatically cleared when they join", usage = "/ ") public class Command_autoclear extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java index f52e82b5..5b50a5f5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java @@ -5,7 +5,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Toggle whether or not a player is automatically teleported when they join", usage = "/ ") public class Command_autotp extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java index dce660e1..e29e4595 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java @@ -18,11 +18,10 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH, blockHostConsole = true) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH, blockHostConsole = true) @CommandParameters(description = "Bans the specified player.", usage = "/ [reason] [-nrb | -q]", aliases = "gtfo") public class Command_ban extends FreedomCommand { - @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { @@ -105,7 +104,10 @@ public class Command_ban extends FreedomCommand } } } - + else + { + msg("Banned " + player.getName() + " quietly."); + } // Kill player player.setHealth(0.0); } @@ -122,7 +124,17 @@ public class Command_ban extends FreedomCommand } // Ban player - Ban ban = Ban.forPlayerName(username, sender, null, reason); + Ban ban; + + if (player != null) + { + ban = Ban.forPlayer(player, sender, null, reason); + } + else + { + ban = Ban.forPlayerName(username, sender, null, reason); + } + for (String ip : ips) { ban.addIp(ip); @@ -142,7 +154,7 @@ public class Command_ban extends FreedomCommand bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason); } msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + StringUtils.join(ips, ", ")); - FUtil.adminAction(sender.getName(), String.format(bcast.toString()), true); + FUtil.staffAction(sender.getName(), String.format(bcast.toString()), true); } // Kick player and handle others on IP @@ -163,4 +175,4 @@ public class Command_ban extends FreedomCommand return true; } -} \ No newline at end of file +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java index 272960cc..7a408d2a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java @@ -11,7 +11,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH, blockHostConsole = true) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH, blockHostConsole = true) @CommandParameters(description = "Bans the specified ip.", usage = "/ [reason] [-q]") public class Command_banip extends FreedomCommand { @@ -72,7 +72,7 @@ public class Command_banip extends FreedomCommand { // Broadcast FLog.info(ChatColor.RED + sender.getName() + " - Banned the IP " + ip); - String message = ChatColor.RED + sender.getName() + " - Banned " + (plugin.al.isAdmin(player) ? "the IP " + ip : "an IP"); + String message = ChatColor.RED + sender.getName() + " - Banned " + (plugin.sl.isStaff(player) ? "the IP " + ip : "an IP"); player.sendMessage(message); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java index b16883a2..de81d15e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java @@ -7,7 +7,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows all banned player names. Senior Admins may optionally use 'purge' to clear the list.", usage = "/ [purge]") +@CommandParameters(description = "Shows all banned player names. Admins may optionally use 'purge' to clear the list.", usage = "/ [purge]") public class Command_banlist extends FreedomCommand { @@ -18,23 +18,19 @@ public class Command_banlist extends FreedomCommand { if (args[0].equalsIgnoreCase("purge")) { - checkRank(Rank.SENIOR_ADMIN); + checkRank(Rank.ADMIN); - FUtil.adminAction(sender.getName(), "Purging the ban list", true); + FUtil.staffAction(sender.getName(), "Purging the ban list", true); int amount = plugin.bm.purge(); msg("Purged " + amount + " player bans."); - return true; - } - return false; } msg(plugin.bm.getAllBans().size() + " player bans (" + plugin.bm.getUsernameBans().size() + " usernames, " + plugin.bm.getIpBans().size() + " IPs)"); - return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banname.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banname.java index 2c6c977d..0d0ccd70 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banname.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banname.java @@ -10,7 +10,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH, blockHostConsole = true) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH, blockHostConsole = true) @CommandParameters(description = "Bans the specified name.", usage = "/ [reason] [-q]") public class Command_banname extends FreedomCommand { @@ -55,7 +55,7 @@ public class Command_banname extends FreedomCommand if (!silent) { - FUtil.adminAction(sender.getName(), "Banned the name " + name, true); + FUtil.staffAction(sender.getName(), "Banned the name " + name, true); } Player player = getPlayer(name); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java index 32a42f8f..73c536d9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java @@ -8,7 +8,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Block all commands for everyone on the server, or a specific player.", usage = "/ <-a | purge | >", aliases = "blockcommands,blockcommand,bc,bcmd") public class Command_blockcmd extends FreedomCommand { @@ -23,7 +23,7 @@ public class Command_blockcmd extends FreedomCommand if (args[0].equals("purge")) { - FUtil.adminAction(sender.getName(), "Unblocking commands for all players", true); + FUtil.staffAction(sender.getName(), "Unblocking commands for all players", true); int counter = 0; for (Player player : server.getOnlinePlayers()) { @@ -40,18 +40,18 @@ public class Command_blockcmd extends FreedomCommand if (args[0].equals("-a")) { - FUtil.adminAction(sender.getName(), "Blocking commands for all non-admins", true); + FUtil.staffAction(sender.getName(), "Blocking commands for all non-staff", true); int counter = 0; for (Player player : server.getOnlinePlayers()) { - if (isAdmin(player)) + if (isStaff(player)) { continue; } counter += 1; plugin.pl.getPlayer(player).setCommandsBlocked(true); - msg(player, "Your commands have been blocked by an admin.", ChatColor.RED); + msg(player, "Your commands have been blocked by a staff member.", ChatColor.RED); } msg("Blocked commands for " + counter + " players."); @@ -66,9 +66,9 @@ public class Command_blockcmd extends FreedomCommand return true; } - if (isAdmin(player)) + if (isStaff(player)) { - msg(player.getName() + " is an admin, and cannot have their commands blocked."); + msg(player.getName() + " is a staff member, and cannot have their commands blocked."); return true; } @@ -76,7 +76,7 @@ public class Command_blockcmd extends FreedomCommand if (!playerdata.allCommandsBlocked()) { playerdata.setCommandsBlocked(true); - FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Blocking all commands for " + player.getName(), true); msg("Blocked commands for " + player.getName() + "."); } else diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java index 70b9f15d..466a340f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java @@ -10,7 +10,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Restricts/unrestricts block modification abilities for everyone on the server or a certain player.", usage = "/ [[-s] [reason] | list | purge | all]") public class Command_blockedit extends FreedomCommand { @@ -46,7 +46,7 @@ public class Command_blockedit extends FreedomCommand if (args[0].equals("purge")) { - FUtil.adminAction(sender.getName(), "Unblocking block modification abilities for all players.", true); + FUtil.staffAction(sender.getName(), "Unblocking block modification abilities for all players.", true); int count = 0; for (final Player player : this.server.getOnlinePlayers()) { @@ -63,11 +63,11 @@ public class Command_blockedit extends FreedomCommand if (args[0].equals("all")) { - FUtil.adminAction(sender.getName(), "Blocking block modification abilities for all non-admins.", true); + FUtil.staffAction(sender.getName(), "Blocking block modification abilities for all non-staff.", true); int counter = 0; for (final Player player : this.server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { final FPlayer playerdata = plugin.pl.getPlayer(player); playerdata.setEditBlocked(true); @@ -105,20 +105,20 @@ public class Command_blockedit extends FreedomCommand final FPlayer pd = plugin.pl.getPlayer(player2); if (pd.isEditBlocked()) { - FUtil.adminAction(sender.getName(), "Unblocking block modification abilities for " + player2.getName(), true); + FUtil.staffAction(sender.getName(), "Unblocking block modification abilities for " + player2.getName(), true); pd.setEditBlocked(false); msg("Unblocking block modification abilities for " + player2.getName()); msg(player2, "Your block modification abilities have been restored.", ChatColor.RED); } else { - if (plugin.al.isAdmin(player2)) + if (plugin.sl.isStaff(player2)) { - msg(player2.getName() + " is an admin, and cannot have their block edits blocked."); + msg(player2.getName() + " is a staff member, and cannot have their block edits blocked."); return true; } - FUtil.adminAction(sender.getName(), "Blocking block modification abilities for " + player2.getName(), true); + FUtil.staffAction(sender.getName(), "Blocking block modification abilities for " + player2.getName(), true); pd.setEditBlocked(true); if (smite) @@ -131,4 +131,4 @@ public class Command_blockedit extends FreedomCommand } return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java index d9393dcb..0c6e70cd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java @@ -10,7 +10,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Toggle PVP mode for everyone or a certain player.", usage = "/ [[-s] [reason] | list | purge | all]", aliases = "pvpblock,pvpmode") public class Command_blockpvp extends FreedomCommand { @@ -46,7 +46,7 @@ public class Command_blockpvp extends FreedomCommand if (args[0].equals("purge")) { - FUtil.adminAction(sender.getName(), "Enabling PVP for all players.", true); + FUtil.staffAction(sender.getName(), "Enabling PVP for all players.", true); int count = 0; for (Player player : server.getOnlinePlayers()) { @@ -64,11 +64,11 @@ public class Command_blockpvp extends FreedomCommand if (args[0].equals("all")) { - FUtil.adminAction(sender.getName(), "Disabling PVP for all non-admins", true); + FUtil.staffAction(sender.getName(), "Disabling PVP for all non-staff", true); int counter = 0; for (Player player : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { final FPlayer playerdata = plugin.pl.getPlayer(player); playerdata.setPvpBlocked(true); @@ -106,20 +106,20 @@ public class Command_blockpvp extends FreedomCommand final FPlayer pd = plugin.pl.getPlayer(p); if (pd.isPvpBlocked()) { - FUtil.adminAction(sender.getName(), "Enabling PVP for " + p.getName(), true); + FUtil.staffAction(sender.getName(), "Enabling PVP for " + p.getName(), true); pd.setPvpBlocked(false); msg("Enabling PVP for " + p.getName()); msg(p, "Your PVP have been enabled.", ChatColor.GREEN); } else { - if (plugin.al.isAdmin(p)) + if (plugin.sl.isStaff(p)) { - msg(p.getName() + " is an admin, and cannot have their PVP disabled."); + msg(p.getName() + " is a staff member, and cannot have their PVP disabled."); return true; } - FUtil.adminAction(sender.getName(), "Disabling PVP for " + p.getName(), true); + FUtil.staffAction(sender.getName(), "Disabling PVP for " + p.getName(), true); pd.setPvpBlocked(true); if (smite) { @@ -131,4 +131,4 @@ public class Command_blockpvp extends FreedomCommand } return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java index 312abcce..1dfc7a43 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java @@ -8,7 +8,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Blocks redstone on the server.", usage = "/", aliases = "bre") public class Command_blockredstone extends FreedomCommand { @@ -18,14 +18,14 @@ public class Command_blockredstone extends FreedomCommand if (ConfigEntry.ALLOW_REDSTONE.getBoolean()) { ConfigEntry.ALLOW_REDSTONE.setBoolean(false); - FUtil.adminAction(sender.getName(), "Blocking all redstone", true); + FUtil.staffAction(sender.getName(), "Blocking all redstone", true); new BukkitRunnable() { public void run() { if (!ConfigEntry.ALLOW_REDSTONE.getBoolean()) { - FUtil.adminAction("TotalFreedom", "Unblocking all redstone", false); + FUtil.staffAction("TotalFreedom", "Unblocking all redstone", false); ConfigEntry.ALLOW_REDSTONE.setBoolean(true); } } @@ -34,7 +34,7 @@ public class Command_blockredstone extends FreedomCommand else { ConfigEntry.ALLOW_REDSTONE.setBoolean(true); - FUtil.adminAction(sender.getName(), "Unblocking all redstone", true); + FUtil.staffAction(sender.getName(), "Unblocking all redstone", true); } return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java index df4f1eba..95535a5f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -15,7 +15,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Place a cage around someone with certain blocks, or someone's player head.", usage = "/ [head | block] [playername | blockname]") public class Command_cage extends FreedomCommand { @@ -30,7 +30,7 @@ public class Command_cage extends FreedomCommand String skullName = null; if ("purge".equals(args[0])) { - FUtil.adminAction(sender.getName(), "Uncaging all players", true); + FUtil.staffAction(sender.getName(), "Uncaging all players", true); for (Player player : server.getOnlinePlayers()) { final FPlayer fPlayer = plugin.pl.getPlayer(player); @@ -101,11 +101,11 @@ public class Command_cage extends FreedomCommand if (outerMaterial == Material.PLAYER_HEAD) { - FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); + FUtil.staffAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); } else { - FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Caging " + player.getName(), true); } return true; } @@ -113,7 +113,7 @@ public class Command_cage extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return null; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java index 9b38f804..03e63bd2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java @@ -10,7 +10,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.MOD, source = SourceType.BOTH) @CommandParameters(description = "For the people that are still alive - gives a cake to everyone on the server.", usage = "/") public class Command_cake extends FreedomCommand { @@ -32,7 +32,7 @@ public class Command_cake extends FreedomCommand heldItemMeta.setDisplayName(ChatColor.WHITE + "The " + ChatColor.DARK_GRAY + "Lie"); heldItem.setItemMeta(heldItemMeta); - for (final Player player : this.server.getOnlinePlayers()) + for (Player player : server.getOnlinePlayers()) { final int firstEmpty = player.getInventory().firstEmpty(); if (firstEmpty >= 0) @@ -44,4 +44,4 @@ public class Command_cake extends FreedomCommand FUtil.bcastMsg(output.toString()); return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java index fe66cdd4..722c4a1b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java @@ -16,7 +16,7 @@ public class Command_cartsit extends FreedomCommand { Player targetPlayer = playerSender; - if (args.length == 1 && plugin.al.isAdmin(sender)) + if (args.length == 1 && plugin.sl.isStaff(sender)) { targetPlayer = getPlayer(args[0]); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java index 35ed9dee..f6d590ed 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Clears the chat.", usage = "/", aliases = "cc") public class Command_clearchat extends FreedomCommand { @@ -16,7 +16,7 @@ public class Command_clearchat extends FreedomCommand { for (Player player : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { for (int i = 0; i < 100; i++) { @@ -24,7 +24,7 @@ public class Command_clearchat extends FreedomCommand } } } - FUtil.adminAction(sender.getName(), "Cleared chat", true); + FUtil.staffAction(sender.getName(), "Cleared chat", true); return true; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleardiscordqueue.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleardiscordqueue.java index 8346fb70..a9b0b152 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleardiscordqueue.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleardiscordqueue.java @@ -5,7 +5,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) @CommandParameters(description = "Clear the discord message queue.", usage = "/") public class Command_cleardiscordqueue extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java index f005d52f..e946d2bc 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java @@ -29,11 +29,11 @@ public class Command_clearinventory extends FreedomCommand } else { - if (plugin.al.isAdmin(sender)) + if (plugin.sl.isStaff(sender)) { if (args[0].equals("-a")) { - FUtil.adminAction(sender.getName(), "Clearing everyone's inventory", true); + FUtil.staffAction(sender.getName(), "Clearing everyone's inventory", true); for (Player player : server.getOnlinePlayers()) { player.getInventory().clear(); @@ -67,7 +67,7 @@ public class Command_clearinventory extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (args.length == 1 && plugin.al.isAdmin(sender)) + if (args.length == 1 && plugin.sl.isStaff(sender)) { List players = FUtil.getPlayerList(); players.add("-a"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java index 6a6a8f8c..d67ef7f2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java @@ -1,12 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Spy on commands", usage = "/", aliases = "commandspy") public class Command_cmdspy extends FreedomCommand { @@ -14,11 +14,11 @@ public class Command_cmdspy extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Admin admin = plugin.al.getAdmin(playerSender); - admin.setCommandSpy(!admin.getCommandSpy()); - msg("CommandSpy " + (admin.getCommandSpy() ? "enabled." : "disabled.")); - plugin.al.save(admin); - plugin.al.updateTables(); + StaffMember staffMember = plugin.sl.getAdmin(playerSender); + staffMember.setCommandSpy(!staffMember.getCommandSpy()); + msg("CommandSpy " + (staffMember.getCommandSpy() ? "enabled." : "disabled.")); + plugin.sl.save(staffMember); + plugin.sl.updateTables(); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java index 745e20ed..6193e32c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java @@ -8,7 +8,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_CONSOLE) +@CommandPermissions(level = Rank.MOD, source = SourceType.ONLY_CONSOLE) @CommandParameters(description = "Telnet/Console command - Send a chat message with chat formatting over telnet.", usage = "/ ", aliases = "csay") public class Command_consolesay extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java index 764981f4..aec2d717 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java @@ -11,7 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.MOD, source = SourceType.BOTH) @CommandParameters(description = "For those who have no friends - gives a cookie to everyone on the server.", usage = "/") public class Command_cookie extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java index c81edfab..92bf02ee 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java @@ -28,7 +28,7 @@ public class Command_creative extends FreedomCommand return true; } - checkRank(Rank.SUPER_ADMIN); + checkRank(Rank.TRIAL_MOD); if (args[0].equals("-a")) { @@ -37,7 +37,7 @@ public class Command_creative extends FreedomCommand targetPlayer.setGameMode(GameMode.CREATIVE); } - FUtil.adminAction(sender.getName(), "Changing everyone's gamemode to creative", false); + FUtil.staffAction(sender.getName(), "Changing everyone's gamemode to creative", false); msg("Your gamemode has been set to creative."); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_curse.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_curse.java index c17b9eea..85f81ac6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_curse.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_curse.java @@ -9,7 +9,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Curse someone - sends a cursed texture pack to the specified player.", usage = "/ ") public class Command_curse extends FreedomCommand { @@ -57,7 +57,7 @@ public class Command_curse extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (args.length == 1 && plugin.al.isAdmin(sender) && FUtil.isExecutive(sender.getName())) + if (args.length == 1 && plugin.sl.isStaff(sender) && FUtil.isExecutive(sender.getName())) { return FUtil.getPlayerList(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java index a03aacb0..cd395cfa 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Essentials Interface Command - Remove the nickname of all players on the server.", usage = "/") public class Command_denick extends FreedomCommand { @@ -20,7 +20,7 @@ public class Command_denick extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), "Removing all nicknames", false); + FUtil.staffAction(sender.getName(), "Removing all nicknames", false); for (Player player : server.getOnlinePlayers()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java index 474d639f..b4017c47 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java @@ -2,7 +2,6 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.List; -import me.totalfreedom.totalfreedommod.admin.AdminList; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -10,7 +9,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Deop a player", usage = "/ ") public class Command_deop extends FreedomCommand { @@ -31,12 +30,12 @@ public class Command_deop extends FreedomCommand final String targetName = args[0].toLowerCase(); final List matchedPlayerNames = new ArrayList<>(); - for (final Player player : server.getOnlinePlayers()) + for (Player player : server.getOnlinePlayers()) { if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName) || player.getName().contains(targetName) || player.getDisplayName().contains(targetName)) { - if (player.isOp() && !AdminList.vanished.contains(player.getName())) + if (player.isOp() && !plugin.sl.isVanished(player.getName())) { matchedPlayerNames.add(player.getName()); player.setOp(false); @@ -49,7 +48,7 @@ public class Command_deop extends FreedomCommand { if (!silent) { - FUtil.adminAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false); + FUtil.staffAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false); } } else diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java index 1eb990cf..b0eedd51 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH, blockHostConsole = true) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH, blockHostConsole = true) @CommandParameters(description = "Deop everyone on the server.", usage = "/") public class Command_deopall extends FreedomCommand { @@ -14,7 +14,7 @@ public class Command_deopall extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - FUtil.adminAction(sender.getName(), "De-opping all players on the server", true); + FUtil.staffAction(sender.getName(), "De-opping all players on the server", true); for (Player player : server.getOnlinePlayers()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java index 64121cf0..ff6ac8d1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Toggle LibsDisguises for everyone online.", usage = "/", aliases = "dtoggle") public class Command_disguisetoggle extends FreedomCommand { @@ -20,7 +20,7 @@ public class Command_disguisetoggle extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), (plugin.ldb.isDisguisesEnabled() ? "Disabling" : "Enabling") + " disguises", false); + FUtil.staffAction(sender.getName(), (plugin.ldb.isDisguisesEnabled() ? "Disabling" : "Enabling") + " disguises", false); if (plugin.ldb.isDisguisesEnabled()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_donator.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_donator.java index ef626487..a0100491 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_donator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_donator.java @@ -13,7 +13,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) @CommandParameters(description = "Adds or removes donators", usage = "/ [forum_user]") public class Command_donator extends FreedomCommand { @@ -77,7 +77,7 @@ public class Command_donator extends FreedomCommand try { - FUtil.postRequestToEndpoint(url, "POST", headers, payload); + FUtil.sendRequest(url, "POST", headers, payload); } catch (IOException e) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java index 741c7c67..10804c27 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java @@ -1,11 +1,11 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; @@ -17,7 +17,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) @CommandParameters(description = "Sends the specified player to their doom.", usage = "/ [reason]") public class Command_doom extends FreedomCommand { @@ -38,22 +38,23 @@ public class Command_doom extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Casting oblivion over " + player.getName(), true); FUtil.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED); final String ip = player.getAddress().getAddress().getHostAddress().trim(); // Remove from admin - Admin admin = getAdmin(player); - if (admin != null) + StaffMember staffMember = getAdmin(player); + if (staffMember != null) { - FUtil.adminAction(sender.getName(), "Removing " + player.getName() + " from the admin list", true); - admin.setActive(false); - plugin.al.save(admin); - plugin.al.updateTables(); + FUtil.staffAction(sender.getName(), "Removing " + player.getName() + " from the staff list", true); + staffMember.setActive(false); + plugin.sl.save(staffMember); + plugin.sl.updateTables(); + plugin.amp.updateAccountStatus(staffMember); if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { - plugin.dc.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + plugin.dc.syncRoles(staffMember, plugin.pl.getData(staffMember.getName()).getDiscordID()); } } @@ -119,7 +120,7 @@ public class Command_doom extends FreedomCommand public void run() { // message - FUtil.adminAction(sender.getName(), "Banning " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Banning " + player.getName(), true); msg(sender, player.getName() + " has been banned and IP is: " + ip); // generate explosion diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java index e82b27c1..47333c69 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java @@ -12,7 +12,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Remove various server entities that may cause lag, such as dropped items, minecarts, and boats.", usage = "/ [name | -a]", aliases = "ew,rd") public class Command_entitywipe extends FreedomCommand { @@ -54,7 +54,7 @@ public class Command_entitywipe extends FreedomCommand entityName = FUtil.formatName(type.name()); } - FUtil.adminAction(sender.getName(), "Purging all " + (type != null ? entityName + "s" : "entities"), true); + FUtil.staffAction(sender.getName(), "Purging all " + (type != null ? entityName + "s" : "entities"), true); int count; if (type != null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java index e1c9c279..13ab38c8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java @@ -11,7 +11,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Push people away from you.", usage = "/ [radius] [strength]") public class Command_expel extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java index ef4068b1..372016da 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java @@ -10,7 +10,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) @CommandParameters(description = "Surprise someone.", usage = "/ ") public class Command_explode extends FreedomCommand { @@ -58,7 +58,7 @@ public class Command_explode extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (args.length == 1 && plugin.al.isAdmin(sender)) + if (args.length == 1 && plugin.sl.isStaff(sender)) { return FUtil.getPlayerList(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java index 62aa0f8d..4f21376a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.MOD, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Make arrows explode", usage = "/", aliases = "ea") public class Command_explosivearrows extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java index b374f569..300d136e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Shows all IPs registered to a player", usage = "/ ", aliases = "showip,listip") public class Command_findip extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java index 4877457f..a7c4d1ce 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java @@ -13,7 +13,7 @@ public class Command_forcekill extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!plugin.al.isAdmin(sender) && !senderIsConsole) + if (!plugin.sl.isMod(sender) && !senderIsConsole) { playerSender.setHealth(0); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java index 8c50aec3..3dd64cd3 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java @@ -8,8 +8,8 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Freeze/Unfreeze a specified player, or all non-admins on the server.", usage = "/ [target | purge]", aliases = "fr") +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) +@CommandParameters(description = "Freeze/Unfreeze a specified player, or all non-staff on the server.", usage = "/ [target | purge]", aliases = "fr") public class Command_freeze extends FreedomCommand { @@ -23,31 +23,30 @@ public class Command_freeze extends FreedomCommand if (!gFreeze) { - FUtil.adminAction(sender.getName(), "Disabling global player freeze", false); + FUtil.staffAction(sender.getName(), "Disabling global player freeze", false); msg("Players are now free to move."); return true; } - FUtil.adminAction(sender.getName(), "Enabling global player freeze", false); + FUtil.staffAction(sender.getName(), "Enabling global player freeze", false); for (Player player : server.getOnlinePlayers()) { - if (!isAdmin(player)) + if (!isStaff(player)) { player.sendTitle(ChatColor.RED + "You've been globally frozen.", ChatColor.YELLOW + "Please be patient and you will be unfrozen shortly.", 20, 100, 60); msg(player, "You have been globally frozen due to an OP breaking the rules, please wait and you will be unfrozen soon.", ChatColor.RED); } } msg("Players are now frozen."); - return true; } if (args[0].equals("purge")) { - FUtil.adminAction(sender.getName(), "Unfreezing all players", false); + FUtil.staffAction(sender.getName(), "Unfreezing all players", false); for (Player player : server.getOnlinePlayers()) { - if (!isAdmin(player)) + if (!isStaff(player)) { player.sendTitle(ChatColor.GREEN + "You've been unfrozen.", ChatColor.YELLOW + "You may now move again.", 20, 100, 60); } @@ -69,7 +68,6 @@ public class Command_freeze extends FreedomCommand msg(player.getName() + " has been " + (fd.isFrozen() ? "frozen" : "unfrozen") + "."); msg(player, "You have been " + (fd.isFrozen() ? "frozen" : "unfrozen") + ".", ChatColor.AQUA); - return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java index ab5cb382..e1cf22e2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "You'll never even see it coming - repeatedly push players away from you until command is untoggled.", usage = "/ ") public class Command_fuckoff extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java index f17867b8..617c7d2c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java @@ -13,7 +13,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "View server health, such as ticks-per-second, memory, etc.", usage = "/") public class Command_health extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java index 4e9eff37..97ab3f3f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java @@ -152,7 +152,7 @@ public class Command_hubworld extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return Collections.emptyList(); } @@ -177,7 +177,7 @@ public class Command_hubworld extends FreedomCommand // TODO: Redo this properly private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException { - if (!(sender instanceof Player) || playerSender == null || !plugin.al.isSeniorAdmin(playerSender)) + if (!(sender instanceof Player) || playerSender == null || !plugin.sl.isAdmin(playerSender)) { throw new PermissionDeniedException(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java similarity index 50% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_permban.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java index ba8f8ef8..e645bbd3 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java @@ -1,14 +1,13 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE) -@CommandParameters(description = "Reload the permban list.", usage = "/ reload", aliases = "pb") -public class Command_permban extends FreedomCommand +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) +@CommandParameters(description = "Reload the indefinite ban list.", usage = "/ reload", aliases = "ib") +public class Command_indefban extends FreedomCommand { @Override @@ -24,12 +23,10 @@ public class Command_permban extends FreedomCommand return false; } - msg("Reloading permban list...", ChatColor.RED); - plugin.pm.onStop(); - plugin.pm.onStart(); - msg("Reloaded permban list."); - msg(plugin.pm.getPermbannedIps().size() + " IPs and " - + plugin.pm.getPermbannedNames().size() + " usernames loaded."); + msg("Reloading the indefinite ban list..."); + plugin.im.onStop(); + plugin.im.onStart(); + msg("Reloaded the indefinite ban list."); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java index f89113d5..266350f6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java @@ -26,11 +26,11 @@ public class Command_invis extends FreedomCommand { if (args[0].equalsIgnoreCase("clear")) { - if(!plugin.al.isAdmin(sender)) + if(!plugin.sl.isStaff(sender)) return noPerms(); else { - FUtil.adminAction(sender.getName(), "Clearing all invisibility potion effects from all players", true); + FUtil.staffAction(sender.getName(), "Clearing all invisibility potion effects from all players", true); clear = true; } } @@ -43,10 +43,10 @@ public class Command_invis extends FreedomCommand for (Player player : server.getOnlinePlayers()) { - if (player.hasPotionEffect(PotionEffectType.INVISIBILITY) && !plugin.al.isVanished(player.getName())) + if (player.hasPotionEffect(PotionEffectType.INVISIBILITY) && !plugin.sl.isVanished(player.getName())) { players.add(player.getName()); - if (clear && !plugin.al.isAdmin(player)) + if (clear && !plugin.sl.isStaff(player)) { player.removePotionEffect((PotionEffectType.INVISIBILITY)); clears++; @@ -71,7 +71,7 @@ public class Command_invis extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (args.length == 1 && plugin.al.isAdmin(sender)) + if (args.length == 1 && plugin.sl.isStaff(sender)) return Arrays.asList("clear"); return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java index 68f31b62..22300d90 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java @@ -12,10 +12,10 @@ import org.bukkit.inventory.ItemStack; @CommandParameters(description = "Look into another player's inventory, or optionally take items out.", usage = "/ [offhand | armor]", aliases = "inv,insee") public class Command_invsee extends FreedomCommand { + @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) { return false; @@ -35,16 +35,15 @@ public class Command_invsee extends FreedomCommand return true; } - if (plugin.al.isAdmin(player) && !plugin.al.isAdmin(playerSender)) + if (plugin.sl.isStaff(player) && !plugin.sl.isStaff(playerSender)) { - msg("You cannot spy on administrators."); + msg("You cannot spy on staff members."); return true; - } Inventory inv; - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { if (args.length > 1) { @@ -75,7 +74,7 @@ public class Command_invsee extends FreedomCommand return true; } - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { if (args.length > 1) { @@ -109,5 +108,4 @@ public class Command_invsee extends FreedomCommand } return true; } -} - +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_jumppads.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_jumppads.java index 604ce9be..1ec12b73 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_jumppads.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_jumppads.java @@ -95,7 +95,7 @@ public class Command_jumppads extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return Collections.emptyList(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java index c18f503b..911fc6925 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java @@ -12,7 +12,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Kick the specified player.", usage = "/ [reason] [-q]") public class Command_kick extends FreedomCommand { @@ -65,12 +65,16 @@ public class Command_kick extends FreedomCommand { if (reason != null) { - FUtil.adminAction(sender.getName(), "Kicking " + player.getName() + " - Reason: " + reason, true); + FUtil.staffAction(sender.getName(), "Kicking " + player.getName() + " - Reason: " + reason, true); } else { - FUtil.adminAction(sender.getName(), "Kicking " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Kicking " + player.getName(), true); } + else + { + msg("Kicked " + player.getName() + " quietly."); + } } player.kickPlayer(builder.toString()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java index b8b8c810..ce1ce71d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java @@ -7,21 +7,21 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.TELNET_ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Kick all non-admins on server.", usage = "/", aliases = "kickall") +@CommandPermissions(level = Rank.MOD, source = SourceType.BOTH) +@CommandParameters(description = "Kick all non-staff on server.", usage = "/", aliases = "kickall") public class Command_kicknoob extends FreedomCommand { @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - FUtil.adminAction(sender.getName(), "Disconnecting all non-admins.", true); + FUtil.staffAction(sender.getName(), "Disconnecting all non-staff.", true); for (Player player : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { - player.kickPlayer(ChatColor.RED + "All non-admins were kicked by " + sender.getName() + "."); + player.kickPlayer(ChatColor.RED + "All non-staff were kicked by " + sender.getName() + "."); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java index 34600c1a..f0f4343f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java @@ -7,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Show the last command the specified player used.", usage = "/ ") public class Command_lastcmd extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java index a6510fc0..94dca915 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java @@ -22,7 +22,7 @@ public class Command_linkdiscord extends FreedomCommand return true; } - if (args.length > 1 && plugin.al.isAdmin(playerSender)) + if (args.length > 1 && plugin.sl.isStaff(playerSender)) { PlayerData playerData = plugin.pl.getData(args[0]); if (playerData == null) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkreddit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkreddit.java new file mode 100644 index 00000000..f7d3cf35 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkreddit.java @@ -0,0 +1,69 @@ +package me.totalfreedom.totalfreedommod.command; + +import me.totalfreedom.totalfreedommod.rank.Rank; +import net.dean.jraw.ApiException; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Link your reddit account", usage = "/ >") +public class Command_linkreddit extends FreedomCommand +{ + + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) + { + if (!plugin.rd.enabled) + { + msg("The Reddit system is currently disabled.", ChatColor.RED); + return true; + } + + if (getData(playerSender).getRedditUsername() != null) + { + msg("Your Reddit account is already linked."); + return true; + } + + if (args.length == 0) + { + return false; + } + + if (args.length == 1 && !args[0].equals("code")) + { + String username = args[0]; + String code = plugin.rd.addLinkCode(getData(playerSender), username); + + try + { + plugin.rd.sendModMessage(username, "Link Code", "Please run the following in-game to link your Reddit account: /linkreddit code " + code); + } + catch (ApiException e) + { + msg("Could not find a Reddit account by the name of " + args[0], ChatColor.RED); + return true; + } + + msg("A linking code has been sent to " + username + ". Please check your mod mail at " + ChatColor.AQUA + "https://www.reddit.com/message/moderator", ChatColor.GREEN); + return true; + } + + String code = args[1]; + String username = plugin.rd.checkLinkCode(code); + + if (username == null) + { + msg(code + " is not a valid code", ChatColor.RED); + return true; + } + + msg("Successfully linked the Reddit account " + username + " to your Minecraft account.", ChatColor.GREEN); + if (plugin.rd.updateFlair(playerSender)) + { + msg("Your flair has been updated.", ChatColor.GREEN); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java index 4bced067..cee405ee 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java @@ -2,11 +2,11 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.List; -import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.admin.AdminList; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Displayable; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffList; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import me.totalfreedom.totalfreedommod.util.FUtil; import net.md_5.bungee.api.ChatColor; import org.apache.commons.lang.StringUtils; @@ -15,10 +15,9 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.IMPOSTOR, source = SourceType.BOTH) -@CommandParameters(description = "Lists the real names of all online players.", usage = "/ [-a | -i | -f | -v]", aliases = "who,lsit") +@CommandParameters(description = "Lists the real names of all online players.", usage = "/ [-s | -i | -f | -v]", aliases = "who,lsit") public class Command_list extends FreedomCommand { - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { if (args.length > 1) @@ -41,20 +40,20 @@ public class Command_list extends FreedomCommand String s = args[0]; switch (s) { - case "-a": + case "-s": { - listFilter = ListFilter.ADMINS; + listFilter = ListFilter.STAFF; break; } case "-v": { - checkRank(Rank.SUPER_ADMIN); - listFilter = ListFilter.VANISHED_ADMINS; + checkRank(Rank.TRIAL_MOD); + listFilter = ListFilter.VANISHED_STAFF; break; } case "-t": { - checkRank(Rank.TELNET_ADMIN); + checkRank(Rank.MOD); listFilter = ListFilter.TELNET_SESSIONS; break; } @@ -83,20 +82,20 @@ public class Command_list extends FreedomCommand List n = new ArrayList<>(); - if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender) && plugin.al.getAdmin(sender).getRank().isAtLeast(Rank.TELNET_ADMIN)) + if (listFilter == ListFilter.TELNET_SESSIONS && plugin.sl.isStaff(sender) && plugin.sl.getAdmin(sender).getRank().isAtLeast(Rank.MOD)) { - List connectedAdmins = plugin.btb.getConnectedAdmins(); - onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size()) + List connectedStaffMembers = plugin.btb.getConnectedAdmins(); + onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedStaffMembers.size()) .append(ChatColor.BLUE) - .append(" admins connected to telnet."); - for (Admin admin : connectedAdmins) + .append(" staff connected to telnet."); + for (StaffMember staffMember : connectedStaffMembers) { - n.add(plugin.rm.getDisplay(admin).getColoredTag() + admin.getName()); + n.add(plugin.rm.getDisplay(staffMember).getColoredTag() + staffMember.getName()); } } else { - onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size() - AdminList.vanished.size()) + onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size() - StaffList.vanished.size()) .append(ChatColor.BLUE) .append(" out of a maximum ") .append(ChatColor.RED) @@ -105,19 +104,19 @@ public class Command_list extends FreedomCommand .append(" players online."); for (Player p : server.getOnlinePlayers()) { - if (listFilter == ListFilter.ADMINS && !plugin.al.isAdmin(p)) + if (listFilter == ListFilter.STAFF && !plugin.sl.isStaff(p)) { continue; } - if (listFilter == ListFilter.ADMINS && AdminList.vanished.contains(p.getName())) + if (listFilter == ListFilter.STAFF && plugin.sl.isVanished(p.getName())) { continue; } - if (listFilter == ListFilter.VANISHED_ADMINS && !AdminList.vanished.contains(p.getName())) + if (listFilter == ListFilter.VANISHED_STAFF && !plugin.sl.isVanished(p.getName())) { continue; } - if (listFilter == ListFilter.IMPOSTORS && !plugin.al.isAdminImpostor(p)) + if (listFilter == ListFilter.IMPOSTORS && !plugin.sl.isStaffImpostor(p)) { continue; } @@ -125,20 +124,13 @@ public class Command_list extends FreedomCommand { continue; } - if (listFilter == ListFilter.PLAYERS && AdminList.vanished.contains(p.getName())) + if (listFilter == ListFilter.PLAYERS && plugin.sl.isVanished(p.getName())) { continue; } final Displayable display = plugin.rm.getDisplay(p); - if (!senderIsConsole && plugin.al.isAdmin(playerSender) && plugin.al.getAdmin(playerSender).getOldTags()) - { - n.add(getOldPrefix(display) + p.getName()); - } - else - { - n.add(display.getColoredTag() + p.getName()); - } + n.add(display.getColoredTag() + p.getName()); } } String playerType = listFilter.toString().toLowerCase().replace('_', ' '); @@ -162,29 +154,11 @@ public class Command_list extends FreedomCommand return true; } - public String getOldPrefix(Displayable display) - { - ChatColor color = display.getColor(); - - if (color.equals(ChatColor.AQUA)) - { - color = ChatColor.GOLD; - } - else if (color.equals(ChatColor.GOLD)) - { - color = ChatColor.LIGHT_PURPLE; - } - - String prefix = "[" + display.getAbbr() + "]"; - - return color + prefix; - } - private enum ListFilter { PLAYERS, - ADMINS, - VANISHED_ADMINS, + STAFF, + VANISHED_STAFF, TELNET_SESSIONS, FAMOUS_PLAYERS, IMPOSTORS diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java index 92222b16..4d3d4fb8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java @@ -9,7 +9,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH, blockHostConsole = true) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) @CommandParameters(description = "This is evil, and I never should have wrote it - blocks specified player's input.", usage = "/ on | off> [-q]>") public class Command_lockup extends FreedomCommand { @@ -22,7 +22,7 @@ public class Command_lockup extends FreedomCommand { if (args[0].equalsIgnoreCase("all")) { - FUtil.adminAction(sender.getName(), "Locking up all players", true); + FUtil.staffAction(sender.getName(), "Locking up all players", true); for (Player player : server.getOnlinePlayers()) { @@ -32,7 +32,7 @@ public class Command_lockup extends FreedomCommand } else if (args[0].equalsIgnoreCase("purge")) { - FUtil.adminAction(sender.getName(), "Unlocking all players", true); + FUtil.staffAction(sender.getName(), "Unlocking all players", true); for (Player player : server.getOnlinePlayers()) { cancelLockup(player); @@ -59,7 +59,7 @@ public class Command_lockup extends FreedomCommand if (!silent) { - FUtil.adminAction(sender.getName(), "Locking up " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Locking up " + player.getName(), true); } startLockup(player); msg("Locked up " + player.getName() + "."); @@ -76,7 +76,7 @@ public class Command_lockup extends FreedomCommand if (!silent) { - FUtil.adminAction(sender.getName(), "Unlocking " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Unlocking " + player.getName(), true); } cancelLockup(player); msg("Unlocked " + player.getName() + "."); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java index 5fae0ac8..190245b5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Register your connection with the TFM logviewer.", usage = "/ [off]") public class Command_logs extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_magicalsaddle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_magicalsaddle.java deleted file mode 100644 index 7241b521..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_magicalsaddle.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.shop.ShopItem; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Obtain a magical saddle.", usage = "/") -public class Command_magicalsaddle extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (plugin.pl.getData(playerSender).hasItem(ShopItem.MAGICAL_SADDLE)) - { - playerSender.getInventory().addItem(plugin.sh.getMagicalSaddle()); - msg("You have been given a Magical Saddle", ChatColor.GREEN); - } - else - { - msg("You do not own a Magical Saddle! Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java index e61f8642..a1e64b00 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java @@ -19,7 +19,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Make a WorldGuard region for an OP.", usage = "/ ", aliases = "mor") public class Command_makeopregion extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java index de71f1dd..30ea0d05 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java @@ -10,7 +10,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) @CommandParameters(description = "Manage the shop", usage = "/ | items: ", aliases = "ms") public class Command_manageshop extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java index 8141e729..6c875b0a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java @@ -7,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Manually verify someone", usage = "/ ", aliases="mv") public class Command_manuallyverify extends FreedomCommand { @@ -39,7 +39,7 @@ public class Command_manuallyverify extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), "Manually verifying player " + player.getName(), false); + FUtil.staffAction(sender.getName(), "Manually verifying player " + player.getName(), false); player.setOp(true); player.sendMessage(YOU_ARE_OP); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_massmurder.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_massmurder.java index e5ed5857..bfa587b7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_massmurder.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_massmurder.java @@ -6,7 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) @CommandParameters(description = "seth's personal command", usage = "/ ", aliases = "genocide") public class Command_massmurder extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java index b368a18b..1ee29f31 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java @@ -152,7 +152,7 @@ public class Command_masterbuilderworld extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return Collections.emptyList(); } @@ -177,7 +177,7 @@ public class Command_masterbuilderworld extends FreedomCommand // TODO: Redo this properly private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException { - if (!(sender instanceof Player) || playerSender == null || !plugin.al.isSeniorAdmin(playerSender)) + if (!(sender instanceof Player) || playerSender == null || !plugin.sl.isAdmin(playerSender)) { throw new PermissionDeniedException(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java index cbc0e349..7cbc0297 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java @@ -65,7 +65,7 @@ public class Command_mbconfig extends FreedomCommand if (data.isMasterBuilder() && plugin.pl.isPlayerImpostor(player)) { - FUtil.adminAction(sender.getName(), "Re-adding " + player.getName() + " to the Master Builder list", true); + FUtil.staffAction(sender.getName(), "Re-adding " + player.getName() + " to the Master Builder list", true); player.setOp(true); player.sendMessage(YOU_ARE_OP); @@ -79,7 +79,7 @@ public class Command_mbconfig extends FreedomCommand } else if (!data.isMasterBuilder()) { - FUtil.adminAction(sender.getName(), "Adding " + player.getName() + " to the Master Builder list", true); + FUtil.staffAction(sender.getName(), "Adding " + player.getName() + " to the Master Builder list", true); data.setMasterBuilder(true); data.setVerification(true); plugin.pl.save(data); @@ -113,7 +113,7 @@ public class Command_mbconfig extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), "Removing " + data.getName() + " from the Master Builder list", true); + FUtil.staffAction(sender.getName(), "Removing " + data.getName() + " from the Master Builder list", true); data.setMasterBuilder(false); if (data.getDiscordID() == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java index 2f3d1e94..05454acd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java @@ -7,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Control mob limiting parameters.", usage = "/ |dragon|giant|ghast|slime>") public class Command_moblimiter extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java index e6797d8e..cb7bcf9c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java @@ -12,7 +12,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Purge all mobs in all worlds.", usage = "/ [name]", aliases = "mp") public class Command_mobpurge extends FreedomCommand { @@ -46,7 +46,7 @@ public class Command_mobpurge extends FreedomCommand mobName = FUtil.formatName(type.name()); } - FUtil.adminAction(sender.getName(), "Purging all " + (type != null ? mobName + "s" : "mobs"), true); + FUtil.staffAction(sender.getName(), "Purging all " + (type != null ? mobName + "s" : "mobs"), true); int count = plugin.ew.purgeMobs(type); msg(count + " " + (type != null ? mobName : "mob") + FUtil.showS(count) + " removed."); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java index 75d81ba9..96b9ebc6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java @@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.List; +import java.util.Random; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.minecraft.server.v1_16_R1.NBTTagCompound; @@ -10,6 +11,7 @@ import org.apache.commons.lang.StringUtils; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftItemStack; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -141,13 +143,13 @@ public class Command_modifyitem extends FreedomCommand item.setItemMeta(potionMeta); break; } - // TODO: Fix code here bc 1.15 made some things private for some reason - /*case "attribute": + + case "attribute": if (args.length < 3) { return false; } - net.minecraft.server.v1_15_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); + net.minecraft.server.v1_16_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); NBTTagList modifiers = getAttributeList(nmsStack); NBTTagCompound cmpnd = new NBTTagCompound(); @@ -157,28 +159,39 @@ public class Command_modifyitem extends FreedomCommand msg("Invalid attribute. Please run /attributelist for a list of valid attributes."); return true; } - cmpnd.set("AttributeName", new NBTTagString(attribute.getAttribute())); - cmpnd.set("Name", new NBTTagString(attribute.getAttribute())); - int amount; + cmpnd.setString("AttributeName", attribute.getAttribute()); + cmpnd.setString("Name", attribute.getAttribute()); + double amount; try { - amount = Integer.parseInt(args[2]); + amount = Double.parseDouble(args[2]); } catch (NumberFormatException ex) { msg("The amount specified is not a valid integer."); return true; } - cmpnd.set("Amount", new NBTTagInt(amount)); - cmpnd.set("Operation", new NBTTagInt(0)); - cmpnd.set("UUIDLeast", new NBTTagInt(894654)); - cmpnd.set("UUIDMost", new NBTTagInt(2872)); - cmpnd.set("Slot", new NBTTagString("mainhand")); + if (Double.isNaN(amount)) + { + msg("The amount specified is illegal."); + return true; + } + cmpnd.setDouble("Amount", amount); + cmpnd.setInt("Operation", 0); + Random random = new Random(); + cmpnd.setIntArray("UUID", new int[] + { + random.nextInt(), + random.nextInt(), + random.nextInt(), + random.nextInt() + }); + cmpnd.setString("Slot", "mainhand"); modifiers.add(cmpnd); compound.set("AttributeModifiers", modifiers); nmsStack.setTag(compound); item = CraftItemStack.asBukkitCopy(nmsStack); - break;*/ + break; default: return false; } @@ -200,21 +213,20 @@ public class Command_modifyitem extends FreedomCommand return stack.getTag().getList("AttributeModifiers", 10); } - private enum Attribute { - GENERIC_MAX_HEALTH("GENERIC_MAX_HEALTH", "generic.maxHealth"), - GENERIC_FOLLOW_RANGE("GENERIC_FOLLOW_RANGE", "generic.followRange"), - GENERIC_KNOCKBACK_RESISTANCE("GENERIC_KNOCKBACK_RESISTANCE", "generic.knockbackResistance"), - GENERIC_MOVEMENT_SPEED("GENERIC_MOVEMENT_SPEED", "generic.movementSpeed"), - GENERIC_FLYING_SPEED("GENERIC_FLYING_SPEED", "generic.flyingSpeed"), - GENERIC_ATTACK_DAMAGE("GENERIC_ATTACK_DAMAGE", "generic.attackDamage"), - GENERIC_ATTACK_SPEED("GENERIC_ATTACK_SPEED", "generic.attackSpeed"), + GENERIC_MAX_HEALTH("GENERIC_MAX_HEALTH", "generic.max_health"), + GENERIC_FOLLOW_RANGE("GENERIC_FOLLOW_RANGE", "generic.follow_range"), + GENERIC_KNOCKBACK_RESISTANCE("GENERIC_KNOCKBACK_RESISTANCE", "generic.knockback_resistance"), + GENERIC_MOVEMENT_SPEED("GENERIC_MOVEMENT_SPEED", "generic.movement_speed"), + GENERIC_FLYING_SPEED("GENERIC_FLYING_SPEED", "generic.flying_speed"), + GENERIC_ATTACK_DAMAGE("GENERIC_ATTACK_DAMAGE", "generic.attack_damage"), + GENERIC_ATTACK_SPEED("GENERIC_ATTACK_SPEED", "generic.attack_speed"), GENERIC_ARMOR("GENERIC_ARMOR", "generic.armor"), - GENERIC_ARMOR_TOUGHNESS("GENERIC_ARMOR_TOUGHNESS", "generic.armorToughmess"), + GENERIC_ARMOR_TOUGHNESS("GENERIC_ARMOR_TOUGHNESS", "generic.armor_toughmess"), GENERIC_LUCK("GENERIC_LUCK", "generic.luck"), - HORSE_JUMP_STRENGTH("GENERIC_MAX_HEALTH", "horse.JumpStrength"), - ZOMBIE_SPAWN_REINFORCEMENTS("ZOMBIE_SPAWN_REINFORCEMENTS", "zombie.SpawnReinforcements"); + HORSE_JUMP_STRENGTH("GENERIC_MAX_HEALTH", "horse.jump_strength"), + ZOMBIE_SPAWN_REINFORCEMENTS("ZOMBIE_SPAWN_REINFORCEMENTS", "zombie.spawn_reinforcements"); private final String name; private final String attribute; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java index 538ff60e..fdf47ce2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java @@ -16,7 +16,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Mutes a player with brute force.", usage = "/ <[-s | -q] [reason] | list | purge | all>", aliases = "stfu") public class Command_mute extends FreedomCommand { @@ -53,7 +53,7 @@ public class Command_mute extends FreedomCommand if (args[0].equals("purge")) { - FUtil.adminAction(sender.getName(), "Unmuting all players.", true); + FUtil.staffAction(sender.getName(), "Unmuting all players.", true); FPlayer info; int count = 0; for (Player mp : server.getOnlinePlayers()) @@ -73,13 +73,13 @@ public class Command_mute extends FreedomCommand if (args[0].equals("all")) { - FUtil.adminAction(sender.getName(), "Muting all non-admins", true); + FUtil.staffAction(sender.getName(), "Muting all non-staff", true); FPlayer playerdata; int counter = 0; for (Player player : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player)) + if (!plugin.sl.isStaff(player)) { player.sendTitle(ChatColor.RED + "You've been muted globally.", ChatColor.YELLOW + "Please be patient and you will be unmuted shortly.", 20, 100, 60); playerdata = plugin.pl.getPlayer(player); @@ -120,9 +120,9 @@ public class Command_mute extends FreedomCommand } FPlayer playerdata = plugin.pl.getPlayer(player); - if (plugin.al.isAdmin(player)) + if (plugin.sl.isStaff(player)) { - msg(player.getName() + " is an admin, and can't be muted."); + msg(player.getName() + " is a staff member, and can't be muted."); return true; } @@ -140,7 +140,7 @@ public class Command_mute extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), "Muting " + player.getName(), true); + FUtil.staffAction(sender.getName(), "Muting " + player.getName(), true); if (smite) { @@ -163,7 +163,7 @@ public class Command_mute extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return null; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mystaff.java similarity index 73% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/Command_mystaff.java index 7c4854b6..b42535d7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mystaff.java @@ -4,10 +4,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -15,9 +15,9 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Manage your admin entry.", usage = "/ [-o ] | setlogin | clearlogin | setacformat | clearacformat> | oldtags | logstick | syncroles>") -public class Command_myadmin extends FreedomCommand +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Manage your staff entry.", usage = "/ [-o ] | setlogin | clearlogin | setscformat | clearscformat> | oldtags | logstick | syncroles>") +public class Command_mystaff extends FreedomCommand { @Override @@ -29,13 +29,13 @@ public class Command_myadmin extends FreedomCommand } Player init = null; - Admin target = getAdmin(playerSender); + StaffMember target = getAdmin(playerSender); Player targetPlayer = playerSender; // -o switch if (args[0].equals("-o")) { - checkRank(Rank.SENIOR_ADMIN); + checkRank(Rank.ADMIN); init = playerSender; targetPlayer = getPlayer(args[1]); if (targetPlayer == null) @@ -47,7 +47,7 @@ public class Command_myadmin extends FreedomCommand target = getAdmin(targetPlayer); if (target == null) { - msg("That player is not an admin", ChatColor.RED); + msg("That player is not a staff member", ChatColor.RED); return true; } @@ -72,19 +72,19 @@ public class Command_myadmin extends FreedomCommand if (init == null) { - FUtil.adminAction(sender.getName(), "Clearing my supered IPs", true); + FUtil.staffAction(sender.getName(), "Clearing my IPs", true); } else { - FUtil.adminAction(sender.getName(), "Clearing " + target.getName() + "' supered IPs", true); + FUtil.staffAction(sender.getName(), "Clearing " + target.getName() + "' IPs", true); } int counter = target.getIps().size() - 1; target.clearIPs(); target.addIp(targetIp); - plugin.al.save(target); - plugin.al.updateTables(); + plugin.sl.save(target); + plugin.sl.updateTables(); plugin.pl.syncIps(target); @@ -121,16 +121,16 @@ public class Command_myadmin extends FreedomCommand } else { - msg("You cannot remove that admin's current IP."); + msg("You cannot remove that staff members's current IP."); } return true; } - FUtil.adminAction(sender.getName(), "Removing a supered IP" + (init == null ? "" : " from " + targetPlayer.getName() + "'s IPs"), true); + FUtil.staffAction(sender.getName(), "Removing an IP" + (init == null ? "" : " from " + targetPlayer.getName() + "'s IPs"), true); target.removeIp(args[1]); - plugin.al.save(target); - plugin.al.updateTables(); + plugin.sl.save(target); + plugin.sl.updateTables(); plugin.pl.syncIps(target); @@ -141,6 +141,7 @@ public class Command_myadmin extends FreedomCommand case "setlogin": { + checkRank(Rank.MOD); if (args.length < 2) { return false; @@ -158,58 +159,44 @@ public class Command_myadmin extends FreedomCommand msg("Your login message cannot be more than 100 characters (excluding your rank and your name)", ChatColor.RED); return true; } - FUtil.adminAction(sender.getName(), "Setting personal login message" + (init == null ? "" : " for " + targetPlayer.getName()), false); + FUtil.staffAction(sender.getName(), "Setting personal login message" + (init == null ? "" : " for " + targetPlayer.getName()), false); target.setLoginMessage(message); String previewMessage = plugin.rm.craftLoginMessage(targetPlayer, message); msg((init == null ? "Your" : targetPlayer.getName() + "'s") + " login message is now: "); msg("> " + previewMessage); - plugin.al.save(target); - plugin.al.updateTables(); + plugin.sl.save(target); + plugin.sl.updateTables(); return true; } case "clearlogin": { - FUtil.adminAction(sender.getName(), "Clearing personal login message" + (init == null ? "" : " for " + targetPlayer.getName()), false); + checkRank(Rank.MOD); + FUtil.staffAction(sender.getName(), "Clearing personal login message" + (init == null ? "" : " for " + targetPlayer.getName()), false); target.setLoginMessage(null); - plugin.al.save(target); - plugin.al.updateTables(); + plugin.sl.save(target); + plugin.sl.updateTables(); return true; } - case "setacformat": + case "setscformat": { String format = StringUtils.join(args, " ", 1, args.length); target.setAcFormat(format); - plugin.al.save(target); - plugin.al.updateTables(); - msg("Set admin chat format to \"" + format + "\".", ChatColor.GRAY); - String example = format.replace("%name%", "ExampleAdmin").replace("%rank%", Rank.TELNET_ADMIN.getAbbr()).replace("%rankcolor%", Rank.TELNET_ADMIN.getColor().toString()).replace("%msg%", "The quick brown fox jumps over the lazy dog."); + plugin.sl.save(target); + plugin.sl.updateTables(); + msg("Set staff chat format to \"" + format + "\".", ChatColor.GRAY); + String example = format.replace("%name%", "ExampleStaff").replace("%rank%", Rank.MOD.getAbbr()).replace("%rankcolor%", Rank.MOD.getColor().toString()).replace("%msg%", "The quick brown fox jumps over the lazy dog."); msg(ChatColor.GRAY + "Example: " + FUtil.colorize(example)); return true; } - case "clearacformat": + + case "clearscformat": { target.setAcFormat(null); - plugin.al.save(target); - plugin.al.updateTables(); - msg("Cleared admin chat format.", ChatColor.GRAY); - return true; - } - case "oldtags": - { - target.setOldTags(!target.getOldTags()); - plugin.al.save(target); - plugin.al.updateTables(); - msg((target.getOldTags() ? "Enabled" : "Disabled") + " old tags."); - return true; - } - case "logstick": - { - target.setLogStick(!target.getLogStick()); - plugin.al.save(target); - plugin.al.updateTables(); - msg((target.getLogStick() ? "Enabled" : "Disabled") + " log-stick lookup."); + plugin.sl.save(target); + plugin.sl.updateTables(); + msg("Cleared staff chat format.", ChatColor.GRAY); return true; } @@ -256,13 +243,13 @@ public class Command_myadmin extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return Collections.emptyList(); } - List singleArguments = Arrays.asList("clearips", "setlogin", "setacformat"); - List doubleArguments = Arrays.asList("clearip", "clearlogin", "clearacformat", "oldtags", "logstick", "syncroles"); + List singleArguments = Arrays.asList("clearips", "setlogin", "setscformat"); + List doubleArguments = Arrays.asList("clearip", "clearlogin", "clearscformat", "oldtags", "syncroles"); if (args.length == 1) { List options = new ArrayList<>(); @@ -283,8 +270,8 @@ public class Command_myadmin extends FreedomCommand { if (args[0].equals("clearip")) { - List ips = plugin.al.getAdmin(sender).getIps(); - ips.remove(FUtil.getIp((Player) sender)); + List ips = plugin.sl.getAdmin(sender).getIps(); + ips.remove(FUtil.getIp((Player)sender)); return ips; } } @@ -304,10 +291,10 @@ public class Command_myadmin extends FreedomCommand { if (args[0].equals("-o") && args[2].equals("clearip")) { - Admin admin = plugin.al.getEntryByName(args[1]); - if (admin != null) + StaffMember staffMember = plugin.sl.getEntryByName(args[1]); + if (staffMember != null) { - return admin.getIps(); + return staffMember.getIps(); } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java index de963d8b..14ba4604 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java @@ -16,7 +16,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Essentials Interface Command - Remove illegal chatcodes from nicknames of one or all players on server.", usage = "/ [player]", aliases = "nc") public class Command_nickclean extends FreedomCommand { @@ -53,12 +53,12 @@ public class Command_nickclean extends FreedomCommand return true; } - FUtil.adminAction(sender.getName(), "Cleaning " + player.getName() + "'s nickname", false); + FUtil.staffAction(sender.getName(), "Cleaning " + player.getName() + "'s nickname", false); cleanNickname(player); return true; } - FUtil.adminAction(sender.getName(), "Cleaning all nicknames", false); + FUtil.staffAction(sender.getName(), "Cleaning all nicknames", false); for (final Player player : server.getOnlinePlayers()) { cleanNickname(player); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java index 16d5375a..db6a70db 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java @@ -41,11 +41,11 @@ public class Command_nickfilter extends FreedomCommand player = getPlayerByDisplayName(displayName); - if (player == null || plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender)) + if (player == null || plugin.sl.isVanished(player.getName()) && !plugin.sl.isStaff(sender)) { player = getPlayerByDisplayNameAlt(displayName); - if (player == null || !plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender)) + if (player == null || !plugin.sl.isVanished(player.getName()) && !plugin.sl.isStaff(sender)) { sender.sendMessage(ChatColor.GRAY + "Can't find player by nickname: " + displayName); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java index 43c63234..81173fa4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java @@ -13,7 +13,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.BOTH) @CommandParameters(description = "Manage notes for a player", usage = "/ | remove | clear>") public class Command_notes extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_onlinemode.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_onlinemode.java deleted file mode 100644 index 4b077da8..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_onlinemode.java +++ /dev/null @@ -1,84 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FLog; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Switch server to premium or cracked.", usage = "/ ") -public class Command_onlinemode extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { - msg("Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" : "false") + "'.", ChatColor.WHITE); - msg("\"/onlinemode on\" and \"/onlinemode off\" can be used to change online mode from the console.", ChatColor.WHITE); - } - else - { - boolean onlineMode; - - if (sender instanceof Player && !plugin.al.isSeniorAdmin(sender)) - { - noPerms(); - return true; - } - - if (args[0].equalsIgnoreCase("on")) - { - onlineMode = true; - } - else if (args[0].equalsIgnoreCase("off")) - { - onlineMode = false; - } - else - { - return false; - } - - try - { - plugin.si.setOnlineMode(onlineMode); - - if (onlineMode) - { - for (Player player : server.getOnlinePlayers()) - { - player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect."); - } - } - - FUtil.adminAction(sender.getName(), "Turning player validation " + (onlineMode ? "on" : "off") + ".", true); - - server.reload(); - } - catch (Exception ex) - { - FLog.severe(ex); - } - } - return true; - } - - @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1 && plugin.al.isAdmin(sender) && !(sender instanceof Player)) - { - return Arrays.asList("on", "off"); - } - - return Collections.emptyList(); - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java index 3d97ee36..9cda7d52 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java @@ -2,7 +2,6 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.List; -import me.totalfreedom.totalfreedommod.admin.AdminList; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -37,7 +36,7 @@ public class Command_op extends FreedomCommand if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName) || player.getName().contains(targetName) || player.getDisplayName().contains(targetName)) { - if (!player.isOp() && !AdminList.vanished.contains(player.getName())) + if (!player.isOp() && !plugin.sl.isVanished(player.getName())) { matchedPlayerNames.add(player.getName()); player.setOp(true); @@ -50,7 +49,7 @@ public class Command_op extends FreedomCommand { if (!silent) { - FUtil.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false); + FUtil.staffAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false); } } else diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java index b728a7fd..4ce3dd88 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java @@ -14,7 +14,7 @@ public class Command_opall extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - FUtil.adminAction(sender.getName(), "Opping all players on the server", false); + FUtil.staffAction(sender.getName(), "Opping all players on the server", false); for (Player player : server.getOnlinePlayers()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java index eaadd8fc..b39e8429 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java @@ -14,7 +14,7 @@ public class Command_opme extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - FUtil.adminAction(sender.getName(), "Opping " + sender.getName(), false); + FUtil.staffAction(sender.getName(), "Opping " + sender.getName(), false); sender.setOp(true); sender.sendMessage(FreedomCommand.YOU_ARE_OP); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java index cb7e697f..3ac97109 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java @@ -42,13 +42,13 @@ public class Command_ops extends FreedomCommand if (args[0].equals("purge")) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { noPerms(); return true; } - FUtil.adminAction(sender.getName(), "Purging all operators", true); + FUtil.staffAction(sender.getName(), "Purging all operators", true); for (OfflinePlayer player : server.getOperators()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java index b9aeb7ff..91c25594 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java @@ -10,7 +10,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.MOD, source = SourceType.BOTH) @CommandParameters(description = "POW!!! Right in the kisser! One of these days Alice, straight to the Moon - Sends the specified player into orbit.", usage = "/ [< | stop>]") public class Command_orbit extends FreedomCommand @@ -60,7 +60,7 @@ public class Command_orbit extends FreedomCommand playerdata.startOrbiting(strength); player.setVelocity(new Vector(0, strength, 0)); - FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + FUtil.staffAction(sender.getName(), "Orbiting " + player.getName(), false); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java index d328cc6b..2c9c8eeb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java @@ -12,11 +12,10 @@ import org.bukkit.permissions.PermissionAttachmentInfo; @CommandParameters(description = "Check your permissions", usage = "/ [prefix | reload]") public class Command_permissions extends FreedomCommand { - @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length > 0 && args[0].equals("reload") && plugin.al.isAdmin(sender)) + if (args.length > 0 && args[0].equals("reload") && plugin.sl.isStaff(sender)) { plugin.permissions.load(); plugin.pem.loadPermissionNodes(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java index 276bbd7d..682369c2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java @@ -3,14 +3,14 @@ package me.totalfreedom.totalfreedommod.command; import java.time.Instant; import java.util.Date; import java.util.List; -import me.totalfreedom.totalfreedommod.admin.ActivityLogEntry; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.ActivityLogEntry; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Gets your playtime statistics.", usage = "/") public class Command_playtime extends FreedomCommand { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java index db928089..7b2313e2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java @@ -13,7 +13,7 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; -@CommandPermissions(level = Rank.TELNET_ADMIN, source = SourceType.BOTH) +@CommandPermissions(level = Rank.MOD, source = SourceType.BOTH) @CommandParameters(description = "Enable, disable, or reload a specified plugin, as well as list all plugins on the server.", usage = "/ < > | list>", aliases = "plc") public class Command_plugincontrol extends FreedomCommand { @@ -135,7 +135,7 @@ public class Command_plugincontrol extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { return Collections.emptyList(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java index d2c40f9d..719b0795 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -41,12 +41,12 @@ public class Command_potion extends FreedomCommand } else if (args[0].equalsIgnoreCase("clearall")) { - if (!(plugin.al.isAdmin(sender) || senderIsConsole)) + if (!(plugin.sl.isStaff(sender) || senderIsConsole)) { noPerms(); return true; } - FUtil.adminAction(sender.getName(), "Cleared all potion effects from all players", true); + FUtil.staffAction(sender.getName(), "Cleared all potion effects from all players", true); for (Player target : server.getOnlinePlayers()) { for (PotionEffect potion_effect : target.getActivePotionEffects()) @@ -76,9 +76,9 @@ public class Command_potion extends FreedomCommand return true; } - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { - msg(ChatColor.RED + "Only admins can clear potion effects from other players."); + msg(ChatColor.RED + "Only staff can clear potion effects from other players."); return true; } @@ -104,7 +104,7 @@ public class Command_potion extends FreedomCommand { target = getPlayer(args[4]); - if (target == null || plugin.al.isVanished(target.getName()) && !plugin.al.isAdmin(sender)) + if (target == null || plugin.sl.isVanished(target.getName()) && !plugin.sl.isStaff(sender)) { msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); return true; @@ -117,9 +117,9 @@ public class Command_potion extends FreedomCommand return true; } - if (!plugin.al.isAdmin(sender)) + if (!plugin.sl.isStaff(sender)) { - sender.sendMessage(ChatColor.RED + "Only admins can apply potion effects to other players."); + sender.sendMessage(ChatColor.RED + "Only staff can apply potion effects to other players."); return true; } @@ -183,7 +183,7 @@ public class Command_potion extends FreedomCommand { List arguments = new ArrayList<>(); arguments.addAll(Arrays.asList("list", "clear", "add")); - if (plugin.al.isAdmin(sender)) + if (plugin.sl.isStaff(sender)) { arguments.add("clearall"); } @@ -193,7 +193,7 @@ public class Command_potion extends FreedomCommand { if (args[0].equals("clear")) { - if (plugin.al.isAdmin(sender)) + if (plugin.sl.isStaff(sender)) { return FUtil.getPlayerList(); } @@ -217,7 +217,7 @@ public class Command_potion extends FreedomCommand return Arrays.asList(""); } } - else if (args.length == 5 && plugin.al.isAdmin(sender)) + else if (args.length == 5 && plugin.sl.isStaff(sender)) { if (args[0].equals("add")) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java index 9a1e7a21..90de5609 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; -import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.staff.StaffMember; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.math.NumberUtils; import org.bukkit.Bukkit; @@ -15,8 +15,8 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.entity.ThrownPotion; -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Allows admins to see potions that are thrown.", usage = "/ | history [player] ", aliases = "potspy") +@CommandPermissions(level = Rank.TRIAL_MOD, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Allows staff to see potions that are thrown.", usage = "/ | history [player] ", aliases = "potspy") public class Command_potionspy extends FreedomCommand { private String titleText = "&8&m------------------&r &ePotionSpy &8&m------------------&r"; @@ -28,11 +28,11 @@ public class Command_potionspy extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - Admin admin = plugin.al.getAdmin(playerSender); + StaffMember staffMember = plugin.sl.getAdmin(playerSender); if (args.length <= 0) { - setPotionSpyState(admin, !admin.getPotionSpy()); + setPotionSpyState(staffMember, !staffMember.getPotionSpy()); return true; } else @@ -41,12 +41,12 @@ public class Command_potionspy extends FreedomCommand { case "enable": case "on": - setPotionSpyState(admin, true); + setPotionSpyState(staffMember, true); break; case "disable": case "off": - setPotionSpyState(admin, false); + setPotionSpyState(staffMember, false); break; case "history": @@ -176,12 +176,12 @@ public class Command_potionspy extends FreedomCommand return true; } - private void setPotionSpyState(Admin admin, boolean state) + private void setPotionSpyState(StaffMember staffMember, boolean state) { - admin.setPotionSpy(state); - plugin.al.save(admin); - plugin.al.updateTables(); - msg("PotionSpy is now " + (admin.getPotionSpy() ? "enabled." : "disabled.")); + staffMember.setPotionSpy(state); + plugin.sl.save(staffMember); + plugin.sl.updateTables(); + msg("PotionSpy is now " + (staffMember.getPotionSpy() ? "enabled." : "disabled.")); } /** diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_protectarea.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_protectarea.java deleted file mode 100644 index 1803aba7..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_protectarea.java +++ /dev/null @@ -1,104 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.ProtectArea; -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.apache.commons.lang.StringUtils; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) -@CommandParameters( - description = "Protect areas so that only admins can directly modify blocks in those areas. WorldEdit and other such plugins might bypass this.", - usage = "/ | add