From 928ab41d7f95159e8263d4e7c34858a0fc0297a8 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 00:37:16 -0600 Subject: [PATCH 01/81] Update Command_ride.java --- .../me/totalfreedom/totalfreedommod/command/Command_ride.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java index 9b8ca1d3..30a1883b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java @@ -26,7 +26,7 @@ public class Command_ride extends FreedomCommand final FPlayer fPlayer = plugin.pl.getPlayer(playerSender); if (fPlayer.getCageData().isCaged()) { - msg("You cannot used this command while caged."); + msg("You cannot use this command while caged."); return true; } From be562fe7227b90fa52c57f81ff35f32ecfd26e39 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 00:58:28 -0600 Subject: [PATCH 02/81] ok, done (FS-156) --- src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java index b67211dd..5eebbb2d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java @@ -227,7 +227,7 @@ public class Shop extends FreedomService ItemStack itemStack = new ItemStack(Material.BLAZE_ROD); ItemMeta itemMeta = itemStack.getItemMeta(); assert itemMeta != null; - itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3i&bn&3g &b&bR&3o&bd")); + itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3n&bi&3n&bg &3R&bo&3d")); itemMeta.setLore(Arrays.asList(ChatColor.AQUA + "Strike others down with the power of lightning.", ChatColor.RED + ChatColor.ITALIC.toString() + "The classic way to exterminate annoyances.")); itemMeta.addEnchant(Enchantment.CHANNELING, 1, false); itemStack.setItemMeta(itemMeta); From 407b63e48beb2173bdede626dfcc7732f39b3a55 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 01:23:24 -0600 Subject: [PATCH 03/81] Fixes FS-137 --- .../me/totalfreedom/totalfreedommod/config/ConfigEntry.java | 1 + .../totalfreedommod/discord/DiscordToAdminChatListener.java | 5 +++++ .../totalfreedommod/discord/DiscordToMinecraftListener.java | 5 +++++ src/main/resources/config.yml | 2 ++ 4 files changed, 13 insertions(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index c6974ba8..eb557b1f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -83,6 +83,7 @@ public enum ConfigEntry DISCORD_NEW_ADMIN_ROLE_ID(String.class, "discord.admin_role_id"), DISCORD_SENIOR_ADMIN_ROLE_ID(String.class, "discord.senior_admin_role_id"), DISCORD_DEVELOPER_ROLE_ID(String.class, "discord.developer_role_id"), + DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID(String.class, "discord.assistant_executive_role_id"), DISCORD_EXECUTIVE_ROLE_ID(String.class, "discord.executive_role_id"), DISCORD_SERVER_OWNER_ROLE_ID(String.class, "discord.server_owner_role_id"), // diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java index 633b0e8f..4e0ff6fb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java @@ -119,6 +119,11 @@ public class DiscordToAdminChatListener extends ListenerAdapter { return Title.EXECUTIVE; } + // Assistant Executives + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString()))) + { + return Title.ASSTEXEC; + } // Senior Admins else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString()))) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java index 85a58d64..e0f26bff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java @@ -84,6 +84,11 @@ public class DiscordToMinecraftListener extends ListenerAdapter { return Title.EXECUTIVE.getColoredTag(); } + // Assistant Executives + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString()))) + { + return Title.ASSTEXEC.getColoredTag(); + } // Senior Admins else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString()))) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 027578fa..d157570f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -78,6 +78,8 @@ discord: senior_admin_role_id: '' # Developer role ID developer_role_id: '' + # Assistant Executive role ID + assistant_executive_role_id: '' # Executive Admin role ID executive_role_id: '' # Owner role ID From 1cf46c7337c2d536bb416b9a30ba8218999f17cd Mon Sep 17 00:00:00 2001 From: Elmon11 Date: Sun, 2 May 2021 14:03:48 +0200 Subject: [PATCH 04/81] grammar fix --- .../me/totalfreedom/totalfreedommod/command/Command_glow.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java index 62100467..ca77a8ce 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java @@ -26,7 +26,7 @@ public class Command_glow extends FreedomCommand playerSender.addPotionEffect(glow); glowing = true; } - msg("You " + (glowing ? "are now" : "no longer") + " glowing."); + msg("You are " + (glowing ? "now" : "no longer") + " glowing."); return true; } } From 951c699ed02e84db33940263e750cab557877310 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 3 May 2021 15:44:05 +0100 Subject: [PATCH 05/81] Remove a number of wipe commands we don't want anyway We shouldn't be wiping any of this data within the server now anyway so let's not tempt fate again. --- .../command/Command_wipecoreprotectdata.java | 37 ---------- .../command/Command_wipeflatlands.java | 53 -------------- .../command/Command_wipepunishments.java | 40 ---------- .../command/Command_wiperegions.java | 73 ------------------- .../command/Command_wipewarps.java | 34 --------- 5 files changed, 237 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java deleted file mode 100644 index f89ff3cf..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) -@CommandParameters(description = "Wipes the CoreProtect data for the flatlands", usage = "/") -public class Command_wipecoreprotectdata extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.cpb.isEnabled()) - { - msg("CoreProtect is not enabled on this server"); - return true; - } - - FUtil.adminAction(sender.getName(), "Wiping CoreProtect data for the flatlands", true); - - new BukkitRunnable() - { - @Override - public void run() - { - plugin.cpb.clearDatabase(plugin.wm.flatlands.getWorld()); - } - }.runTaskAsynchronously(plugin); - - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java deleted file mode 100644 index a0b71336..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java +++ /dev/null @@ -1,53 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Wipe the flatlands map. Requires manual restart after command is used.", usage = "/") -public class Command_wipeflatlands extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - plugin.sf.setSavedFlag("do_wipe_flatlands", true); - - if (!ConfigEntry.FLATLANDS_GENERATE.getBoolean()) - { - msg("Flatlands generation is disabled, therefore it cannot be wiped."); - return true; - } - - FUtil.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY); - - World flatlands = plugin.wm.flatlands.getWorld(); - - if (plugin.wgb.isEnabled()) - { - plugin.wgb.wipeRegions(flatlands); - } - - for (Player player : server.getOnlinePlayers()) - { - player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes."); - } - - if (plugin.cpb.isEnabled()) - { - plugin.cpb.clearDatabase(flatlands, true); - } - else - { - server.shutdown(); - } - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java deleted file mode 100644 index f6d5c2ce..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Wipes all logged punishments or punishments for a specific user.", usage = "/ ") -public class Command_wipepunishments extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - - if (args.length < 1) - { - return false; - } - - if (args[0].equalsIgnoreCase("-a")) - { - FUtil.adminAction(sender.getName(), "Wiping the punishment history", true); - - msg("Wiped " + plugin.pul.clear() + " punishments."); - } - else - { - String username = args[0]; - - FUtil.adminAction(sender.getName(), "Wiping the punishment history for " + username, true); - - msg("Wiped " + plugin.pul.clear(username) + " punishments for " + username + "."); - } - - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java deleted file mode 100644 index 42ddf20c..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java +++ /dev/null @@ -1,73 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; -import org.bukkit.World; -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 = "Wipe all WorldGuard regions for a specified world.", usage = "/ ") -public class Command_wiperegions extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.wgb.isEnabled()) - { - msg("WorldGuard is not enabled."); - return true; - } - - if (args.length != 1) - { - return false; - } - - World world = server.getWorld(args[0]); - if (world == null) - { - msg("There is no world named \"" + args[0] + "\"", ChatColor.RED); - return true; - } - - int regionsWiped = plugin.wgb.wipeRegions(world); - - if (regionsWiped != 0) - { - FUtil.adminAction(sender.getName(), "Wiped all regions in " + world.getName(), true); - msg("Wiped " + regionsWiped + " regions in " + world.getName()); - } - else - { - msg(ChatColor.RED + "No regions were found in \"" + world.getName() + "\""); - } - return true; - } - - public List getAllWorldNames() - { - List names = new ArrayList<>(); - for (World world : server.getWorlds()) - { - names.add(world.getName()); - } - return names; - } - - @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { - return getAllWorldNames(); - } - - return Collections.emptyList(); - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java deleted file mode 100644 index b7003ea6..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import com.earth2me.essentials.Essentials; -import java.io.File; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Removes all Essentials warps", usage = "/") -public class Command_wipewarps extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.esb.isEnabled()) - { - msg("Essentials is not enabled on this server."); - return true; - } - - Essentials essentials = plugin.esb.getEssentialsPlugin(); - File warps = new File(essentials.getDataFolder(), "warps"); - FUtil.adminAction(sender.getName(), "Wiping Essentials warps", true); - FUtil.deleteFolder(warps); - //noinspection ResultOfMethodCallIgnored - warps.mkdir(); - essentials.reload(); - msg("All warps deleted."); - return true; - } -} From bdf4ca84e0a422775068ad3ef6264dfc64176db9 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 4 May 2021 06:31:55 -0600 Subject: [PATCH 06/81] Why overcomplicating things is a horrifically bad idea (#55) The longer I look into this plugin's code, the angrier I will become. This fixes 2 bugs in the /potion command: - Fixes non-admins being able to clear other players - Fixes NPE caused when trying to add potion effects to players who are not on the server as a non-admin. Both of these issues are caused by overcomplicating seemingly simple solutions, hence the name of this commit. Co-authored-by: Ryan Co-authored-by: Nathan Curran <30569566+Focusvity@users.noreply.github.com> --- .../totalfreedom/totalfreedommod/command/Command_potion.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 f130d51a..0f30f24d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -65,7 +65,7 @@ public class Command_potion extends FreedomCommand Player target = playerSender; if (args.length == 2) { - if (!plugin.al.isAdmin(sender) && !target.equals(getPlayer(sender.getName()))) + if (!plugin.al.isAdmin(sender) && !args[1].equalsIgnoreCase(sender.getName())) { msg(ChatColor.RED + "Only admins can clear potion effects from other players."); return true; @@ -104,7 +104,7 @@ public class Command_potion extends FreedomCommand if (args.length == 5) { - if (!plugin.al.isAdmin(sender) && !getPlayer(args[4]).equals(getPlayer(sender.getName()))) + if (!plugin.al.isAdmin(sender) && !args[4].equalsIgnoreCase(sender.getName())) { msg("Only admins can apply potion effects to other players.", ChatColor.RED); return true; From 9dd0298f56951344177bbc8c45f3aa4398118bbb Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 9 May 2021 09:42:31 -0600 Subject: [PATCH 07/81] Bug fixes, improvements, and removals (FS-192) (#46) * Three fixes * Fixes /tempban throwing a NullPointerException when trying to get a player who isn't on the server but was in the past * Fixes /tempban banning players for 24 hours regardless of the duration defined * Fixes /list -t throwing a NullPointerException when performed from a non-player source (such as Telnet) * Removes hubworld entriely * Configurable blacklists for tag, muted commands, and wildcard Changes: * Moves globally blocked commands to the `global` subsection of the original `blocked_commands` section. You *will* need to update your configurations * /wildcard's command blacklist is now configurable under the `wildcard` section in `blocked_commands`. * The commands muted players can't use are now configurable under the `muted` section in `blocked_commands`. * Removes some commented-out globally blocked command entries. Co-authored-by: Ryan --- .../totalfreedom/totalfreedommod/Muter.java | 5 +- .../totalfreedommod/TotalFreedomMod.java | 1 - .../bridge/WorldGuardBridge.java | 1 - .../command/Command_hubworld.java | 202 -------- .../totalfreedommod/command/Command_list.java | 2 +- .../totalfreedommod/command/Command_tag.java | 10 +- .../command/Command_tagnyan.java | 3 +- .../command/Command_tagrainbow.java | 3 +- .../command/Command_tempban.java | 69 ++- .../command/Command_wildcard.java | 12 +- .../totalfreedommod/config/ConfigEntry.java | 5 +- .../totalfreedommod/world/HubWorld.java | 102 ---- .../totalfreedommod/world/WorldManager.java | 12 - .../world/WorldRestrictions.java | 2 +- src/main/resources/config.yml | 440 ++++++++++-------- 15 files changed, 301 insertions(+), 568 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java index c0416e16..c6b336ae 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java @@ -1,13 +1,11 @@ package me.totalfreedom.totalfreedommod; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FSync; -import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.entity.Player; @@ -20,7 +18,6 @@ import org.bukkit.event.player.PlayerJoinEvent; public class Muter extends FreedomService { - public static final List MUTE_COMMANDS = Arrays.asList(StringUtils.split("say,me,msg,tell,reply,mail", ",")); public final List MUTED_PLAYERS = new ArrayList<>(); @Override @@ -88,7 +85,7 @@ public class Muter extends FreedomService cmdName = command.getName().toLowerCase(); } - if (MUTE_COMMANDS.contains(cmdName)) + if (ConfigEntry.MUTED_BLOCKED_COMMANDS.getStringList().contains(cmdName)) { player.sendMessage(ChatColor.RED + "That command is blocked while you are muted."); event.setCancelled(true); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index fc4bf512..9804f730 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -127,7 +127,6 @@ public class TotalFreedomMod extends JavaPlugin public Sitter st; public VanishHandler vh; public Pterodactyl ptero; - //public HubWorldRestrictions hwr; // // Bridges public BukkitTelnetBridge btb; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java index 048f7ac3..6bc0ab9b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java @@ -15,7 +15,6 @@ public class WorldGuardBridge extends FreedomService @Override public void onStart() { - plugin.wr.protectWorld(plugin.wm.hubworld.getWorld()); plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java deleted file mode 100644 index cf6da0d0..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java +++ /dev/null @@ -1,202 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import io.papermc.lib.PaperLib; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.world.WorldTime; -import me.totalfreedom.totalfreedommod.world.WorldWeather; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "HubWorld management stuff", - usage = "/ [time | weather ]", - aliases = "hw,hub") -public class Command_hubworld extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - CommandMode commandMode = null; - - if (args.length == 0) - { - commandMode = CommandMode.TELEPORT; - } - else if (args.length >= 2) - { - if ("time".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.TIME; - } - else if ("weather".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.WEATHER; - } - } - - if (commandMode == null) - { - return false; - } - - try - { - switch (commandMode) - { - case TELEPORT: - { - if (!(sender instanceof Player) || playerSender == null) - { - return false; - } - - World hubWorld = null; - try - { - hubWorld = plugin.wm.hubworld.getWorld(); - } - catch (Exception ignored) - { - } - - if (hubWorld == null || playerSender.getWorld() == hubWorld) - { - msg("Going to the main world."); - PaperLib.teleportAsync(playerSender, server.getWorlds().get(0).getSpawnLocation()); - } - else - { - msg("Going to the hub world"); - plugin.wm.hubworld.sendToWorld(playerSender); - } - - break; - } - case TIME: - { - assertCommandPerms(sender, playerSender); - - if (args.length == 2) - { - WorldTime timeOfDay = WorldTime.getByAlias(args[1]); - if (timeOfDay != null) - { - plugin.wm.hubworld.setTimeOfDay(timeOfDay); - msg("Hub world time set to: " + timeOfDay.name()); - } - else - { - msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight"); - } - } - else - { - return false; - } - - break; - } - case WEATHER: - { - assertCommandPerms(sender, playerSender); - - if (args.length == 2) - { - WorldWeather weatherMode = WorldWeather.getByAlias(args[1]); - if (weatherMode != null) - { - plugin.wm.hubworld.setWeatherMode(weatherMode); - msg("Hub world weather set to: " + weatherMode.name()); - } - else - { - msg("Invalid weather mode. Can be: off, rain, storm"); - } - } - else - { - return false; - } - - break; - } - default: - { - return false; - } - } - } - catch (PermissionDeniedException ex) - { - if (ex.getMessage().isEmpty()) - { - return noPerms(); - } - msg(ex.getMessage()); - return true; - } - - return true; - } - - @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { - return Collections.emptyList(); - } - if (args.length == 1) - { - return Arrays.asList("time", "weather"); - } - else if (args.length == 2) - { - if (args[0].equals("time")) - { - return Arrays.asList("morning", "noon", "evening", "night"); - } - else if (args[0].equals("weather")) - { - return Arrays.asList("off", "rain", "storm"); - } - } - return Collections.emptyList(); - } - - // TODO: Redo this properly - private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException - { - if (!(sender instanceof Player) || playerSender == null || !plugin.al.isAdmin(playerSender)) - { - throw new PermissionDeniedException(); - } - } - - private enum CommandMode - { - TELEPORT, TIME, WEATHER - } - - private static class PermissionDeniedException extends Exception - { - - private static final long serialVersionUID = 1L; - - private PermissionDeniedException() - { - super(""); - } - - private PermissionDeniedException(String string) - { - super(string); - } - } -} \ No newline at end of file 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 f3a0ad94..336bae57 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java @@ -88,7 +88,7 @@ public class Command_list extends FreedomCommand List n = new ArrayList<>(); - if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender) && plugin.al.getAdmin(playerSender).getRank().isAtLeast(Rank.ADMIN)) + if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender)) { List connectedAdmins = plugin.btb.getConnectedAdmins(); onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size()) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java index 02538518..6f6a1520 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java @@ -1,7 +1,8 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.Arrays; import java.util.List; + +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -19,9 +20,6 @@ import org.bukkit.entity.Player; public class Command_tag extends FreedomCommand { - public static final List FORBIDDEN_WORDS = Arrays.asList( - "admin", "owner", "moderator", "developer", "console", "dev", "staff", "mod", "sra", "tca", "sta", "sa"); - @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { @@ -170,7 +168,7 @@ public class Command_tag extends FreedomCommand if (!plugin.al.isAdmin(sender)) { - for (String word : FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { @@ -261,7 +259,7 @@ public class Command_tag extends FreedomCommand if (!plugin.al.isAdmin(sender)) { - for (String word : FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java index a59d3447..f2618fd8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -43,7 +44,7 @@ public class Command_tagnyan extends FreedomCommand if (!plugin.al.isAdmin(sender)) { - for (String word : Command_tag.FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java index fb4afa1f..3795a8c6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -33,7 +34,7 @@ public class Command_tagrainbow extends FreedomCommand return true; } - for (String word : Command_tag.FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java index 3e8d2780..dfc412ce 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java @@ -13,6 +13,8 @@ import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -44,6 +46,9 @@ public class Command_tempban extends FreedomCommand } } + final String username; + final List ips = new ArrayList<>(); + final Player player = getPlayer(args[0]); final PlayerData entry; if (player == null) @@ -55,15 +60,18 @@ public class Command_tempban extends FreedomCommand msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); return true; } + + username = entry.getName(); + ips.addAll(entry.getIps()); } else { entry = plugin.pl.getData(player); + username = player.getName(); + ips.add(FUtil.getIp(player)); } - final List ips = new ArrayList<>(entry.getIps()); - assert player != null; - final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName()); + final StringBuilder message = new StringBuilder("Temporarily banned " + username); Date expires = FUtil.parseDateOffset("30m"); message.append(" until ").append(date_format.format(expires)); @@ -80,16 +88,36 @@ public class Command_tempban extends FreedomCommand message.append(", Reason: \"").append(reason).append("\""); } + Ban ban; + + if (player != null) + { + ban = Ban.forPlayer(player, sender, expires, reason); + } + else + { + ban = Ban.forPlayerName(username, sender, expires, reason); + } + + for (String ip : ips) + { + ban.addIp(ip); + } + plugin.bm.addBan(ban); + if (!quiet) { - // Strike with lightning - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) + if (player != null) { - for (int z = -1; z <= 1; z++) + // Strike with lightning + final Location targetPos = player.getLocation(); + for (int x = -1; x <= 1; x++) { - final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); + for (int z = -1; z <= 1; z++) + { + final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); + Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); + } } } @@ -97,21 +125,22 @@ public class Command_tempban extends FreedomCommand } else { - msg("Quietly temporarily banned " + player.getName() + "."); + msg("Quietly temporarily banned " + username + "."); } - - Ban ban; - - ban = Ban.forPlayer(player, sender, null, reason); - - for (String ip : ips) + if (player != null) { - ban.addIp(ip); + player.kickPlayer(ban.bakeKickMessage()); + for (Player p : Bukkit.getOnlinePlayers()) + { + if (FUtil.getIp(p).equals(FUtil.getIp(player))) + { + p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); + } + } } - plugin.bm.addBan(ban); - player.kickPlayer(ban.bakeKickMessage()); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.TEMPBAN, reason)); + + plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java index a796b620..a4d74e4c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java @@ -3,6 +3,8 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.Arrays; import java.util.List; + +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -15,14 +17,6 @@ import org.bukkit.entity.Player; public class Command_wildcard extends FreedomCommand { - public static final List BLOCKED_COMMANDS = Arrays.asList( - "wildcard", - "gtfo", - "doom", - "slconfig", - "smite" - ); - @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { @@ -52,7 +46,7 @@ public class Command_wildcard extends FreedomCommand aliases = Arrays.asList(fCmd.getAliases().split(",")); } - for (String blockedCommand : BLOCKED_COMMANDS) + for (String blockedCommand : ConfigEntry.WILDCARD_BLOCKED_COMMANDS.getStringList()) { if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index eb557b1f..05051905 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -155,7 +155,10 @@ public enum ConfigEntry EXPLOSIVE_RADIUS(Double.class, "explosive_radius"), FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"), SERVICE_CHECKER_URL(String.class, "service_checker_url"), - BLOCKED_COMMANDS(List.class, "blocked_commands"), + BLOCKED_COMMANDS(List.class, "blocked_commands.global"), + MUTED_BLOCKED_COMMANDS(List.class, "blocked_commands.muted"), + WILDCARD_BLOCKED_COMMANDS(List.class, "blocked_commands.wildcard"), + FORBIDDEN_WORDS(List.class, "forbidden_words"), HOST_SENDER_NAMES(List.class, "host_sender_names"), FAMOUS_PLAYERS(List.class, "famous_players"), ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"), diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java b/src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java deleted file mode 100644 index 241c6d81..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java +++ /dev/null @@ -1,102 +0,0 @@ -package me.totalfreedom.totalfreedommod.world; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.WorldCreator; -import org.bukkit.WorldType; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.Player; - -public final class HubWorld extends CustomWorld -{ - - private static final String GENERATION_PARAMETERS = ConfigEntry.FLATLANDS_GENERATE_PARAMS.getString(); - // - private WorldWeather weather = WorldWeather.OFF; - private WorldTime time = WorldTime.INHERIT; - - public HubWorld() - { - super("hubworld"); - } - - @Override - public void sendToWorld(Player player) - { - super.sendToWorld(player); - } - - // TODO: Replace instances of org.bukkit.Sign with a non deprecated version. This might include more boilerplate. - @SuppressWarnings("deprecation") - @Override - protected World generateWorld() - { - final WorldCreator worldCreator = new WorldCreator(getName()); - worldCreator.generateStructures(false); - worldCreator.type(WorldType.NORMAL); - worldCreator.environment(World.Environment.NORMAL); - worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS)); - - final World world = server.createWorld(worldCreator); - - assert world != null; - world.setSpawnFlags(false, false); - world.setSpawnLocation(0, 50, 0); - - final Block welcomeSignBlock = world.getBlockAt(0, 50, 0); - welcomeSignBlock.setType(Material.OAK_SIGN); - org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign)welcomeSignBlock.getState(); - - org.bukkit.material.Sign signData = (org.bukkit.material.Sign)welcomeSign.getData(); - signData.setFacingDirection(BlockFace.NORTH); - - welcomeSign.setLine(0, ChatColor.GREEN + "Hub World"); - welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---"); - welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point"); - welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); - welcomeSign.update(); - - plugin.gr.commitGameRules(); - return world; - } - - public WorldWeather getWeatherMode() - { - return weather; - } - - public void setWeatherMode(final WorldWeather weatherMode) - { - this.weather = weatherMode; - - try - { - weatherMode.setWorldToWeather(getWorld()); - } - catch (Exception ignored) - { - } - } - - public WorldTime getTimeOfDay() - { - return time; - } - - public void setTimeOfDay(final WorldTime timeOfDay) - { - this.time = timeOfDay; - - try - { - timeOfDay.setWorldToTime(getWorld()); - } - catch (Exception ignored) - { - } - } - -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java index a88dec0a..579da910 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java @@ -20,14 +20,12 @@ public class WorldManager extends FreedomService public Flatlands flatlands; public AdminWorld adminworld; public MasterBuilderWorld masterBuilderWorld; - public HubWorld hubworld; public WorldManager() { this.flatlands = new Flatlands(); this.adminworld = new AdminWorld(); this.masterBuilderWorld = new MasterBuilderWorld(); - this.hubworld = new HubWorld(); } @Override @@ -36,7 +34,6 @@ public class WorldManager extends FreedomService flatlands.getWorld(); adminworld.getWorld(); masterBuilderWorld.getWorld(); - hubworld.getWorld(); // Disable weather if (ConfigEntry.DISABLE_WEATHER.getBoolean()) @@ -57,7 +54,6 @@ public class WorldManager extends FreedomService flatlands.getWorld().save(); adminworld.getWorld().save(); masterBuilderWorld.getWorld().save(); - hubworld.getWorld().save(); } @EventHandler(priority = EventPriority.HIGH) @@ -73,10 +69,6 @@ public class WorldManager extends FreedomService { return; } - else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF) - { - return; - } } catch (Exception ignored) { @@ -101,10 +93,6 @@ public class WorldManager extends FreedomService { return; } - else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF) - { - return; - } } catch (Exception ignored) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java index f1869635..4aef7377 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java @@ -54,7 +54,7 @@ public class WorldRestrictions extends FreedomService { if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName())) { - if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()) || player.getWorld().equals(plugin.wm.hubworld.getWorld())) + if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld())) { return true; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d157570f..065239bd 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -230,214 +230,242 @@ allow: auto_clear: false gravity: false -# Blocked commands: -# -# How blocked commands work: -# All sections described below are delimited by colon characters. -# Make sure that you block a command by its main command name, not an alias -# as all aliases are blocked by default. Commands are case-insensitive. -# -# * The first section is a letter which indicates which rank may use this command -# Valid ranks: -# n - Nobody (Completely disabled) -# a - Admins (Console) -# s - Senior Admins (Console) -# o - Ops (Non-Ops won't be able to use it) -# -# * The second section is a letter which indicates what to do when a player executes that command. -# Valid actions: -# b - Block the command -# a - Block the command and auto-eject that player (for ops and below) -# u - Block the command and Return an "Unknown command" message (Used to hide commands) -# -# * The third section is the command to be blocked, prefixed with a slash -# -# * The fourth section is the message to send to the player when executing that command. -# This should be omitted if unwanted. ChatColors are supported with the &-key. By default -# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message -# by using a single underscore. -# -# Examples: -# - 'n:b:/mail sendall:&4You can't send mails to everyone!' -# - 's:a:/stop' -# - 'n:b:/ban:_' -# blocked_commands: - # Core Protect Blocked and shows as an unknown command... - - 'a:u:/co:_' - - 'n:u:/co purge:_' - - 'a:u:/coreprotect:_' - - 'n:u:/coreprotect purge:_' - - 'a:u:/core:_' - - 'n:u:/core purge:_' - # Disabled commands - - 'n:b:/essentials:_' - - 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.' - - 'n:b:/disguiseradius:_' - - 'n:b:/undisguiseradius:_' - - 'n:b:/debug:_' - - 'n:b:/pardon:_' - - 'n:b:/ban-ip:_' - - 'n:b:/pardon-ip:_' - - 'n:b:/toggledownfall:_' - - 'n:b:/spreadplayers:_' - - 'n:b:/blockdata:_' - - 'n:b:/clearhistory:_' - - 'n:b:/save-on:_' - - 'n:b:/save-off:_' - - 'n:b:/packet:_' - - 'n:b://eval:_' - - 'n:b:/testvote:_' - - 'n:b:/nvreload:_' - - 'n:b:/bungeeguard:_' - - 'n:b:/buycraft:_' - - 'n:b:/spigot reload:_' -# - 'n:b:/setjail:_' - - 'n:b:/mail sendall:Sending mail to all players is not allowed.' - - 'n:b:/entitydata:_' - - 'n:b:/skins:_' - - 'n:b:/advancement:_' - - 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.' - - 'n:b:/defaultgamemode:The default gamemode should not be changed.' - - 'n:b:/thread:_' - - 'n:b:/stacktrace:_' - - 'n:b:/function:_' - - 'n:b:/forceload:_' - - 'n:b:/fill:_' - - 'n:b:/paper:_' - - 'n:b:/locate:_' - - 'n:b:/vvbukkit:_' - - 'n:b:/plot area c:_' - - 'n:b:/d minecart_command:_' - - 'n:b:/loot:_' - - 'n:b:/plan:_' -# - 'n:b:/explosivearrows:&cDisabled until further notice' - - 'n:b://material:_' - - 'n:b://mat:_' - - 'n:b:/mat:_' - - 'n:b:/vpnguard:_' - - 'n:b:/pcapi:_' - - 'n:b://distr:&cNope.' - - 'n:b:/data:_' - - 'n:b:/datapack:_' - - 'n:b://regen:_' - - 'n:b:/onlinemode:&cThis breaks UUIDs.' - - 'n:b:/execute:_' - - 'n:b:/killall:_' - - 'n:b:/createdisguise:_' - - 'n:b:/attribute:_' + # + # How globally blocked commands work: + # All sections described below are delimited by colon characters. + # Make sure that you block a command by its main command name, not an alias + # as all aliases are blocked by default. Commands are case-insensitive. + # + # * The first section is a letter which indicates which rank may use this command + # Valid ranks: + # n - Nobody (Completely disabled) + # a - Admins (Console) + # s - Senior Admins (Console) + # o - Ops (Non-Ops won't be able to use it) + # + # * The second section is a letter which indicates what to do when a player executes that command. + # Valid actions: + # b - Block the command + # a - Block the command and auto-eject that player (for ops and below) + # u - Block the command and Return an "Unknown command" message (Used to hide commands) + # + # * The third section is the command to be blocked, prefixed with a slash + # + # * The fourth section is the message to send to the player when executing that command. + # This should be omitted if unwanted. ChatColors are supported with the &-key. By default + # the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message + # by using a single underscore. + # + # Examples: + # - 'n:b:/mail sendall:&4You can't send mails to everyone!' + # - 's:a:/stop' + # - 'n:b:/ban:_' + # + global: + # CoreProtect Blocked and shows as an unknown command... + - 'a:u:/co:_' + - 'n:u:/co purge:_' + - 'a:u:/coreprotect:_' + - 'n:u:/coreprotect purge:_' + - 'a:u:/core:_' + - 'n:u:/core purge:_' - # Admin commands - - 'a:b:/vive:_' - - 'a:b:/vse:_' - - 'a:b:/lightning:_' - - 'a:b:/playsound:_' - - 'a:b:/locatebiome:_' - - 'a:b:/delchunks:_' - - 'a:b:/exploitfixer:_' - - 'a:b:/massivelag:_' - - 'a:b:/ml:_' - - 'a:b:/createkit:_' - - 'a:b:/delkit:_' - - 'a:b:/region:_' - - 'a:b:/clone:_' - - 'a:b:/cap:_' - - 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.' - - 'a:b:/powernbt:_' - - 'a:b:/nbt.:_' - - 'a:b:/blockshub:_' - - 'a:b:/protocol:_' - - 'a:b:/libsdisguises reload:_' - - 'a:b://awe:_' - - 'a:b:/stopfire:_' - - 'a:b:/allowfire' - - 'a:b:/stoplag:_' - - 'a:b:/worldguard:_' - - 'a:b:/slay:_' - - 'a:b:/save-all:_' - - 'a:b:/libsdisguises:_' - - 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.' - - 'a:b:/rainbowclear:_' - - 'a:b:/rainbowspeed:_' - - 'a:b:/kick:_' - - 'a:b:/difficulty:_' - - 'a:b:/captchafy:_' - - 'a:b:/socialspy:_' - - 'a:b:/sproxy:_' - - 'a:b:/replaceitem:_' - - 'a:b:/kill:_' - - 'a:b:/reaction:_' - - 'a:b:/setworldspawn:_' - - 'a:b:/scoreboard:_' - - 'a:b:/setspawn:_' - - 'a:b:/forestgen:_' - - 'a:b:/setidletimeout:_' - - 'a:b:/lrbuild:_' - - 'a:b:/size:_' - - 'a:b:/break:_' - - 'a:b:/disentity:_' - - 'a:b:/reload:_' - - 'a:b:/title:_' - - 'a:b:/weather:_' - - 'a:b:/tpall:_' - - 'a:b:/etpall:_' - - 'a:b:/setblock:_' - - 'a:b:/gamerule:_' - - 'a:b:/togglejail:_' - - 'a:b:/range:_' - - 'a:b:/stop:_' - - 'a:b:/restart:_' - - 'a:b:/sr:_' - - 'a:b:/tpo:_' - - 'a:b:/tpohere:_' - - 'a:b:/tphere:_' - - 'a:b:/rfchairs:_' - - 'a:b:/ppo:_' - - 'a:b:/vulnerabilitypatcher:_' - - 'a:b:/crackshot config:_' - - 'a:b:/marry reload:_' - - 'a:b:/bh:_' - - 'a:b:/tpaall:_' - - 'a:b:/paper heap:_' - - 'a:u:/burn:_' - - 'a:b:/summon:_' - - 'a:b:/discord:_' - - 'a:b:/bossbar:_' - - 'a:b:/team:_' - - 'a:b:/spawner:_' -# - 'a:b:/getpos:_' - - 's:b:/istack:_' - - 'a:b:/getloc:_' - - 'a:b:/holo:_' - - 'a:b:/hd:_' - - 'a:b:/hologram:_' - - 'a:b:/holograms:_' -# - 'a:b:/whois:&cpeople like aurulim ruined the usage of this command, stop tp bypassing' # Blocking this is ridiculous. Instead of being lazy and just blocking whois, how about you disable the part where it reveals people's coords, like you did with disabling IPs? - - 's:b:/awe toggle:_' - - 's:b:/tellraw:_' - - 's:b://awe toggle:_' - - 'a:b:/openinv:_' - - 'a:b:/oi:_' - - 'a:b:/open:_' - - 'a:b:/openender:_' - - 'a:b:/oe:_' - - 'a:b:/searchinv:_' - - 'a:b:/si:_' - - 'a:b:/searchender:_' - - 'a:b:/se:_' - - 'a:b:/searchenchant:_' - - 'a:b:/searchenchants:_' - - 'a:b:/anycontainer:_' - - 'a:b:/anychest:_' - - 'a:b:/sc:_' - - 'a:b:/fawe:_' - - 'a:b:/wea:_' - - 'a:b:/protocolsupport:_' - - 'a:b:/ps:_' - - 'n:b:/wra:_' - - 's:b:/viaver:_' - - 's:b:/viaversion:_' - - 's:b:/spark:_' + # Disabled commands + - 'n:b:/essentials:_' + - 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.' + - 'n:b:/disguiseradius:_' + - 'n:b:/undisguiseradius:_' + - 'n:b:/debug:_' + - 'n:b:/pardon:_' + - 'n:b:/ban-ip:_' + - 'n:b:/pardon-ip:_' + - 'n:b:/toggledownfall:_' + - 'n:b:/spreadplayers:_' + - 'n:b:/blockdata:_' + - 'n:b:/clearhistory:_' + - 'n:b:/save-on:_' + - 'n:b:/save-off:_' + - 'n:b:/packet:_' + - 'n:b://eval:_' + - 'n:b:/testvote:_' + - 'n:b:/nvreload:_' + - 'n:b:/bungeeguard:_' + - 'n:b:/buycraft:_' + - 'n:b:/spigot reload:_' + - 'n:b:/mail sendall:Sending mail to all players is not allowed.' + - 'n:b:/entitydata:_' + - 'n:b:/skins:_' + - 'n:b:/advancement:_' + - 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.' + - 'n:b:/defaultgamemode:The default gamemode should not be changed.' + - 'n:b:/thread:_' + - 'n:b:/stacktrace:_' + - 'n:b:/function:_' + - 'n:b:/forceload:_' + - 'n:b:/fill:_' + - 'n:b:/paper:_' + - 'n:b:/locate:_' + - 'n:b:/vvbukkit:_' + - 'n:b:/plot area c:_' + - 'n:b:/d minecart_command:_' + - 'n:b:/loot:_' + - 'n:b:/plan:_' + - 'n:b://material:_' + - 'n:b://mat:_' + - 'n:b:/mat:_' + - 'n:b:/vpnguard:_' + - 'n:b:/pcapi:_' + - 'n:b://distr:&cNope.' + - 'n:b:/data:_' + - 'n:b:/datapack:_' + - 'n:b://regen:_' + - 'n:b:/execute:_' + - 'n:b:/killall:_' + - 'n:b:/createdisguise:_' + - 'n:b:/attribute:_' + + # Admin commands + - 'a:b:/vive:_' + - 'a:b:/vse:_' + - 'a:b:/lightning:_' + - 'a:b:/playsound:_' + - 'a:b:/locatebiome:_' + - 'a:b:/delchunks:_' + - 'a:b:/exploitfixer:_' + - 'a:b:/massivelag:_' + - 'a:b:/ml:_' + - 'a:b:/createkit:_' + - 'a:b:/delkit:_' + - 'a:b:/region:_' + - 'a:b:/clone:_' + - 'a:b:/cap:_' + - 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.' + - 'a:b:/powernbt:_' + - 'a:b:/nbt.:_' + - 'a:b:/blockshub:_' + - 'a:b:/protocol:_' + - 'a:b:/libsdisguises reload:_' + - 'a:b://awe:_' + - 'a:b:/stopfire:_' + - 'a:b:/allowfire' + - 'a:b:/stoplag:_' + - 'a:b:/worldguard:_' + - 'a:b:/slay:_' + - 'a:b:/save-all:_' + - 'a:b:/libsdisguises:_' + - 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.' + - 'a:b:/rainbowclear:_' + - 'a:b:/rainbowspeed:_' + - 'a:b:/kick:_' + - 'a:b:/difficulty:_' + - 'a:b:/captchafy:_' + - 'a:b:/socialspy:_' + - 'a:b:/sproxy:_' + - 'a:b:/replaceitem:_' + - 'a:b:/kill:_' + - 'a:b:/reaction:_' + - 'a:b:/setworldspawn:_' + - 'a:b:/scoreboard:_' + - 'a:b:/setspawn:_' + - 'a:b:/forestgen:_' + - 'a:b:/setidletimeout:_' + - 'a:b:/lrbuild:_' + - 'a:b:/size:_' + - 'a:b:/break:_' + - 'a:b:/disentity:_' + - 'a:b:/reload:_' + - 'a:b:/title:_' + - 'a:b:/weather:_' + - 'a:b:/tpall:_' + - 'a:b:/etpall:_' + - 'a:b:/setblock:_' + - 'a:b:/gamerule:_' + - 'a:b:/togglejail:_' + - 'a:b:/range:_' + - 'a:b:/stop:_' + - 'a:b:/restart:_' + - 'a:b:/sr:_' + - 'a:b:/tpo:_' + - 'a:b:/tpohere:_' + - 'a:b:/tphere:_' + - 'a:b:/rfchairs:_' + - 'a:b:/ppo:_' + - 'a:b:/vulnerabilitypatcher:_' + - 'a:b:/crackshot config:_' + - 'a:b:/marry reload:_' + - 'a:b:/bh:_' + - 'a:b:/tpaall:_' + - 'a:b:/paper heap:_' + - 'a:u:/burn:_' + - 'a:b:/summon:_' + - 'a:b:/discord:_' + - 'a:b:/bossbar:_' + - 'a:b:/team:_' + - 'a:b:/spawner:_' + - 's:b:/istack:_' + - 'a:b:/getloc:_' + - 'a:b:/holo:_' + - 'a:b:/hd:_' + - 'a:b:/hologram:_' + - 'a:b:/holograms:_' + - 's:b:/awe toggle:_' + - 's:b:/tellraw:_' + - 's:b://awe toggle:_' + - 'a:b:/openinv:_' + - 'a:b:/oi:_' + - 'a:b:/open:_' + - 'a:b:/openender:_' + - 'a:b:/oe:_' + - 'a:b:/searchinv:_' + - 'a:b:/si:_' + - 'a:b:/searchender:_' + - 'a:b:/se:_' + - 'a:b:/searchenchant:_' + - 'a:b:/searchenchants:_' + - 'a:b:/anycontainer:_' + - 'a:b:/anychest:_' + - 'a:b:/sc:_' + - 'a:b:/fawe:_' + - 'a:b:/wea:_' + - 'a:b:/protocolsupport:_' + - 'a:b:/ps:_' + - 'n:b:/wra:_' + - 's:b:/viaver:_' + - 's:b:/viaversion:_' + - 's:b:/spark:_' + + # Commands that cannot be used by muted players + muted: + - say + - me + - msg + - tell + - reply + - mail + + # Commands that cannot be used with /wildcard + wildcard: + - wildcard + - gtfo + - doom + - slconfig + - smite + +# Words that cannot be used in tags +forbidden_words: + - admin + - owner + - moderator + - developer + - console + - dev + - staff + - mod + - sra + - tca + - sta + - sa # Automatically wipe dropped objects auto_wipe: true From d170f6d32398b09a40b906eb8d10e214a7856132 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 16 May 2021 15:27:12 +0100 Subject: [PATCH 08/81] Switched from -c to -ci (#63) Resolves FS-219 --- .../totalfreedom/totalfreedommod/command/Command_smite.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java index b10bf92c..92b73d0d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java @@ -15,7 +15,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-c | -q]") +@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-ci | -q]") public class Command_smite extends FreedomCommand { @@ -106,9 +106,9 @@ public class Command_smite extends FreedomCommand reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } } - else if (args[args.length - 1].equalsIgnoreCase("-c")) + else if (args[args.length - 1].equalsIgnoreCase("-ci")) { - if (args[args.length - 1].equalsIgnoreCase("-c")) + if (args[args.length - 1].equalsIgnoreCase("-ci")) { clearinv = true; } From b1196fcf002f6b3c65f7a8a465be7c444093e2fd Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Mon, 17 May 2021 15:50:09 +1000 Subject: [PATCH 09/81] Added new dependency to allow TFM to compile (#65) --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 178ce56b..acc156df 100644 --- a/pom.xml +++ b/pom.xml @@ -277,6 +277,11 @@ 5.4.2 compile + + org.eclipse.sisu + org.eclipse.sisu.inject + 0.3.4 + @@ -434,7 +439,8 @@ io.papermc.lib - me.totalfreedom.totalfreedommod.paperlib + me.totalfreedom.totalfreedommod.paperlib + org.bstats From 21af722e233ed38606ae7f1db698971065b78732 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Mon, 17 May 2021 20:31:34 +1000 Subject: [PATCH 10/81] Name change for Fleek (#64) --- src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 02d4bfc7..195384db 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -73,10 +73,10 @@ public class FUtil "38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch "ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix "d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi - "2e06e049-24c8-42e4-8bcf-d35372af31e6", // unsuperiordev + "2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync "f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12 ); - public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "unsuperiordev", "videogamesm12"); + public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "NotInSync", "videogamesm12"); public static final Map CHAT_COLOR_NAMES = new HashMap<>(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_RED, From ac615f54f7dd4319cd050215020f44b537cf46c6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 21 May 2021 22:44:51 +0100 Subject: [PATCH 11/81] Add //g to blocked commands (#62) Co-authored-by: Nathan Curran <30569566+Focusvity@users.noreply.github.com> --- src/main/resources/config.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 065239bd..3780220d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -35,7 +35,7 @@ server: # All players who show up as executive executives: [ ] - + # All players who show up as assistant executive assistant_executives: [] @@ -434,6 +434,7 @@ blocked_commands: - 's:b:/viaver:_' - 's:b:/viaversion:_' - 's:b:/spark:_' + - 's:b://g:_' # Commands that cannot be used by muted players muted: @@ -567,7 +568,7 @@ admininfo: - ' &6- Report those breaking the rules' - ' &2- And apply on our forums at the link:' - '&9https://forum.totalfreedom.me/d/45-admin-application-template' - + # What to display in the vote command. votinginfo: - '&bVoting Links:' From 9ff5da8d8f08701c473001722c1ef082fbd7fd31 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 23 May 2021 00:06:34 +1000 Subject: [PATCH 12/81] Small modification to new TFGuilds (FS-255) (#67) --- pom.xml | 4 ++-- .../totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index acc156df..cfeb5851 100644 --- a/pom.xml +++ b/pom.xml @@ -252,9 +252,9 @@ - com.github.TotalFreedomMC + com.github.AtlasMediaGroup TFGuilds - db036fb187 + master-SNAPSHOT provided diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java index fea8ad88..e315b15c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java @@ -53,6 +53,6 @@ public class TFGuildsBridge extends FreedomService { return false; } - return Common.IN_GUILD_CHAT.contains(player); + return Common.GUILD_CHAT.contains(player); } } \ No newline at end of file From d047cfc8ffb95d04b3b25b8bed4816eba35e9e89 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 23 May 2021 00:40:55 +1000 Subject: [PATCH 13/81] Calculate the player count without offline players (FS-247) (#68) Co-authored-by: Ryan --- .../totalfreedommod/command/Command_list.java | 3 +-- .../totalfreedommod/httpd/module/Module_list.java | 4 +--- .../me/totalfreedom/totalfreedommod/util/FUtil.java | 13 +++++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) 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 336bae57..996ac302 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java @@ -101,8 +101,7 @@ public class Command_list extends FreedomCommand } else { - int count = server.getOnlinePlayers().size() - AdminList.vanished.size(); - onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(count < 0 ? 0 : count) + onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(FUtil.getFakePlayerCount()) .append(ChatColor.BLUE) .append(" out of a maximum ") .append(ChatColor.RED) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java index ef40114c..8ee00487 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java @@ -88,8 +88,6 @@ public class Module_list extends HTTPDModule } } - int count = server.getOnlinePlayers().size() - AdminList.vanished.size(); - // for future refernce - any multi-worded ranks are to be delimited by underscores in the json; eg. senior_admins responseObject.put("owners", owners); responseObject.put("executives", executives); @@ -99,7 +97,7 @@ public class Module_list extends HTTPDModule responseObject.put("master_builders", masterbuilders); responseObject.put("operators", operators); responseObject.put("imposters", imposters); - responseObject.put("online", count < 0 ? 0 : count); + responseObject.put("online", FUtil.getFakePlayerCount()); responseObject.put("max", server.getMaxPlayers()); final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 195384db..5afb206a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -838,6 +838,19 @@ public class FUtil }.runTaskLater(TotalFreedomMod.getPlugin(), delay); } + public static int getFakePlayerCount() + { + int i = TotalFreedomMod.getPlugin().al.vanished.size(); + for (String name : TotalFreedomMod.getPlugin().al.vanished) + { + if (Bukkit.getPlayer(name) == null) + { + i--; + } + } + return getServer().getOnlinePlayers().size() - i; + } + public static class PaginationList extends ArrayList { private final int epp; From eedb7a53759aa04504b81895939411674c4540ff Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Tue, 25 May 2021 21:45:53 +1000 Subject: [PATCH 14/81] Use long instead of int and use offset to check time (FS-181) (#69) * Use long instead of int and use offset to check time (FS-181) * Remove star import --- .../totalfreedommod/BackupManager.java | 17 +++-- .../totalfreedommod/util/FUtil.java | 75 +++++++++---------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java b/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java index e70bbf36..d5f2b8e2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod; -import java.io.File; import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.permissions.PermissionConfig; @@ -9,8 +8,11 @@ import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.util.FileUtil; +import java.io.File; + public class BackupManager extends FreedomService { + @Override public void onStart() { @@ -42,16 +44,16 @@ public class BackupManager extends FreedomService config.load(); // Weekly - if (!config.isInt(save + ".weekly")) + if (!config.isLong(save + ".weekly")) { performBackup(file, "weekly"); config.set(save + ".weekly", FUtil.getUnixTime()); } else { - int lastBackupWeekly = config.getInt(save + ".weekly"); + long lastBackupWeekly = config.getLong(save + ".weekly"); - if (lastBackupWeekly + 3600 * 24 * 7 < FUtil.getUnixTime()) + if (FUtil.parseLongOffset(lastBackupWeekly, "1w") < FUtil.getUnixTime()) { performBackup(file, "weekly"); config.set(save + ".weekly", FUtil.getUnixTime()); @@ -65,16 +67,16 @@ public class BackupManager extends FreedomService } // Daily - if (!config.isInt(save + ".daily")) + if (!config.isLong(save + ".daily")) { performBackup(file, "daily"); config.set(save + ".daily", FUtil.getUnixTime()); } else { - int lastBackupDaily = config.getInt(save + ".daily"); + long lastBackupDaily = config.getLong(save + ".daily"); - if (lastBackupDaily + 3600 * 24 < FUtil.getUnixTime()) + if (FUtil.parseLongOffset(lastBackupDaily, "1d") < FUtil.getUnixTime()) { performBackup(file, "daily"); config.set(save + ".daily", FUtil.getUnixTime()); @@ -98,5 +100,4 @@ public class BackupManager extends FreedomService final File newYaml = new File(backupFolder, file + "." + type + ".bak"); FileUtil.copy(oldYaml, newYaml); } - } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 5afb206a..a269a296 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -1,33 +1,5 @@ package me.totalfreedom.totalfreedommod.util; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.Field; -import java.net.HttpURLConnection; -import java.net.URL; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.SplittableRandom; -import java.util.TimeZone; -import java.util.UUID; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import org.apache.commons.io.FileUtils; @@ -48,6 +20,18 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import org.json.simple.JSONArray; + +import java.io.*; +import java.lang.reflect.Field; +import java.net.HttpURLConnection; +import java.net.URL; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import static org.bukkit.Bukkit.getServer; public class FUtil @@ -76,7 +60,7 @@ public class FUtil "2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync "f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12 ); - public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "NotInSync", "videogamesm12"); + public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12"); public static final Map CHAT_COLOR_NAMES = new HashMap<>(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_RED, @@ -274,7 +258,7 @@ public class FUtil public static Response sendRequest(String endpoint, String method, List headers, String body) throws IOException { URL url = new URL(endpoint); - HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(method); @@ -393,7 +377,8 @@ public class FUtil } } - private static final List regxList = new ArrayList(){{ + private static final List regxList = new ArrayList() + {{ add("y"); add("mo"); add("w"); @@ -403,11 +388,13 @@ public class FUtil add("s"); }}; - private static long a(String parse) { + private static long a(String parse) + { StringBuilder sb = new StringBuilder(); regxList.forEach(obj -> { - if (parse.endsWith(obj)) { + if (parse.endsWith(obj)) + { sb.append(parse.split(obj)[0]); } }); @@ -415,7 +402,8 @@ public class FUtil return Long.parseLong(sb.toString()); } - private static TimeUnit verify(String arg) { + private static TimeUnit verify(String arg) + { TimeUnit unit = null; for (String c : regxList) { @@ -461,6 +449,16 @@ public class FUtil return Date.from(instant); } + public static long parseLongOffset(long unix, String... time) + { + Instant instant = Instant.ofEpochMilli(unix); + for (String arg : time) + { + instant = instant.plusSeconds(verify(arg).get() * a(arg)); + } + return FUtil.getUnixTime(Date.from(instant)); + } + public static String playerListToNames(Set players) { List names = new ArrayList<>(); @@ -553,7 +551,7 @@ public class FUtil { Field field = checkClass.getDeclaredField(name); field.setAccessible(true); - return (T)field.get(from); + return (T) field.get(from); } catch (NoSuchFieldException | IllegalAccessException ignored) @@ -635,7 +633,7 @@ public class FUtil public static int randomInteger(int min, int max) { int range = max - min + 1; - return (int)(Math.random() * range) + min; + return (int) (Math.random() * range) + min; } public static String randomString(int length) @@ -773,7 +771,7 @@ public class FUtil { c1values[i] = Math.round(c1values[i] + factor * (c2values[i] - c1values[i])); } - return Color.fromRGB((int)c1values[0], (int)c1values[1], (int)c1values[2]); + return Color.fromRGB((int) c1values[0], (int) c1values[1], (int) c1values[2]); } public static boolean isValidIPv4(String ip) @@ -853,6 +851,7 @@ public class FUtil public static class PaginationList extends ArrayList { + private final int epp; public PaginationList(int epp) @@ -870,7 +869,7 @@ public class FUtil public int getPageCount() { - return (int)Math.ceil((double)size() / (double)epp); + return (int) Math.ceil((double) size() / (double) epp); } public List getPage(int page) From 8c7bf365a048727fbbb2327c1d5d2ba4561aab67 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 26 May 2021 03:55:49 -0600 Subject: [PATCH 15/81] Addresses FS-224 (#70) --- .../totalfreedom/totalfreedommod/LoginProcess.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 90a3a4ea..2cbe79de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -240,17 +240,9 @@ public class LoginProcess extends FreedomService if (noteCount != 0) { String noteMessage = "This player has " + noteCount + " admin note" + (noteCount > 1 ? "s" : "") + "."; - JSONMessage notice = JSONMessage.create(ChatColor.GOLD + noteMessage + " Click here to view them.") - .tooltip("Click here to view them.") - .runCommand("/notes " + player.getName() + " list"); FLog.info(noteMessage); - for (Player p : server.getOnlinePlayers()) - { - if (plugin.al.isAdmin(p)) - { - notice.send(p); - } - } + plugin.al.messageAllAdmins(ChatColor.GOLD + noteMessage); + plugin.al.messageAllAdmins(ChatColor.GOLD + "Do " + ChatColor.YELLOW + "/notes " + player.getName() + " list" + ChatColor.GOLD + " to view them."); } } From da7e8f64aa29f834f17d2391cfedb99bba3a8e0d Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 12 Jun 2021 04:26:40 -0600 Subject: [PATCH 16/81] Continuation on that notes thing (#74) I forgot to remove the dependency after I removed the code that used JSONMessage. This fixes that by removing both the repository and the dependency from the pom file. --- pom.xml | 13 ------------- .../totalfreedom/totalfreedommod/LoginProcess.java | 1 - 2 files changed, 14 deletions(-) diff --git a/pom.xml b/pom.xml index cfeb5851..83483900 100644 --- a/pom.xml +++ b/pom.xml @@ -105,11 +105,6 @@ https://papermc.io/repo/repository/maven-public/ - - rayzr-repo - https://cdn.rawgit.com/Rayzr522/maven-repo/master/ - - ess-repo https://ci.ender.zone/plugin/repository/everything/ @@ -216,13 +211,6 @@ compile - - me.rayzr522 - jsonmessage - 1.0.0 - compile - - com.github.vexsoftware votifier @@ -454,7 +442,6 @@ commons-codec:commons-codec org.reflections:reflections org.javassist:javassist - me.rayzr522:jsonmessage io.papermc:paperlib com.github.speedxx:Mojangson org.bstats:bstats-bukkit diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 2cbe79de..015cb064 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -4,7 +4,6 @@ import io.papermc.lib.PaperLib; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import me.rayzr522.jsonmessage.JSONMessage; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; From 06025b2e696b31be82d57a5fb722f6863809c8ea Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 13 Jun 2021 19:51:27 +0100 Subject: [PATCH 17/81] Updated permissions to re-baseline with the dev server (#75) Updating this to be based off of the dev server as it seems this has not been updated in some time. Primary purpose is to add the crackshot bypass removal for everyone (Though allow admins to bypass) and to add a start of network manager perms in the hopes it makes it more usable going forward. --- src/main/resources/permissions.yml | 127 +++++++++++++++++++++++++++-- 1 file changed, 118 insertions(+), 9 deletions(-) diff --git a/src/main/resources/permissions.yml b/src/main/resources/permissions.yml index ae404160..1c1877d7 100644 --- a/src/main/resources/permissions.yml +++ b/src/main/resources/permissions.yml @@ -1,16 +1,50 @@ # -# TotalFreedomMod Permissions +# TotalFreedomMod 5.5 Permissions # by ZeroEpoch1969 # # Note that every group inherits the previous groups' permissions -# Meaning Senior Admins have the permissions of Operators and Admins, and etc +# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc # This is used to remove all permission begging with the root node # This is useful when a plugin gives all permissions to a player because they are opped remove: - "voxelsniper" - - "bending" + - "bending.admin" + - "bending.ability.Cleanse" + - "worldedit.brush.apply" + - "essentials.near.exclude" + - "plots.admin" + - "plots.debugroadregen" + - "plots.debugclaimtest" + - "plots.debugpaste" + - "plots.debugallowunsafe" + - "plots.debugloadtest" + - "plots.debugsavetest" + - "plots.cluster" + #Crackshot + - "crackshot.bypass.all" + #NetworkManager + - "networkmanager.*" + - "networkmanager.notify.joinbanned" + - "networkmanager.notify.*" + - "networkmanager.announce.global" + - "networkmanager.announce" + - "networkmanager.chatlock" + - "networkmanager.clearchat.bypass" + - "networkmanager.clearchat.*" + - "networkmanager.notify.ticket.new" + - "networkmanager.lookup" + - "networkmanager.maintenance.*" + - "networkmanager.permissions" + - "networkmanager.reports" + - "networkmanager.tickets" + - "networkmanager.chatlock.bypass" + - "networkmanager.anticaps.bypass" + - "networkmanager.antispam.bypass" + - "networkmanager.commandblocker.bypass" + - "networkmanager.tags.*" + # Operator permission nodes operators: @@ -36,16 +70,79 @@ operators: - "worldedit.removebelow" - "worldedit.removenear" - "worldedit.replacenear" - + - "worldedit.brush.*" + - "worldedit.global-mask" + - "worldedit.fill" + - "worldedit.fill.recursive" # LibsDisguises - "libsdisguises.noactionbar" - + # WorldGuard - "worldguard.region.list.own" - "worldguard.region.addmember.own.*" - "worldguard.region.removemember.own.*" - "worldguard.region.info.*" + # Bending + - "bending.command.add" + - "bending.command.bind" + - "bending.command.check" + - "bending.command.choose" + - "bending.command.rechoose" + - "bending.command.clear" + - "bending.command.copy" + - "bending.command.display" + - "bending.command.help" + - "bending.command.invincible" + - "bending.command.preset" + - "bending.command.preset.list" + - "bending.command.preset.create" + - "bending.command.preset.delete" + - "bending.command.preset.bind" + - "bending.command.preset.bind.assign" + - "bending.command.preset.bind.external" + - "bending.command.toggle" + - "bending.command.version" + - "bending.command.who" + - "bending.earth" + - "bending.air" + - "bending.fire" + - "bending.water" + - "bending.water.bloodbending.anytime" + - "bending.ability.AvatarState" + - "bending.command.add.chi" + - "bending.command.choose.chi" + - "bending.ability.Paralyze" + - "bending.ability.RapidPunch" + - "bending.ability.Smokescreen" + - "bending.ability.WarriorStance" + - "bending.ability.AcrobatStance" + - "bending.ability.QuickStrike" + - "bending.ability.SwiftKick" + - "bending.ability.ChiCombo" + - "bending.chi.passive" + - "bending.ability.MetalClips.throw" + - "bending.ability.AirCombo" + - "bending.ability.Flight" + - "bending.ability.WaterCombo" + - "bending.ability.EarthCombo" + - "bending.ability.FireCombo" + - "bending.ability.ChiCombo" + - "bending.air.passive" + - "bending.chi.passive" + - "bending.earth.passive" + - "bending.fire.passive" + - "bending.water.passive" + # NetworkManager + - "networkmanager.chatlog" + - "networkmanager.find" + - "networkmanager.gtps" + - "networkmanager.lookup" + - "networkmanager.slashserver.*" + - "networkmanager.notification.join" + - "networkmanager.party.nolimit" + - "networkmanager.tabcompletechat" + # Master Builder permission nodes master_builders: - "worldedit.tool.*" @@ -59,13 +156,25 @@ master_builders: - "voxelsniper.sniper" - "voxelsniper.goto" - "voxelsniper.brush.*" - + # Admin permission nodes admins: - - "coreprotect.*" - "worldedit.*" - "worldguard.*" - - "bending.*" + - "bending.admin.remove" + - "bending.command.toggle.all" + - "bending.admin.toggle" + - "bending.command.reload" + - "plots.cluster" + - "networkmanager.adminchat" + - "networkmanager.announce.server" + - "networkmanager.socialspy" + - "networkmanager.fullproxy.bypass" + - "networkmanager.lookup.ip" + #Crackshot + - "crackshot.bypass.all" # Senior Admin permission nodes -senior_admins: [] +senior_admins: + - "bending.admin.permaremove" + - "bending.ability.Cleanse" From 3027e2a18cc8316fc7ce574c932ca81a436bbd29 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 17:29:57 -0600 Subject: [PATCH 18/81] Two fixes, one commit To kill two birds with one stone, I've done two fixes in this commit. - Fixes issue that caused quiet warns to behave improperly (e.g. the warnings wouldn't increment if quiet) - Added WARN to the PunishmentType list. --- .../totalfreedommod/command/Command_warn.java | 34 +++++++++++-------- .../totalfreedommod/player/FPlayer.java | 9 +++-- .../punishments/PunishmentType.java | 3 +- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java index 827a5b04..17be800f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java @@ -1,6 +1,9 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -53,25 +56,28 @@ public class Command_warn extends FreedomCommand String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60); - msg(ChatColor.GREEN + "You have successfully warned " + player.getName()); + msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason); + plugin.pl.getPlayer(player).incrementWarnings(quiet); + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason)); if (quiet) { - msg("Warned " + player.getName() + " quietly"); - return true; + msg("You have successfully warned " + player.getName() + " quietly."); } + else + { + String adminNotice = ChatColor.RED + + sender.getName() + + " - " + + "Warning: " + + player.getName() + + " - Reason: " + + ChatColor.YELLOW + + warnReason; + plugin.al.messageAllAdmins(adminNotice); - msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason); - String adminNotice = ChatColor.RED + - sender.getName() + - " - " + - "Warning: " + - player.getName() + - " - Reason: " + - ChatColor.YELLOW + - warnReason; - plugin.al.messageAllAdmins(adminNotice); - plugin.pl.getPlayer(player).incrementWarnings(); + msg("You have successfully warned " + player.getName() + "."); + } return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index 4e1febc4..b0ea8bc1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -429,14 +429,19 @@ public class FPlayer this.warningCount = warningCount; } - public void incrementWarnings() + public void incrementWarnings(boolean quiet) { this.warningCount++; if (this.warningCount % 2 == 0) { Player p = getPlayer(); - p.getWorld().strikeLightning(p.getLocation()); + + if (!quiet) + { + p.getWorld().strikeLightning(p.getLocation()); + } + FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java index 705fd928..e7b82e85 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java @@ -7,5 +7,6 @@ public enum PunishmentType KICK, TEMPBAN, BAN, - DOOM + DOOM, + WARN } From 96d47e8e0cc90328b06925eff10339e560419806 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 17:47:09 -0600 Subject: [PATCH 19/81] Update EntityWiper.java --- .../java/me/totalfreedom/totalfreedommod/EntityWiper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java b/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java index 67a61cc2..3c58a451 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java @@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod; import java.util.Arrays; import java.util.List; + +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.Bukkit; import org.bukkit.World; @@ -33,7 +35,10 @@ public class EntityWiper extends FreedomService @Override public void run() { - wipeEntities(false); + if (ConfigEntry.AUTO_ENTITY_WIPE.getBoolean()) + { + wipeEntities(false); + } } }.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds } From 0c12a19d1d2ea55ca77681a25fba918000f02b26 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 10 Jun 2021 17:40:02 -0600 Subject: [PATCH 20/81] FS-27 --- .../java/me/totalfreedom/totalfreedommod/fun/Landminer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java index bf9c8bde..fc249df9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java @@ -73,7 +73,7 @@ public class Landminer extends FreedomService continue; } - if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius))) + if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius)) { break; } From ed815794ed2da595a91699dd830f7f1f9323882e Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 10 Jun 2021 17:44:09 -0600 Subject: [PATCH 21/81] FS-26 --- src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index 55c4ec94..a50a902a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -128,7 +128,7 @@ public class ItemFun extends FreedomService LivingEntity livingEntity = (LivingEntity)event.getRightClicked(); EntityType entityType = livingEntity.getType(); - if (!(entityType == fPlayer.mobThrowerCreature())) + if (entityType != fPlayer.mobThrowerCreature()) { return; } From f4749559d2eee158391298fda00f86724007eb54 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 10 Jun 2021 17:53:17 -0600 Subject: [PATCH 22/81] FS-25 --- .../me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java index 8f9eb229..ba80fa8f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java @@ -43,6 +43,7 @@ public class IndefiniteBan implements IConfig @Override public void saveTo(ConfigurationSection cs) { + // The indefinite ban list is only intended to be modified manually. It is not intended to save. } @Override From 62fe72d99b585b72a1a7cbbfde63efc4cea4bdbe Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 20:36:29 -0600 Subject: [PATCH 23/81] Code quality and consistency improvements Here's all the changes I've made in this commit: - Resolves FS-44 (AutoEject.java) - Resolves FS-45 (BlockBlocker.java) - Resolves FS-47 and FS-48 (InteractBlocker.java) - Resolves FS-49 (Command_cage.java) - Resolves FS-50 (Command_manageshop.java) - Resolves FS-51 (Command_notes.java) - Resolves FS-52 (Command_potion.java) - Resolves FS-53 (Command_tag.java) - Resolves FS-55 (ItemFun.java) - Resolves FS-56 (Module_list.java) - Resolves FS-57 (Module_players.java) - Removes redundant code from InteractBlocker.java - Misc. code consistency corrections (global) --- .../totalfreedommod/AutoEject.java | 4 ++++ .../blocking/BlockBlocker.java | 5 ++++ .../blocking/InteractBlocker.java | 10 +++++--- .../totalfreedommod/command/Command_cage.java | 4 ++++ .../command/Command_manageshop.java | 11 ++++++++- .../command/Command_notes.java | 6 ++++- .../command/Command_potion.java | 23 +++++++++++++++++++ .../totalfreedommod/command/Command_tag.java | 10 ++++++++ .../totalfreedommod/fun/ItemFun.java | 5 ++++ .../httpd/module/Module_list.java | 9 ++++++++ .../httpd/module/Module_players.java | 9 ++++++++ 11 files changed, 91 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java b/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java index 63c9818a..2e84035a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java @@ -85,6 +85,10 @@ public class AutoEject extends FreedomService player.kickPlayer(kickMessage); break; } + default: + { + FLog.warning("Unrecognized EjectMethod " + method.name() + " found, defaulting to STRIKE_THREE"); + } case STRIKE_THREE: { plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage)); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java index db80dff9..746ce186 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java @@ -171,6 +171,11 @@ public class BlockBlocker extends FreedomService } break; } + default: + { + // Do nothing + break; + } } if (Groups.BANNERS.contains(event.getBlockPlaced().getType())) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java index c8f6efb6..2e53f9de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java @@ -36,10 +36,9 @@ public class InteractBlocker extends FreedomService break; } - case LEFT_CLICK_AIR: - case LEFT_CLICK_BLOCK: + default: { - // + // Do nothing break; } } @@ -158,6 +157,11 @@ public class InteractBlocker extends FreedomService event.setCancelled(true); break; } + default: + { + // Do nothing + break; + } } } } \ No newline at end of file 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 2ba3812d..5cc72009 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -83,6 +83,10 @@ public class Command_cage extends FreedomCommand msg("Invalid block!", ChatColor.RED); break; } + default: + { + return false; + } } } 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 60c786c3..1c0a7a81 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java @@ -35,8 +35,8 @@ public class Command_manageshop extends FreedomCommand } switch (args[1]) { - case "add": + { try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); @@ -75,7 +75,9 @@ public class Command_manageshop extends FreedomCommand msg("Invalid number: " + args[2], ChatColor.RED); return true; } + } case "remove": + { try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); @@ -122,7 +124,9 @@ public class Command_manageshop extends FreedomCommand msg("Invalid number: " + args[2], ChatColor.RED); return true; } + } case "set": + { try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); @@ -147,6 +151,11 @@ public class Command_manageshop extends FreedomCommand msg("Invalid number: " + args[2], ChatColor.RED); return true; } + } + default: + { + return false; + } } } else if (args[0].equals("items")) 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 8a4754b2..4a4cd2ab 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java @@ -116,8 +116,12 @@ public class Command_notes extends FreedomCommand msg("Cleared " + count + " notes.", ChatColor.GREEN); return true; } + + default: + { + return false; + } } - return false; } @Override 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 0f30f24d..feab9776 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -29,6 +29,7 @@ public class Command_potion extends FreedomCommand switch (args.length) { case 1: + { if (args[0].equalsIgnoreCase("list")) { List potionEffectTypeNames = new ArrayList<>(); @@ -58,8 +59,10 @@ public class Command_potion extends FreedomCommand } } } + } case 2: + { if (args[0].equalsIgnoreCase("clear")) { Player target = playerSender; @@ -95,9 +98,11 @@ public class Command_potion extends FreedomCommand msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); } break; + } case 4: case 5: + { if (args[0].equalsIgnoreCase("add")) { Player target = playerSender; @@ -167,8 +172,11 @@ public class Command_potion extends FreedomCommand + (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); } break; + } default: + { return false; + } } return true; } @@ -179,14 +187,17 @@ public class Command_potion extends FreedomCommand switch (args.length) { case 1: + { List arguments = new ArrayList<>(Arrays.asList("list", "clear", "add")); if (plugin.al.isAdmin(sender)) { arguments.add("clearall"); } return arguments; + } case 2: + { if (args[0].equals("clear")) { if (plugin.al.isAdmin(sender)) @@ -199,22 +210,28 @@ public class Command_potion extends FreedomCommand return getAllPotionTypes(); } break; + } case 3: + { if (args[0].equals("add")) { return Collections.singletonList(""); } break; + } case 4: + { if (args[0].equals("add")) { return Collections.singletonList(""); } break; + } case 5: + { if (plugin.al.isAdmin(sender)) { if (args[0].equals("add")) @@ -223,6 +240,12 @@ public class Command_potion extends FreedomCommand } } break; + } + + default: + { + break; + } } return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java index 6f6a1520..0ae1b9d4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java @@ -105,6 +105,11 @@ public class Command_tag extends FreedomCommand } return true; } + + default: + { + return false; + } } } else if (args.length >= 2) @@ -279,6 +284,11 @@ public class Command_tag extends FreedomCommand msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to); return true; } + + default: + { + return false; + } } } return false; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index a50a902a..08ae5252 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -304,6 +304,11 @@ public class ItemFun extends FreedomService } break; } + default: + { + // Do nothing + break; + } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java index 8ee00487..33573926 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java @@ -79,11 +79,20 @@ public class Module_list extends HTTPDModule switch (admin.getRank()) { case ADMIN: + { admins.add(player.getName()); break; + } case SENIOR_ADMIN: + { senioradmins.add(player.getName()); break; + } + default: + { + // Do nothing + break; + } } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java index 3ae3fbbe..61f8b819 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java @@ -51,11 +51,20 @@ public class Module_players extends HTTPDModule switch (admin.getRank()) { case ADMIN: + { admins.add(username); break; + } case SENIOR_ADMIN: + { senioradmins.add(username); break; + } + default: + { + // Do nothing + break; + } } } From 4188cb80fa68ff9f9fd88841c7516f1442a1a1a6 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 20:56:18 -0600 Subject: [PATCH 24/81] FS-54 --- .../command/Command_toggle.java | 52 +++++++------------ 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java index c25ebe9c..f1bb1bff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java @@ -16,6 +16,12 @@ import org.bukkit.entity.Player; @CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") public class Command_toggle extends FreedomCommand { + List toggles = Arrays.asList( + "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", + "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]", + "explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones", + "jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44", + "landmines", "tossmob", "gravity"); @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) @@ -23,38 +29,10 @@ public class Command_toggle extends FreedomCommand if (args.length == 0) { msg("Available toggles: "); - msg("- waterplace"); - msg("- fireplace"); - msg("- lavaplace"); - msg("- fluidspread"); - msg("- lavadmg"); - msg("- firespread"); - msg("- frostwalk"); - msg("- firework"); - msg("- prelog"); - msg("- lockdown"); - msg("- petprotect"); - msg("- entitywipe"); - msg("- nonuke [range] [count]"); - msg("- explosives [radius]"); - msg("- unsafeenchs"); - msg("- bells"); - msg("- armorstands"); - msg("- structureblocks"); - msg("- jigsaws"); - msg("- grindstones"); - msg("- jukeboxes"); - msg("- spawners"); - msg("- 4chan"); - msg("- beehives"); - msg("- respawnanchors"); - msg("- autotp"); - msg("- autoclear"); - msg("- minecarts"); - msg("- landmines"); - msg("- mp44"); - msg("- tossmob"); - msg("- gravity"); + for (String toggle : toggles) + { + msg("- " + toggle); + } return false; } @@ -304,6 +282,16 @@ public class Command_toggle extends FreedomCommand toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY); break; } + + default: + { + msg("Available toggles: "); + for (String toggle : toggles) + { + msg("- " + toggle); + } + return false; + } } return true; } From d3665f31fe0cb83238700088445353adb5a2bc7b Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 21:56:25 -0600 Subject: [PATCH 25/81] Shut up Codacy --- .../me/totalfreedom/totalfreedommod/command/Command_toggle.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java index f1bb1bff..712ff7ff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java @@ -16,7 +16,7 @@ import org.bukkit.entity.Player; @CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") public class Command_toggle extends FreedomCommand { - List toggles = Arrays.asList( + private final List toggles = Arrays.asList( "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]", "explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones", From 6d1fce1716fc786908706e04e23ea4b930fba66f Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 22:06:12 -0600 Subject: [PATCH 26/81] FS-201 --- .../java/me/totalfreedom/totalfreedommod/CommandSpy.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java index 6a641bee..30d39f0f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java @@ -25,11 +25,6 @@ public class CommandSpy extends FreedomService { if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy()) { - if (plugin.al.isAdmin(event.getPlayer()) && !plugin.al.isSeniorAdmin(player)) - { - continue; - } - if (player != event.getPlayer()) { FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage()); From be700a90ceba2b5b00df3ce718b3f2318bf1b09c Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 22:42:45 -0600 Subject: [PATCH 27/81] Simple fix --- .../totalfreedommod/command/Command_entitywipe.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 ff2043b2..f83157f5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java @@ -64,6 +64,12 @@ public class Command_entitywipe extends FreedomCommand return true; } + if (type == EntityType.PLAYER) + { + msg("Player entities cannot be purged.", ChatColor.RED); + return true; + } + if (!getAllEntities().contains(type)) { msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED); From e1c3bad4d0ee9ef250ee7ae48eae3ad11e149f2a Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 17 Jun 2021 06:56:52 -0600 Subject: [PATCH 28/81] Even more punishment log types Here's what I've changed in this commit: - Adds /blockcmd to the punishment log (FS-239) - Adds /blockedit and /blockpvp to the punishment log (FS-240) - Adds /cage to the punishment log (FS-241) - Adds /orbit to the punishment log (FS-242) - Changes the order of operations in some commands to be a bit more consistent --- .../totalfreedommod/command/Command_blockcmd.java | 6 +++++- .../totalfreedommod/command/Command_blockedit.java | 4 ++++ .../totalfreedommod/command/Command_blockpvp.java | 3 +++ .../totalfreedommod/command/Command_cage.java | 4 ++++ .../totalfreedommod/command/Command_orbit.java | 8 ++++++-- .../totalfreedommod/punishments/PunishmentType.java | 7 ++++++- 6 files changed, 28 insertions(+), 4 deletions(-) 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 fece338d..ee2ba733 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -75,9 +77,11 @@ public class Command_blockcmd extends FreedomCommand FPlayer playerdata = plugin.pl.getPlayer(player); if (!playerdata.allCommandsBlocked()) { - playerdata.setCommandsBlocked(true); FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true); + playerdata.setCommandsBlocked(true); msg("Blocked commands for " + player.getName() + "."); + + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null)); } 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 e1904553..cba22999 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; @@ -128,6 +130,8 @@ public class Command_blockedit extends FreedomCommand msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED); msg("Blocked all block modification abilities for " + player2.getName()); + + plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null)); } return true; } 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 0471724c..9c4bee0f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang3.ArrayUtils; @@ -125,6 +127,7 @@ public class Command_blockpvp extends FreedomCommand { Command_smite.smite(sender, p, reason); } + plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null)); msg(p, "Your PVP has been disabled.", ChatColor.RED); msg("Disabled PVP for " + p.getName()); 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 5cc72009..46f20d8e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -5,6 +5,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -111,6 +113,8 @@ public class Command_cage extends FreedomCommand { FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); } + + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); return true; } 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 08894999..06320f31 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -56,11 +58,13 @@ public class Command_orbit extends FreedomCommand } } + FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + player.setGameMode(GameMode.SURVIVAL); playerdata.startOrbiting(strength); - player.setVelocity(new Vector(0, strength, 0)); - FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java index e7b82e85..1c710350 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java @@ -8,5 +8,10 @@ public enum PunishmentType TEMPBAN, BAN, DOOM, - WARN + WARN, + CAGE, + BLOCKEDIT, + BLOCKPVP, + BLOCKCMD, + ORBIT } From 32138b2e596e6b0b3e48c77e75446654e427acf0 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 17 Jun 2021 13:41:25 -0600 Subject: [PATCH 29/81] Order of operations fix --- .../totalfreedommod/command/Command_cage.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) 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 46f20d8e..933181c9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -92,6 +92,15 @@ public class Command_cage extends FreedomCommand } } + if (outerMaterial == Material.PLAYER_HEAD) + { + FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); + } + else + { + FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); + } + Location location = player.getLocation().clone().add(0.0, 1.0, 0.0); if (skullName != null) @@ -102,18 +111,8 @@ public class Command_cage extends FreedomCommand { fPlayer.getCageData().cage(location, outerMaterial, innerMaterial); } - player.setGameMode(GameMode.SURVIVAL); - if (outerMaterial == Material.PLAYER_HEAD) - { - FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); - } - else - { - FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); - } - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); return true; } From 064e73f58ba87c7de0df0a4aba64f7d6ffce1272 Mon Sep 17 00:00:00 2001 From: Video Date: Fri, 18 Jun 2021 06:16:52 -0600 Subject: [PATCH 30/81] ez (#77) --- .../totalfreedom/totalfreedommod/command/Command_freeze.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 45de1bde..fdcce361 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java @@ -23,12 +23,12 @@ public class Command_freeze extends FreedomCommand if (!gFreeze) { - FUtil.adminAction(sender.getName(), "Disabling global player freeze", false); + FUtil.adminAction(sender.getName(), "Unfreezing all players", false); msg("Players are now free to move."); return true; } - FUtil.adminAction(sender.getName(), "Enabling global player freeze", false); + FUtil.adminAction(sender.getName(), "Freezing all players", false); for (Player player : server.getOnlinePlayers()) { if (!isAdmin(player)) From 6fd075fe96c8204b68681ec797a6cbce1bd1583b Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 24 Jun 2021 21:21:39 +0100 Subject: [PATCH 31/81] Start building Java 16 (#84) * Start building Java 16 * Re-apply Fleek's change * Removed the shitty Github auto formatted white space. * Update to the maven build in Github workflows Given TravisCI has started to charge, I guess this might be what we move back to using as our main way to verify if something can actually build. * Update maven.yml * Delete .travis.yml --- .github/workflows/maven.yml | 12 +++++++++++- .travis.yml | 13 ------------- pom.xml | 4 ++-- 3 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 .travis.yml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 59cede28..cd7f4aee 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -8,10 +8,20 @@ jobs: runs-on: ubuntu-latest steps: + # Java 11 Builds - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Build with Maven run: mvn -B package --file pom.xml + + # Java 16 Builds + - uses: actions/checkout@v1 + - name: Set up JDK 16 + uses: actions/setup-java@v1 + with: + java-version: 16 + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 141c7052..00000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: java -jdk: - - oraclejdk11 - - openjdk11 -notifications: - email: false -addons: - apt: - packages: - - sshpass -script: mvn clean install -after_success: - - ./travis-upload.sh diff --git a/pom.xml b/pom.xml index 83483900..01cfb186 100644 --- a/pom.xml +++ b/pom.xml @@ -163,9 +163,9 @@ - com.github.TotalFreedomMC + com.github.AtlasMediaGroup TF-LibsDisguises - 48f01cf2fe + 5a340341b0 provided From a08fd2afb67fd2a84a467c5036280ce3247975d7 Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 26 Jun 2021 07:25:08 -0600 Subject: [PATCH 32/81] Adds /seed command (FS-225) (#85) * Create Command_seed.java * Addresses requested changes * My IDE decided to try to "fix" things with *s in imports Co-authored-by: Ryan --- .../totalfreedommod/command/Command_seed.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java new file mode 100644 index 00000000..ff489582 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java @@ -0,0 +1,97 @@ +package me.totalfreedom.totalfreedommod.command; + +import me.totalfreedom.totalfreedommod.rank.Rank; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.TranslatableComponent; +import net.md_5.bungee.api.chat.hover.content.Text; +import org.bukkit.ChatColor; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) +@CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]") +public class Command_seed extends FreedomCommand +{ + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + World world; + + if (args.length > 0) + { + world = server.getWorld(args[0]); + if (world == null) + { + msg("That world could not be found", ChatColor.RED); + return true; + } + } + else + { + // If the sender is a Player, use that world. Otherwise, use the overworld as a fallback. + if (!senderIsConsole) + { + world = playerSender.getWorld(); + } + else + { + world = server.getWorlds().get(0); + } + } + + // If the sender is not a Player, use the usual msg method to + if (senderIsConsole) + { + msg("Seed: [" + ChatColor.GREEN + world.getSeed() + ChatColor.WHITE + "]", ChatColor.WHITE); + } + else + { + // Gets the seed for later uses + String seed = String.valueOf(world.getSeed()); + + // This is a really stupid hack to get things to play nicely, but it works so I don't give a damn + BaseComponent[] components = {new TranslatableComponent("chat.copy.click")}; + TextComponent seedAsComponent = new TextComponent(seed); + + // Style the message like in vanilla Minecraft. + seedAsComponent.setColor(ChatColor.GREEN.asBungee()); + seedAsComponent.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, seed)); + seedAsComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(components))); + + // Enclose the seed with brackets + TextComponent seedString = new TextComponent("["); + seedString.addExtra(seedAsComponent); + seedString.addExtra("]"); + + // Send the message to the player. + TranslatableComponent response = new TranslatableComponent("commands.seed.success", seedString); + playerSender.spigot().sendMessage(response); + } + return true; + } + + @Override + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) + { + if (args.length == 1) + { + // Returns a list of worlds on the server and returns it + List worlds = new ArrayList<>(); + for (World world : server.getWorlds()) + { + worlds.add(world.getName()); + } + return worlds; + } + + return null; + } +} \ No newline at end of file From d77f59435bb7ac34e360795a12b5cdd14ee9c26c Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 27 Jun 2021 00:06:15 +1000 Subject: [PATCH 33/81] Use 'getPlayer()' to prevent NPE (FS-159) (#87) Co-authored-by: Ryan --- .../totalfreedommod/player/FPlayer.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index b0ea8bc1..03e0c075 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -1,7 +1,5 @@ package me.totalfreedom.totalfreedommod.player; -import java.util.ArrayList; -import java.util.List; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.caging.CageData; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -16,8 +14,12 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; +import java.util.ArrayList; +import java.util.List; + public class FPlayer { + public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L; @@ -247,7 +249,7 @@ public class FPlayer public void startArrowShooter(TotalFreedomMod plugin) { this.stopArrowShooter(); - this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L); + this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L); this.mp44Firing = true; } @@ -709,8 +711,11 @@ public class FPlayer @Override public void run() { - Arrow shot = player.launchProjectile(Arrow.class); - shot.setVelocity(shot.getVelocity().multiply(2.0)); + if (player != null) + { + Arrow shot = player.launchProjectile(Arrow.class); + shot.setVelocity(shot.getVelocity().multiply(2.0)); + } } } } \ No newline at end of file From 36bd8c0fade68995c0c9d5b44f9d64c0407934c4 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 29 Jun 2021 21:52:46 -0600 Subject: [PATCH 34/81] 2 bugfixes - Fixes FS-309 by checking if a material provided is actually a block before caging someone. - Fixes a bug that causes the command to throw an ArrayOutOfBoundsException if one were to use a command like `/cage player1 block`. --- .../totalfreedommod/command/Command_cage.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) 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 933181c9..c7992547 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -77,13 +77,26 @@ public class Command_cage extends FreedomCommand } case "block": { - if (Material.matchMaterial(args[2]) != null) + if (args.length >= 3) { - outerMaterial = Material.matchMaterial(args[2]); - break; + // Checks the validity of the Material and checks if it's a block. + // This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual + // nightmare of switch-cases. + if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock()) + { + outerMaterial = Material.matchMaterial(args[2]); + break; + } + else + { + msg("Invalid block!", ChatColor.RED); + return true; + } + } + else + { + return false; } - msg("Invalid block!", ChatColor.RED); - break; } default: { From 92bbb62379e1270dcde4730d7bbb44c04912dc0b Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 5 Jul 2021 23:29:22 +0100 Subject: [PATCH 35/81] Temporarily re-naming /clearchat to /cleanchat (#91) * Temporarily re-naming /clearchat to /cleanchat Due to another plugin which currently doesn't quite have all the permissions working, this command is not currently able to be executed as it stands. * Shhh I know I'm an idiot --- .../{Command_clearchat.java => Command_cleanchat.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_clearchat.java => Command_cleanchat.java} (94%) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java similarity index 94% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java index 3e891b9d..6bcf50ed 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) @CommandParameters(description = "Clears the chat.", usage = "/", aliases = "cc") -public class Command_clearchat extends FreedomCommand +public class Command_cleanchat extends FreedomCommand { @Override @@ -27,4 +27,4 @@ public class Command_clearchat extends FreedomCommand FUtil.adminAction(sender.getName(), "Cleared chat", true); return true; } -} \ No newline at end of file +} From d99f3e657bc103e764ef764b18da6f33cb327c21 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 8 Jul 2021 20:48:27 +0100 Subject: [PATCH 36/81] Let's actually do dependency uplifts (#89) --- .github/dependabot.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..60dde504 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + + # Maintain Maven Updates + - package-ecosystem: "maven" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" + + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" From fc3fe871b3aaf66f83081a7239a6c33bb22375a5 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 5 Aug 2021 00:43:01 -0600 Subject: [PATCH 37/81] FS-381 --- src/main/resources/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 3780220d..b60d5f34 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -206,7 +206,7 @@ allow: fire_spread: false fluid_spread: false lava_place: true - lava_damage: false + lava_damage: true water_place: true tnt_minecarts: false explosions: false From a9c9979b1c12d0a88c771ee4584d15f3661df4f1 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 04:06:41 -0600 Subject: [PATCH 38/81] FS-218 --- .../totalfreedommod/LoginProcess.java | 17 +++++++++++++++++ .../totalfreedommod/config/ConfigEntry.java | 1 + src/main/resources/config.yml | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 015cb064..6b655a59 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -19,6 +19,7 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitTask; public class LoginProcess extends FreedomService { @@ -190,6 +191,22 @@ public class LoginProcess extends FreedomService final FPlayer fPlayer = plugin.pl.getPlayer(player); final PlayerData playerData = plugin.pl.getData(player); + // Sends a message to the player if they have never joined before (or simply lack player data). + if (!event.getPlayer().hasPlayedBefore()) + { + final BukkitTask runnable = new BukkitRunnable() + { + @Override + public void run() + { + for (String line : ConfigEntry.FIRST_JOIN_INFO.getStringList()) + { + player.sendMessage(FUtil.colorize(line)); + } + } + }.runTaskLater(plugin, 20); + } + player.sendTitle(FUtil.colorize(ConfigEntry.SERVER_LOGIN_TITLE.getString()), FUtil.colorize(ConfigEntry.SERVER_LOGIN_SUBTITLE.getString()), 20, 100, 60); player.setOp(true); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 05051905..2eca28be 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -165,6 +165,7 @@ public enum ConfigEntry ADMIN_INFO(List.class, "admininfo"), VOTING_INFO(List.class, "votinginfo"), MASTER_BUILDER_INFO(List.class, "masterbuilderinfo"), + FIRST_JOIN_INFO(List.class, "first_join_info"), AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), TOGGLE_CHAT(Boolean.class, "toggle_chat"), DEVELOPER_MODE(Boolean.class, "developer_mode"), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 3780220d..4c2a39ba 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -590,6 +590,12 @@ masterbuilderinfo: - ' &2- Template:' - '&9https://forum.totalfreedom.me/d/336-master-builder-application-process' +# What new players will see upon joining for the first time. +first_join_info: + - "&6Welcome to TotalFreedom -- the original Free-OP server!" + - "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them." + - "&aNeed help getting started? Do &2/help &aor a list of commands!" + # Famous players - cannot be banned by username famous_players: - honeydew From 871acc2eeb929423f3e4a7fda253da6642497546 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 04:13:23 -0600 Subject: [PATCH 39/81] Actually, let's make it possible to disable it if needed --- .../me/totalfreedom/totalfreedommod/LoginProcess.java | 2 +- .../totalfreedom/totalfreedommod/config/ConfigEntry.java | 3 ++- src/main/resources/config.yml | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 6b655a59..0a1f56dd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -192,7 +192,7 @@ public class LoginProcess extends FreedomService final PlayerData playerData = plugin.pl.getData(player); // Sends a message to the player if they have never joined before (or simply lack player data). - if (!event.getPlayer().hasPlayedBefore()) + if (!event.getPlayer().hasPlayedBefore() && ConfigEntry.FIRST_JOIN_INFO_ENABLED.getBoolean()) { final BukkitTask runnable = new BukkitRunnable() { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 2eca28be..021f30f1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -165,7 +165,8 @@ public enum ConfigEntry ADMIN_INFO(List.class, "admininfo"), VOTING_INFO(List.class, "votinginfo"), MASTER_BUILDER_INFO(List.class, "masterbuilderinfo"), - FIRST_JOIN_INFO(List.class, "first_join_info"), + FIRST_JOIN_INFO(List.class, "first_join_info.text"), + FIRST_JOIN_INFO_ENABLED(Boolean.class, "first_join_info.enabled"), AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), TOGGLE_CHAT(Boolean.class, "toggle_chat"), DEVELOPER_MODE(Boolean.class, "developer_mode"), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4c2a39ba..bba2c44a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -592,9 +592,11 @@ masterbuilderinfo: # What new players will see upon joining for the first time. first_join_info: - - "&6Welcome to TotalFreedom -- the original Free-OP server!" - - "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them." - - "&aNeed help getting started? Do &2/help &aor a list of commands!" + enabled: true + text: + - "&6Welcome to TotalFreedom -- the original Free-OP server!" + - "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them." + - "&aNeed help getting started? Do &2/help &aor a list of commands!" # Famous players - cannot be banned by username famous_players: From 3f89f3f48e578705f5c516e2af039e2bf4c7d7af Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 06:58:04 -0600 Subject: [PATCH 40/81] Shut the fuck up Codacy --- src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 0a1f56dd..64700e61 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -194,7 +194,7 @@ public class LoginProcess extends FreedomService // Sends a message to the player if they have never joined before (or simply lack player data). if (!event.getPlayer().hasPlayedBefore() && ConfigEntry.FIRST_JOIN_INFO_ENABLED.getBoolean()) { - final BukkitTask runnable = new BukkitRunnable() + new BukkitRunnable() { @Override public void run() From 6874b2ce134ddf42f190264e8026b1c45f262fbb Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 10:33:48 -0600 Subject: [PATCH 41/81] Fixes /setlevel by completely removing it (FS-82) (#95) To quote Ryan: > If /exp works (and we've said it has) then the scope of this ticket will be to just go remove the TFM command... This does exactly that. --- .../command/Command_setlevel.java | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java deleted file mode 100644 index 551c09d4..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java +++ /dev/null @@ -1,49 +0,0 @@ -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.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Sets your experience level (XP).", usage = "/ [level]") -public class Command_setlevel extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { - return false; - } - - int new_level; - - try - { - new_level = Integer.parseInt(args[0]); - - if (new_level < 0) - { - new_level = 0; - } - else if (new_level > 50) - { - new_level = 50; - } - } - catch (NumberFormatException ex) - { - msg("Invalid level.", ChatColor.RED); - return true; - } - - playerSender.setLevel(new_level); - - msg("Your XP level is now set to " + ChatColor.GOLD + new_level); - - return true; - } -} \ No newline at end of file From dccc3158695b3d8dd98f44916f9e18f34d2eec26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Aug 2021 20:50:03 +0100 Subject: [PATCH 42/81] Bump actions/setup-java from 1.4.3 to 2.2.0 (#98) * Bump actions/setup-java from 1.4.3 to 2.2.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 1.4.3 to 2.2.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v1.4.3...v2.2.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Fix the breaking change the 2.x branch of the action added There is a breaking change which Dependabot hasn't picked up on which causes this to not play ball. This should resolve said issue. Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Wild1145 --- .github/workflows/codeql-analysis.yml | 3 ++- .github/workflows/maven.yml | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index dbeaac5d..ff614751 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,10 +38,11 @@ jobs: uses: actions/checkout@v2 - name: Setup Java JDK - uses: actions/setup-java@v1.4.3 + uses: actions/setup-java@v2.2.0 with: # The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28 java-version: 11 + distribution: 'adopt' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index cd7f4aee..97e71f0b 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,17 +11,19 @@ jobs: # Java 11 Builds - uses: actions/checkout@v1 - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v2.2.0 with: java-version: 11 + distribution: 'adopt' - name: Build with Maven run: mvn -B package --file pom.xml # Java 16 Builds - uses: actions/checkout@v1 - name: Set up JDK 16 - uses: actions/setup-java@v1 + uses: actions/setup-java@v2.2.0 with: java-version: 16 + distribution: 'adopt' - name: Build with Maven run: mvn -B package --file pom.xml From 2eb6cc00365b8cc08d739888a356f14929b60e7e Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 18 Aug 2021 23:45:56 +0100 Subject: [PATCH 43/81] Correct CoreProtect POM Version (#108) Co-authored-by: Video --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9687c927..a63df040 100644 --- a/pom.xml +++ b/pom.xml @@ -193,7 +193,7 @@ net.coreprotect coreprotect - 19.3 + 19.5 provided From a335a2acf7106872b432e31d6f2801fc498042a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Aug 2021 15:21:18 +0100 Subject: [PATCH 44/81] Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 (#114) Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.1.1 to 3.1.2. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.1.1...maven-checkstyle-plugin-3.1.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a63df040..2ca44f68 100644 --- a/pom.xml +++ b/pom.xml @@ -256,7 +256,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.1 + 3.1.2 compile @@ -462,7 +462,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.1 + 3.1.2 checkstyle.xml true From d901cbaa81456714de5ae2a83e604f28ebc55688 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 21 Aug 2021 21:25:56 +0100 Subject: [PATCH 45/81] Update pom.xml (#121) * Update pom.xml * Fix version from re-upload --- pom.xml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index e5302215..0f45f0cc 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,11 @@ ess-repo https://ci.ender.zone/plugin/repository/everything/ + + + total-freedom-libs-snapshot-local + https://atlasmedia.jfrog.io/artifactory/total-freedom-libs-snapshot-local/ + @@ -135,10 +140,9 @@ - com.github.speedxx - Mojangson - 1957eef8d6 - compile + ca.momoperes + mojangson + 1.0-20210821.193420-1 From 541c66c3dee2e198a594edfab64e15ea7fbe617a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Aug 2021 21:50:45 +0100 Subject: [PATCH 46/81] Bump codacy/codacy-analysis-cli-action from 1.1.0 to 4.0.0 (#101) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 1.1.0 to 4.0.0. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](https://github.com/codacy/codacy-analysis-cli-action/compare/1.1.0...4.0.0) --- updated-dependencies: - dependency-name: codacy/codacy-analysis-cli-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codacy-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codacy-analysis.yml b/.github/workflows/codacy-analysis.yml index 6b818a9f..e5aa4641 100644 --- a/.github/workflows/codacy-analysis.yml +++ b/.github/workflows/codacy-analysis.yml @@ -25,7 +25,7 @@ jobs: # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis - name: Run Codacy Analysis CLI - uses: codacy/codacy-analysis-cli-action@1.1.0 + uses: codacy/codacy-analysis-cli-action@4.0.0 with: # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository # You can also omit the token and run the tools that support default configurations From d70b7bbec242213012eac59b30b2ffc82482c597 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 13:00:19 +0100 Subject: [PATCH 47/81] Split out Java 11 and Java 16 for faster runs --- .github/workflows/java11-maven.yml | 21 +++++++++++++++++ .github/workflows/maven.yml | 38 ------------------------------ 2 files changed, 21 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/java11-maven.yml delete mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/java11-maven.yml b/.github/workflows/java11-maven.yml new file mode 100644 index 00000000..10c5ffc2 --- /dev/null +++ b/.github/workflows/java11-maven.yml @@ -0,0 +1,21 @@ +name: Java11-Maven-Build + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + # Checkout the code + - uses: actions/checkout@v1 + + # Java 11 Builds + - name: Set up JDK 11 + uses: actions/setup-java@v2.2.0 + with: + java-version: 11 + distribution: 'adopt' + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index 603989a1..00000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Maven-Build - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - # Java 11 Builds - - uses: actions/checkout@v1 - - name: Set up JDK 11 - uses: actions/setup-java@v2.2.0 - with: - java-version: 11 - distribution: 'adopt' - - name: Build with Maven - run: mvn -B package --file pom.xml - - # Java 16 Builds - - uses: actions/checkout@v1 - - name: Set up JDK 16 - uses: actions/setup-java@v2.2.0 - with: - java-version: 16 - distribution: 'adopt' - - name: Build with Maven - run: mvn -B package --file pom.xml - - # Java 16 Builds - - uses: actions/checkout@v1 - - name: Set up JDK 16 - uses: actions/setup-java@v1 - with: - java-version: 16 - - name: Build with Maven - run: mvn -B package --file pom.xml From f45466ee24911c0d7ba3599affc76dcc3dc36340 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 13:01:20 +0100 Subject: [PATCH 48/81] Create java16-maven.yml --- .github/workflows/java16-maven.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/java16-maven.yml diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java16-maven.yml new file mode 100644 index 00000000..4b992498 --- /dev/null +++ b/.github/workflows/java16-maven.yml @@ -0,0 +1,21 @@ +name: Java16-Maven-Build + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + # Checkout the code + - uses: actions/checkout@v1 + + # Java 16 Builds + - name: Set up JDK 16 + uses: actions/setup-java@v2.2.0 + with: + java-version: 16 + distribution: 'adopt' + - name: Build with Maven + run: mvn -B package --file pom.xml From 7dd235b166a2f47342a414a9c636fea3436872fe Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 16:18:49 +0100 Subject: [PATCH 49/81] Update java11-maven.yml --- .github/workflows/java11-maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java11-maven.yml b/.github/workflows/java11-maven.yml index 10c5ffc2..84b38f98 100644 --- a/.github/workflows/java11-maven.yml +++ b/.github/workflows/java11-maven.yml @@ -3,7 +3,7 @@ name: Java11-Maven-Build on: [push] jobs: - build: + build-java-11: runs-on: ubuntu-latest From 464ed85f1b7189f2e09cfadb003b71a2f61bd532 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 16:18:58 +0100 Subject: [PATCH 50/81] Update java16-maven.yml --- .github/workflows/java16-maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java16-maven.yml index 4b992498..c37d7521 100644 --- a/.github/workflows/java16-maven.yml +++ b/.github/workflows/java16-maven.yml @@ -3,7 +3,7 @@ name: Java16-Maven-Build on: [push] jobs: - build: + build-java-16: runs-on: ubuntu-latest From f380898bb739ed6801f3b88de626026e44332863 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 26 Aug 2021 11:22:08 -0400 Subject: [PATCH 51/81] yo remove my name (#123) Co-authored-by: Ryan --- src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index a269a296..81bae8cc 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -54,13 +54,12 @@ public class FUtil "d018f2b8-ce60-4672-a45f-e580e0331299", // speednt "458de06f-36a5-4e1b-aaa6-ec1d1751c5b6", // SupItsDillon "c8e5af82-6aba-4dd7-83e8-474381380cc9", // Paldiu - "38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch "ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix "d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi "2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync "f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12 ); - public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12"); + public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12"); public static final Map CHAT_COLOR_NAMES = new HashMap<>(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_RED, From 4c3f188bb8efbd8225426bd54f779987cc0806fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Aug 2021 20:08:43 +0100 Subject: [PATCH 52/81] Bump actions/setup-java from 2.2.0 to 2.3.0 (#122) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2.2.0...v2.3.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ryan --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/java11-maven.yml | 2 +- .github/workflows/java16-maven.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ff614751..fc5b35cc 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,7 +38,7 @@ jobs: uses: actions/checkout@v2 - name: Setup Java JDK - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: # The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28 java-version: 11 diff --git a/.github/workflows/java11-maven.yml b/.github/workflows/java11-maven.yml index 84b38f98..967abde2 100644 --- a/.github/workflows/java11-maven.yml +++ b/.github/workflows/java11-maven.yml @@ -13,7 +13,7 @@ jobs: # Java 11 Builds - name: Set up JDK 11 - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: java-version: 11 distribution: 'adopt' diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java16-maven.yml index c37d7521..92896df8 100644 --- a/.github/workflows/java16-maven.yml +++ b/.github/workflows/java16-maven.yml @@ -13,7 +13,7 @@ jobs: # Java 16 Builds - name: Set up JDK 16 - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: java-version: 16 distribution: 'adopt' From 23caa4e853465e2fe8900aa82458b2f7456f3368 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 4 Sep 2021 01:07:04 +0100 Subject: [PATCH 53/81] Dependency Fix & Improvements (#132) * Upgrade Test Going to see if switching to the new repo that went live 3 days ago and updating TFM to pull the latest version of Essentials is going to help things here. TFM is building locally so I haven't a fucking scooby doo why Github can't run the build because I've even tried dropping the M2 folder... * Let's try again Utter bullshit so far. * Apparently we don't even use essentials... No idea where the imports for EssentialsBridge are coming from... * Various tweaks Hopefully this might give some more joy, but if not it's removed a command I didn't want anyway and reduced our dependency tree. I have also switched it to using the ATLAS Artafactory which will serve as an ongoing cache for dependencies and should start to speed up our Github builds as Maven is rubbish with many repo's. --- pom.xml | 40 +++----- .../command/Command_makeopregion.java | 96 ------------------- 2 files changed, 14 insertions(+), 122 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java diff --git a/pom.xml b/pom.xml index 0f45f0cc..dc0dfbdb 100644 --- a/pom.xml +++ b/pom.xml @@ -39,9 +39,10 @@ + - jitpack.io - https://jitpack.io + totalfreedom-development + https://atlasmedia.jfrog.io/artifactory/totalfreedom-development/ @@ -101,19 +102,11 @@ - papermc - https://papermc.io/repo/repository/maven-public/ - - - - ess-repo - https://ci.ender.zone/plugin/repository/everything/ + esentialsx-repo + https://repo.essentialsx.net/releases/ - - total-freedom-libs-snapshot-local - https://atlasmedia.jfrog.io/artifactory/total-freedom-libs-snapshot-local/ - + @@ -176,14 +169,7 @@ com.sk89q.worldedit worldedit-bukkit - 7.3.0-SNAPSHOT - provided - - - - net.ess3 - EssentialsX - 2.18.2 + 7.2.4 provided @@ -221,12 +207,12 @@ v1.9 provided - + - net.goldtreeservers - worldguardextraflags - 4.0.0 - provided + net.ess3 + EssentialsX + 2.18.2 + compile @@ -263,12 +249,14 @@ 3.1.2 compile + org.junit.jupiter junit-jupiter 5.4.2 compile + org.eclipse.sisu org.eclipse.sisu.inject diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java deleted file mode 100644 index 7cf2334f..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java +++ /dev/null @@ -1,96 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import com.sk89q.worldedit.IncompleteRegionException; -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.regions.Region; -import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.Flag; -import com.sk89q.worldguard.protection.flags.Flags; -import com.sk89q.worldguard.protection.flags.RegionGroup; -import com.sk89q.worldguard.protection.flags.StateFlag; -import com.sk89q.worldguard.protection.managers.RegionManager; -import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import java.util.HashMap; -import java.util.Map; -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.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Make a WorldGuard region for an OP.", usage = "/ ", aliases = "mor") -public class Command_makeopregion extends FreedomCommand -{ - - final Map, Object> flags = new HashMap, Object>() - {{ - put(Flags.BLOCK_PLACE, StateFlag.State.ALLOW); - put(Flags.BLOCK_BREAK, StateFlag.State.ALLOW); - put(Flags.BUILD, StateFlag.State.ALLOW); - put(Flags.PLACE_VEHICLE, StateFlag.State.ALLOW); - put(Flags.DESTROY_VEHICLE, StateFlag.State.ALLOW); - put(Flags.ENTITY_ITEM_FRAME_DESTROY, StateFlag.State.ALLOW); - put(Flags.ENTITY_PAINTING_DESTROY, StateFlag.State.ALLOW); - put(net.goldtreeservers.worldguardextraflags.flags.Flags.WORLDEDIT, StateFlag.State.ALLOW); - }}; - - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - if (args.length < 2) - { - return false; - } - - final Player player = getPlayer(args[0]); - - if (player == null) - { - msg(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - - String name = args[1]; - - LocalSession session = plugin.web.getWorldEditPlugin().getSession(playerSender); - - Region selection; - - try - { - selection = session.getSelection(session.getSelectionWorld()); - } - catch (IncompleteRegionException e) - { - msg("Please make a WorldEdit selection", ChatColor.RED); - return true; - } - - if (selection == null) - { - msg("Please make a WorldEdit selection", ChatColor.RED); - return true; - } - - ProtectedRegion region = new ProtectedCuboidRegion(name, selection.getMinimumPoint(), selection.getMaximumPoint()); - - DefaultDomain owners = new DefaultDomain(); - owners.addPlayer(playerSender.getName()); - owners.addPlayer(player.getName()); - region.setOwners(owners); - region.setFlags(flags); - - for (Flag flag : flags.keySet()) - { - region.setFlag(flag.getRegionGroupFlag(), RegionGroup.MEMBERS); - } - - RegionManager regionManager = plugin.wgb.getRegionManager(playerSender.getWorld()); - - regionManager.addRegion(region); - - msg("Successfully created the region '" + name + "' for " + player.getName(), ChatColor.GREEN); - return true; - } -} \ No newline at end of file From 54cb0cfac42e43b4e5086a5edb247e7f1298e8a0 Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 5 Sep 2021 07:51:43 -0600 Subject: [PATCH 54/81] FS-409 (#124) Co-authored-by: Ryan --- .../command/Command_eject.java | 38 ++++++++++------- .../command/Command_releaseparrots.java | 41 ------------------- 2 files changed, 24 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java index 9c72b8ad..693ae101 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java @@ -1,40 +1,50 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; import me.totalfreedom.totalfreedommod.rank.Rank; -import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Eject players that are riding you.", usage = "/") +@CommandParameters(description = "Eject any entities that are riding you.", usage = "/") public class Command_eject extends FreedomCommand { + /* Player.getShoulderEntityLeft() and Player.getShoulderEntityRight() are deprecated, however unless + Player.getPassengers() also includes shoulders (which isn't likely, given the official documentation doesn't + state an alternative method to use instead), these methods will continue to be used here. */ + @SuppressWarnings("deprecation") @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + // Uses the size of the return value of Player.getPassengers() as the starting number of entities ejected + int count = playerSender.getPassengers().size(); - List names = new ArrayList<>(); - - for (Entity entity : playerSender.getPassengers()) + // Removes any entities from the sender's shoulders + if (playerSender.getShoulderEntityLeft() != null) { - names.add(entity.getName()); + playerSender.setShoulderEntityLeft(null); + count++; + } + if (playerSender.getShoulderEntityRight() != null) + { + playerSender.setShoulderEntityLeft(null); + count++; } - if (names.isEmpty()) + // Removes anything riding the sender + playerSender.eject(); + + if (count != 0) + { + msg(count + " entit" + (count == 1 ? "y was" : "ies were") + " ejected.", ChatColor.GREEN); + } + else { msg("Nothing was ejected.", ChatColor.GREEN); - return true; } - msg("Ejecting " + StringUtils.join(names, ", ") + ".", ChatColor.GREEN); - playerSender.eject(); - return true; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java deleted file mode 100644 index 16a25106..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java +++ /dev/null @@ -1,41 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Release parrots from your shoulders.", usage = "/", aliases = "removeparrots") -public class Command_releaseparrots extends FreedomCommand -{ - - @SuppressWarnings("deprecation") - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - Entity leftShoulderEntity = playerSender.getShoulderEntityLeft(); - Entity rightShoulderEntity = playerSender.getShoulderEntityRight(); - - if (rightShoulderEntity == null && leftShoulderEntity == null) - { - msg("No parrots were detected on either of your shoulders."); - return true; - } - - if (leftShoulderEntity != null && leftShoulderEntity.getType().equals(EntityType.PARROT)) - { - playerSender.setShoulderEntityLeft(null); - msg("Removed the parrot on your left shoulder."); - } - - if (rightShoulderEntity != null && rightShoulderEntity.getType().equals(EntityType.PARROT)) - { - playerSender.setShoulderEntityRight(null); - msg("Removed the parrot on your right shoulder."); - } - return true; - } -} From 032e54e2d4f2ad2096c0f2d6ad43a046718c3d92 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 6 Sep 2021 04:44:39 -0600 Subject: [PATCH 55/81] Multiple birds, one commit Here's a list of things I've fixed/mitigated: - Range bans in ban-related commands (FS-209) - Bug in /tempban where the duration in the broadcast is always wrong - Over-complicated handling of /tempban durations (instead of trying to process them and silently fail, it'll flat out say that an invalid duration is well, invalid) - Inconsistent "player not found" messages in banning commands - (Mitigates) weird issue with case-sensitive usernames in banning commands when the server has restarted since a player last joined - (Mitigates) banned IPs being inaccurate when a player was banned offline whilst containing multiple IPs in their playerdata - Redoing how MovementValidator handled positive and negative infinity exploit items, completely removing the need for Mojangson in the first place and allowing the plugin to run without Essentials once more in the process (related to FS-406) Here is what I've done in addition: - Merged /tban and /noob into /tempban, which now bans for 5 minutes by default (FS-205) --- pom.xml | 6 - .../totalfreedommod/MovementValidator.java | 82 +++++----- .../totalfreedommod/command/Command_ban.java | 50 +++--- .../totalfreedommod/command/Command_doom.java | 8 +- .../totalfreedommod/command/Command_tban.java | 143 ------------------ .../command/Command_tempban.java | 90 ++++++----- .../command/Command_unban.java | 48 +++--- 7 files changed, 144 insertions(+), 283 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java diff --git a/pom.xml b/pom.xml index dc0dfbdb..d9f8224b 100644 --- a/pom.xml +++ b/pom.xml @@ -132,12 +132,6 @@ compile - - ca.momoperes - mojangson - 1.0-20210821.193420-1 - - org.bstats bstats-bukkit diff --git a/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java b/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java index c44d06c5..e2b621af 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java @@ -1,17 +1,16 @@ package me.totalfreedom.totalfreedommod; -import ca.momothereal.mojangson.ex.MojangsonParseException; -import ca.momothereal.mojangson.value.MojangsonCompound; -import ca.momothereal.mojangson.value.MojangsonValue; +import com.google.common.collect.Multimap; import io.papermc.lib.PaperLib; -import java.util.List; + +import java.util.Collection; +import java.util.Map; import java.util.Objects; -import net.minecraft.server.v1_16_R3.NBTTagCompound; -import net.minecraft.server.v1_16_R3.NBTTagList; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -20,6 +19,7 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; public class MovementValidator extends FreedomService { @@ -133,55 +133,49 @@ public class MovementValidator extends FreedomService private Boolean exploitItem(ItemStack item) { - net.minecraft.server.v1_16_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); - NBTTagList modifiers = getAttributeList(nmsStack); - MojangsonCompound compound = new MojangsonCompound(); - boolean foundNegative = false; - boolean foundPositive = false; - try + if (item == null) { - String mod = modifiers.toString(); - String fancy = ("{" + (mod.substring(1, mod.length() - 1).replace("{", "").replace("}", "")) + "}"); - compound.read(fancy); - for (String key : compound.keySet()) + return false; + } + + ItemMeta meta = item.getItemMeta(); + if (meta != null) + { + Multimap attributes = meta.getAttributeModifiers(); + if (attributes != null) { - if (Objects.equals(key, "Amount")) //null-safe .equals() + Map> attrMap = attributes.asMap(); + + // For every attribute... + for (Attribute attr : attributes.keySet()) { - @SuppressWarnings("rawtypes") - List values = compound.get(key); - for (MojangsonValue val : values) + // Default values + boolean posInf = false; + boolean negInf = false; + + // For every AttributeModifier... + for (AttributeModifier modifier : attrMap.get(attr)) { - if (val.getValue().toString().equals("Infinityd")) + // Are they ∞ or -∞? + if (modifier.getAmount() == Double.POSITIVE_INFINITY) { - foundPositive = true; + posInf = true; } - if (val.getValue().toString().equals("-Infinityd")) + else if (modifier.getAmount() == Double.NEGATIVE_INFINITY) { - foundNegative = true; + negInf = true; } } + + // Are both values set as true? + if (posInf && negInf) + { + return true; + } } } - } - catch (MojangsonParseException e) - { - e.printStackTrace(); - } - return foundNegative && foundPositive; - } - - private NBTTagList getAttributeList(net.minecraft.server.v1_16_R3.ItemStack stack) - { - if (stack.getTag() == null) - { - stack.setTag(new NBTTagCompound()); } - NBTTagList attr = stack.getTag().getList("AttributeModifiers", 10); - if (attr == null) - { - stack.getTag().set("AttributeModifiers", new NBTTagList()); - } - return stack.getTag().getList("AttributeModifiers", 10); + return false; } } \ No newline at end of file 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 c6b38381..2b0c7cc4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java @@ -1,8 +1,8 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; + +import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.punishments.Punishment; @@ -60,28 +60,39 @@ public class Command_ban extends FreedomCommand } final String username; - final List ips = new ArrayList<>(); + final String ip; final Player player = getPlayer(args[0]); if (player == null) { - final PlayerData entry = plugin.pl.getData(args[0]); - - if (entry == null) + // Gets the IP using Essentials data if available + if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; + User essUser = plugin.esb.getEssentialsUser(args[0]); + // + username = essUser.getName(); + ip = essUser.getLastLoginAddress(); + } + // Last resort - Getting the first result from the username itself + else + { + PlayerData entry = plugin.pl.getData(args[0]); + if (entry == null) + { + msg(PLAYER_NOT_FOUND); + return true; + } + else + { + username = entry.getName(); + ip = entry.getIps().get(0); + } } - - username = entry.getName(); - ips.addAll(entry.getIps()); } else { - final PlayerData entry = plugin.pl.getData(player); username = player.getName(); - //ips.addAll(entry.getIps());/ - ips.add(FUtil.getIp(player)); + ip = FUtil.getIp(player); // Deop player.setOp(false); @@ -126,7 +137,6 @@ public class Command_ban extends FreedomCommand // Ban player Ban ban; - if (player != null) { ban = Ban.forPlayer(player, sender, null, reason); @@ -135,12 +145,8 @@ public class Command_ban extends FreedomCommand { ban = Ban.forPlayerName(username, sender, null, reason); } + ban.addIp(ip); - for (String ip : ips) - { - ban.addIp(ip); - ban.addIp(FUtil.getFuzzyIp(ip)); - } plugin.bm.addBan(ban); @@ -154,7 +160,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, ", ")); + msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + ip); FUtil.adminAction(sender.getName(), bcast.toString(), true); } @@ -172,7 +178,7 @@ public class Command_ban extends FreedomCommand } // Log ban - plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.BAN, reason)); + plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.BAN, reason)); return true; } 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 d6711948..8e6f4187 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.Objects; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -43,7 +42,7 @@ public class Command_doom extends FreedomCommand FUtil.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true); FUtil.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED); - final String ip = Objects.requireNonNull(player.getAddress()).getAddress().getHostAddress().trim(); + final String ip = FUtil.getIp(player); // Remove from admin Admin admin = getAdmin(player); @@ -76,10 +75,7 @@ public class Command_doom extends FreedomCommand // Ban player Ban ban = Ban.forPlayer(player, sender); ban.setReason((reason == null ? "FUCKOFF" : reason)); - for (String playerIp : plugin.pl.getData(player).getIps()) - { - ban.addIp(playerIp); - } + ban.addIp(ip); plugin.bm.addBan(ban); // Set gamemode to survival diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java deleted file mode 100644 index c4c4c62f..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java +++ /dev/null @@ -1,143 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import me.totalfreedom.totalfreedommod.banning.Ban; -import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.punishments.Punishment; -import me.totalfreedom.totalfreedommod.punishments.PunishmentType; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Temporarily bans a player for five minutes.", usage = "/ [-q] [reason]", aliases = "noob") -public class Command_tban extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - return false; - } - - boolean quiet = args[0].equalsIgnoreCase("-q"); - if (quiet) - { - args = org.apache.commons.lang3.ArrayUtils.subarray(args, 1, args.length); - - if (args.length < 1) - { - return false; - } - } - - final String username; - - final Player player = getPlayer(args[0]); - final PlayerData entry; - if (player == null) - { - entry = plugin.pl.getData(args[0]); - - if (entry == null) - { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; - } - - username = entry.getName(); - } - else - { - entry = plugin.pl.getData(player); - username = player.getName(); - } - final List ips = new ArrayList<>(entry.getIps()); - - String reason = null; - if (args.length > 1) - { - reason = StringUtils.join(args, " ", 1, args.length); - } - - StringBuilder kick = new StringBuilder() - .append(ChatColor.RED) - .append("You have been temporarily banned for five minutes. Please read totalfreedom.me for more info."); - - if (!quiet) - { - // Strike with lightning - if (player != null) - { - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { - final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - Objects.requireNonNull(targetPos.getWorld()).strikeLightning(strike_pos); - } - } - - // Kill player - player.setHealth(0.0); - - if (reason != null) - { - FUtil.adminAction(sender.getName(), "Tempbanning " + player.getName() + " for 5 minutes - Reason: " + reason, true); - kick.append("\n") - .append(ChatColor.RED) - .append("Reason: ") - .append(ChatColor.GOLD) - .append(reason); - } - else - { - FUtil.adminAction(sender.getName(), "Tempbanning " + player.getName() + " for 5 minutes", true); - } - } - } - else - { - if (player != null) - { - if (reason != null) - { - msg("Quietly temporarily banned " + player.getName() + " for 5 minutes."); - kick.append("\n") - .append(ChatColor.RED) - .append("Reason: ") - .append(ChatColor.GOLD) - .append(reason); - } - } - } - - // Ban player - Ban ban = Ban.forPlayerName(username, sender, FUtil.parseDateOffset("5m"), reason); - for (String ip : ips) - { - ban.addIp(ip); - } - plugin.bm.addBan(ban); - - // Kick player - if (player != null) - { - player.kickPlayer(kick.toString()); - } - - // Log ban - plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason)); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java index dfc412ce..3789f40b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java @@ -1,10 +1,10 @@ package me.totalfreedom.totalfreedommod.command; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; -import java.util.List; import java.util.Objects; + +import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.punishments.Punishment; @@ -21,7 +21,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]") +@CommandParameters(description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]", aliases = "tban,noob") public class Command_tempban extends FreedomCommand { @@ -47,49 +47,72 @@ public class Command_tempban extends FreedomCommand } final String username; - final List ips = new ArrayList<>(); + final String ip; final Player player = getPlayer(args[0]); - final PlayerData entry; + PlayerData entry; if (player == null) { - entry = plugin.pl.getData(args[0]); - - if (entry == null) + // Gets the IP using Essentials data if available + if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; + User essUser = plugin.esb.getEssentialsUser(args[0]); + // + username = essUser.getName(); + ip = essUser.getLastLoginAddress(); + } + // Last resort - Getting the first result from the username itself + else + { + entry = plugin.pl.getData(args[0]); + if (entry == null) + { + msg(PLAYER_NOT_FOUND); + return true; + } + else + { + username = entry.getName(); + ip = entry.getIps().get(0); + } } - - username = entry.getName(); - ips.addAll(entry.getIps()); } else { - entry = plugin.pl.getData(player); username = player.getName(); - ips.add(FUtil.getIp(player)); + ip = FUtil.getIp(player); } final StringBuilder message = new StringBuilder("Temporarily banned " + username); - Date expires = FUtil.parseDateOffset("30m"); + // Default expiration date is 5 minutes + Date expires = FUtil.parseDateOffset("5m"); + + // Parses what comes after as a duration + if (args.length > 1) + { + try + { + expires = FUtil.parseDateOffset(args[1]); + } + catch (NumberFormatException error) + { + msg("Invalid duration: " + args[1], ChatColor.RED); + return true; + } + } + message.append(" until ").append(date_format.format(expires)); + // If a reason appears to exist, set it. String reason = null; - if (args.length >= 2) + if (args.length > 2) { - Date parsed_offset = FUtil.parseDateOffset(args[1]); - reason = StringUtils.join(ArrayUtils.subarray(args, parsed_offset == null ? 1 : 2, args.length), " ") + " (" + sender.getName() + ")"; - if (parsed_offset != null) - { - expires = parsed_offset; - } + reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")"; message.append(", Reason: \"").append(reason).append("\""); } Ban ban; - if (player != null) { ban = Ban.forPlayer(player, sender, expires, reason); @@ -98,11 +121,8 @@ public class Command_tempban extends FreedomCommand { ban = Ban.forPlayerName(username, sender, expires, reason); } + ban.addIp(ip); - for (String ip : ips) - { - ban.addIp(ip); - } plugin.bm.addBan(ban); if (!quiet) @@ -119,6 +139,8 @@ public class Command_tempban extends FreedomCommand Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); } } + + player.kickPlayer(ban.bakeKickMessage()); } FUtil.adminAction(sender.getName(), message.toString(), true); @@ -128,19 +150,15 @@ public class Command_tempban extends FreedomCommand msg("Quietly temporarily banned " + username + "."); } - if (player != null) + for (Player p : Bukkit.getOnlinePlayers()) { - player.kickPlayer(ban.bakeKickMessage()); - for (Player p : Bukkit.getOnlinePlayers()) + if (FUtil.getIp(p).equals(ip)) { - if (FUtil.getIp(p).equals(FUtil.getIp(player))) - { - p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); - } + p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); } } - plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason)); + plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.TEMPBAN, reason)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java index b6ca9452..daf3b32c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java @@ -1,12 +1,9 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; -import me.totalfreedom.totalfreedommod.banning.Ban; +import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; -import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -22,20 +19,33 @@ public class Command_unban extends FreedomCommand if (args.length > 0) { String username; - final PlayerData entry = plugin.pl.getData(args[0]); + String ip; - if (entry == null) + // Gets the IP using Essentials data if available + if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; + User essUser = plugin.esb.getEssentialsUser(args[0]); + // + username = essUser.getName(); + ip = essUser.getLastLoginAddress(); + } + // Secondary method - using Essentials if available + else + { + final PlayerData entry = plugin.pl.getData(args[0]); + if (entry == null) + { + msg(PLAYER_NOT_FOUND); + return true; + } + username = entry.getName(); + ip = entry.getIps().get(0); } - username = entry.getName(); - final List ips = new ArrayList<>(entry.getIps()); - FUtil.adminAction(sender.getName(), "Unbanning " + username, true); - msg(username + " has been unbanned along with the following IPs: " + StringUtils.join(ips, ", ")); plugin.bm.removeBan(plugin.bm.getByUsername(username)); + plugin.bm.removeBan(plugin.bm.getByIp(ip)); + msg(username + " has been unbanned along with the IP: " + ip); if (args.length >= 2) { @@ -45,20 +55,6 @@ public class Command_unban extends FreedomCommand msg("Restored edits for: " + username); } } - - for (String ip : ips) - { - Ban ban = plugin.bm.getByIp(ip); - if (ban != null) - { - plugin.bm.removeBan(ban); - } - ban = plugin.bm.getByIp(FUtil.getFuzzyIp(ip)); - if (ban != null) - { - plugin.bm.removeBan(ban); - } - } return true; } return false; From 44ff621d73dd80cc4a9f414d5a83bd162f94d135 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Sep 2021 20:21:49 +0100 Subject: [PATCH 56/81] Bump bstats-bukkit from 1.8 to 2.2.1 (#99) Bumps [bstats-bukkit](https://github.com/Bastian/bStats-Metrics) from 1.8 to 2.2.1. - [Release notes](https://github.com/Bastian/bStats-Metrics/releases) - [Commits](https://github.com/Bastian/bStats-Metrics/commits/v2.2.1) --- updated-dependencies: - dependency-name: org.bstats:bstats-bukkit dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ryan Resolves FS-419 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dc0dfbdb..97ce81f0 100644 --- a/pom.xml +++ b/pom.xml @@ -141,7 +141,7 @@ org.bstats bstats-bukkit - 1.8 + 2.2.1 compile From 0a9b95bfceac84c0b9cd785806eb68894e20fe78 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 11 Sep 2021 01:19:08 +0100 Subject: [PATCH 57/81] Move to new ATLAS Nexus (#138) * Move to new ATLAS Nexus Turns out jFrog is super expensive and 10GB of Bandwidth doesn't go far, this should make things a lot better :) * Update pom.xml * Update pom.xml --- pom.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 97ce81f0..92f00dc3 100644 --- a/pom.xml +++ b/pom.xml @@ -41,8 +41,8 @@ - totalfreedom-development - https://atlasmedia.jfrog.io/artifactory/totalfreedom-development/ + atlas-nexus-01-totalfreedom-development + https://nexus-01.core.atlas-media.co.uk/repository/totalfreedom-development/ @@ -133,9 +133,9 @@ - ca.momoperes - mojangson - 1.0-20210821.193420-1 + com.github.speedxx + Mojangson + 1957eef8d6 @@ -230,10 +230,10 @@ - com.github.AtlasMediaGroup - TFGuilds - master-SNAPSHOT - provided + me.totalfreedom + tfguilds + 2021.06-RC2 + compile From e288668c92109593540ad66c775258961e963564 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Sep 2021 18:42:31 +0100 Subject: [PATCH 58/81] Bump maven-antrun-plugin from 1.8 to 3.0.0 (#102) Bumps [maven-antrun-plugin](https://github.com/apache/maven-antrun-plugin) from 1.8 to 3.0.0. - [Release notes](https://github.com/apache/maven-antrun-plugin/releases) - [Commits](https://github.com/apache/maven-antrun-plugin/compare/maven-antrun-plugin-1.8...maven-antrun-plugin-3.0.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-antrun-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 92f00dc3..928e5ca3 100644 --- a/pom.xml +++ b/pom.xml @@ -332,7 +332,7 @@ org.apache.maven.plugins maven-antrun-plugin - 1.8 + 3.0.0 default-cli From 2f332a8c42b8e339c71b64b2adec17515eb7f75f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Sep 2021 18:48:33 +0100 Subject: [PATCH 59/81] Bump annotations from 20.1.0 to 22.0.0 (#104) Bumps [annotations](https://github.com/JetBrains/java-annotations) from 20.1.0 to 22.0.0. - [Release notes](https://github.com/JetBrains/java-annotations/releases) - [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md) - [Commits](https://github.com/JetBrains/java-annotations/compare/20.1.0...22.0.0) --- updated-dependencies: - dependency-name: org.jetbrains:annotations dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 928e5ca3..bfc6443d 100644 --- a/pom.xml +++ b/pom.xml @@ -239,7 +239,7 @@ org.jetbrains annotations - 20.1.0 + 22.0.0 compile From 02049618341b601f605f3a34c0189f030d27d138 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Sep 2021 23:53:41 +0100 Subject: [PATCH 60/81] Bump commons-io from 2.8.0 to 2.11.0 (#117) Bumps commons-io from 2.8.0 to 2.11.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bfc6443d..a37c041e 100644 --- a/pom.xml +++ b/pom.xml @@ -114,7 +114,7 @@ commons-io commons-io - 2.8.0 + 2.11.0 compile From 6772333eb41e7ccc2ec95a7523f3f36055151ac2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 00:10:47 +0100 Subject: [PATCH 61/81] Bump junit-jupiter from 5.4.2 to 5.7.2 (#103) Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.4.2 to 5.7.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.4.2...r5.7.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a37c041e..23591220 100644 --- a/pom.xml +++ b/pom.xml @@ -253,7 +253,7 @@ org.junit.jupiter junit-jupiter - 5.4.2 + 5.7.2 compile From 0e12f5e792614df5430b0f510aac32a83bd8f9ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 09:09:28 +0100 Subject: [PATCH 62/81] Bump commons-lang3 from 3.11 to 3.12.0 (#111) Bumps commons-lang3 from 3.11 to 3.12.0. --- updated-dependencies: - dependency-name: org.apache.commons:commons-lang3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b5dfe221..b9355d7b 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.apache.commons commons-lang3 - 3.11 + 3.12.0 compile From 8a31b4c5c06893b7df28337541772c8c9b6a3051 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 11:33:52 +0100 Subject: [PATCH 63/81] Bump javassist from 3.27.0-GA to 3.28.0-GA (#110) Bumps [javassist](https://github.com/jboss-javassist/javassist) from 3.27.0-GA to 3.28.0-GA. - [Release notes](https://github.com/jboss-javassist/javassist/releases) - [Commits](https://github.com/jboss-javassist/javassist/commits) --- updated-dependencies: - dependency-name: org.javassist:javassist dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b9355d7b..71a48bc9 100644 --- a/pom.xml +++ b/pom.xml @@ -219,7 +219,7 @@ org.javassist javassist - 3.27.0-GA + 3.28.0-GA compile From 213a43380e49255c5d6195e032e82d4db501ed53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 12:13:56 +0100 Subject: [PATCH 64/81] Bump git-commit-id-plugin from 4.0.2 to 4.9.10 (#113) Bumps git-commit-id-plugin from 4.0.2 to 4.9.10. --- updated-dependencies: - dependency-name: pl.project13.maven:git-commit-id-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 71a48bc9..53f437a8 100644 --- a/pom.xml +++ b/pom.xml @@ -285,7 +285,7 @@ pl.project13.maven git-commit-id-plugin - 4.0.2 + 4.9.10 get-the-git-infos From 180cd811328bed269be63cc62481fd625b24eb9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Sep 2021 09:58:54 +0100 Subject: [PATCH 65/81] Bump junit-jupiter from 5.7.2 to 5.8.0 (#139) Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.7.2 to 5.8.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.7.2...r5.8.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53f437a8..7dfc2488 100644 --- a/pom.xml +++ b/pom.xml @@ -247,7 +247,7 @@ org.junit.jupiter junit-jupiter - 5.7.2 + 5.8.0 compile From e122c4c5fa2edf9f6be46db65938b7f1de0cc4b8 Mon Sep 17 00:00:00 2001 From: Wild1145 Date: Sun, 19 Sep 2021 17:32:05 +0100 Subject: [PATCH 66/81] Bump to 2021.09-RC01 Release --- SECURITY.md | 7 +++++-- pom.xml | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index adc91e1d..a18bd56e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -11,20 +11,23 @@ These versions are currently actively supported by our team, and you should expe | Version | Supported | Support End: | | ------------------- | ------------------ | ------------------------------ | -| 2021.05 | :white_check_mark: | No Earlier than August 2021 | +| 2021.09 | :white_check_mark: | No Earlier than December 2021 | ### Legacy Supported These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate. | Version | Supported | Support End: | | ------------------- | ------------------ | ------------ | -| 2021.04 | :white_check_mark: | July 2021 | +| 2021.06 | :white_check_mark: | October 2021 | + ### No Longer Supported These versions are no longer supported at all. It is strongly advised to update if you are running any of these versions. | Version | Supported | Support Ended: | | ------------------- | ------------------ | ------------------- | +| 2021.05 | :white_check_mark: | September 2021 | +| 2021.04 | :white_check_mark: | July 2021 | | 2021.02 | :x: | 6 June 2021 | | 2020.11 | :x: | 3 May 2021 | | 6.0.x (Pre-Release) | :x: | December 2020 | diff --git a/pom.xml b/pom.xml index 7dfc2488..6d275ae7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.06 + 2021.09-RC01 jar From 936f0b621e39b9e1783f6bdc10852e3c5efea8e6 Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 3 Oct 2021 06:45:02 -0600 Subject: [PATCH 67/81] Stupid simple fix Fixes an oopsie I made and an oopsie someone else made which broke the entire plugin. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7dfc2488..abec2727 100644 --- a/pom.xml +++ b/pom.xml @@ -429,8 +429,8 @@ org.reflections:reflections org.javassist:javassist io.papermc:paperlib - com.github.speedxx:Mojangson org.bstats:bstats-bukkit + org.bstats:bstats-base org.jetbrains:annotations From 4c287ca9b81a748750407bd1feb563376871a7c1 Mon Sep 17 00:00:00 2001 From: Ryan Wild Date: Sun, 3 Oct 2021 15:50:33 +0100 Subject: [PATCH 68/81] Bump to RC02 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ee78b3c4..07c1c073 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.09-RC01 + 2021.09-RC02 jar From 4d469cdc0a529a5c3a8b916b82c4626e9c7859e7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 3 Oct 2021 15:57:47 +0100 Subject: [PATCH 69/81] Move from Java 16 to Java 17 (#149) * Move from Java 16 to Java 17 * Update java17-maven.yml --- .github/workflows/{java16-maven.yml => java17-maven.yml} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename .github/workflows/{java16-maven.yml => java17-maven.yml} (75%) diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java17-maven.yml similarity index 75% rename from .github/workflows/java16-maven.yml rename to .github/workflows/java17-maven.yml index 92896df8..43d090ab 100644 --- a/.github/workflows/java16-maven.yml +++ b/.github/workflows/java17-maven.yml @@ -1,9 +1,9 @@ -name: Java16-Maven-Build +name: Java17-Maven-Build on: [push] jobs: - build-java-16: + build-java-17: runs-on: ubuntu-latest @@ -12,10 +12,10 @@ jobs: - uses: actions/checkout@v1 # Java 16 Builds - - name: Set up JDK 16 + - name: Set up JDK 17 uses: actions/setup-java@v2.3.0 with: - java-version: 16 + java-version: 17 distribution: 'adopt' - name: Build with Maven run: mvn -B package --file pom.xml From 74a71b1843dc5410893c5e614b77a6271cae5518 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 4 Oct 2021 16:02:39 -0600 Subject: [PATCH 70/81] Important bugfix It appears someone had an extremely big brain moment. --- .../totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java index dc846cd1..30d51a9d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java @@ -283,7 +283,6 @@ public class CoreProtectBridge extends FreedomService if (block != null) { event.setCancelled(true); - List lookup = coreProtect.blockLookup(block, -1); int cooldownTime = 3; @@ -298,6 +297,8 @@ public class CoreProtectBridge extends FreedomService } } + List lookup = coreProtect.blockLookup(block, -1); + if (!plugin.al.isAdmin(player)) { cooldown.put(player.getName(), System.currentTimeMillis()); From abfa3b977c92b7e179f1070692ecd97c86ba6071 Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 13 Nov 2021 02:35:30 -0700 Subject: [PATCH 71/81] Whoops This commit fixes 2 things: 1. A redundant check that was completely unnecessary 2. A loophole in my original bugfix commit I didn't initially discover until afterwards which enables players to do the same thing except with right clicking instead The block inspector should be completely rewritten in the future, but for now it works. --- .../bridge/CoreProtectBridge.java | 157 ++++++++---------- 1 file changed, 72 insertions(+), 85 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java index 30d51a9d..c0a00e39 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java @@ -276,27 +276,30 @@ public class CoreProtectBridge extends FreedomService Block block = event.getClickedBlock(); final CoreProtectAPI coreProtect = getCoreProtectAPI(); + // TODO: Rewrite this if (data.hasInspection()) { + int cooldownTime = 3; + + // Cooldown check + if ((event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) + && cooldown.containsKey(player.getName())) + { + long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); + if (secondsLeft > 0L) + { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query."); + return; + } + } + + // Actual lookup time if (event.getAction() == Action.LEFT_CLICK_BLOCK) { if (block != null) { event.setCancelled(true); - - int cooldownTime = 3; - - if (cooldown.containsKey(player.getName())) - { - long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); - if (secondsLeft > 0L) - { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query."); - return; - } - } - List lookup = coreProtect.blockLookup(block, -1); if (!plugin.al.isAdmin(player)) @@ -365,91 +368,75 @@ public class CoreProtectBridge extends FreedomService { if (block != null) { - if (data.hasInspection()) - { - BlockState blockState = block.getRelative(event.getBlockFace()).getState(); - Block placedBlock = blockState.getBlock(); - event.setCancelled(true); - List lookup = coreProtect.blockLookup(placedBlock, -1); + BlockState blockState = block.getRelative(event.getBlockFace()).getState(); + Block placedBlock = blockState.getBlock(); + event.setCancelled(true); + List lookup = coreProtect.blockLookup(placedBlock, -1); + if (lookup.isEmpty()) + { + lookup = coreProtect.blockLookup(block, -1); + } + + if (!plugin.al.isAdmin(player)) + { + cooldown.put(player.getName(), System.currentTimeMillis()); + } + + if (lookup != null) + { if (lookup.isEmpty()) { - lookup = coreProtect.blockLookup(block, -1); + player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location"); + return; } - int cooldownTime = 3; + HISTORY_MAP.remove(event.getPlayer()); + HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10)); + FUtil.PaginationList paged = HISTORY_MAP.get(event.getPlayer()); - if (cooldown.containsKey(player.getName())) + player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " + + ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")"); + + for (String[] value : lookup) { - long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); - if (secondsLeft > 0L) + CoreProtectAPI.ParseResult result = coreProtect.parseResult(value); + BlockData bl = result.getBlockData(); + + String s; + String st = ""; + + if (result.getActionString().equals("Placement")) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query."); - return; + s = " placed "; } + else if (result.getActionString().equals("Removal")) + { + s = " broke "; + } + else + { + s = " interacted with "; + } + + if (result.isRolledBack()) + { + st += "§m"; + } + + int time = (int)(System.currentTimeMillis() / 1000L); + + paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") + + st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase()); } - if (!plugin.al.isAdmin(player)) + List page = paged.getPage(1); + for (String entries : page) { - cooldown.put(player.getName(), System.currentTimeMillis()); + player.sendMessage(entries); } - if (lookup != null) - { - if (lookup.isEmpty()) - { - player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location"); - return; - } - - HISTORY_MAP.remove(event.getPlayer()); - HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10)); - FUtil.PaginationList paged = HISTORY_MAP.get(event.getPlayer()); - - player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " + - ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")"); - - for (String[] value : lookup) - { - CoreProtectAPI.ParseResult result = coreProtect.parseResult(value); - BlockData bl = result.getBlockData(); - - String s; - String st = ""; - - if (result.getActionString().equals("Placement")) - { - s = " placed "; - } - else if (result.getActionString().equals("Removal")) - { - s = " broke "; - } - else - { - s = " interacted with "; - } - - if (result.isRolledBack()) - { - st += "§m"; - } - - int time = (int)(System.currentTimeMillis() / 1000L); - - paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") + - st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase()); - } - - List page = paged.getPage(1); - for (String entries : page) - { - player.sendMessage(entries); - } - - player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history "); - } + player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history "); } } } From 1e1367d08f9f13580efb19e2c440f9146c0b5ba4 Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 13 Nov 2021 02:58:36 -0700 Subject: [PATCH 72/81] Bump to RC03 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 07c1c073..966d1c59 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.09-RC02 + 2021.09-RC03 jar From 9155ac90b5003c4bb84464b492bff1129cc47e4a Mon Sep 17 00:00:00 2001 From: Paldiu Date: Mon, 22 Nov 2021 12:29:54 -0600 Subject: [PATCH 73/81] Official Release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 966d1c59..77a1b10f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.09-RC03 + 2021.09 jar From f190bbeac10406d2a85563055c4c0e777323cb53 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 23 Nov 2021 00:27:57 -0700 Subject: [PATCH 74/81] FS-292 --- pom.xml | 12 ++++++------ .../totalfreedommod/ServerInterface.java | 15 +++++---------- .../totalfreedommod/blocking/SignBlocker.java | 6 +++--- .../command/Command_modifyitem.java | 10 +++++----- 4 files changed, 19 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index 77a1b10f..306e9453 100644 --- a/pom.xml +++ b/pom.xml @@ -142,7 +142,7 @@ org.spigotmc spigot - 1.16.5-R0.1-SNAPSHOT + 1.17.1-R0.1-SNAPSHOT provided @@ -177,7 +177,7 @@ net.coreprotect coreprotect - 19.5 + 20.1 provided @@ -275,9 +275,9 @@ 3.8.1 TotalFreedomMod.jar - 11 - 11 - 11 + 17 + 17 + 17 @@ -401,7 +401,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.4 + 3.3.0-SNAPSHOT package diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java b/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java index 40abc384..3821a949 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java @@ -4,14 +4,14 @@ import java.util.Arrays; import java.util.List; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; -import net.minecraft.server.v1_16_R3.EntityPlayer; -import net.minecraft.server.v1_16_R3.MinecraftServer; +import net.minecraft.server.level.EntityPlayer; +import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_16_R3.CraftServer; +import org.bukkit.craftbukkit.v1_17_R1.CraftServer; public class ServerInterface extends FreedomService { - public static final String COMPILE_NMS_VERSION = "v1_16_R3"; + public static final String COMPILE_NMS_VERSION = "v1_17_R1"; public static void warnVersion() { @@ -34,16 +34,11 @@ public class ServerInterface extends FreedomService { } - public void setOnlineMode(boolean mode) - { - getServer().setOnlineMode(mode); - } - public int purgeWhitelist() { String[] whitelisted = getServer().getPlayerList().getWhitelisted(); int size = whitelisted.length; - for (EntityPlayer player : getServer().getPlayerList().players) + for (EntityPlayer player : getServer().getPlayerList().getPlayers()) { getServer().getPlayerList().getWhitelist().remove(player.getProfile()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java index 261ce274..3fabc837 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java @@ -1,10 +1,10 @@ package me.totalfreedom.totalfreedommod.blocking; import me.totalfreedom.totalfreedommod.FreedomService; -import net.minecraft.server.v1_16_R3.NBTTagCompound; +import net.minecraft.nbt.NBTTagCompound; import org.bukkit.ChatColor; import org.bukkit.Tag; -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -35,7 +35,7 @@ public class SignBlocker extends FreedomService if (Tag.SIGNS.getValues().contains(event.getBlock().getType())) { ItemStack sign = event.getItemInHand(); - net.minecraft.server.v1_16_R3.ItemStack nmsSign = CraftItemStack.asNMSCopy(sign); + net.minecraft.world.item.ItemStack nmsSign = CraftItemStack.asNMSCopy(sign); NBTTagCompound compound = (nmsSign.hasTag()) ? nmsSign.getTag() : new NBTTagCompound(); assert compound != null; NBTTagCompound bet = compound.getCompound("BlockEntityTag"); 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 bb7d6ec7..4ba7ab88 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java @@ -5,13 +5,13 @@ import java.util.List; import java.util.SplittableRandom; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; -import net.minecraft.server.v1_16_R3.NBTTagCompound; -import net.minecraft.server.v1_16_R3.NBTTagList; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; 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_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -151,7 +151,7 @@ public class Command_modifyitem extends FreedomCommand { return false; } - net.minecraft.server.v1_16_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); + net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); NBTTagList modifiers = getAttributeList(nmsStack); NBTTagCompound cmpnd = new NBTTagCompound(); @@ -202,7 +202,7 @@ public class Command_modifyitem extends FreedomCommand return true; } - private NBTTagList getAttributeList(net.minecraft.server.v1_16_R3.ItemStack stack) + private NBTTagList getAttributeList(net.minecraft.world.item.ItemStack stack) { if (stack.getTag() == null) { From 5849947c6b97d44f5ea828e33853eeddba32acea Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 29 Nov 2021 02:35:36 -0700 Subject: [PATCH 75/81] This should fix it --- pom.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 306e9453..7d7c4aa8 100644 --- a/pom.xml +++ b/pom.xml @@ -258,6 +258,13 @@ + + + apache.snapshots + https://repository.apache.org/snapshots/ + + + @@ -401,7 +408,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.3.0-SNAPSHOT + 3.3.1-SNAPSHOT package From bf2323bed20bd0287477c98ee8c3841189a6e974 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 29 Nov 2021 02:44:23 -0700 Subject: [PATCH 76/81] Squashed commit of the following: commit a42cb6aff98f97469202f686f67c010fffe8bc2c Merge: 2ecfb886 01fdf766 Author: Video Date: Mon Nov 29 02:41:34 2021 -0700 Merge pull request #125 from AtlasMediaGroup/shitcan-savedflags Shitcans SavedFlags commit 01fdf766ee831bd4f9ae1b887b75b559e1171bd7 Merge: 58c21bb1 2ecfb886 Author: Video Date: Tue Nov 23 09:28:48 2021 -0700 Merge branch 'development' into shitcan-savedflags commit 2ecfb88604dcea061b1fb142f18ca2becec8cfef Merge: 42143c11 bb2ddf11 Author: Video Date: Tue Nov 23 09:15:16 2021 -0700 Merge pull request #130 from AtlasMediaGroup/FS-215 Makes [Discord] a hyperlink (FS-215) commit bb2ddf11292cb0945d7be2c5cd012cd96aee40ff Merge: cf9fdc6f 42143c11 Author: Video Date: Tue Nov 23 03:31:19 2021 -0700 Merge branch 'development' into FS-215 commit 58c21bb1aab8b80829663343a9677cfd79d09e19 Merge: fdba119d 42143c11 Author: Video Date: Tue Nov 23 03:30:48 2021 -0700 Merge branch 'development' into shitcan-savedflags commit cf9fdc6fe4fc278c5cc46745f535bdb7dfce185b Merge: 387ea6f7 a598c933 Author: Video Date: Fri Oct 8 01:43:33 2021 -0600 Merge branch 'development' into FS-215 commit 387ea6f71e36dddcd376ac0f6a555e30a9735067 Merge: a1ecf881 180cd811 Author: Video Date: Fri Oct 1 00:35:12 2021 -0600 Merge branch 'development' into FS-215 commit a1ecf881094de1da26b181370d08bddb425b4e98 Merge: bd647afe 213a4338 Author: Ryan Date: Sun Sep 12 13:48:59 2021 +0100 Merge branch 'development' into FS-215 commit fdba119d5d7b016a9fddaa05568776f43d02d442 Merge: 61857dd0 213a4338 Author: Ryan Date: Sun Sep 12 13:48:44 2021 +0100 Merge branch 'development' into shitcan-savedflags commit 61857dd06f05f1ba7242f308de671ea65f33ca80 Merge: 2d18d461 0e12f5e7 Author: Video Date: Sun Sep 12 03:01:37 2021 -0600 Merge branch 'development' into shitcan-savedflags commit bd647afe92d21e9dff65ae9c4c07323f56bfd1cd Merge: 69f17ef2 0e12f5e7 Author: Video Date: Sun Sep 12 02:50:39 2021 -0600 Merge branch 'development' into FS-215 commit 69f17ef2d742cfc77bc659c21fa0ef3007ab2337 Merge: ee1b27fa aebe1ace Author: Video Date: Sun Sep 12 02:01:56 2021 -0600 Merge branch 'development' into FS-215 commit ee1b27fa0df9ee1b579ce4ea6e0f768bb1ac7ca4 Merge: 2bdf14f3 0a9b95bf Author: Ryan Date: Sat Sep 11 01:24:00 2021 +0100 Merge branch 'development' into FS-215 commit 2d18d461fea83aef743967e10f8c6d6afd67a09c Merge: a4c81f20 0a9b95bf Author: Ryan Date: Sat Sep 11 01:23:44 2021 +0100 Merge branch 'development' into shitcan-savedflags commit 2bdf14f38c07c70e392879e2c18be02e0c847af2 Merge: f6d46b61 44ff621d Author: Video Date: Mon Sep 6 15:26:13 2021 -0600 Merge branch 'development' into FS-215 commit a4c81f202cd041d4f084135bbd9b0a1d77cd6505 Merge: 0d09c3a5 23caa4e8 Author: Ryan Date: Sat Sep 4 01:23:06 2021 +0100 Merge branch 'development' into shitcan-savedflags commit f6d46b6178a9c135df11b5305ba6fb16404381c5 Merge: ee804d52 23caa4e8 Author: Ryan Date: Sat Sep 4 01:07:33 2021 +0100 Merge branch 'development' into FS-215 commit ee804d52ff0747fdf67398b12080f708460b402c Author: Video Date: Fri Sep 3 12:52:15 2021 -0600 Makes [Discord] a hyperlink (FS-215) I've decided to overhaul the implementation of DiscordToMinecraftListener to make it more easily workable. This overhaul allows me to implement FS-215 more easily. commit 0d09c3a550eb014793cc800021a0064aaad5e3b1 Merge: e2ccd14e 4c3f188b Author: Ryan Date: Sun Aug 29 20:09:03 2021 +0100 Merge branch 'development' into shitcan-savedflags commit e2ccd14eb383844c1bfb5d0e56e7924bb47f5997 Author: Video Date: Fri Aug 27 16:54:55 2021 -0600 Unsaves SavedFlags --- .../totalfreedommod/SavedFlags.java | 98 ------------------- .../totalfreedommod/TotalFreedomMod.java | 2 - .../bridge/CoreProtectBridge.java | 7 -- .../totalfreedommod/config/ConfigEntry.java | 1 + .../discord/DiscordToMinecraftListener.java | 64 ++++++++---- .../totalfreedommod/util/FUtil.java | 2 - .../totalfreedommod/world/Flatlands.java | 33 ------- src/main/resources/config.yml | 2 + 8 files changed, 50 insertions(+), 159 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java b/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java deleted file mode 100644 index a86320fa..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java +++ /dev/null @@ -1,98 +0,0 @@ -package me.totalfreedom.totalfreedommod; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.HashMap; -import java.util.Map; -import me.totalfreedom.totalfreedommod.util.FLog; -import static me.totalfreedom.totalfreedommod.util.FUtil.SAVED_FLAGS_FILENAME; - -public class SavedFlags extends FreedomService -{ - @Override - public void onStart() - { - } - - @Override - public void onStop() - { - } - - @SuppressWarnings("unchecked") - public Map getSavedFlags() - { - Map flags = null; - File input = new File(TotalFreedomMod.getPlugin().getDataFolder(), SAVED_FLAGS_FILENAME); - - if (input.exists()) - { - try - { - try (FileInputStream fis = new FileInputStream(input); ObjectInputStream ois = new ObjectInputStream(fis)) - { - flags = (HashMap)ois.readObject(); - } - } - catch (Exception ex) - { - FLog.severe(ex); - } - } - - return flags; - } - - public boolean getSavedFlag(String flag) throws Exception - { - Boolean flagValue = null; - - Map flags = getSavedFlags(); - - if (flags != null) - { - if (flags.containsKey(flag)) - { - flagValue = flags.get(flag); - } - } - - if (flagValue != null) - { - return flagValue; - } - else - { - throw new Exception(); - } - } - - public void setSavedFlag(String flag, boolean value) - { - Map flags = getSavedFlags(); - - if (flags == null) - { - flags = new HashMap<>(); - } - - flags.put(flag, value); - - try - { - final FileOutputStream fos = new FileOutputStream(new File(plugin.getDataFolder(), SAVED_FLAGS_FILENAME)); - final ObjectOutputStream oos = new ObjectOutputStream(fos); - oos.writeObject(flags); - oos.close(); - fos.close(); - } - catch (Exception ex) - { - FLog.severe(ex); - } - } - -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index 9804f730..1bb8207b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -75,7 +75,6 @@ public class TotalFreedomMod extends JavaPlugin public CommandLoader cl; // Services public ServerInterface si; - public SavedFlags sf; public WorldManager wm; public LogViewer lv; public AdminList al; @@ -299,7 +298,6 @@ public class TotalFreedomMod extends JavaPlugin { // Start services si = new ServerInterface(); - sf = new SavedFlags(); wm = new WorldManager(); lv = new LogViewer(); sql = new SQLite(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java index c0a00e39..2653c8ef 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java @@ -192,7 +192,6 @@ public class CoreProtectBridge extends FreedomService return (megabytes / 1024); } - // Wipes DB for the specified world public void clearDatabase(World world) { clearDatabase(world, false); @@ -260,12 +259,6 @@ public class CoreProtectBridge extends FreedomService { FLog.warning("Failed to delete the CoreProtect data for the " + world.getName()); } - - // This exits for flatlands wipes - if (shutdown) - { - server.shutdown(); - } } @EventHandler(priority = EventPriority.MONITOR) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 021f30f1..1e99ed5a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -86,6 +86,7 @@ public enum ConfigEntry DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID(String.class, "discord.assistant_executive_role_id"), DISCORD_EXECUTIVE_ROLE_ID(String.class, "discord.executive_role_id"), DISCORD_SERVER_OWNER_ROLE_ID(String.class, "discord.server_owner_role_id"), + DISCORD_INVITE_LINK(String.class, "discord.invite_link"), // PTERO_URL(String.class, "ptero.url"), PTERO_DEFAULT_EMAIL_DOMAIN(String.class, "ptero.default_email_domain"), diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java index e0f26bff..f4adf0d9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java @@ -10,9 +10,12 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; +import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.hover.content.Text; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -28,39 +31,66 @@ public class DiscordToMinecraftListener extends ListenerAdapter { Member member = event.getMember(); String tag = getDisplay(member); - StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord" + ChatColor.DARK_GRAY + "]"); Message msg = event.getMessage(); + + ComponentBuilder emsg = new ComponentBuilder(); + + // Prefix + emsg.append(ChatColor.DARK_GRAY + "["); + TextComponent inviteLink = new TextComponent("Discord"); + inviteLink.setColor(ChatColor.DARK_AQUA.asBungee()); + inviteLink.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new Text("Click here to get the invite link!"))); + inviteLink.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, + ConfigEntry.DISCORD_INVITE_LINK.getString())); + emsg.append(inviteLink); + emsg.append(ChatColor.DARK_GRAY + "] ", ComponentBuilder.FormatRetention.NONE); + + // Tag (if they have one) if (tag != null) { - message.append(" ").append(tag); - } - message.append(" ").append(ChatColor.RED).append(ChatColor.stripColor(member.getEffectiveName())).append(ChatColor.DARK_GRAY).append(":").append(ChatColor.RESET); - ComponentBuilder builder = new ComponentBuilder(message.toString()); - if (!msg.getContentDisplay().isEmpty()) - { - builder.append(" ").append(ChatColor.stripColor(msg.getContentDisplay())); - message.append(" ").append(ChatColor.stripColor(msg.getContentDisplay())); // for logging + emsg.append(tag); } + + emsg.append(" "); + + // User + TextComponent user = new TextComponent(ChatColor.stripColor(member.getEffectiveName())); + user.setColor(ChatColor.RED.asBungee()); + emsg.append(user); + + // Message + emsg.append(ChatColor.DARK_GRAY + ": " + ChatColor.RESET + + ChatColor.stripColor(msg.getContentDisplay()), ComponentBuilder.FormatRetention.NONE); + + // Attachments if (!msg.getAttachments().isEmpty()) { + if (!msg.getContentDisplay().isEmpty()) + emsg.append(" "); + for (Message.Attachment attachment : msg.getAttachments()) { - attachment.getUrl(); - builder.append(" "); - TextComponent text = new TextComponent(ChatColor.YELLOW + "[Media]"); - text.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl())); - builder.append(text); - message.append(" [Media]"); // for logging + TextComponent media = new TextComponent("[Media] "); + media.setColor(ChatColor.YELLOW.asBungee()); + media.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl())); + media.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(attachment.getUrl()))); + + emsg.append(media, ComponentBuilder.FormatRetention.NONE); } } + + BaseComponent[] components = emsg.create(); + for (Player player : Bukkit.getOnlinePlayers()) { if (TotalFreedomMod.getPlugin().pl.getData(player).doesDisplayDiscord()) { - player.spigot().sendMessage(builder.create()); + player.spigot().sendMessage(components); } } - FLog.info(message.toString()); + + FLog.info(TextComponent.toLegacyText(components), true); } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 81bae8cc..ea7a7344 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -36,8 +36,6 @@ import static org.bukkit.Bukkit.getServer; public class FUtil { - - public static final String SAVED_FLAGS_FILENAME = "savedflags.dat"; /* See https://github.com/TotalFreedom/License - None of the listed names may be removed. Leaving this list here for anyone running TFM on a cracked server: public static final List DEVELOPERS = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "Telesphoreo", "CoolJWB"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java b/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java index 32033da5..790a6f33 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java @@ -1,9 +1,6 @@ package me.totalfreedom.totalfreedommod.world; -import java.io.File; import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.util.FLog; -import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -32,8 +29,6 @@ public class Flatlands extends CustomWorld return null; } - wipeFlatlandsIfFlagged(); - final WorldCreator worldCreator = new WorldCreator(getName()); worldCreator.generateStructures(false); worldCreator.type(WorldType.NORMAL); @@ -63,32 +58,4 @@ public class Flatlands extends CustomWorld return world; } - - - public void wipeFlatlandsIfFlagged() - { - boolean doFlatlandsWipe = false; - try - { - doFlatlandsWipe = plugin.sf.getSavedFlag("do_wipe_flatlands"); - } - catch (Exception ignored) - { - } - - if (doFlatlandsWipe) - { - if (Bukkit.getServer().getWorld("flatlands") == null) - { - FLog.info("Wiping flatlands."); - plugin.sf.setSavedFlag("do_wipe_flatlands", false); - FileUtils.deleteQuietly(new File("./flatlands")); - } - else - { - FLog.severe("Can't wipe flatlands, it is already loaded."); - } - } - } - } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 1530fbfa..06fd2f5a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -84,6 +84,8 @@ discord: executive_role_id: '' # Owner role ID server_owner_role_id: '' + # Invite link for your Discord server + invite_link: 'https://discord.com/invite/PW4savJR9a' # Pterodactyl ptero: From a29392cab247dfcd23ed93477c41eb5facc2505e Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 29 Nov 2021 03:03:00 -0700 Subject: [PATCH 77/81] Squashed commit of the following: commit 706229004c50c26b4cd2bf4fcbe5a7a889cf7b63 Merge: a42cb6af a4adfa9b Author: Video Date: Mon Nov 29 03:00:15 2021 -0700 Merge pull request #131 from AtlasMediaGroup/FS-273 Moves /rainbowtrail to the shop (FS-273) commit a4adfa9beea2d6204465209e71029500c6467052 Merge: 1b5bbd1c a42cb6af Author: Video Date: Mon Nov 29 02:46:41 2021 -0700 Merge branch 'development' into FS-273 commit a42cb6aff98f97469202f686f67c010fffe8bc2c Merge: 2ecfb886 01fdf766 Author: Video Date: Mon Nov 29 02:41:34 2021 -0700 Merge pull request #125 from AtlasMediaGroup/shitcan-savedflags Shitcans SavedFlags commit 01fdf766ee831bd4f9ae1b887b75b559e1171bd7 Merge: 58c21bb1 2ecfb886 Author: Video Date: Tue Nov 23 09:28:48 2021 -0700 Merge branch 'development' into shitcan-savedflags commit 1b5bbd1c05b38a3af14a51842f96b54ab141710d Merge: 8356e831 2ecfb886 Author: Video Date: Tue Nov 23 09:16:21 2021 -0700 Merge branch 'development' into FS-273 commit 2ecfb88604dcea061b1fb142f18ca2becec8cfef Merge: 42143c11 bb2ddf11 Author: Video Date: Tue Nov 23 09:15:16 2021 -0700 Merge pull request #130 from AtlasMediaGroup/FS-215 Makes [Discord] a hyperlink (FS-215) commit 8356e831a5188b9bdae36e3672cd3d96919111c0 Author: Video Date: Tue Nov 23 09:11:16 2021 -0700 Redundancy fix and better protection system commit ab00cb840fbb3b0aa92f7ab952776b5d6793ab6a Merge: ecce62f6 42143c11 Author: Video Date: Tue Nov 23 03:31:45 2021 -0700 Merge branch 'development' into FS-273 commit bb2ddf11292cb0945d7be2c5cd012cd96aee40ff Merge: cf9fdc6f 42143c11 Author: Video Date: Tue Nov 23 03:31:19 2021 -0700 Merge branch 'development' into FS-215 commit 58c21bb1aab8b80829663343a9677cfd79d09e19 Merge: fdba119d 42143c11 Author: Video Date: Tue Nov 23 03:30:48 2021 -0700 Merge branch 'development' into shitcan-savedflags commit ecce62f6b4dc3641d7a66a37b226305d44c938d0 Merge: d8148530 a598c933 Author: Video Date: Sat Oct 9 00:01:22 2021 -0600 Merge branch 'development' into FS-273 commit cf9fdc6fe4fc278c5cc46745f535bdb7dfce185b Merge: 387ea6f7 a598c933 Author: Video Date: Fri Oct 8 01:43:33 2021 -0600 Merge branch 'development' into FS-215 commit 387ea6f71e36dddcd376ac0f6a555e30a9735067 Merge: a1ecf881 180cd811 Author: Video Date: Fri Oct 1 00:35:12 2021 -0600 Merge branch 'development' into FS-215 commit d81485303659656a1f1c215d3b505b6a7e63925f Merge: 47e63869 213a4338 Author: Ryan Date: Sun Sep 12 13:49:05 2021 +0100 Merge branch 'development' into FS-273 commit a1ecf881094de1da26b181370d08bddb425b4e98 Merge: bd647afe 213a4338 Author: Ryan Date: Sun Sep 12 13:48:59 2021 +0100 Merge branch 'development' into FS-215 commit fdba119d5d7b016a9fddaa05568776f43d02d442 Merge: 61857dd0 213a4338 Author: Ryan Date: Sun Sep 12 13:48:44 2021 +0100 Merge branch 'development' into shitcan-savedflags commit 61857dd06f05f1ba7242f308de671ea65f33ca80 Merge: 2d18d461 0e12f5e7 Author: Video Date: Sun Sep 12 03:01:37 2021 -0600 Merge branch 'development' into shitcan-savedflags commit bd647afe92d21e9dff65ae9c4c07323f56bfd1cd Merge: 69f17ef2 0e12f5e7 Author: Video Date: Sun Sep 12 02:50:39 2021 -0600 Merge branch 'development' into FS-215 commit 69f17ef2d742cfc77bc659c21fa0ef3007ab2337 Merge: ee1b27fa aebe1ace Author: Video Date: Sun Sep 12 02:01:56 2021 -0600 Merge branch 'development' into FS-215 commit ee1b27fa0df9ee1b579ce4ea6e0f768bb1ac7ca4 Merge: 2bdf14f3 0a9b95bf Author: Ryan Date: Sat Sep 11 01:24:00 2021 +0100 Merge branch 'development' into FS-215 commit 2d18d461fea83aef743967e10f8c6d6afd67a09c Merge: a4c81f20 0a9b95bf Author: Ryan Date: Sat Sep 11 01:23:44 2021 +0100 Merge branch 'development' into shitcan-savedflags commit 47e638690731402f3f859168ad3eb601608b38bf Merge: b1062fbb 0a9b95bf Author: Ryan Date: Sat Sep 11 01:23:13 2021 +0100 Merge branch 'development' into FS-273 commit 2bdf14f38c07c70e392879e2c18be02e0c847af2 Merge: f6d46b61 44ff621d Author: Video Date: Mon Sep 6 15:26:13 2021 -0600 Merge branch 'development' into FS-215 commit b1062fbb6c8587317cc5c107da0357873559e0a3 Merge: f69feed4 44ff621d Author: Video Date: Mon Sep 6 14:39:32 2021 -0600 Merge branch 'development' into FS-273 commit f69feed469da5cb1852e96b68b742f261a3652ff Author: Video Date: Mon Sep 6 01:14:21 2021 -0600 fixed commit 8253f94ac4d71e068d687c87c76bdba13a9b6553 Merge: daf0126f 54cb0cfa Author: Video Date: Mon Sep 6 01:12:00 2021 -0600 Merge branch 'development' into FS-273 commit a4c81f202cd041d4f084135bbd9b0a1d77cd6505 Merge: 0d09c3a5 23caa4e8 Author: Ryan Date: Sat Sep 4 01:23:06 2021 +0100 Merge branch 'development' into shitcan-savedflags commit daf0126f4560c9c75f68e3e302f4fb2b41bd7dd3 Merge: a51f5c9b 23caa4e8 Author: Ryan Date: Sat Sep 4 01:07:39 2021 +0100 Merge branch 'development' into FS-273 commit f6d46b6178a9c135df11b5305ba6fb16404381c5 Merge: ee804d52 23caa4e8 Author: Ryan Date: Sat Sep 4 01:07:33 2021 +0100 Merge branch 'development' into FS-215 commit a51f5c9bbfae2665b229e6ffff267ddbe9a956d4 Author: Video Date: Fri Sep 3 13:53:33 2021 -0600 FS-273 commit ee804d52ff0747fdf67398b12080f708460b402c Author: Video Date: Fri Sep 3 12:52:15 2021 -0600 Makes [Discord] a hyperlink (FS-215) I've decided to overhaul the implementation of DiscordToMinecraftListener to make it more easily workable. This overhaul allows me to implement FS-215 more easily. commit 0d09c3a550eb014793cc800021a0064aaad5e3b1 Merge: e2ccd14e 4c3f188b Author: Ryan Date: Sun Aug 29 20:09:03 2021 +0100 Merge branch 'development' into shitcan-savedflags commit e2ccd14eb383844c1bfb5d0e56e7924bb47f5997 Author: Video Date: Fri Aug 27 16:54:55 2021 -0600 Unsaves SavedFlags --- .../bridge/WorldGuardBridge.java | 17 +++++++++ .../command/Command_trail.java | 12 +++++-- .../totalfreedommod/config/ConfigEntry.java | 1 + .../totalfreedommod/fun/Trailer.java | 35 ++++++++++--------- .../totalfreedommod/shop/ShopItem.java | 20 ++++++++--- src/main/resources/config.yml | 1 + 6 files changed, 63 insertions(+), 23 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java index 6bc0ab9b..ea03b670 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java @@ -1,13 +1,20 @@ package me.totalfreedom.totalfreedommod.bridge; import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.protection.regions.RegionContainer; import java.util.Map; + +import com.sk89q.worldguard.protection.regions.RegionQuery; import me.totalfreedom.totalfreedommod.FreedomService; import org.bukkit.World; +import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; public class WorldGuardBridge extends FreedomService @@ -23,6 +30,16 @@ public class WorldGuardBridge extends FreedomService { } + public boolean canEditCurrentWorld(Player player) + { + LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); + + RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); + RegionQuery query = container.createQuery(); + + return query.testBuild(localPlayer.getLocation(), localPlayer); + } + public RegionManager getRegionManager(World world) { RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java index 44129bd4..16d82e97 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java @@ -1,11 +1,13 @@ 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.ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Trails rainbow wool behind you as you walk/fly.", usage = "/") public class Command_trail extends FreedomCommand { @@ -13,6 +15,12 @@ public class Command_trail 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.RAINBOW_TRAIL)) + { + msg("You didn't purchase the ability to have a " + ShopItem.RAINBOW_TRAIL.getName() + "! Purchase it from the shop.", ChatColor.RED); + return true; + } + if (plugin.tr.contains(playerSender)) { plugin.tr.remove(playerSender); @@ -21,7 +29,7 @@ public class Command_trail extends FreedomCommand else { plugin.tr.add(playerSender); - msg("Trail enabled. Use \"/trail off\" to disable."); + msg("Trail enabled. Run this command again to disable it."); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 1e99ed5a..86fb22a3 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -111,6 +111,7 @@ public enum ConfigEntry SHOP_PRICES_STACKING_POTATO(Integer.class, "shop.prices.stacking_potato"), SHOP_PRICES_CLOWN_FISH(Integer.class, "shop.prices.clown_fish"), SHOP_PRICES_LOGIN_MESSAGES(Integer.class, "shop.prices.login_messages"), + SHOP_PRICES_RAINBOW_TRAIL(Integer.class, "shop.prices.rainbow_trail"), // ADMINLIST_CLEAN_THESHOLD_HOURS(Integer.class, "adminlist.clean_threshold_hours"), ADMINLIST_CONSOLE_IS_ADMIN(Boolean.class, "adminlist.console_is_admin"), diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java index 012dc4d7..e603b242 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java @@ -4,7 +4,10 @@ import java.util.HashSet; import java.util.Objects; import java.util.Set; import java.util.SplittableRandom; +import java.util.UUID; + import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.shop.ShopItem; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.Location; import org.bukkit.Material; @@ -18,7 +21,7 @@ import org.bukkit.event.player.PlayerMoveEvent; public class Trailer extends FreedomService { private final SplittableRandom random = new SplittableRandom(); - private final Set trailPlayers = new HashSet<>(); // player name + private final Set trailPlayers = new HashSet<>(); // player UUID @Override public void onStart() @@ -33,17 +36,17 @@ public class Trailer extends FreedomService @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerMove(PlayerMoveEvent event) { - if (trailPlayers.isEmpty()) - { - return; - } - - if (!trailPlayers.contains(event.getPlayer().getName())) - { - return; - } - - if (event.getPlayer().getWorld().equals(plugin.wm.masterBuilderWorld.getWorld())) + /* Doesn't continue any further if... + * - The trail list is empty + * - The player doesn't have their trail enabled in the first place + * - The player doesn't have the trail item in the shop at all + * - The player doesn't have permission to modify blocks in their current world + */ + if (trailPlayers.isEmpty() + || !trailPlayers.contains(event.getPlayer().getUniqueId()) + || !plugin.pl.getData(event.getPlayer()).hasItem(ShopItem.RAINBOW_TRAIL) + || plugin.wr.doRestrict(event.getPlayer()) + || !plugin.wgb.canEditCurrentWorld(event.getPlayer())) { return; } @@ -69,7 +72,7 @@ public class Trailer extends FreedomService { final Location trail_pos; trail_pos = new Location(event.getPlayer().getWorld(), fromBlock.getX() + x, fromBlock.getY(), fromBlock.getZ() + z); - if (trailPlayers.contains(event.getPlayer().getName()) && plugin.cpb.isEnabled()) + if (trailPlayers.contains(event.getPlayer().getUniqueId()) && plugin.cpb.isEnabled()) { plugin.cpb.getCoreProtectAPI().logPlacement(event.getPlayer().getName(), trail_pos, material, data); } @@ -79,16 +82,16 @@ public class Trailer extends FreedomService public void remove(Player player) { - trailPlayers.remove(player.getName()); + trailPlayers.remove(player.getUniqueId()); } public void add(Player player) { - trailPlayers.add(player.getName()); + trailPlayers.add(player.getUniqueId()); } public boolean contains(Player player) { - return trailPlayers.contains(player.getName()); + return trailPlayers.contains(player.getUniqueId()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java index 4ce94dd5..fe3bb097 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java @@ -10,19 +10,29 @@ public enum ShopItem LIGHTNING_ROD("Lightning Rod", Material.BLAZE_ROD, 12, ConfigEntry.SHOP_PRICES_LIGHTNING_ROD, ChatColor.LIGHT_PURPLE, "lightningRod", "/lightningrod"), FIRE_BALL("Fire Ball", Material.FIRE_CHARGE, 14, ConfigEntry.SHOP_PRICES_FIRE_BALL, ChatColor.RED, "fireBall", "/fireball"), RIDEABLE_PEARL("Rideable Ender Pearl", Material.ENDER_PEARL, 16, ConfigEntry.SHOP_PRICES_RIDEABLE_PEARL, ChatColor.DARK_PURPLE, "rideablePearl", "/rideablepearl"), - STACKING_POTATO("Stacking Potato", Material.POTATO, 20, ConfigEntry.SHOP_PRICES_STACKING_POTATO, ChatColor.YELLOW, "stackingPotato", "/stackingpotato"), - CLOWN_FISH("Clown Fish", Material.TROPICAL_FISH, 22, ConfigEntry.SHOP_PRICES_CLOWN_FISH, ChatColor.GOLD, "clownFish", "/clownfish"), - LOGIN_MESSAGES("Login Messages", Material.NAME_TAG, 24, ConfigEntry.SHOP_PRICES_LOGIN_MESSAGES, ChatColor.DARK_GREEN, "loginMessages", "/loginmessage"); + STACKING_POTATO("Stacking Potato", Material.POTATO, 19, ConfigEntry.SHOP_PRICES_STACKING_POTATO, ChatColor.YELLOW, "stackingPotato", "/stackingpotato"), + CLOWN_FISH("Clown Fish", Material.TROPICAL_FISH, 21, ConfigEntry.SHOP_PRICES_CLOWN_FISH, ChatColor.GOLD, "clownFish", "/clownfish"), + LOGIN_MESSAGES("Login Messages", Material.NAME_TAG, 23, ConfigEntry.SHOP_PRICES_LOGIN_MESSAGES, ChatColor.DARK_GREEN, "loginMessages", "/loginmessage"), + RAINBOW_TRAIL("Rainbow Trail", Material.RED_WOOL, 25, ConfigEntry.SHOP_PRICES_RAINBOW_TRAIL, ChatColor.DARK_RED, "rainbowTrail", "/trail"); /* Shop GUI Layout: Dimensions: 9x4 = 36 - Key: g = Grappling Hook, l = Lightning Rod, f = Fire Ball, r = Rideable Ender Pearl, s = Stacking Potato, c = Clown Fish, x = Login Messages $ = Coins} + Key: + g = Grappling Hook, + l = Lightning Rod + f = Fire Ball + r = Rideable Ender Pearl + s = Stacking Potato + c = Clown Fish + x = Login Messages + t = Rainbow Trail + $ = Coins --------- -g-l-f-r- - --s-c-x-- + -s-c-x-t- --------$ */ diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 06fd2f5a..b8dbaaf2 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -161,6 +161,7 @@ shop: stacking_potato: 300 clown_fish: 1500 login_messages: 5000 + rainbow_trail: 1500 # Admin list adminlist: From e9ba958a4e4948bff89e738072b9a71cf4cb8309 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 29 Nov 2021 06:40:26 -0700 Subject: [PATCH 78/81] Squashed commit of the following: commit 35965b0b1076273e8a16247694802cb427622e1d Merge: aa20a6e5 1253732f Author: Video Date: Mon Nov 29 06:31:11 2021 -0700 Merge pull request #174 from AtlasMediaGroup/FS-256 Forces the server to recalculate the permissions server-wide in /opall (FS-256) commit 1253732f7740ff5ad656d4f9d7e0354a7466f69e Merge: e1bee321 aa20a6e5 Author: Video Date: Mon Nov 29 06:25:25 2021 -0700 Merge branch 'development' into FS-256 commit aa20a6e579cb1cc147d231d65891b911fbf25a08 Merge: 70622900 1ecfb0b0 Author: Video Date: Mon Nov 29 06:23:57 2021 -0700 Merge pull request #129 from AtlasMediaGroup/FS-7 Allow players to pay other players coins [FS-7] commit e1bee32163aa015d6d61b9d6a019a261c6602731 Author: Video Date: Mon Nov 29 03:27:07 2021 -0700 Forces the server to recalculate the permissions server-wide in /opall commit 1ecfb0b0660d88c3f8223dc80cd127891fa51dbf Merge: 225ade87 70622900 Author: Video Date: Mon Nov 29 03:01:22 2021 -0700 Merge branch 'development' into FS-7 commit 706229004c50c26b4cd2bf4fcbe5a7a889cf7b63 Merge: a42cb6af a4adfa9b Author: Video Date: Mon Nov 29 03:00:15 2021 -0700 Merge pull request #131 from AtlasMediaGroup/FS-273 Moves /rainbowtrail to the shop (FS-273) commit a4adfa9beea2d6204465209e71029500c6467052 Merge: 1b5bbd1c a42cb6af Author: Video Date: Mon Nov 29 02:46:41 2021 -0700 Merge branch 'development' into FS-273 commit 225ade87533d11daeef38231fcd6a4cb5bda36ec Merge: afe755f5 a42cb6af Author: Video Date: Mon Nov 29 02:46:02 2021 -0700 Merge branch 'development' into FS-7 commit a42cb6aff98f97469202f686f67c010fffe8bc2c Merge: 2ecfb886 01fdf766 Author: Video Date: Mon Nov 29 02:41:34 2021 -0700 Merge pull request #125 from AtlasMediaGroup/shitcan-savedflags Shitcans SavedFlags commit 01fdf766ee831bd4f9ae1b887b75b559e1171bd7 Merge: 58c21bb1 2ecfb886 Author: Video Date: Tue Nov 23 09:28:48 2021 -0700 Merge branch 'development' into shitcan-savedflags commit afe755f5c1406804f10ed221fd9365f736168610 Merge: 5f97e68e 2ecfb886 Author: Video Date: Tue Nov 23 09:26:59 2021 -0700 Merge branch 'development' into FS-7 commit 5f97e68e0eb02a2037c9239d9a466d0124efd4ac Author: Video Date: Tue Nov 23 09:26:49 2021 -0700 fuck it, it works commit 1b5bbd1c05b38a3af14a51842f96b54ab141710d Merge: 8356e831 2ecfb886 Author: Video Date: Tue Nov 23 09:16:21 2021 -0700 Merge branch 'development' into FS-273 commit 2ecfb88604dcea061b1fb142f18ca2becec8cfef Merge: 42143c11 bb2ddf11 Author: Video Date: Tue Nov 23 09:15:16 2021 -0700 Merge pull request #130 from AtlasMediaGroup/FS-215 Makes [Discord] a hyperlink (FS-215) commit 8356e831a5188b9bdae36e3672cd3d96919111c0 Author: Video Date: Tue Nov 23 09:11:16 2021 -0700 Redundancy fix and better protection system commit ab00cb840fbb3b0aa92f7ab952776b5d6793ab6a Merge: ecce62f6 42143c11 Author: Video Date: Tue Nov 23 03:31:45 2021 -0700 Merge branch 'development' into FS-273 commit bb2ddf11292cb0945d7be2c5cd012cd96aee40ff Merge: cf9fdc6f 42143c11 Author: Video Date: Tue Nov 23 03:31:19 2021 -0700 Merge branch 'development' into FS-215 commit 58c21bb1aab8b80829663343a9677cfd79d09e19 Merge: fdba119d 42143c11 Author: Video Date: Tue Nov 23 03:30:48 2021 -0700 Merge branch 'development' into shitcan-savedflags commit ecce62f6b4dc3641d7a66a37b226305d44c938d0 Merge: d8148530 a598c933 Author: Video Date: Sat Oct 9 00:01:22 2021 -0600 Merge branch 'development' into FS-273 commit cf9fdc6fe4fc278c5cc46745f535bdb7dfce185b Merge: 387ea6f7 a598c933 Author: Video Date: Fri Oct 8 01:43:33 2021 -0600 Merge branch 'development' into FS-215 commit 387ea6f71e36dddcd376ac0f6a555e30a9735067 Merge: a1ecf881 180cd811 Author: Video Date: Fri Oct 1 00:35:12 2021 -0600 Merge branch 'development' into FS-215 commit d81485303659656a1f1c215d3b505b6a7e63925f Merge: 47e63869 213a4338 Author: Ryan Date: Sun Sep 12 13:49:05 2021 +0100 Merge branch 'development' into FS-273 commit a1ecf881094de1da26b181370d08bddb425b4e98 Merge: bd647afe 213a4338 Author: Ryan Date: Sun Sep 12 13:48:59 2021 +0100 Merge branch 'development' into FS-215 commit 5a6a5ff75de1662aeccddbe25d62c44dc748a565 Merge: 6ca61d9c 213a4338 Author: Ryan Date: Sun Sep 12 13:48:50 2021 +0100 Merge branch 'development' into FS-7 commit fdba119d5d7b016a9fddaa05568776f43d02d442 Merge: 61857dd0 213a4338 Author: Ryan Date: Sun Sep 12 13:48:44 2021 +0100 Merge branch 'development' into shitcan-savedflags commit 61857dd06f05f1ba7242f308de671ea65f33ca80 Merge: 2d18d461 0e12f5e7 Author: Video Date: Sun Sep 12 03:01:37 2021 -0600 Merge branch 'development' into shitcan-savedflags commit bd647afe92d21e9dff65ae9c4c07323f56bfd1cd Merge: 69f17ef2 0e12f5e7 Author: Video Date: Sun Sep 12 02:50:39 2021 -0600 Merge branch 'development' into FS-215 commit 69f17ef2d742cfc77bc659c21fa0ef3007ab2337 Merge: ee1b27fa aebe1ace Author: Video Date: Sun Sep 12 02:01:56 2021 -0600 Merge branch 'development' into FS-215 commit ee1b27fa0df9ee1b579ce4ea6e0f768bb1ac7ca4 Merge: 2bdf14f3 0a9b95bf Author: Ryan Date: Sat Sep 11 01:24:00 2021 +0100 Merge branch 'development' into FS-215 commit 6ca61d9c6c506f7532290bb6e2d5a5f484f0e36c Merge: fedf80b8 0a9b95bf Author: Ryan Date: Sat Sep 11 01:23:52 2021 +0100 Merge branch 'development' into FS-7 commit 2d18d461fea83aef743967e10f8c6d6afd67a09c Merge: a4c81f20 0a9b95bf Author: Ryan Date: Sat Sep 11 01:23:44 2021 +0100 Merge branch 'development' into shitcan-savedflags commit 47e638690731402f3f859168ad3eb601608b38bf Merge: b1062fbb 0a9b95bf Author: Ryan Date: Sat Sep 11 01:23:13 2021 +0100 Merge branch 'development' into FS-273 commit fedf80b834dc02d4a2ea5676224643906b661235 Merge: a2d11d4b 44ff621d Author: Video Date: Fri Sep 10 01:39:16 2021 -0600 Merge branch 'development' into FS-7 commit 2bdf14f38c07c70e392879e2c18be02e0c847af2 Merge: f6d46b61 44ff621d Author: Video Date: Mon Sep 6 15:26:13 2021 -0600 Merge branch 'development' into FS-215 commit b1062fbb6c8587317cc5c107da0357873559e0a3 Merge: f69feed4 44ff621d Author: Video Date: Mon Sep 6 14:39:32 2021 -0600 Merge branch 'development' into FS-273 commit f69feed469da5cb1852e96b68b742f261a3652ff Author: Video Date: Mon Sep 6 01:14:21 2021 -0600 fixed commit 8253f94ac4d71e068d687c87c76bdba13a9b6553 Merge: daf0126f 54cb0cfa Author: Video Date: Mon Sep 6 01:12:00 2021 -0600 Merge branch 'development' into FS-273 commit a4c81f202cd041d4f084135bbd9b0a1d77cd6505 Merge: 0d09c3a5 23caa4e8 Author: Ryan Date: Sat Sep 4 01:23:06 2021 +0100 Merge branch 'development' into shitcan-savedflags commit daf0126f4560c9c75f68e3e302f4fb2b41bd7dd3 Merge: a51f5c9b 23caa4e8 Author: Ryan Date: Sat Sep 4 01:07:39 2021 +0100 Merge branch 'development' into FS-273 commit f6d46b6178a9c135df11b5305ba6fb16404381c5 Merge: ee804d52 23caa4e8 Author: Ryan Date: Sat Sep 4 01:07:33 2021 +0100 Merge branch 'development' into FS-215 commit a2d11d4b939b524bfebef20dd79ac0476e80de91 Merge: dc490659 23caa4e8 Author: Ryan Date: Sat Sep 4 01:07:28 2021 +0100 Merge branch 'development' into FS-7 commit a51f5c9bbfae2665b229e6ffff267ddbe9a956d4 Author: Video Date: Fri Sep 3 13:53:33 2021 -0600 FS-273 commit ee804d52ff0747fdf67398b12080f708460b402c Author: Video Date: Fri Sep 3 12:52:15 2021 -0600 Makes [Discord] a hyperlink (FS-215) I've decided to overhaul the implementation of DiscordToMinecraftListener to make it more easily workable. This overhaul allows me to implement FS-215 more easily. commit dc490659c11f728c99584e591f79ddd61d11b4e8 Author: Video Date: Fri Sep 3 00:07:20 2021 -0600 Begins implementing FS-7 should be good enough, but feedback would be lovely commit 0d09c3a550eb014793cc800021a0064aaad5e3b1 Merge: e2ccd14e 4c3f188b Author: Ryan Date: Sun Aug 29 20:09:03 2021 +0100 Merge branch 'development' into shitcan-savedflags commit e2ccd14eb383844c1bfb5d0e56e7924bb47f5997 Author: Video Date: Fri Aug 27 16:54:55 2021 -0600 Unsaves SavedFlags --- .../command/Command_coins.java | 126 +++++++++++++++--- .../command/Command_opall.java | 4 + 2 files changed, 111 insertions(+), 19 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java index f50b8985..3d0a812d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java @@ -9,8 +9,11 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows the amount of coins you have or another player has", usage = "/ [playername]") +@CommandParameters(description = "Shows the amount of coins you or another player has. Also allows you to give coins to other players.", usage = "/ [player] | pay ") public class Command_coins extends FreedomCommand { @Override @@ -21,34 +24,119 @@ public class Command_coins extends FreedomCommand msg("The shop is currently disabled!", ChatColor.RED); return true; } - Player p; + final String prefix = FUtil.colorize(ConfigEntry.SHOP_PREFIX.getString() + " "); - if (args.length > 0) + + switch (args.length) { - if (getPlayer(args[0]) != null) + // Mode for seeing how many coins the sender has (doesn't work from console) + case 0: { - p = getPlayer(args[0]); - } - else - { - msg(PLAYER_NOT_FOUND); + if (senderIsConsole) + { + msg("When used from the console, you must define a target player."); + } + else + { + PlayerData playerData = getData(playerSender); + msg(prefix + ChatColor.GREEN + "You have " + ChatColor.RED + playerData.getCoins() + ChatColor.GREEN + + " coins."); + } return true; } - } - else - { - if (senderIsConsole) + + // Mode for seeing how many coins a player has. + case 1: { - msg(prefix + ChatColor.RED + "You are not a player, use /coins "); + Player target = getPlayer(args[0]); + + if (target == null) + { + msg(PLAYER_NOT_FOUND); + } + else + { + PlayerData playerData = getData(target); + msg(prefix + ChatColor.GREEN + target.getName() + " has " + ChatColor.RED + playerData.getCoins() + ChatColor.GREEN + " coins."); + } return true; } - else + + // Mode for paying another player coins + case 3: { - p = playerSender; + if (args[0].equalsIgnoreCase("pay")) + { + checkPlayer(); + + final Player target = getPlayer(args[1]); + final PlayerData senderData = getData(playerSender); + + int coinsToTransfer; + + // Processes args[2] + try + { + // Prevents players from trying to be cheeky with negative numbers. + coinsToTransfer = Math.max(Math.abs(Integer.parseInt(args[2])), 1); + } + catch (NumberFormatException ex) + { + msg("Invalid number: " + args[2], ChatColor.RED); + return true; + } + + // Prevents players from performing transactions they can't afford to do. + if (senderData.getCoins() < coinsToTransfer) + { + msg("You don't have enough coins to perform this transaction.", ChatColor.RED); + return true; + } + + if (target == null) + { + msg(PLAYER_NOT_FOUND); + } + else + { + PlayerData playerData = getData(target); + playerData.setCoins(playerData.getCoins() + coinsToTransfer); + senderData.setCoins(senderData.getCoins() - coinsToTransfer); + + msg(target, sender.getName() + + ChatColor.GREEN + " has given you " + + ChatColor.GOLD + coinsToTransfer + + ChatColor.GREEN + " coin" + (coinsToTransfer > 1 ? "s" : "") + "!", ChatColor.GOLD); + + msg("You have given " + + ChatColor.GOLD + coinsToTransfer + + ChatColor.GREEN + " coin" + (coinsToTransfer > 1 ? "s" : "") + + " to " + ChatColor.GOLD + target.getName() + ChatColor.GREEN + ".", ChatColor.GREEN); + } + + return true; + } + } + + default: + { + return false; } } - PlayerData playerData = plugin.pl.getData(p); - msg(prefix + ChatColor.GREEN + (args.length > 0 ? p.getName() + " has " : "You have ") + ChatColor.RED + playerData.getCoins() + ChatColor.GREEN + " coins."); - return true; + } + + @Override + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) + { + if (args.length == 1) + { + List options = new ArrayList<>(FUtil.getPlayerList()); + + options.add("pay"); + + return options; + } + + return FUtil.getPlayerList(); } } \ No newline at end of file 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 a02671cc..45ff1689 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java @@ -24,6 +24,10 @@ public class Command_opall extends FreedomCommand msg(player, YOU_ARE_OP); plugin.rm.updateDisplay(player); } + else + { + player.recalculatePermissions(); + } } return true; From af6411b82c47502e59db1f491f914ecf0c1ee1a6 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 29 Nov 2021 06:54:04 -0700 Subject: [PATCH 79/81] Wait a second This *should* work... --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 7d7c4aa8..d250bef5 100644 --- a/pom.xml +++ b/pom.xml @@ -282,9 +282,9 @@ 3.8.1 TotalFreedomMod.jar - 17 - 17 - 17 + 11 + 11 + 11 From 6e7ad731526989596d71f5dd038bed1d881ab037 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 29 Nov 2021 07:03:29 -0700 Subject: [PATCH 80/81] Nevermind that didn't work --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index d250bef5..7d7c4aa8 100644 --- a/pom.xml +++ b/pom.xml @@ -282,9 +282,9 @@ 3.8.1 TotalFreedomMod.jar - 11 - 11 - 11 + 17 + 17 + 17 From 3c22de71ded7f7a942e3dc378c8584509713dfeb Mon Sep 17 00:00:00 2001 From: spacerocket62 Date: Sat, 4 Dec 2021 23:01:02 -0800 Subject: [PATCH 81/81] A lot of re-organization included in this. This is a combination of Video's 1.17 update with my structural changes and NMS removals. This technically isn't a Jira issue so I wasn't aware what to call it, so I'll call it 1.17. - NMS has been removed for now. SignBlocker.java has to be finished and moved to kyori's component system instead of NMS, but at this moment it is commented out. - The main class uses proper variable naming conventions, as do the command classes. - I've also incorporated manual verification into /verify, and commented out /manuallyverify. The new usage for /verify is /verify [-m] , -m being a manual verification. --- pom.xml | 3 +- .../totalfreedommod/ServerInterface.java | 78 ----- .../totalfreedommod/TotalFreedomMod.java | 318 ++++++++++-------- .../totalfreedommod/admin/ActivityLog.java | 24 +- .../admin/ActivityLogEntry.java | 22 +- .../totalfreedommod/admin/Admin.java | 8 +- .../totalfreedommod/admin/AdminList.java | 8 +- .../{ => admin/module}/CommandSpy.java | 7 +- .../{ => admin/module}/Fuckoff.java | 7 +- .../{ => admin/module}/Muter.java | 16 +- .../{ => admin/module}/Orbiter.java | 7 +- .../{ => anticheat}/AntiNuke.java | 9 +- .../{ => anticheat}/AntiSpam.java | 17 +- .../{ => anticheat}/AutoEject.java | 16 +- .../{ => anticheat}/AutoKick.java | 9 +- .../blocking/BlockBlocker.java | 4 +- .../totalfreedommod/blocking/EditBlocker.java | 12 +- .../blocking/EventBlocker.java | 6 +- .../blocking/InteractBlocker.java | 8 +- .../totalfreedommod/blocking/MobBlocker.java | 4 +- .../totalfreedommod/blocking/PVPBlocker.java | 12 +- .../blocking/PotionBlocker.java | 4 +- .../totalfreedommod/blocking/SignBlocker.java | 12 +- .../blocking/command/CommandBlocker.java | 6 +- .../blocking/command/CommandBlockerEntry.java | 9 +- .../blocking/command/CommandBlockerRank.java | 2 +- .../bridge/BukkitTelnetBridge.java | 16 +- .../bridge/CoreProtectBridge.java | 10 +- .../bridge/EssentialsBridge.java | 13 +- .../bridge/LibsDisguisesBridge.java | 6 +- .../bridge/TFGuildsBridge.java | 4 +- .../bridge/WorldEditBridge.java | 4 +- .../bridge/WorldGuardBridge.java | 8 +- .../command/CommandFailException.java | 13 - .../command/CommandLoader.java | 78 +++-- .../command/Command_announce.java | 25 -- .../command/Command_autoclear.java | 36 -- .../command/Command_autotp.java | 36 -- .../command/Command_banlist.java | 36 -- .../command/Command_cleanchat.java | 30 -- .../command/Command_cleardiscordqueue.java | 20 -- .../command/Command_clownfish.java | 29 -- .../command/Command_cmdspy.java | 24 -- .../command/Command_denick.java | 32 -- .../command/Command_disguisetoggle.java | 38 --- .../totalfreedommod/command/Command_end.java | 19 -- .../command/Command_explosivearrows.java | 31 -- .../command/Command_findip.java | 35 -- .../command/Command_fireball.java | 29 -- .../command/Command_flatlands.java | 27 -- .../command/Command_forcekill.java | 37 -- .../command/Command_grapplinghook.java | 29 -- .../command/Command_indefban.java | 32 -- .../command/Command_jumppads.java | 116 ------- .../command/Command_lightningrod.java | 29 -- .../totalfreedommod/command/Command_logs.java | 26 -- .../command/Command_modifyitem.java | 266 --------------- .../command/Command_myinfo.java | 18 - .../command/Command_namehistory.java | 23 -- .../command/Command_nether.java | 19 -- .../command/Command_reactionbar.java | 26 -- .../command/Command_rideablepearl.java | 29 -- .../command/Command_serverstats.java | 28 -- .../command/Command_setlimit.java | 50 --- .../totalfreedommod/command/Command_shop.java | 26 -- .../command/Command_stackingpotato.java | 29 -- .../command/Command_toggleclownfish.java | 36 -- .../command/Command_togglediscord.java | 22 -- .../command/Command_undisguiseall.java | 35 -- .../command/Command_verify.java | 101 ------ .../totalfreedommod/command/FreedomCMD.java | 25 ++ .../command/FreedomCommand.java | 279 ++++++--------- .../totalfreedommod/command/SourceType.java | 6 - .../exception/CommandFailException.java | 11 + .../AEClearCMD.java} | 23 +- .../AdminChatCMD.java} | 28 +- .../AdminConfigCMD.java} | 208 +++++------- .../AdminInfoCMD.java} | 24 +- .../AdminModeCMD.java} | 43 ++- .../AdminWorldCMD.java} | 158 +++------ .../AdventureCMD.java} | 29 +- .../command/impl/AnnounceCMD.java | 26 ++ .../AttributeListCMD.java} | 17 +- .../command/impl/AutoClearCMD.java | 34 ++ .../command/impl/AutoTPCMD.java | 34 ++ .../{Command_ban.java => impl/BanCMD.java} | 113 +++---- .../BanIPCMD.java} | 48 ++- .../command/impl/BanListCMD.java | 36 ++ .../BanNameCMD.java} | 40 +-- .../{Command_bird.java => impl/BirdCMD.java} | 24 +- .../BlockCommandCMD.java} | 56 ++- .../BlockEditCMD.java} | 86 ++--- .../BlockPvPCMD.java} | 84 ++--- .../BlockRedstoneCMD.java} | 30 +- .../BuilderConfigCMD.java} | 162 ++++----- .../BuilderInfoCMD.java} | 24 +- .../BuilderWorldCMD.java} | 160 ++++----- .../{Command_cage.java => impl/CageCMD.java} | 123 +++---- .../{Command_cake.java => impl/CakeCMD.java} | 23 +- .../CartSitCMD.java} | 59 ++-- .../command/impl/CleanChatCMD.java | 29 ++ .../command/impl/ClearDiscordQueueCMD.java | 22 ++ .../ClearInventoryCMD.java} | 55 ++- .../command/impl/ClownFishCMD.java | 28 ++ .../CoinsCMD.java} | 72 ++-- .../ColorMeCMD.java} | 36 +- .../CommandListCMD.java} | 38 +-- .../command/impl/CommandSpyCMD.java | 26 ++ .../ConsoleSayCMD.java} | 19 +- .../CookieCMD.java} | 29 +- .../CreativeCMD.java} | 29 +- .../DeafenCMD.java} | 34 +- .../DebugStickCMD.java} | 21 +- .../command/impl/DenickCMD.java | 34 ++ .../DeopAllCMD.java} | 19 +- .../{Command_deop.java => impl/DeopCMD.java} | 46 ++- .../command/impl/DisguiseToggleCMD.java | 36 ++ .../DispFillCMD.java} | 70 ++-- .../{Command_doom.java => impl/DoomCMD.java} | 55 ++- .../EjectCMD.java} | 27 +- .../EnchantCMD.java} | 200 ++++------- .../totalfreedommod/command/impl/EndCMD.java | 21 ++ .../EntityWipeCMD.java} | 88 ++--- .../ExpelCMD.java} | 62 ++-- .../ExplodeCMD.java} | 47 ++- .../command/impl/ExplosiveArrowCMD.java | 30 ++ .../command/impl/FindIPCMD.java | 35 ++ .../command/impl/FireballCMD.java | 28 ++ .../command/impl/FlatlandsCMD.java | 26 ++ .../command/impl/ForcekillCMD.java | 36 ++ .../FreezeCMD.java} | 48 ++- .../FuckoffCMD.java} | 36 +- .../{Command_gcmd.java => impl/GcmdCMD.java} | 40 +-- .../{Command_glow.java => impl/GlowCMD.java} | 21 +- .../command/impl/GrapplingHookCMD.java | 28 ++ .../GravityCMD.java} | 14 +- .../HealthCMD.java} | 69 ++-- .../command/impl/IndefBanCMD.java | 25 ++ .../InspectCMD.java} | 46 ++- .../InvSeeCMD.java} | 41 +-- .../InvisCMD.java} | 63 ++-- .../command/impl/JumpPadsCMD.java | 94 ++++++ .../{Command_kick.java => impl/KickCMD.java} | 49 ++- .../KickNoobCMD.java} | 20 +- .../LandMineCMD.java} | 43 ++- .../LastCommandCMD.java} | 28 +- .../command/impl/LightningRodCMD.java | 28 ++ .../LinkDiscordCMD.java} | 41 +-- .../LinksCMD.java} | 36 +- .../{Command_list.java => impl/ListCMD.java} | 100 ++---- .../LocalSpawnCMD.java} | 14 +- .../LockupCMD.java} | 94 ++---- .../LoginMessageCMD.java} | 32 +- .../totalfreedommod/command/impl/LogsCMD.java | 27 ++ .../ManageShopCMD.java} | 169 ++++------ .../ManuallyverifyCMD.java} | 37 +- .../MobLimiterCMD.java} | 68 ++-- .../MobPurgeCMD.java} | 53 ++- .../command/impl/ModifyItemCMD.java | 168 +++++++++ .../{Command_mp44.java => impl/Mp44CMD.java} | 32 +- .../{Command_mute.java => impl/MuteCMD.java} | 110 +++--- .../MyAdminCMD.java} | 179 ++++------ .../command/impl/MyInfoCMD.java | 20 ++ .../command/impl/NameHistoryCMD.java | 24 ++ .../command/impl/NetherCMD.java | 21 ++ .../NickCleanCMD.java} | 84 ++--- .../NickFilterCMD.java} | 69 ++-- .../NickGradientCMD.java} | 62 ++-- .../NickNyanCMD.java} | 51 ++- .../NickRainbowCMD.java} | 38 +-- .../NotesCMD.java} | 101 +++--- .../{Command_op.java => impl/OpCMD.java} | 46 ++- .../{Command_ops.java => impl/OpListCMD.java} | 41 +-- .../{Command_opme.java => impl/OpMeCMD.java} | 16 +- .../OpallCMD.java} | 26 +- .../OrbitCMD.java} | 37 +- .../PanelCMD.java} | 73 ++-- .../PermissionsCMD.java} | 42 ++- .../PlayTimeCMD.java} | 38 +-- .../PlayerVerificationCMD.java} | 112 +++--- .../PlotWorldCMD.java} | 21 +- .../PluginControlCMD.java} | 114 +++---- .../PotionCMD.java} | 176 ++++------ .../PotionSpyCMD.java} | 142 +++----- .../PurgeallCMD.java} | 50 ++- .../{Command_rank.java => impl/RankCMD.java} | 39 +-- .../RawSayCMD.java} | 17 +- .../command/impl/ReactionBarCMD.java | 27 ++ .../RemoveBlocksCMD.java} | 122 +++---- .../ReportCMD.java} | 36 +- .../{Command_ride.java => impl/RideCMD.java} | 87 ++--- .../command/impl/RideablePearlCMD.java | 28 ++ .../{Command_rock.java => impl/RockCMD.java} | 20 +- .../{Command_say.java => impl/SayCMD.java} | 28 +- .../ScareCMD.java} | 37 +- .../{Command_seed.java => impl/SeedCMD.java} | 53 ++- .../command/impl/ServerStatsCMD.java | 30 ++ .../SetCompassCMD.java} | 24 +- .../SetLeverCMD.java} | 51 ++- .../command/impl/SetLimitCMD.java | 43 +++ .../SetPlayerLimitCMD.java} | 54 ++- .../SetSpawnWorldCMD.java} | 14 +- .../SetTotalVotesCMD.java} | 37 +- .../totalfreedommod/command/impl/ShopCMD.java | 27 ++ .../{Command_sit.java => impl/SitCMD.java} | 24 +- .../SmiteCMD.java} | 79 ++--- .../SpawnMobCMD.java} | 51 ++- .../SpectateCMD.java} | 29 +- .../SpectatorCMD.java} | 23 +- .../command/impl/StackingPotatoCMD.java | 28 ++ .../StatusCMD.java} | 25 +- .../{Command_stop.java => impl/StopCMD.java} | 44 ++- .../StopSoundCMD.java} | 48 ++- .../SurvivalCMD.java} | 29 +- .../TPRandomCMD.java} | 14 +- .../{Command_tag.java => impl/TagCMD.java} | 187 ++++------ .../TagNyanCMD.java} | 36 +- .../TagRainbowCMD.java} | 31 +- .../TempBanCMD.java} | 103 +++--- .../ToggleCMD.java} | 186 ++++------ .../ToggleChatCMD.java} | 14 +- .../command/impl/ToggleClownfishCMD.java | 34 ++ .../command/impl/ToggleDiscordCMD.java | 24 ++ .../TogglePickupCMD.java} | 14 +- .../TossMobCMD.java} | 76 ++--- .../TotalFreedomModCMD.java} | 27 +- .../TrailCMD.java} | 28 +- .../UnbanCMD.java} | 42 ++- .../UnbanIPCMD.java} | 38 +-- .../UnbanNameCMD.java} | 35 +- .../UnblockCommandCMD.java} | 29 +- .../UncageCMD.java} | 29 +- .../command/impl/UndisguiseAllCMD.java | 31 ++ .../UnlinkDiscordCMD.java} | 32 +- .../UnmuteCMD.java} | 38 +-- .../VanishCMD.java} | 85 ++--- .../command/impl/VerifyCMD.java | 123 +++++++ .../VerifyNoAdminCMD.java} | 71 ++-- .../{Command_vote.java => impl/VoteCMD.java} | 24 +- .../{Command_warn.java => impl/WarnCMD.java} | 45 ++- .../WhitelistCMD.java} | 125 +++---- .../WhoHasCMD.java} | 66 ++-- .../WildCardCMD.java} | 50 ++- .../{ => input}/CommandParameters.java | 7 +- .../{ => input}/CommandPermissions.java | 8 +- .../command/input/SourceType.java | 5 + .../totalfreedommod/config/MainConfig.java | 4 +- .../totalfreedommod/discord/Discord.java | 14 +- .../discord/DiscordToAdminChatListener.java | 4 +- .../discord/DiscordToMinecraftListener.java | 2 +- .../discord/PrivateMessageListener.java | 4 +- .../totalfreedommod/fun/ItemFun.java | 26 +- .../totalfreedommod/fun/Jumppads.java | 4 +- .../totalfreedommod/fun/Landminer.java | 4 +- .../totalfreedommod/fun/MP44.java | 6 +- .../totalfreedommod/fun/Trailer.java | 14 +- .../httpd/HTMLGenerationTools.java | 11 +- .../totalfreedommod/httpd/HTTPDaemon.java | 4 +- .../httpd/module/HTTPDModule.java | 4 +- .../httpd/module/Module_activitylog.java | 2 +- .../httpd/module/Module_admins.java | 2 +- .../httpd/module/Module_bans.java | 2 +- .../httpd/module/Module_file.java | 2 +- .../httpd/module/Module_help.java | 10 +- .../httpd/module/Module_indefbans.java | 4 +- .../httpd/module/Module_list.java | 16 +- .../httpd/module/Module_logfile.java | 19 +- .../httpd/module/Module_players.java | 8 +- .../httpd/module/Module_punishments.java | 2 +- .../httpd/module/Module_schematic.java | 27 +- .../totalfreedommod/player/FPlayer.java | 21 +- .../totalfreedommod/player/PlayerData.java | 9 +- .../totalfreedommod/player/PlayerList.java | 34 +- .../permissions/PermissionConfig.java | 13 +- .../permissions/PermissionEntry.java | 2 +- .../permissions/PermissionManager.java | 13 +- .../punishments/PunishmentList.java | 4 +- .../{ => punishments}/banning/Ban.java | 2 +- .../{ => punishments}/banning/BanManager.java | 8 +- .../banning/IndefiniteBan.java | 2 +- .../banning/IndefiniteBanList.java | 6 +- .../{ => punishments}/caging/CageData.java | 2 +- .../{ => punishments}/caging/Cager.java | 18 +- .../{ => punishments}/freeze/FreezeData.java | 4 +- .../{ => punishments}/freeze/Freezer.java | 12 +- .../totalfreedommod/rank/RankManager.java | 62 ++-- .../AbstractService.java} | 10 +- .../ServiceHandler.java} | 18 +- .../{ => services/impl}/Announcer.java | 6 +- .../impl/BackupHandler.java} | 10 +- .../impl/ChatHandler.java} | 37 +- .../{ => services/impl}/EntityWiper.java | 5 +- .../{ => services/impl}/FrontDoor.java | 35 +- .../{ => services/impl}/GameRuleHandler.java | 6 +- .../{ => services/impl}/LogViewer.java | 6 +- .../{ => services/impl}/LoginProcess.java | 30 +- .../{ => services/impl}/Monitors.java | 8 +- .../impl}/MovementValidator.java | 6 +- .../{ => services/impl}/Pterodactyl.java | 10 +- .../services/impl/ServerInterface.java | 47 +++ .../{ => services/impl}/ServerPing.java | 10 +- .../{ => services/impl}/Sitter.java | 11 +- .../{ => services/impl}/VanishHandler.java | 21 +- .../totalfreedommod/shop/Shop.java | 18 +- .../totalfreedommod/shop/Votifier.java | 10 +- .../totalfreedommod/sql/SQLite.java | 6 +- .../totalfreedommod/util/FSync.java | 4 +- .../totalfreedommod/util/FUtil.java | 11 +- .../{CustomWorld.java => AbstractWorld.java} | 6 +- .../totalfreedommod/world/WorldManager.java | 8 +- .../world/WorldRestrictions.java | 22 +- .../CleanroomChunkGenerator.java | 2 +- .../world/{ => impl}/AdminWorld.java | 10 +- .../world/{ => impl}/Flatlands.java | 10 +- .../world/{ => impl}/MasterBuilderWorld.java | 10 +- .../world/{ => manager}/WorldTime.java | 2 +- .../world/{ => manager}/WorldWeather.java | 2 +- 317 files changed, 5440 insertions(+), 6947 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java rename src/main/java/me/totalfreedom/totalfreedommod/{ => admin/module}/CommandSpy.java (73%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => admin/module}/Fuckoff.java (85%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => admin/module}/Muter.java (85%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => admin/module}/Orbiter.java (76%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => anticheat}/AntiNuke.java (87%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => anticheat}/AntiSpam.java (86%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => anticheat}/AutoEject.java (80%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => anticheat}/AutoKick.java (84%) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/CommandFailException.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleardiscordqueue.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_clownfish.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_end.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_fireball.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_flatlands.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_grapplinghook.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_jumppads.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_lightningrod.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_namehistory.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_reactionbar.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_undisguiseall.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_verify.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCMD.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/SourceType.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/exception/CommandFailException.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_aeclear.java => impl/AEClearCMD.java} (54%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_adminchat.java => impl/AdminChatCMD.java} (50%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_saconfig.java => impl/AdminConfigCMD.java} (55%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_admininfo.java => impl/AdminInfoCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_adminmode.java => impl/AdminModeCMD.java} (57%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_adminworld.java => impl/AdminWorldCMD.java} (54%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_adventure.java => impl/AdventureCMD.java} (65%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/AnnounceCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_attributelist.java => impl/AttributeListCMD.java} (55%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoClearCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoTPCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_ban.java => impl/BanCMD.java} (69%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_banip.java => impl/BanIPCMD.java} (61%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanListCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_banname.java => impl/BanNameCMD.java} (60%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_bird.java => impl/BirdCMD.java} (64%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_blockcmd.java => impl/BlockCommandCMD.java} (58%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_blockedit.java => impl/BlockEditCMD.java} (62%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_blockpvp.java => impl/BlockPvPCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_blockredstone.java => impl/BlockRedstoneCMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_mbconfig.java => impl/BuilderConfigCMD.java} (55%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_masterbuilderinfo.java => impl/BuilderInfoCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_masterbuilderworld.java => impl/BuilderWorldCMD.java} (53%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_cage.java => impl/CageCMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_cake.java => impl/CakeCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_cartsit.java => impl/CartSitCMD.java} (57%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/CleanChatCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearDiscordQueueCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_clearinventory.java => impl/ClearInventoryCMD.java} (64%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClownFishCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_coins.java => impl/CoinsCMD.java} (76%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_colorme.java => impl/ColorMeCMD.java} (57%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_commandlist.java => impl/CommandListCMD.java} (66%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandSpyCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_consolesay.java => impl/ConsoleSayCMD.java} (50%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_cookie.java => impl/CookieCMD.java} (73%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_creative.java => impl/CreativeCMD.java} (64%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_deafen.java => impl/DeafenCMD.java} (62%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_debugstick.java => impl/DebugStickCMD.java} (71%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/DenickCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_deopall.java => impl/DeopAllCMD.java} (51%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_deop.java => impl/DeopCMD.java} (61%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/DisguiseToggleCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_dispfill.java => impl/DispFillCMD.java} (67%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_doom.java => impl/DoomCMD.java} (71%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_eject.java => impl/EjectCMD.java} (68%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_enchant.java => impl/EnchantCMD.java} (60%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/EndCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_entitywipe.java => impl/EntityWipeCMD.java} (60%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_expel.java => impl/ExpelCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_explode.java => impl/ExplodeCMD.java} (64%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplosiveArrowCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/FindIPCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/FireballCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/FlatlandsCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ForcekillCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_freeze.java => impl/FreezeCMD.java} (60%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_fuckoff.java => impl/FuckoffCMD.java} (50%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_gcmd.java => impl/GcmdCMD.java} (57%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_glow.java => impl/GlowCMD.java} (62%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/GrapplingHookCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_gravity.java => impl/GravityCMD.java} (55%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_health.java => impl/HealthCMD.java} (64%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/IndefBanCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_inspect.java => impl/InspectCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_invsee.java => impl/InvSeeCMD.java} (63%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_invis.java => impl/InvisCMD.java} (61%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/JumpPadsCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_kick.java => impl/KickCMD.java} (67%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_kicknoob.java => impl/KickNoobCMD.java} (52%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_landmine.java => impl/LandMineCMD.java} (58%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_lastcmd.java => impl/LastCommandCMD.java} (54%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/LightningRodCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_linkdiscord.java => impl/LinkDiscordCMD.java} (52%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_links.java => impl/LinksCMD.java} (63%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_list.java => impl/ListCMD.java} (70%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_localspawn.java => impl/LocalSpawnCMD.java} (51%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_lockup.java => impl/LockupCMD.java} (58%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_loginmessage.java => impl/LoginMessageCMD.java} (63%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/LogsCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_manageshop.java => impl/ManageShopCMD.java} (63%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_manuallyverify.java => impl/ManuallyverifyCMD.java} (67%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_moblimiter.java => impl/MobLimiterCMD.java} (58%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_mobpurge.java => impl/MobPurgeCMD.java} (63%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ModifyItemCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_mp44.java => impl/Mp44CMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_mute.java => impl/MuteCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_myadmin.java => impl/MyAdminCMD.java} (64%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyInfoCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/NameHistoryCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/NetherCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_nickclean.java => impl/NickCleanCMD.java} (78%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_nickfilter.java => impl/NickFilterCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_nickgradient.java => impl/NickGradientCMD.java} (64%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_nicknyan.java => impl/NickNyanCMD.java} (52%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_nickrainbow.java => impl/NickRainbowCMD.java} (57%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_notes.java => impl/NotesCMD.java} (62%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_op.java => impl/OpCMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_ops.java => impl/OpListCMD.java} (58%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_opme.java => impl/OpMeCMD.java} (52%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_opall.java => impl/OpallCMD.java} (51%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_orbit.java => impl/OrbitCMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_panel.java => impl/PanelCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_permissions.java => impl/PermissionsCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_playtime.java => impl/PlayTimeCMD.java} (74%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_playerverification.java => impl/PlayerVerificationCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_plotworld.java => impl/PlotWorldCMD.java} (54%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_plugincontrol.java => impl/PluginControlCMD.java} (67%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_potion.java => impl/PotionCMD.java} (66%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_potionspy.java => impl/PotionSpyCMD.java} (69%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_purgeall.java => impl/PurgeallCMD.java} (56%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_rank.java => impl/RankCMD.java} (58%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_rawsay.java => impl/RawSayCMD.java} (51%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReactionBarCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_ro.java => impl/RemoveBlocksCMD.java} (70%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_report.java => impl/ReportCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_ride.java => impl/RideCMD.java} (72%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideablePearlCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_rock.java => impl/RockCMD.java} (67%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_say.java => impl/SayCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_scare.java => impl/ScareCMD.java} (62%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_seed.java => impl/SeedCMD.java} (74%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ServerStatsCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_setcompass.java => impl/SetCompassCMD.java} (60%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_setlever.java => impl/SetLeverCMD.java} (66%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLimitCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_setplayerlimit.java => impl/SetPlayerLimitCMD.java} (50%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_setspawnworld.java => impl/SetSpawnWorldCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_settotalvotes.java => impl/SetTotalVotesCMD.java} (59%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ShopCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_sit.java => impl/SitCMD.java} (53%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_smite.java => impl/SmiteCMD.java} (71%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_spawnmob.java => impl/SpawnMobCMD.java} (67%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_spectate.java => impl/SpectateCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_spectator.java => impl/SpectatorCMD.java} (59%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/StackingPotatoCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_status.java => impl/StatusCMD.java} (70%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_stop.java => impl/StopCMD.java} (64%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_stopsound.java => impl/StopSoundCMD.java} (62%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_survival.java => impl/SurvivalCMD.java} (66%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_tprandom.java => impl/TPRandomCMD.java} (62%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_tag.java => impl/TagCMD.java} (63%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_tagnyan.java => impl/TagNyanCMD.java} (60%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_tagrainbow.java => impl/TagRainbowCMD.java} (59%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_tempban.java => impl/TempBanCMD.java} (68%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_toggle.java => impl/ToggleCMD.java} (71%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_togglechat.java => impl/ToggleChatCMD.java} (57%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleClownfishCMD.java create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleDiscordCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_togglepickup.java => impl/TogglePickupCMD.java} (56%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_tossmob.java => impl/TossMobCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_totalfreedommod.java => impl/TotalFreedomModCMD.java} (73%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_trail.java => impl/TrailCMD.java} (50%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_unban.java => impl/UnbanCMD.java} (53%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_unbanip.java => impl/UnbanIPCMD.java} (53%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_unbanname.java => impl/UnbanNameCMD.java} (52%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_unblockcmd.java => impl/UnblockCommandCMD.java} (56%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_uncage.java => impl/UncageCMD.java} (56%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/UndisguiseAllCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_unlinkdiscord.java => impl/UnlinkDiscordCMD.java} (56%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_unmute.java => impl/UnmuteCMD.java} (66%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_vanish.java => impl/VanishCMD.java} (53%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyCMD.java rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_verifynoadmin.java => impl/VerifyNoAdminCMD.java} (53%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_vote.java => impl/VoteCMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_warn.java => impl/WarnCMD.java} (66%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_whitelist.java => impl/WhitelistCMD.java} (65%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_whohas.java => impl/WhoHasCMD.java} (57%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_wildcard.java => impl/WildCardCMD.java} (61%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{ => input}/CommandParameters.java (68%) rename src/main/java/me/totalfreedom/totalfreedommod/command/{ => input}/CommandPermissions.java (78%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/input/SourceType.java rename src/main/java/me/totalfreedom/totalfreedommod/{ => player}/permissions/PermissionConfig.java (90%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => player}/permissions/PermissionEntry.java (92%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => player}/permissions/PermissionManager.java (88%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/banning/Ban.java (99%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/banning/BanManager.java (97%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/banning/IndefiniteBan.java (96%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/banning/IndefiniteBanList.java (96%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/caging/CageData.java (99%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/caging/Cager.java (82%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/freeze/FreezeData.java (89%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => punishments}/freeze/Freezer.java (75%) rename src/main/java/me/totalfreedom/totalfreedommod/{FreedomService.java => services/AbstractService.java} (70%) rename src/main/java/me/totalfreedom/totalfreedommod/{FreedomServiceHandler.java => services/ServiceHandler.java} (64%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/Announcer.java (92%) rename src/main/java/me/totalfreedom/totalfreedommod/{BackupManager.java => services/impl/BackupHandler.java} (87%) rename src/main/java/me/totalfreedom/totalfreedommod/{ChatManager.java => services/impl/ChatHandler.java} (80%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/EntityWiper.java (94%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/FrontDoor.java (94%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/GameRuleHandler.java (95%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/LogViewer.java (97%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/LoginProcess.java (90%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/Monitors.java (94%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/MovementValidator.java (97%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/Pterodactyl.java (95%) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerInterface.java rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/ServerPing.java (85%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/Sitter.java (62%) rename src/main/java/me/totalfreedom/totalfreedommod/{ => services/impl}/VanishHandler.java (68%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{CustomWorld.java => AbstractWorld.java} (87%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{ => generator}/CleanroomChunkGenerator.java (99%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{ => impl}/AdminWorld.java (90%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{ => impl}/Flatlands.java (84%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{ => impl}/MasterBuilderWorld.java (86%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{ => manager}/WorldTime.java (95%) rename src/main/java/me/totalfreedom/totalfreedommod/world/{ => manager}/WorldWeather.java (94%) diff --git a/pom.xml b/pom.xml index 7d7c4aa8..5f8f2d0c 100644 --- a/pom.xml +++ b/pom.xml @@ -141,7 +141,7 @@ org.spigotmc - spigot + spigot-api 1.17.1-R0.1-SNAPSHOT provided @@ -441,6 +441,7 @@ org.jetbrains:annotations + E:\A Folder for More Folders\Minecraft Servers\TotalFreedom Testing\plugins diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java b/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java deleted file mode 100644 index 3821a949..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java +++ /dev/null @@ -1,78 +0,0 @@ -package me.totalfreedom.totalfreedommod; - -import java.util.Arrays; -import java.util.List; -import me.totalfreedom.totalfreedommod.util.FLog; -import me.totalfreedom.totalfreedommod.util.FUtil; -import net.minecraft.server.level.EntityPlayer; -import net.minecraft.server.MinecraftServer; -import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_17_R1.CraftServer; - -public class ServerInterface extends FreedomService -{ - public static final String COMPILE_NMS_VERSION = "v1_17_R1"; - - public static void warnVersion() - { - final String nms = FUtil.getNMSVersion(); - - if (!COMPILE_NMS_VERSION.equals(nms)) - { - FLog.warning(TotalFreedomMod.pluginName + " is compiled for " + COMPILE_NMS_VERSION + " but the server is running version " + nms + "!"); - FLog.warning("This might result in unexpected behaviour!"); - } - } - - @Override - public void onStart() - { - } - - @Override - public void onStop() - { - } - - public int purgeWhitelist() - { - String[] whitelisted = getServer().getPlayerList().getWhitelisted(); - int size = whitelisted.length; - for (EntityPlayer player : getServer().getPlayerList().getPlayers()) - { - getServer().getPlayerList().getWhitelist().remove(player.getProfile()); - } - - try - { - getServer().getPlayerList().getWhitelist().save(); - } - catch (Exception ex) - { - FLog.warning("Could not purge the whitelist!"); - FLog.warning(ex); - } - return size; - } - - public boolean isWhitelisted() - { - return getServer().getPlayerList().getHasWhitelist(); - } - - public List getWhitelisted() - { - return Arrays.asList(getServer().getPlayerList().getWhitelisted()); - } - - public String getVersion() - { - return getServer().getVersion(); - } - - private MinecraftServer getServer() - { - return ((CraftServer)Bukkit.getServer()).getServer(); - } - -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index 1bb8207b..4a1ffc35 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -1,12 +1,18 @@ package me.totalfreedom.totalfreedommod; import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.util.Properties; import me.totalfreedom.totalfreedommod.admin.ActivityLog; import me.totalfreedom.totalfreedommod.admin.AdminList; -import me.totalfreedom.totalfreedommod.banning.BanManager; -import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; +import me.totalfreedom.totalfreedommod.admin.module.CommandSpy; +import me.totalfreedom.totalfreedommod.admin.module.Fuckoff; +import me.totalfreedom.totalfreedommod.admin.module.Muter; +import me.totalfreedom.totalfreedommod.admin.module.Orbiter; +import me.totalfreedom.totalfreedommod.anticheat.AutoEject; +import me.totalfreedom.totalfreedommod.punishments.banning.BanManager; +import me.totalfreedom.totalfreedommod.punishments.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.blocking.BlockBlocker; import me.totalfreedom.totalfreedommod.blocking.EditBlocker; import me.totalfreedom.totalfreedommod.blocking.EventBlocker; @@ -23,38 +29,43 @@ import me.totalfreedom.totalfreedommod.bridge.LibsDisguisesBridge; import me.totalfreedom.totalfreedommod.bridge.TFGuildsBridge; import me.totalfreedom.totalfreedommod.bridge.WorldEditBridge; import me.totalfreedom.totalfreedommod.bridge.WorldGuardBridge; -import me.totalfreedom.totalfreedommod.caging.Cager; +import me.totalfreedom.totalfreedommod.punishments.caging.Cager; import me.totalfreedom.totalfreedommod.command.CommandLoader; import me.totalfreedom.totalfreedommod.config.MainConfig; import me.totalfreedom.totalfreedommod.discord.Discord; -import me.totalfreedom.totalfreedommod.freeze.Freezer; +import me.totalfreedom.totalfreedommod.punishments.freeze.Freezer; import me.totalfreedom.totalfreedommod.fun.ItemFun; import me.totalfreedom.totalfreedommod.fun.Jumppads; import me.totalfreedom.totalfreedommod.fun.Landminer; import me.totalfreedom.totalfreedommod.fun.MP44; import me.totalfreedom.totalfreedommod.fun.Trailer; import me.totalfreedom.totalfreedommod.httpd.HTTPDaemon; -import me.totalfreedom.totalfreedommod.permissions.PermissionConfig; -import me.totalfreedom.totalfreedommod.permissions.PermissionManager; +import me.totalfreedom.totalfreedommod.anticheat.AntiNuke; +import me.totalfreedom.totalfreedommod.anticheat.AntiSpam; +import me.totalfreedom.totalfreedommod.anticheat.AutoKick; +import me.totalfreedom.totalfreedommod.player.permissions.PermissionConfig; +import me.totalfreedom.totalfreedommod.player.permissions.PermissionManager; import me.totalfreedom.totalfreedommod.player.PlayerList; import me.totalfreedom.totalfreedommod.punishments.PunishmentList; import me.totalfreedom.totalfreedommod.rank.RankManager; +import me.totalfreedom.totalfreedommod.services.ServiceHandler; +import me.totalfreedom.totalfreedommod.services.impl.*; import me.totalfreedom.totalfreedommod.shop.Shop; import me.totalfreedom.totalfreedommod.shop.Votifier; import me.totalfreedom.totalfreedommod.sql.SQLite; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.MethodTimer; -import me.totalfreedom.totalfreedommod.world.CleanroomChunkGenerator; +import me.totalfreedom.totalfreedommod.world.generator.CleanroomChunkGenerator; import me.totalfreedom.totalfreedommod.world.WorldManager; import me.totalfreedom.totalfreedommod.world.WorldRestrictions; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; -import org.spigotmc.SpigotConfig; public class TotalFreedomMod extends JavaPlugin { @@ -65,76 +76,80 @@ public class TotalFreedomMod extends JavaPlugin public static String pluginName; public static String pluginVersion; private static TotalFreedomMod plugin; + + private File spigotFile; + private YamlConfiguration spigotConfig; + // public MainConfig config; public PermissionConfig permissions; // // Service Handler - public FreedomServiceHandler fsh; + public ServiceHandler serviceHandler; // Command Loader - public CommandLoader cl; + public CommandLoader commandLoader; // Services - public ServerInterface si; - public WorldManager wm; - public LogViewer lv; - public AdminList al; - public ActivityLog acl; - public RankManager rm; - public CommandBlocker cb; - public EventBlocker eb; - public BlockBlocker bb; - public MobBlocker mb; - public InteractBlocker ib; - public PotionBlocker pb; - public LoginProcess lp; - public AntiNuke nu; - public AntiSpam as; - public PlayerList pl; - public Shop sh; - public Votifier vo; + public ServerInterface serverInterface; + public WorldManager worldManager; + public LogViewer logViewer; + public AdminList adminList; + public ActivityLog activityLog; + public RankManager rankManager; + public CommandBlocker commandBlocker; + public EventBlocker eventBlocker; + public BlockBlocker blockBlocker; + public MobBlocker mobBlocker; + public InteractBlocker interactBlocker; + public PotionBlocker potionBlocker; + public LoginProcess loginProcess; + public AntiNuke antiNuke; + public AntiSpam antiSpam; + public PlayerList playerList; + public Shop shop; + public Votifier votifier; public SQLite sql; - public Announcer an; - public ChatManager cm; - public Discord dc; - public PunishmentList pul; - public BanManager bm; - public IndefiniteBanList im; - public PermissionManager pem; - public GameRuleHandler gr; - public CommandSpy cs; - public Cager ca; - public Freezer fm; - public EditBlocker ebl; - public PVPBlocker pbl; - public Orbiter or; - public Muter mu; - public Fuckoff fo; - public AutoKick ak; - public AutoEject ae; - public Monitors mo; - public MovementValidator mv; - public ServerPing sp; - public ItemFun it; - public Landminer lm; - public MP44 mp; - public Jumppads jp; - public Trailer tr; - public HTTPDaemon hd; - public WorldRestrictions wr; - public SignBlocker snp; - public EntityWiper ew; - public Sitter st; - public VanishHandler vh; - public Pterodactyl ptero; + public Announcer announcer; + public ChatHandler chatManager; + public Discord discord; + public PunishmentList punishmentList; + public BanManager banManager; + public IndefiniteBanList indefiniteBanList; + public PermissionManager permissionManager; + public GameRuleHandler gameRuleHandler; + public CommandSpy commandSpy; + public Cager cager; + public Freezer freezer; + public EditBlocker editBlocker; + public PVPBlocker pvpBlocker; + public Orbiter orbiter; + public Muter muter; + public Fuckoff fuckoff; + public AutoKick autoKick; + public AutoEject autoEject; + public Monitors monitors; + public MovementValidator movementValidator; + public ServerPing serverPing; + public ItemFun itemFun; + public Landminer landMiner; + public MP44 mp44; + public Jumppads jumpPads; + public Trailer trailer; + public HTTPDaemon httpDaemon; + public WorldRestrictions worldRestrictions; + public SignBlocker signBlocker; + public EntityWiper entityWiper; + public Sitter sitter; + public VanishHandler vanishHandler; + public Pterodactyl pterodactyl; // // Bridges - public BukkitTelnetBridge btb; - public EssentialsBridge esb; - public LibsDisguisesBridge ldb; - public CoreProtectBridge cpb; - public TFGuildsBridge tfg; - public WorldEditBridge web; - public WorldGuardBridge wgb; + public BukkitTelnetBridge bukkitTelnetBridge; + public EssentialsBridge essentialsBridge; + public LibsDisguisesBridge libsDisguisesBridge; + public CoreProtectBridge coreProtectBridge; + public TFGuildsBridge tfGuildsBridge; + public WorldEditBridge worldEditBridge; + public WorldGuardBridge worldGuardBridge; public static TotalFreedomMod getPlugin() { @@ -177,13 +192,13 @@ public class TotalFreedomMod extends JavaPlugin timer.start(); // Warn if we're running on a wrong version - ServerInterface.warnVersion(); + //ServerInterface.warnVersion();no more nms // Delete unused files FUtil.deleteCoreDumps(); FUtil.deleteFolder(new File("./_deleteme")); - fsh = new FreedomServiceHandler(); + serviceHandler = new ServiceHandler(); config = new MainConfig(); config.load(); @@ -193,39 +208,53 @@ public class TotalFreedomMod extends JavaPlugin FLog.debug("Developer mode enabled."); } - cl = new CommandLoader(); - cl.loadCommands(); + commandLoader = new CommandLoader(); + commandLoader.loadCommands(); - BackupManager backups = new BackupManager(); + BackupHandler backups = new BackupHandler(); backups.createAllBackups(); permissions = new PermissionConfig(); permissions.load(); - mv = new MovementValidator(); - sp = new ServerPing(); + movementValidator = new MovementValidator(); + serverPing = new ServerPing(); new Initializer(); - fsh.startServices(); + serviceHandler.startServices(); - FLog.info("Started " + fsh.getServiceAmount() + " services."); + FLog.info("Started " + serviceHandler.getServiceAmount() + " services."); timer.update(); - FLog.info("Version " + pluginVersion + " for " + ServerInterface.COMPILE_NMS_VERSION + " enabled in " + timer.getTotal() + "ms"); + FLog.info("Version " + pluginVersion + " for " + getServer().getBukkitVersion() + " enabled in " + timer.getTotal() + "ms"); // Metrics @ https://bstats.org/plugin/bukkit/TotalFreedomMod/2966 new Metrics(this, 2966); // little workaround to stop spigot from autorestarting - causing AMP to detach from process. - SpigotConfig.config.set("settings.restart-on-crash", false); + //SpigotConfig.config.set("settings.restart-on-crash", false); + + + this.spigotFile = new File(getServer().getWorldContainer(), "spigot.yml"); + this.spigotConfig = YamlConfiguration.loadConfiguration(this.spigotFile); + + this.spigotConfig.set("settings.restart-on-crash", false); + try { + this.spigotConfig.save(this.spigotFile); + } catch (IOException e) { + e.printStackTrace(); + } + + // Possibly could make it so after reloads, players regain their tag + Bukkit.getOnlinePlayers().forEach(player -> this.rankManager.updateDisplay(player)); } @Override public void onDisable() { // Stop services and bridges - fsh.stopServices(); + serviceHandler.stopServices(); getServer().getScheduler().cancelTasks(plugin); @@ -297,83 +326,100 @@ public class TotalFreedomMod extends JavaPlugin private void initServices() { // Start services - si = new ServerInterface(); - wm = new WorldManager(); - lv = new LogViewer(); + serverInterface = new ServerInterface(); + gameRuleHandler = new GameRuleHandler(); + worldManager = new WorldManager(); + logViewer = new LogViewer(); sql = new SQLite(); - al = new AdminList(); - acl = new ActivityLog(); - rm = new RankManager(); - cb = new CommandBlocker(); - eb = new EventBlocker(); - bb = new BlockBlocker(); - mb = new MobBlocker(); - ib = new InteractBlocker(); - pb = new PotionBlocker(); - lp = new LoginProcess(); - nu = new AntiNuke(); - as = new AntiSpam(); - wr = new WorldRestrictions(); - pl = new PlayerList(); - sh = new Shop(); - vo = new Votifier(); - an = new Announcer(); - cm = new ChatManager(); - dc = new Discord(); - pul = new PunishmentList(); - bm = new BanManager(); - im = new IndefiniteBanList(); - pem = new PermissionManager(); - gr = new GameRuleHandler(); - snp = new SignBlocker(); - ew = new EntityWiper(); - st = new Sitter(); - vh = new VanishHandler(); - ptero = new Pterodactyl(); + adminList = new AdminList(); + activityLog = new ActivityLog(); + rankManager = new RankManager(); + commandBlocker = new CommandBlocker(); + eventBlocker = new EventBlocker(); + blockBlocker = new BlockBlocker(); + mobBlocker = new MobBlocker(); + interactBlocker = new InteractBlocker(); + potionBlocker = new PotionBlocker(); + loginProcess = new LoginProcess(); + antiNuke = new AntiNuke(); + antiSpam = new AntiSpam(); + playerList = new PlayerList(); + shop = new Shop(); + votifier = new Votifier(); + announcer = new Announcer(); + chatManager = new ChatHandler(); + discord = new Discord(); + punishmentList = new PunishmentList(); + banManager = new BanManager(); + indefiniteBanList = new IndefiniteBanList(); + permissionManager = new PermissionManager(); + signBlocker = new SignBlocker(); + entityWiper = new EntityWiper(); + sitter = new Sitter(); + vanishHandler = new VanishHandler(); + pterodactyl = new Pterodactyl(); + + if (isPluginPresent("WorldGuard")) + worldRestrictions = new WorldRestrictions(); } private void initAdminUtils() { // Single admin utils - cs = new CommandSpy(); - ca = new Cager(); - fm = new Freezer(); - or = new Orbiter(); - mu = new Muter(); - ebl = new EditBlocker(); - pbl = new PVPBlocker(); - fo = new Fuckoff(); - ak = new AutoKick(); - ae = new AutoEject(); - mo = new Monitors(); + commandSpy = new CommandSpy(); + cager = new Cager(); + freezer = new Freezer(); + orbiter = new Orbiter(); + muter = new Muter(); + editBlocker = new EditBlocker(); + pvpBlocker = new PVPBlocker(); + fuckoff = new Fuckoff(); + autoKick = new AutoKick(); + autoEject = new AutoEject(); + monitors = new Monitors(); } private void initBridges() { // Start bridges - btb = new BukkitTelnetBridge(); - cpb = new CoreProtectBridge(); - esb = new EssentialsBridge(); - ldb = new LibsDisguisesBridge(); - tfg = new TFGuildsBridge(); - web = new WorldEditBridge(); - wgb = new WorldGuardBridge(); + if (isPluginPresent("BukkitTelnet")) + bukkitTelnetBridge = new BukkitTelnetBridge(); + if (isPluginPresent("CoreProtect")) + coreProtectBridge = new CoreProtectBridge(); + if (isPluginPresent("WorldGuard")) + worldGuardBridge = new WorldGuardBridge(); + if (isPluginPresent("WorldEdit")) + worldEditBridge = new WorldEditBridge(); + + essentialsBridge = new EssentialsBridge(); + libsDisguisesBridge = new LibsDisguisesBridge(); + tfGuildsBridge = new TFGuildsBridge(); + } private void initFun() { // Fun - it = new ItemFun(); - lm = new Landminer(); - mp = new MP44(); - jp = new Jumppads(); - tr = new Trailer(); + itemFun = new ItemFun(); + landMiner = new Landminer(); + mp44 = new MP44(); + jumpPads = new Jumppads(); + trailer = new Trailer(); } private void initHTTPD() { // HTTPD - hd = new HTTPDaemon(); + httpDaemon = new HTTPDaemon(); + } + + private boolean isPluginPresent(String plugin) + { + return TotalFreedomMod.getPlugin().getServer().getPluginManager().isPluginEnabled(plugin); } } + + public YamlConfiguration getSpigotConfig() { + return spigotConfig; + } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java index 8c29fdac..ad1c9f74 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java @@ -1,8 +1,13 @@ package me.totalfreedom.totalfreedommod.admin; import com.google.common.collect.Maps; + +import java.time.Instant; +import java.util.Date; import java.util.Map; -import me.totalfreedom.totalfreedommod.FreedomService; + +import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -14,7 +19,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -public class ActivityLog extends FreedomService +public class ActivityLog extends AbstractService { public static final String FILENAME = "activitylog.yml"; @@ -170,23 +175,26 @@ public class ActivityLog extends FreedomService public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { getActivityLog(event.getPlayer()).addLogin(); - plugin.acl.save(); - plugin.acl.updateTables(); + plugin.activityLog.save(); + plugin.activityLog.updateTables(); } + + FPlayer fPlayer = plugin.playerList.getPlayer(player); + fPlayer.setCurrentSessionStart(new Date()); } @EventHandler(priority = EventPriority.HIGH) public void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { getActivityLog(event.getPlayer()).addLogout(); - plugin.acl.save(); - plugin.acl.updateTables(); + plugin.activityLog.save(); + plugin.activityLog.updateTables(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java index eb056fcb..17172ea9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java @@ -4,7 +4,10 @@ import com.google.common.collect.Lists; import java.time.Instant; import java.util.Date; import java.util.List; + +import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.config.IConfig; +import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.Validate; import org.bukkit.configuration.ConfigurationSection; @@ -14,15 +17,20 @@ public class ActivityLogEntry implements IConfig { public static final String FILENAME = "activitylog.yml"; + private final List ips = Lists.newArrayList(); private final List timestamps = Lists.newArrayList(); private final List durations = Lists.newArrayList(); + + private Player player; private String configKey; private String name; public ActivityLogEntry(Player player) { - this.configKey = player.getName().toLowerCase(); + this(player.getName().toLowerCase()); + + this.player = player; this.name = player.getName(); } @@ -73,14 +81,22 @@ public class ActivityLogEntry implements IConfig public void addLogout() { // Fix of Array index out of bonds issue: FS-131 - String lastLoginString; + String lastLoginString = null; + if(timestamps.size() > 1) { lastLoginString = timestamps.get(timestamps.size() - 1); - }else + } + else if (!timestamps.isEmpty()) { lastLoginString = timestamps.get(0); } + if (lastLoginString == null) + { + FPlayer fPlayer = TotalFreedomMod.getPlugin().playerList.getPlayer(this.player); + lastLoginString = "Login: " + FUtil.dateToString(fPlayer.getCurrentSessionStart()); + } + Date currentTime = Date.from(Instant.now()); timestamps.add("Logout: " + FUtil.dateToString(currentTime)); lastLoginString = lastLoginString.replace("Login: ", ""); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java index 17920853..86bab8fb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java @@ -7,7 +7,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode; +import me.totalfreedom.totalfreedommod.services.impl.LogViewer.LogsRegistrationMode; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; @@ -158,13 +158,13 @@ public class Admin { if (getRank().isAtLeast(Rank.ADMIN)) { - if (plugin.btb != null) + if (plugin.bukkitTelnetBridge != null) { - plugin.btb.killTelnetSessions(getName()); + plugin.bukkitTelnetBridge.killTelnetSessions(getName()); } } - plugin.lv.updateLogsRegistration(null, getName(), LogsRegistrationMode.DELETE); + plugin.logViewer.updateLogsRegistration(null, getName(), LogsRegistrationMode.DELETE); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java index 8cbb49b8..55e4e4e2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java @@ -10,7 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; @@ -19,7 +19,7 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class AdminList extends FreedomService +public class AdminList extends AbstractService { public static final List vanished = new ArrayList<>(); public final Map> verifiedNoAdmin = Maps.newHashMap(); @@ -275,9 +275,9 @@ public class AdminList extends FreedomService { if (admin.getRank().isAtLeast(Rank.ADMIN)) { - if (plugin.btb != null) + if (plugin.bukkitTelnetBridge != null) { - plugin.btb.killTelnetSessions(admin.getName()); + plugin.bukkitTelnetBridge.killTelnetSessions(admin.getName()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/CommandSpy.java similarity index 73% rename from src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java rename to src/main/java/me/totalfreedom/totalfreedommod/admin/module/CommandSpy.java index 30d39f0f..2ce738a8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/CommandSpy.java @@ -1,12 +1,13 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.admin.module; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -public class CommandSpy extends FreedomService +public class CommandSpy extends AbstractService { @Override public void onStart() @@ -23,7 +24,7 @@ public class CommandSpy extends FreedomService { for (Player player : server.getOnlinePlayers()) { - if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy()) + if (plugin.adminList.isAdmin(player) && plugin.adminList.getAdmin(player).getCommandSpy()) { if (player != event.getPlayer()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Fuckoff.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/Fuckoff.java similarity index 85% rename from src/main/java/me/totalfreedom/totalfreedommod/Fuckoff.java rename to src/main/java/me/totalfreedom/totalfreedommod/admin/module/Fuckoff.java index 06b03f89..4d7321f2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Fuckoff.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/Fuckoff.java @@ -1,5 +1,6 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.admin.module; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.player.FPlayer; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -7,7 +8,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; -public class Fuckoff extends FreedomService +public class Fuckoff extends AbstractService { @Override public void onStart() @@ -25,7 +26,7 @@ public class Fuckoff extends FreedomService final Player fuckoffPlayer = event.getPlayer(); for (Player onlinePlayer : server.getOnlinePlayers()) { - final FPlayer fPlayer = plugin.pl.getPlayer(onlinePlayer); + final FPlayer fPlayer = plugin.playerList.getPlayer(onlinePlayer); if (!fPlayer.isFuckOff() || fuckoffPlayer.equals(onlinePlayer)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/Muter.java similarity index 85% rename from src/main/java/me/totalfreedom/totalfreedommod/Muter.java rename to src/main/java/me/totalfreedom/totalfreedommod/admin/module/Muter.java index c6b336ae..3d44eb2a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/Muter.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.admin.module; import java.util.ArrayList; import java.util.List; + +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FLog; @@ -15,7 +17,7 @@ import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerJoinEvent; -public class Muter extends FreedomService +public class Muter extends AbstractService { public final List MUTED_PLAYERS = new ArrayList<>(); @@ -35,14 +37,14 @@ public class Muter extends FreedomService { Player player = event.getPlayer(); - FPlayer fPlayer = plugin.pl.getPlayerSync(player); + FPlayer fPlayer = plugin.playerList.getPlayerSync(player); if (!fPlayer.isMuted()) { return; } - if (plugin.al.isAdminSync(player)) + if (plugin.adminList.isAdminSync(player)) { fPlayer.setMuted(false); MUTED_PLAYERS.remove(player.getName()); @@ -58,7 +60,7 @@ public class Muter extends FreedomService { Player player = event.getPlayer(); - FPlayer fPlayer = plugin.pl.getPlayer(event.getPlayer()); + FPlayer fPlayer = plugin.playerList.getPlayer(event.getPlayer()); // Block commands if player is muted if (!fPlayer.isMuted()) @@ -67,7 +69,7 @@ public class Muter extends FreedomService } String message = event.getMessage(); - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { fPlayer.setMuted(false); return; @@ -103,7 +105,7 @@ public class Muter extends FreedomService public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); - FPlayer playerdata = plugin.pl.getPlayer(player); + FPlayer playerdata = plugin.playerList.getPlayer(player); if (MUTED_PLAYERS.contains(player.getName())) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Orbiter.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/Orbiter.java similarity index 76% rename from src/main/java/me/totalfreedom/totalfreedommod/Orbiter.java rename to src/main/java/me/totalfreedom/totalfreedommod/admin/module/Orbiter.java index d830199c..2c9e76ac 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Orbiter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/module/Orbiter.java @@ -1,5 +1,6 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.admin.module; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.player.FPlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -7,7 +8,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.util.Vector; -public class Orbiter extends FreedomService +public class Orbiter extends AbstractService { @Override public void onStart() @@ -24,7 +25,7 @@ public class Orbiter extends FreedomService { final Player player = event.getPlayer(); - final FPlayer fPlayer = plugin.pl.getPlayer(player); + final FPlayer fPlayer = plugin.playerList.getPlayer(player); if (!fPlayer.isOrbiting()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AntiNuke.java b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AntiNuke.java similarity index 87% rename from src/main/java/me/totalfreedom/totalfreedommod/AntiNuke.java rename to src/main/java/me/totalfreedom/totalfreedommod/anticheat/AntiNuke.java index ecefb7dd..214c4735 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AntiNuke.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AntiNuke.java @@ -1,5 +1,6 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.anticheat; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,7 +11,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; -public class AntiNuke extends FreedomService +public class AntiNuke extends AbstractService { @Override public void onStart() @@ -31,7 +32,7 @@ public class AntiNuke extends FreedomService } final Player player = event.getPlayer(); - final FPlayer fPlayer = plugin.pl.getPlayer(player); + final FPlayer fPlayer = plugin.playerList.getPlayer(player); if (fPlayer.incrementAndGetBlockDestroyCount() > ConfigEntry.NUKE_MONITOR_COUNT_BREAK.getInteger()) { @@ -54,7 +55,7 @@ public class AntiNuke extends FreedomService } Player player = event.getPlayer(); - FPlayer fPlayer = plugin.pl.getPlayer(player); + FPlayer fPlayer = plugin.playerList.getPlayer(player); if (fPlayer.incrementAndGetBlockPlaceCount() > ConfigEntry.NUKE_MONITOR_COUNT_PLACE.getInteger()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AntiSpam.java similarity index 86% rename from src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java rename to src/main/java/me/totalfreedom/totalfreedommod/anticheat/AntiSpam.java index 2e0a2bc0..cc38fb7d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AntiSpam.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AntiSpam.java @@ -1,5 +1,6 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.anticheat; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FSync; @@ -16,7 +17,7 @@ import org.bukkit.scheduler.BukkitTask; import java.util.HashMap; import java.util.Map; -public class AntiSpam extends FreedomService +public class AntiSpam extends AbstractService { public static final int MSG_PER_CYCLE = 8; @@ -49,7 +50,7 @@ public class AntiSpam extends FreedomService { for (Player player : server.getOnlinePlayers()) { - final FPlayer playerdata = plugin.pl.getPlayer(player); + final FPlayer playerdata = plugin.playerList.getPlayer(player); // TODO: Move each to their own section playerdata.resetMsgCount(); @@ -63,12 +64,12 @@ public class AntiSpam extends FreedomService { final Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { return; } - final FPlayer playerdata = plugin.pl.getPlayerSync(player); + final FPlayer playerdata = plugin.playerList.getPlayerSync(player); int count = muteCounts.getOrDefault(player, 0); int minutes = ConfigEntry.ANTISPAM_MINUTES.getInteger(); @@ -102,7 +103,7 @@ public class AntiSpam extends FreedomService { String command = event.getMessage(); final Player player = event.getPlayer(); - final FPlayer fPlayer = plugin.pl.getPlayer(player); + final FPlayer fPlayer = plugin.playerList.getPlayer(player); fPlayer.setLastCommand(command); if (fPlayer.allCommandsBlocked()) @@ -112,7 +113,7 @@ public class AntiSpam extends FreedomService return; } - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { return; } @@ -120,7 +121,7 @@ public class AntiSpam extends FreedomService if (fPlayer.incrementAndGetMsgCount() > MSG_PER_CYCLE) { FUtil.bcastMsg(player.getName() + " was automatically kicked for spamming commands.", ChatColor.RED); - plugin.ae.autoEject(player, "Kicked for spamming commands."); + plugin.autoEject.autoEject(player, "Kicked for spamming commands."); fPlayer.resetMsgCount(); event.setCancelled(true); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AutoEject.java similarity index 80% rename from src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java rename to src/main/java/me/totalfreedom/totalfreedommod/anticheat/AutoEject.java index 2e84035a..ef71b1d2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AutoEject.java @@ -1,11 +1,13 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.anticheat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; -import me.totalfreedom.totalfreedommod.banning.Ban; + +import me.totalfreedom.totalfreedommod.services.AbstractService; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; @@ -13,7 +15,7 @@ import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.entity.Player; -public class AutoEject extends FreedomService +public class AutoEject extends AbstractService { private final Map ejects = new HashMap<>(); // ip -> amount @@ -52,7 +54,7 @@ public class AutoEject extends FreedomService method = EjectMethod.STRIKE_THREE; } - FLog.info("AutoEject -> name: " + player.getName() + " - player ip: " + ip + " - method: " + method.toString()); + FLog.info("AutoEject -> name: " + player.getName() + " - player ip: " + ip + " - method: " + method); player.setOp(false); player.setGameMode(GameMode.SURVIVAL); @@ -68,7 +70,7 @@ public class AutoEject extends FreedomService FUtil.bcastMsg(ChatColor.RED + player.getName() + " has been banned for 5 minutes."); - plugin.bm.addBan(Ban.forPlayer(player, Bukkit.getConsoleSender(), expires, kickMessage)); + plugin.banManager.addBan(Ban.forPlayer(player, Bukkit.getConsoleSender(), expires, kickMessage)); player.kickPlayer(kickMessage); break; @@ -81,7 +83,7 @@ public class AutoEject extends FreedomService FUtil.bcastMsg(ChatColor.RED + player.getName() + " has been banned for 10 minutes."); - plugin.bm.addBan(Ban.forPlayer(player, Bukkit.getConsoleSender(), expires, kickMessage)); + plugin.banManager.addBan(Ban.forPlayer(player, Bukkit.getConsoleSender(), expires, kickMessage)); player.kickPlayer(kickMessage); break; } @@ -91,7 +93,7 @@ public class AutoEject extends FreedomService } case STRIKE_THREE: { - plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage)); + plugin.banManager.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage)); FUtil.bcastMsg(ChatColor.RED + player.getName() + " has been banned."); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AutoKick.java b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AutoKick.java similarity index 84% rename from src/main/java/me/totalfreedom/totalfreedommod/AutoKick.java rename to src/main/java/me/totalfreedom/totalfreedommod/anticheat/AutoKick.java index e15a424e..3a0aad5d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AutoKick.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/anticheat/AutoKick.java @@ -1,12 +1,13 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.anticheat; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -public class AutoKick extends FreedomService +public class AutoKick extends AbstractService { public static final long AUTOKICK_RATE = 10 * 20L; @@ -48,7 +49,7 @@ public class AutoKick extends FreedomService { // No type cast was provided, one has been supplied. final boolean doAwayKickCheck - = plugin.esb.isEnabled() + = plugin.essentialsBridge.isEnabled() && (((float)server.getOnlinePlayers().size() / (float)server.getMaxPlayers()) > autoKickThreshold); if (!doAwayKickCheck) @@ -58,7 +59,7 @@ public class AutoKick extends FreedomService for (Player player : server.getOnlinePlayers()) { - final long lastActivity = plugin.esb.getLastActivity(player.getName()); + final long lastActivity = plugin.essentialsBridge.getLastActivity(player.getName()); if (lastActivity > 0 && lastActivity + autoKickTicks < System.currentTimeMillis()) { player.kickPlayer("Automatically kicked by server for inactivity."); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java index 746ce186..5257b07a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java @@ -1,7 +1,7 @@ package me.totalfreedom.totalfreedommod.blocking; import java.util.List; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.ChatColor; @@ -17,7 +17,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; -public class BlockBlocker extends FreedomService +public class BlockBlocker extends AbstractService { @Override public void onStart() diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java index 06c5585f..9e5b48be 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EditBlocker.java @@ -1,6 +1,6 @@ package me.totalfreedom.totalfreedommod.blocking; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FSync; import org.bukkit.ChatColor; @@ -9,7 +9,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; -public class EditBlocker extends FreedomService +public class EditBlocker extends AbstractService { @Override public void onStart() @@ -24,13 +24,13 @@ public class EditBlocker extends FreedomService @EventHandler(priority = EventPriority.LOW) public void onBlockPlace(BlockPlaceEvent event) { - FPlayer fPlayer = plugin.pl.getPlayerSync(event.getPlayer()); + FPlayer fPlayer = plugin.playerList.getPlayerSync(event.getPlayer()); if (!fPlayer.isEditBlocked()) { return; } - if (plugin.al.isAdminSync(event.getPlayer())) + if (plugin.adminList.isAdminSync(event.getPlayer())) { fPlayer.setEditBlocked(false); return; @@ -43,13 +43,13 @@ public class EditBlocker extends FreedomService @EventHandler(priority = EventPriority.LOW) public void onBlockBreak(BlockBreakEvent event) { - FPlayer fPlayer = plugin.pl.getPlayerSync(event.getPlayer()); + FPlayer fPlayer = plugin.playerList.getPlayerSync(event.getPlayer()); if (!fPlayer.isEditBlocked()) { return; } - if (plugin.al.isAdminSync(event.getPlayer())) + if (plugin.adminList.isAdminSync(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 70ed87f3..1b0310b6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; @@ -38,7 +38,7 @@ import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerRespawnEvent; -public class EventBlocker extends FreedomService +public class EventBlocker extends AbstractService { /** * /@EventHandler(priority = EventPriority.HIGH) @@ -159,7 +159,7 @@ public class EventBlocker extends FreedomService @EventHandler(priority = EventPriority.NORMAL) public void onPlayerDropItem(PlayerDropItemEvent event) { - if (!plugin.al.isAdmin(event.getPlayer())) + if (!plugin.adminList.isAdmin(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 2e53f9de..660cc137 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java @@ -1,6 +1,6 @@ package me.totalfreedom.totalfreedommod.blocking; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.ChatColor; @@ -12,7 +12,7 @@ import org.bukkit.event.player.PlayerBedEnterEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; -public class InteractBlocker extends FreedomService +public class InteractBlocker extends AbstractService { @Override public void onStart() @@ -89,7 +89,7 @@ public class InteractBlocker extends FreedomService { case WATER_BUCKET: { - if (plugin.al.isAdmin(player) || ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) + if (plugin.adminList.isAdmin(player) || ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) { break; } @@ -102,7 +102,7 @@ public class InteractBlocker extends FreedomService case LAVA_BUCKET: { - if (plugin.al.isAdmin(player) || ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) + if (plugin.adminList.isAdmin(player) || ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) { break; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/MobBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/MobBlocker.java index 2dae585b..0a540641 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/MobBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/MobBlocker.java @@ -1,7 +1,7 @@ package me.totalfreedom.totalfreedommod.blocking; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import org.bukkit.attribute.Attributable; import org.bukkit.attribute.Attribute; @@ -19,7 +19,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntitySpawnEvent; -public class MobBlocker extends FreedomService +public class MobBlocker extends AbstractService { @Override public void onStart() diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java index 52d855c2..893198a3 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/PVPBlocker.java @@ -1,6 +1,6 @@ package me.totalfreedom.totalfreedommod.blocking; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.entity.Arrow; @@ -12,7 +12,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageByEntityEvent; -public class PVPBlocker extends FreedomService +public class PVPBlocker extends AbstractService { @Override public void onStart() @@ -70,24 +70,24 @@ public class PVPBlocker extends FreedomService } } - if (player != null & !plugin.al.isAdmin(player)) + if (player != null & !plugin.adminList.isAdmin(player)) { if (player.getGameMode() == GameMode.CREATIVE) { player.sendMessage(ChatColor.RED + "Creative PvP is not allowed!"); event.setCancelled(true); } - else if (plugin.esb.getEssentialsUser(player.getName()).isGodModeEnabled()) + else if (plugin.essentialsBridge.getEssentialsUser(player.getName()).isGodModeEnabled()) { player.sendMessage(ChatColor.RED + "God mode PvP is not allowed!"); event.setCancelled(true); } - else if (plugin.pl.getPlayer(target).isPvpBlocked()) + else if (plugin.playerList.getPlayer(target).isPvpBlocked()) { player.sendMessage(ChatColor.RED + target.getName() + " has PvP disabled!"); event.setCancelled(true); } - else if (plugin.pl.getPlayer(player).isPvpBlocked()) + else if (plugin.playerList.getPlayer(player).isPvpBlocked()) { player.sendMessage(ChatColor.RED + "You have PvP disabled!"); event.setCancelled(true); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/PotionBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/PotionBlocker.java index 1088e565..0e96ac63 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/PotionBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/PotionBlocker.java @@ -1,7 +1,7 @@ package me.totalfreedom.totalfreedommod.blocking; import java.util.Collection; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.entity.ThrownPotion; @@ -13,7 +13,7 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.projectiles.ProjectileSource; -public class PotionBlocker extends FreedomService +public class PotionBlocker extends AbstractService { public static final int POTION_BLOCK_RADIUS_SQUARED = 20 * 20; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java index 3fabc837..4d2ebcd4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/SignBlocker.java @@ -1,10 +1,8 @@ package me.totalfreedom.totalfreedommod.blocking; -import me.totalfreedom.totalfreedommod.FreedomService; -import net.minecraft.nbt.NBTTagCompound; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.ChatColor; import org.bukkit.Tag; -import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -15,7 +13,7 @@ import org.bukkit.inventory.ItemStack; //codebeat:disable[LOC,ABC] -public class SignBlocker extends FreedomService +public class SignBlocker extends AbstractService { @Override public void onStart() @@ -27,11 +25,13 @@ public class SignBlocker extends FreedomService { } + + //TODO: KYORI @EventHandler(priority = EventPriority.NORMAL) public void onPlayerPlaceBlock(BlockPlaceEvent event) { - final Player player = event.getPlayer(); + /*final Player player = event.getPlayer(); if (Tag.SIGNS.getValues().contains(event.getBlock().getType())) { ItemStack sign = event.getItemInHand(); @@ -48,7 +48,7 @@ public class SignBlocker extends FreedomService player.sendMessage(ChatColor.GRAY + "You are not allowed to place command signs."); event.setCancelled(true); } - } + }*/ } @EventHandler(priority = EventPriority.LOWEST) 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 2074f3e5..8fe34154 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlocker.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -22,7 +22,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.plugin.SimplePluginManager; -public class CommandBlocker extends FreedomService +public class CommandBlocker extends AbstractService { private final Pattern flagPattern = Pattern.compile("(:([0-9]){5,})"); @@ -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.adminList.isAdmin(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/CommandBlockerEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java index 8ccde03e..7753f2e9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java @@ -5,12 +5,8 @@ import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.spigotmc.SpigotConfig; - public class CommandBlockerEntry { - - private final CommandBlockerRank rank; private final CommandBlockerAction action; @@ -39,13 +35,14 @@ public class CommandBlockerEntry { if (action == CommandBlockerAction.BLOCK_AND_EJECT && sender instanceof Player) { - TotalFreedomMod.getPlugin().ae.autoEject((Player)sender, "You used a prohibited command: " + command); + TotalFreedomMod.getPlugin().autoEject.autoEject((Player)sender, "You used a prohibited command: " + command); FUtil.bcastMsg(sender.getName() + " was automatically kicked for using harmful commands.", ChatColor.RED); return; } if (action == CommandBlockerAction.BLOCK_UNKNOWN) { - sender.sendMessage(SpigotConfig.unknownCommandMessage); + String spigotUnknownCMD = TotalFreedomMod.getPlugin().getSpigotConfig().getString("messages.unknown-command"); + sender.sendMessage(spigotUnknownCMD == null || spigotUnknownCMD.isEmpty() ? "Unknown command. Type \"/help\" for help." : spigotUnknownCMD); return; } FUtil.playerMsg(sender, FUtil.colorize(message)); 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 c533b96e..a0b40e24 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java @@ -22,7 +22,7 @@ public enum CommandBlockerRank public static CommandBlockerRank fromSender(CommandSender sender) { - Admin admin = TotalFreedomMod.getPlugin().al.getAdmin(sender); + Admin admin = TotalFreedomMod.getPlugin().adminList.getAdmin(sender); if (admin != null) { if (admin.getRank() == Rank.SENIOR_ADMIN) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java index 479a30e1..6dab8321 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java @@ -8,7 +8,7 @@ import me.totalfreedom.bukkittelnet.api.TelnetCommandEvent; 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.services.AbstractService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; @@ -17,7 +17,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.plugin.Plugin; -public class BukkitTelnetBridge extends FreedomService +public class BukkitTelnetBridge extends AbstractService { private BukkitTelnet bukkitTelnetPlugin = null; @@ -42,7 +42,7 @@ public class BukkitTelnetBridge extends FreedomService return; } - final Admin admin = plugin.al.getEntryByIpFuzzy(ip); + final Admin admin = plugin.adminList.getEntryByIpFuzzy(ip); if (admin == null || !admin.isActive() || !admin.getRank().hasConsoleVariant()) { @@ -56,7 +56,7 @@ public class BukkitTelnetBridge extends FreedomService @EventHandler(priority = EventPriority.NORMAL) public void onTelnetCommand(TelnetCommandEvent event) { - if (plugin.cb.isCommandBlocked(event.getCommand(), event.getSender())) + if (plugin.commandBlocker.isCommandBlocked(event.getCommand(), event.getSender())) { event.setCancelled(true); } @@ -74,7 +74,7 @@ public class BukkitTelnetBridge extends FreedomService boolean isTelnetAdmin = false; boolean isSeniorAdmin = false; - final Admin admin = plugin.al.getAdmin(player); + final Admin admin = plugin.adminList.getAdmin(player); if (admin != null) { boolean active = admin.isActive(); @@ -88,9 +88,9 @@ public class BukkitTelnetBridge extends FreedomService playerTags.put("tfm.admin.isTelnetAdmin", isTelnetAdmin); playerTags.put("tfm.admin.isSeniorAdmin", isSeniorAdmin); - playerTags.put("tfm.playerdata.getTag", plugin.pl.getPlayer(player).getTag()); + playerTags.put("tfm.playerdata.getTag", plugin.playerList.getPlayer(player).getTag()); - playerTags.put("tfm.essentialsBridge.getNickname", plugin.esb.getNickname(player.getName())); + playerTags.put("tfm.essentialsBridge.getNickname", plugin.essentialsBridge.getNickname(player.getName())); } } @@ -126,7 +126,7 @@ public class BukkitTelnetBridge extends FreedomService { for (ClientSession session : telnet.appender.getSessions()) { - Admin admin = plugin.al.getEntryByName(session.getUserName().toLowerCase()); + Admin admin = plugin.adminList.getEntryByName(session.getUserName().toLowerCase()); if (admin != null && !admins.contains(admin)) { admins.add(admin); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java index 2653c8ef..e0f451bf 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java @@ -8,7 +8,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FLog; @@ -30,7 +30,7 @@ import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -public class CoreProtectBridge extends FreedomService +public class CoreProtectBridge extends AbstractService { public static Map> HISTORY_MAP = new HashMap<>(); private final List tables = Arrays.asList("co_sign", "co_session", "co_container", "co_block"); @@ -265,7 +265,7 @@ public class CoreProtectBridge extends FreedomService public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - PlayerData data = plugin.pl.getData(player); + PlayerData data = plugin.playerList.getData(player); Block block = event.getClickedBlock(); final CoreProtectAPI coreProtect = getCoreProtectAPI(); @@ -295,7 +295,7 @@ public class CoreProtectBridge extends FreedomService event.setCancelled(true); List lookup = coreProtect.blockLookup(block, -1); - if (!plugin.al.isAdmin(player)) + if (!plugin.adminList.isAdmin(player)) { cooldown.put(player.getName(), System.currentTimeMillis()); } @@ -371,7 +371,7 @@ public class CoreProtectBridge extends FreedomService lookup = coreProtect.blockLookup(block, -1); } - if (!plugin.al.isAdmin(player)) + if (!plugin.adminList.isAdmin(player)) { cooldown.put(player.getName(), System.currentTimeMillis()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java index d58f8761..9dd302ec 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java @@ -2,7 +2,7 @@ package me.totalfreedom.totalfreedommod.bridge; import com.earth2me.essentials.Essentials; import com.earth2me.essentials.User; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; @@ -20,7 +20,7 @@ import org.bukkit.inventory.InventoryHolder; import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; -public class EssentialsBridge extends FreedomService +public class EssentialsBridge extends AbstractService { private Essentials essentialsPlugin = null; @@ -139,6 +139,7 @@ public class EssentialsBridge extends FreedomService { FLog.severe(ex); } + } @EventHandler(priority = EventPriority.MONITOR) @@ -148,15 +149,15 @@ public class EssentialsBridge extends FreedomService Inventory inventory = event.getView().getTopInventory(); InventoryType inventoryType = inventory.getType(); Player player = (Player)event.getWhoClicked(); - FPlayer fPlayer = plugin.pl.getPlayer(player); + FPlayer fPlayer = plugin.playerList.getPlayer(player); if (inventoryType == InventoryType.PLAYER && fPlayer.isInvSee()) { final InventoryHolder inventoryHolder = inventory.getHolder(); if (inventoryHolder instanceof HumanEntity) { Player invOwner = (Player)inventoryHolder; - Rank recieverRank = plugin.rm.getRank(player); - Rank playerRank = plugin.rm.getRank(invOwner); + Rank recieverRank = plugin.rankManager.getRank(player); + Rank playerRank = plugin.rankManager.getRank(invOwner); if (playerRank.ordinal() >= recieverRank.ordinal() || !invOwner.isOnline()) { event.setCancelled(true); @@ -185,7 +186,7 @@ public class EssentialsBridge extends FreedomService Inventory inventory = event.getView().getTopInventory(); InventoryType inventoryType = inventory.getType(); Player player = (Player)event.getPlayer(); - FPlayer fPlayer = plugin.pl.getPlayer(player); + FPlayer fPlayer = plugin.playerList.getPlayer(player); if (inventoryType == InventoryType.PLAYER && fPlayer.isInvSee()) { fPlayer.setInvSee(false); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java index 88db08ab..44cc7ca9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/LibsDisguisesBridge.java @@ -3,12 +3,12 @@ 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.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; -public class LibsDisguisesBridge extends FreedomService +public class LibsDisguisesBridge extends AbstractService { private LibsDisguises libsDisguisesPlugin = null; @@ -61,7 +61,7 @@ public class LibsDisguisesBridge extends FreedomService { if (DisguiseAPI.isDisguised(player)) { - if (!admin && plugin.al.isAdmin(player)) + if (!admin && plugin.adminList.isAdmin(player)) { continue; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java index e315b15c..50470941 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java @@ -2,11 +2,11 @@ package me.totalfreedom.totalfreedommod.bridge; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.TFGuilds; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; -public class TFGuildsBridge extends FreedomService +public class TFGuildsBridge extends AbstractService { public boolean enabled = false; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java index 79ccaa6f..ded0412a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java @@ -3,12 +3,12 @@ package me.totalfreedom.totalfreedommod.bridge; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.bukkit.BukkitPlayer; import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; -public class WorldEditBridge extends FreedomService +public class WorldEditBridge extends AbstractService { // diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java index ea03b670..ff819f2c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java @@ -1,28 +1,26 @@ package me.totalfreedom.totalfreedommod.bridge; import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.util.Location; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.protection.regions.RegionContainer; import java.util.Map; import com.sk89q.worldguard.protection.regions.RegionQuery; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; -public class WorldGuardBridge extends FreedomService +public class WorldGuardBridge extends AbstractService { @Override public void onStart() { - plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld()); + plugin.worldRestrictions.protectWorld(plugin.worldManager.masterBuilderWorld.getWorld()); } @Override diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandFailException.java b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandFailException.java deleted file mode 100644 index 9792fd48..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandFailException.java +++ /dev/null @@ -1,13 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -public class CommandFailException extends RuntimeException -{ - - private static final long serialVersionUID = -92333791173123L; - - public CommandFailException(String message) - { - super(message); - } - -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java index ed3acd5f..a0a98918 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/CommandLoader.java @@ -1,85 +1,83 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.services.AbstractService; +import me.totalfreedom.totalfreedommod.util.FLog; +import org.reflections.Reflections; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; -import me.totalfreedom.totalfreedommod.FreedomService; -import me.totalfreedom.totalfreedommod.util.FLog; -import org.reflections.Reflections; -public class CommandLoader extends FreedomService -{ +public class CommandLoader extends AbstractService { private final List commands; - public CommandLoader() - { + public CommandLoader() { commands = new ArrayList<>(); } @Override - public void onStart() - { + public void onStart() { } @Override - public void onStop() - { + public void onStop() { } - public void add(FreedomCommand command) - { - commands.add(command); - command.register(); + public void add(Class command) { + FreedomCommand cmd = null; + try { + Constructor constructor = command.getDeclaredConstructor(); + constructor.setAccessible(true); + cmd = (FreedomCommand) constructor.newInstance(); + } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + + + if (cmd != null) { + commands.add(cmd); + cmd.register(); + } } - public FreedomCommand getByName(String name) - { - for (FreedomCommand command : commands) - { - if (name.equals(command.getName())) - { + public FreedomCommand getByName(String name) { + for (FreedomCommand command : commands) { + if (name.equals(command.getName())) { return command; } } return null; } - public boolean isAlias(String alias) - { - for (FreedomCommand command : commands) - { - if (Arrays.asList(command.getAliases().split(",")).contains(alias)) - { + public boolean isAlias(String alias) { + for (FreedomCommand command : commands) { + if (Arrays.asList(command.getAliases().split(",")).contains(alias)) { return true; } } return false; } - public void loadCommands() - { + public void loadCommands() { Reflections commandDir = new Reflections("me.totalfreedom.totalfreedommod.command"); Set> commandClasses = commandDir.getSubTypesOf(FreedomCommand.class); - for (Class commandClass : commandClasses) - { - try - { - add(commandClass.newInstance()); - } - catch (InstantiationException | IllegalAccessException | ExceptionInInitializerError ex) - { - FLog.warning("Failed to register command: /" + commandClass.getSimpleName().replace("Command_", "")); + for (Class commandClass : commandClasses) { + try { + add(commandClass); + } catch (ExceptionInInitializerError ex) { + FLog.warning("Failed to register command: /" + commandClass.getSimpleName().replace("CMD", "")); } } FLog.info("Loaded " + commands.size() + " commands"); } - public List getCommands() - { + public List getCommands() { return commands; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java deleted file mode 100644 index e0e49a7b..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_announce.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -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.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Make an announcement anonymously to operators.", usage = "/ ") -public class Command_announce extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { - return false; - } - - plugin.an.announce(StringUtils.join(args, " ")); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java deleted file mode 100644 index b4de03ae..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autoclear.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, 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 -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - return false; - } - - boolean enabled = plugin.lp.CLEAR_ON_JOIN.contains(args[0]); - - if (enabled) - { - plugin.lp.CLEAR_ON_JOIN.remove(args[0]); - } - else - { - plugin.lp.CLEAR_ON_JOIN.add(args[0]); - } - - msg(args[0] + " will " + (enabled ? "no longer" : "now") + " have their inventory cleared when they join."); - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java deleted file mode 100644 index 26bbec56..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_autotp.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Toggle whether or not a player is automatically teleported when they join", usage = "/ ") -public class Command_autotp extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - return false; - } - - boolean enabled = plugin.lp.TELEPORT_ON_JOIN.contains(args[0]); - - if (enabled) - { - plugin.lp.TELEPORT_ON_JOIN.remove(args[0]); - } - else - { - plugin.lp.TELEPORT_ON_JOIN.add(args[0]); - } - - msg(args[0] + " will " + (enabled ? "no longer" : "now") + " be automatically teleported when they join."); - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java deleted file mode 100644 index 72ae69d4..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banlist.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows all banned player names. Admins may optionally use 'purge' to clear the list.", usage = "/ [purge]") -public class Command_banlist extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0) - { - if (args[0].equalsIgnoreCase("purge")) - { - checkRank(Rank.SENIOR_ADMIN); - - FUtil.adminAction(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_cleanchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java deleted file mode 100644 index 6bcf50ed..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Clears the chat.", usage = "/", aliases = "cc") -public class Command_cleanchat extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { - for (int i = 0; i < 100; i++) - { - msg(player, ""); - } - } - } - FUtil.adminAction(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 deleted file mode 100644 index 205ceffb..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleardiscordqueue.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) -@CommandParameters(description = "Clear the discord message queue.", usage = "/") -public class Command_cleardiscordqueue extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - plugin.dc.clearQueue(); - msg("Cleared the discord message queue."); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clownfish.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clownfish.java deleted file mode 100644 index 3f2caaf1..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clownfish.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 clown fish", usage = "/") -public class Command_clownfish 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.CLOWN_FISH) && (!plugin.lp.CLOWNFISH_TOGGLE.contains(playerSender.getName()))) - { - playerSender.getInventory().addItem(plugin.sh.getClownFish()); - msg("You have been given a Clown Fish", ChatColor.GREEN); - } - else - { - msg("You do not own a Clown Fish or an admin has toggled your ability to use it. Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java deleted file mode 100644 index 4d31ca04..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cmdspy.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.rank.Rank; -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 = "Spy on commands", usage = "/", aliases = "commandspy") -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(); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java deleted file mode 100644 index cc90c8f2..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_denick.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Essentials Interface Command - Remove the nickname of all players on the server.", usage = "/") -public class Command_denick extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.esb.isEnabled()) - { - msg("Essentials is not enabled on this server."); - return true; - } - - FUtil.adminAction(sender.getName(), "Removing all nicknames", false); - - for (Player player : server.getOnlinePlayers()) - { - plugin.esb.setNickname(player.getName(), null); - } - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java deleted file mode 100644 index 9a035fef..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_disguisetoggle.java +++ /dev/null @@ -1,38 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Toggle LibsDisguises for everyone online.", usage = "/", aliases = "dtoggle") -public class Command_disguisetoggle extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.ldb.isEnabled()) - { - msg("LibsDisguises is not enabled."); - return true; - } - - FUtil.adminAction(sender.getName(), (plugin.ldb.isDisguisesEnabled() ? "Disabling" : "Enabling") + " disguises", false); - - if (plugin.ldb.isDisguisesEnabled()) - { - plugin.ldb.undisguiseAll(true); - plugin.ldb.setDisguisesEnabled(false); - } - else - { - plugin.ldb.setDisguisesEnabled(true); - } - - msg("Disguises are now " + (plugin.ldb.isDisguisesEnabled() ? "enabled." : "disabled.")); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_end.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_end.java deleted file mode 100644 index 083c0dac..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_end.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Go to \"The End\".", usage = "/") -public class Command_end extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - plugin.wm.gotoWorld(playerSender, server.getWorlds().get(0).getName() + "_the_end"); - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java deleted file mode 100644 index b1f4f767..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explosivearrows.java +++ /dev/null @@ -1,31 +0,0 @@ -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.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Make arrows explode", usage = "/", aliases = "ea") -public class Command_explosivearrows extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - boolean onList = plugin.it.explosivePlayers.contains(playerSender); - if (onList) - { - plugin.it.explosivePlayers.remove(playerSender); - msg("You no longer have explosive arrows", ChatColor.RED); - } - else - { - plugin.it.explosivePlayers.add(playerSender); - msg("You now have explosive arrows", ChatColor.GREEN); - } - - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java deleted file mode 100644 index 36ecb18e..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_findip.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -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.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Shows all IPs registered to a player", usage = "/ ", aliases = "showip,listip") -public class Command_findip extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { - return false; - } - - final Player player = getPlayer(args[0]); - - if (player == null) - { - - msg(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - - msg("Player IPs: " + StringUtils.join(plugin.pl.getData(player).getIps(), ", ")); - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fireball.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fireball.java deleted file mode 100644 index e5366424..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fireball.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 fire ball", usage = "/") -public class Command_fireball 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.FIRE_BALL)) - { - playerSender.getInventory().addItem(plugin.sh.getFireBall()); - msg("You have been given a Fire Ball", ChatColor.GREEN); - } - else - { - msg("You do not own a Fire Ball! Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_flatlands.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_flatlands.java deleted file mode 100644 index e768bc7f..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_flatlands.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Go to the Flatlands.", usage = "/") -public class Command_flatlands extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (ConfigEntry.FLATLANDS_GENERATE.getBoolean()) - { - plugin.wm.flatlands.sendToWorld(playerSender); - } - else - { - msg("Flatlands is currently disabled in the TotalFreedomMod configuration."); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java deleted file mode 100644 index dd4f3d77..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_forcekill.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Forcefully kill someone - for those who REALLY need to die.", usage = "/ ") -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) - { - playerSender.setHealth(0); - return true; - } - - if (args.length < 1) - { - return false; - } - - final Player player = getPlayer(args[0]); - if (player == null) - { - msg(PLAYER_NOT_FOUND); - return true; - } - - player.setHealth(0); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_grapplinghook.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_grapplinghook.java deleted file mode 100644 index 5ee72d2e..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_grapplinghook.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 grappling hook", usage = "/") -public class Command_grapplinghook 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.GRAPPLING_HOOK)) - { - playerSender.getInventory().addItem(plugin.sh.getGrapplingHook()); - msg("You have been given a Grappling Hook", ChatColor.GREEN); - } - else - { - msg("You do not own a Grappling Hook! Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java deleted file mode 100644 index 6d00f402..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_indefban.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -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 indefinite ban list.", usage = "/ ", aliases = "ib") -public class Command_indefban extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { - return false; - } - - if (!args[0].equalsIgnoreCase("reload")) - { - return false; - } - - msg("Reloading the indefinite ban list..."); - plugin.im.onStop(); - plugin.im.onStart(); - msg("Reloaded the indefinite ban list."); - 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 deleted file mode 100644 index 967eb64c..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_jumppads.java +++ /dev/null @@ -1,116 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.fun.Jumppads; -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.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Toggles jumppads on/off, view the status of jumppads, or make them sideways.", usage = "/ >", aliases = "launchpads,jp") -public class Command_jumppads extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0 || args.length > 2) - { - return false; - } - - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("info")) - { - msg("Jumppads: " + (plugin.jp.players.get(playerSender).isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE); - msg("Sideways: " + (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE); - return true; - } - - if (args[0].equalsIgnoreCase("off")) - { - if (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.OFF) - { - msg("Your jumppads are already disabled."); - return true; - } - msg("Disabled your jumppads.", ChatColor.GRAY); - plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.OFF); - } - else - { - if (plugin.jp.players.get(playerSender) != Jumppads.JumpPadMode.OFF) - { - msg("Your jumppads are already enabled."); - return true; - } - msg("Enabled your jumpppads.", ChatColor.GRAY); - plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.MADGEEK); - } - } - else - { - if (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.OFF) - { - msg("Your jumppads are currently disabled, please enable them before changing jumppads settings."); - return true; - } - - if (args[0].equalsIgnoreCase("sideways")) - { - if ("off".equals(args[1])) - { - if (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.MADGEEK) - { - msg("Your jumppads are already set to normal mode."); - return true; - } - msg("Set Jumppads mode to: Normal", ChatColor.GRAY); - plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.MADGEEK); - } - else - { - if (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS) - { - msg("Your jumppads are already set to normal and sideways mode."); - return true; - } - msg("Set Jumppads mode to: Normal and Sideways", ChatColor.GRAY); - plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS); - } - } - else - { - return false; - } - } - return true; - } - - @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { - return Collections.emptyList(); - } - if (args.length == 1) - { - return Arrays.asList("on", "off", "info", "sideways"); - } - else if (args.length == 2) - { - if (args[0].equals("sideways")) - { - return Arrays.asList("on", "off"); - } - } - - return Collections.emptyList(); - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lightningrod.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lightningrod.java deleted file mode 100644 index ee2ffd8a..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lightningrod.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 lightning rod", usage = "/") -public class Command_lightningrod 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.LIGHTNING_ROD)) - { - playerSender.getInventory().addItem(plugin.sh.getLightningRod()); - msg("You have been given a Lightning Rod", ChatColor.GREEN); - } - else - { - msg("You do not own a Lightning Rod! Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java deleted file mode 100644 index e95d29b8..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_logs.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode; -import me.totalfreedom.totalfreedommod.rank.Rank; -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 = "Register your connection with the TFM logviewer.", usage = "/ [off]") -public class Command_logs extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - LogsRegistrationMode mode = LogsRegistrationMode.ADD; - if (args.length == 1 && "off".equalsIgnoreCase(args[0])) - { - mode = LogsRegistrationMode.DELETE; - } - plugin.lv.updateLogsRegistration(sender, playerSender, mode); - - 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 deleted file mode 100644 index 4ba7ab88..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_modifyitem.java +++ /dev/null @@ -1,266 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.List; -import java.util.SplittableRandom; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -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_17_R1.inventory.CraftItemStack; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.potion.PotionEffectType; - -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Modify the current item you are holding.", usage = "/ | lore | enchant | potion | attribute | clear>", aliases = "mi") -public class Command_modifyitem extends FreedomCommand -{ - - @SuppressWarnings("deprecation") - @Override - public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { - return false; - } - - ItemStack item = playerSender.getInventory().getItemInMainHand(); - if (item.getType().equals(Material.AIR)) - { - msg("You must have an item in your hand!"); - return true; - } - - if (args[0].equalsIgnoreCase("clear")) - { - item.setItemMeta(null); - playerSender.getInventory().setItemInMainHand(item); - return true; - } - - if (args.length < 2) - { - return false; - } - - ItemMeta meta = item.getItemMeta(); - assert meta != null; - switch (args[0]) - { - case "name": - String name = FUtil.colorize(StringUtils.join(args, " ", 1, args.length)); - meta.setDisplayName(name); - item.setItemMeta(meta); - break; - - case "lore": - List lore = new ArrayList<>(); - for (String line : StringUtils.join(args, " ", 1, args.length).split("\\\\n")) - { - lore.add(FUtil.colorize(line)); - } - meta.setLore(lore); - item.setItemMeta(meta); - break; - - case "enchant": - if (args.length < 3) - { - return false; - } - - Enchantment enchantment = Enchantment.getByName(args[1].toUpperCase()); - if (enchantment == null) - { - msg("Invalid enchantment. Please run /enchant list for a list of valid enchantments."); - return true; - } - - int level; - try - { - level = Integer.parseInt(args[2]); - } - catch (NumberFormatException ex) - { - msg("The level specified is not a valid integer."); - return true; - } - meta.addEnchant(enchantment, level, true); - item.setItemMeta(meta); - break; - - case "potion": - { - if (!item.getType().equals(Material.POTION) & !item.getType().equals(Material.SPLASH_POTION) & !item.getType().equals(Material.LINGERING_POTION) & !item.getType().equals(Material.TIPPED_ARROW)) - { - msg("This item can not have potion effects added to it."); - return true; - } - - if (args.length < 4) - { - return false; - } - - PotionEffectType type = PotionEffectType.getByName(args[1]); - if (type == null) - { - msg("Invalid potion effect. Please run /potion list for a list of valid potion effects."); - return true; - } - - int duration; - try - { - duration = Math.max(1, Math.min(1000000, Integer.parseInt(args[2]))); - } - catch (NumberFormatException ex) - { - msg("The duration specified is not a valid integer."); - return true; - } - - int amplifier; - try - { - amplifier = Math.max(1, Math.min(256, Integer.parseInt(args[2]))); - } - catch (NumberFormatException ex) - { - msg("The amplifier specified is not a valid integer."); - return true; - } - PotionMeta potionMeta = (PotionMeta)meta; - potionMeta.addCustomEffect(type.createEffect(duration, amplifier), true); - item.setItemMeta(potionMeta); - break; - } - - case "attribute": - if (args.length < 3) - { - return false; - } - net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); - NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound(); - NBTTagList modifiers = getAttributeList(nmsStack); - NBTTagCompound cmpnd = new NBTTagCompound(); - Attribute attribute = Attribute.getByName(args[1].toUpperCase()); - if (attribute == null) - { - msg("Invalid attribute. Please run /attributelist for a list of valid attributes."); - return true; - } - cmpnd.setString("AttributeName", attribute.getAttribute()); - cmpnd.setString("Name", attribute.getAttribute()); - double amount; - try - { - amount = Double.parseDouble(args[2]); - } - catch (NumberFormatException ex) - { - msg("The amount specified is not a valid integer."); - return true; - } - if (Double.isNaN(amount)) - { - msg("The amount specified is illegal."); - return true; - } - cmpnd.setDouble("Amount", amount); - cmpnd.setInt("Operation", 0); - SplittableRandom random = new SplittableRandom(); - cmpnd.setIntArray("UUID", new int[] - { - random.nextInt(), - random.nextInt(), - random.nextInt(), - random.nextInt() - }); - cmpnd.setString("Slot", "mainhand"); - modifiers.add(cmpnd); - assert compound != null; - compound.set("AttributeModifiers", modifiers); - nmsStack.setTag(compound); - item = CraftItemStack.asBukkitCopy(nmsStack); - break; - default: - return false; - } - playerSender.getInventory().setItemInMainHand(item); - return true; - } - - private NBTTagList getAttributeList(net.minecraft.world.item.ItemStack stack) - { - if (stack.getTag() == null) - { - stack.setTag(new NBTTagCompound()); - } - NBTTagList attr = stack.getTag().getList("AttributeModifiers", 10); - if (attr == null) - { - stack.getTag().set("AttributeModifiers", new NBTTagList()); - } - return stack.getTag().getList("AttributeModifiers", 10); - } - - private enum Attribute - { - 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.armor_toughmess"), - GENERIC_LUCK("GENERIC_LUCK", "generic.luck"), - 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; - - Attribute(String name, String attribute) - { - this.name = name; - this.attribute = attribute; - } - - public static Attribute getByName(String name) - { - for (Attribute attr : Attribute.values()) - { - if (attr.toString().toUpperCase().equals(name)) - { - return attr; - } - } - return null; - } - - public String getAttribute() - { - return attribute; - } - - @Override - public String toString() - { - return name; - } - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java deleted file mode 100644 index 0bd209ea..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -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 = "Check your personal data", usage = "/") -public class Command_myinfo extends FreedomCommand -{ - @Override - public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - msg(plugin.pl.getData(playerSender).toString()); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_namehistory.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_namehistory.java deleted file mode 100644 index 1bc2033c..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_namehistory.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.History; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Check the name history of a specified player.", usage = "/ ", aliases = "nh") -public class Command_namehistory extends FreedomCommand -{ - @Override - public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { - return false; - } - History.reportHistory(sender, args[0]); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java deleted file mode 100644 index 6867fb97..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Go to the Nether.", usage = "/", aliases = "hell") -public class Command_nether extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - plugin.wm.gotoWorld(playerSender, server.getWorlds().get(0).getName() + "_nether"); - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_reactionbar.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_reactionbar.java deleted file mode 100644 index 6aa9ab96..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_reactionbar.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Forcefully start a reaction", usage = "/") -public class Command_reactionbar extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!FUtil.isDeveloper(playerSender)) - { - return noPerms(); - } - - plugin.sh.forceStartReaction(); - msg("Started a reaction."); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java deleted file mode 100644 index b4e02d6f..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.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 rideable ender pearl", usage = "/") -public class Command_rideablepearl 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.RIDEABLE_PEARL)) - { - playerSender.getInventory().addItem(plugin.sh.getRideablePearl()); - msg("You have been given a Rideable Ender Pearl", ChatColor.GREEN); - } - else - { - msg("You do not own a Rideable Ender Pearl! Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java deleted file mode 100644 index 6f3a3f35..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -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.OP, source = SourceType.BOTH) -@CommandParameters(description = "Check the status of the server, including opped players, admins, etc.", usage = "/", aliases = "ss") -public class Command_serverstats extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - msg("-==" + ConfigEntry.SERVER_NAME.getString() + " server stats==-", ChatColor.GOLD); - msg("Total opped players: " + server.getOperators().size(), ChatColor.RED); - msg("Total admins: " + plugin.al.getAllAdmins().size() + " (" + plugin.al.getActiveAdmins().size() + " active)", ChatColor.BLUE); - int bans = plugin.im.getIndefBans().size(); - int nameBans = plugin.im.getNameBanCount(); - int uuidBans = plugin.im.getUuidBanCount(); - int ipBans = plugin.im.getIpBanCount(); - msg("Total indefinite ban entries: " + bans + " (" + nameBans + " name bans, " + uuidBans + " UUID bans, and " + ipBans + " IP bans)", ChatColor.GREEN); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java deleted file mode 100644 index bfe9511e..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -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.BOTH) -@CommandParameters(description = "Sets everyone's WorldEdit block modification limit to the default limit or to a custom limit.", usage = "/ [limit]", aliases = "setl,swl") -public class Command_setlimit extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - int amount = plugin.web.getDefaultLimit(); - if (args.length > 0) - { - try - { - amount = Math.max(-1, Math.min(plugin.web.getMaxLimit(), Integer.parseInt(args[0]))); - } - catch (NumberFormatException ex) - { - msg("Invalid number: " + args[0], ChatColor.RED); - return true; - } - } - boolean success = false; - for (final Player player : server.getOnlinePlayers()) - { - try - { - plugin.web.setLimit(player, amount); - success = true; - } - catch (NoClassDefFoundError | NullPointerException ex) - { - msg("WorldEdit is not enabled on this server."); - success = false; - } - } - if (success) - { - FUtil.adminAction(sender.getName(), "Setting everyone's WorldEdit block modification limit to " + amount + ".", true); - } - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java deleted file mode 100644 index 89c6381a..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -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.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Open the shop GUI", usage = "/", aliases = "sh") -public class Command_shop extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!ConfigEntry.SHOP_ENABLED.getBoolean()) - { - msg("The shop is currently disabled!", ChatColor.RED); - return true; - } - playerSender.openInventory(plugin.sh.generateShopGUI(plugin.pl.getData(playerSender))); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java deleted file mode 100644 index 7a1514f5..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.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 stacking potato", usage = "/") -public class Command_stackingpotato 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.STACKING_POTATO)) - { - playerSender.getInventory().addItem(plugin.sh.getStackingPotato()); - msg("You have been given a Stacking Potato", ChatColor.GREEN); - } - else - { - msg("You do not own the Stacking Potato! Purchase one from the shop.", ChatColor.RED); - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java deleted file mode 100644 index a4f05a39..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Toggle whether or not a player has the ability to use clownfish", usage = "/ ", aliases = "togglecf") -public class Command_toggleclownfish extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - return false; - } - - boolean enabled = plugin.lp.CLOWNFISH_TOGGLE.contains(args[0]); - - if (enabled) - { - plugin.lp.CLOWNFISH_TOGGLE.remove(args[0]); - } - else - { - plugin.lp.CLOWNFISH_TOGGLE.add(args[0]); - } - - msg(args[0] + " will " + (enabled ? "now" : "no longer") + " have the ability to use clownfish."); - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java deleted file mode 100644 index 69397339..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; -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 = "Toggle the display of Discord messages in-game.", usage = "/", aliases = "tdiscord,tdisc") -public class Command_togglediscord extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - PlayerData data = plugin.pl.getData(playerSender); - data.setDisplayDiscord(!data.doesDisplayDiscord()); - plugin.pl.save(data); - msg("Discord messages will " + (data.doesDisplayDiscord() ? "now" : "no longer") + " be shown."); - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_undisguiseall.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_undisguiseall.java deleted file mode 100644 index ba510c73..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_undisguiseall.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Undisguise all online players on the server", usage = "/ [-a]", aliases = "uall") -public class Command_undisguiseall extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.ldb.isEnabled()) - { - msg("LibsDisguises is not enabled."); - return true; - } - - boolean admins = false; - - if (args.length > 0 && args[0].equalsIgnoreCase("-a")) - { - admins = true; - } - - FUtil.adminAction(sender.getName(), "Undisguising all " + (admins ? "players" : "non-admins"), true); - - plugin.ldb.undisguiseAll(admins); - - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_verify.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_verify.java deleted file mode 100644 index fb33dca6..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_verify.java +++ /dev/null @@ -1,101 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.discord.Discord; -import me.totalfreedom.totalfreedommod.player.FPlayer; -import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; -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.IMPOSTOR, source = SourceType.BOTH) -@CommandParameters(description = "Sends a verification code to the player, or the player can input the sent code. Admins can manually verify a player impostor.", usage = "/ >") -public class Command_verify extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - boolean verificationEnabled = ConfigEntry.DISCORD_VERIFICATION.getBoolean(); - if (!plugin.dc.enabled) - { - msg("The Discord verification system is currently disabled.", ChatColor.RED); - return true; - } - - if (!verificationEnabled) - { - msg("The Discord verification system is currently disabled.", ChatColor.RED); - return true; - } - - if (senderIsConsole) - { - msg("/manuallyverify ", ChatColor.WHITE); - return true; - } - - if (!plugin.pl.IsImpostor(playerSender)) - { - msg("You are not an impostor, therefore you do not need to verify.", ChatColor.RED); - return true; - } - - PlayerData playerData = plugin.pl.getData(playerSender); - String discordId = playerData.getDiscordID(); - - if (playerData.getDiscordID() == null) - { - msg("You do not have a Discord account linked to your Minecraft account, please verify the manual way.", ChatColor.RED); - return true; - } - - if (args.length == 0) - { - String code = plugin.dc.generateCode(10); - plugin.dc.addVerificationCode(code, playerData); - plugin.dc.getUser(discordId).openPrivateChannel().complete().sendMessage("A user with the IP `" + FUtil.getIp(playerSender) + "` has sent a verification request. Please run the following in-game command: `/verify " + code + "`").complete(); - msg("A verification code has been sent to your account, please copy the code and run /verify ", ChatColor.GREEN); - return true; - } - - String code = args[0]; - String backupCode = null; - - if (plugin.pl.IsImpostor(playerSender)) - { - PlayerData mapPlayer = plugin.dc.getVerificationCodes().get(code); - if (mapPlayer == null) - { - if (!playerData.getBackupCodes().contains(Discord.getMD5(code))) - { - msg("You have entered an invalid verification code", ChatColor.RED); - return true; - } - else - { - backupCode = Discord.getMD5(code); - } - } - else - { - plugin.dc.removeVerificationCode(code); - } - - final FPlayer fPlayer = plugin.pl.getPlayer(playerSender); - if (fPlayer.getFreezeData().isFrozen()) - { - fPlayer.getFreezeData().setFrozen(false); - msg("You have been unfrozen."); - } - FUtil.bcastMsg(playerSender.getName() + " has verified!", ChatColor.GOLD); - playerSender.setOp(true); - plugin.pl.verify(playerSender, backupCode); - return true; - } - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCMD.java new file mode 100644 index 00000000..0e74bf9f --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCMD.java @@ -0,0 +1,25 @@ +package me.totalfreedom.totalfreedommod.command; + +import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import org.bukkit.command.Command; + +public abstract class FreedomCMD extends Command +{ + protected final TotalFreedomMod plugin = TotalFreedomMod.plugin(); + + private final CommandParameters parameters; + private final CommandPermissions permissions; + + public FreedomCMD() { + super(""); + + this.parameters = this.getClass().getDeclaredAnnotation(CommandParameters.class); + this.permissions = this.getClass().getDeclaredAnnotation(CommandPermissions.class); + + this.setName(parameters.name()); + this.setLabel(parameters.name()); + } + +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java b/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java index 8d2dd093..bf2cde53 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java @@ -1,16 +1,12 @@ package me.totalfreedom.totalfreedommod.command; import com.google.common.collect.Lists; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Timer; -import java.util.TimerTask; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.admin.Admin; +import me.totalfreedom.totalfreedommod.command.exception.CommandFailException; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -18,20 +14,15 @@ import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Server; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandMap; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.command.PluginCommand; -import org.bukkit.command.TabCompleter; +import org.bukkit.command.*; import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; import org.jetbrains.annotations.NotNull; -public abstract class FreedomCommand implements CommandExecutor, TabCompleter -{ - public static final String COMMAND_PREFIX = "Command_"; +import java.lang.reflect.Field; +import java.util.*; + +public abstract class FreedomCommand implements CommandExecutor, TabCompleter { public static final String YOU_ARE_OP = ChatColor.YELLOW + "You are now op!"; public static final String YOU_ARE_NOT_OP = ChatColor.YELLOW + "You are no longer op!"; public static final String PLAYER_NOT_FOUND = ChatColor.GRAY + "Player not found!"; @@ -55,11 +46,10 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter private final CommandPermissions perms; protected CommandSender sender; - FreedomCommand() - { - params = getClass().getAnnotation(CommandParameters.class); - perms = getClass().getAnnotation(CommandPermissions.class); - this.name = getClass().getSimpleName().replace(COMMAND_PREFIX, "").toLowerCase(); + public FreedomCommand() { + this.params = getClass().getAnnotation(CommandParameters.class); + this.perms = getClass().getAnnotation(CommandPermissions.class); + this.name = params.name(); this.description = params.description(); this.usage = params.usage(); this.aliases = params.aliases(); @@ -69,148 +59,109 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter this.cooldown = perms.cooldown(); } - public static CommandMap getCommandMap() - { - if (commandMap == null) - { - try - { + public static CommandMap getCommandMap() { + if (commandMap == null) { + try { final Field f = Bukkit.getServer().getPluginManager().getClass().getDeclaredField("commandMap"); f.setAccessible(true); - commandMap = (CommandMap)f.get(Bukkit.getServer().getPluginManager()); - } - catch (Exception e) - { + commandMap = (CommandMap) f.get(Bukkit.getServer().getPluginManager()); + } catch (Exception e) { e.printStackTrace(); } } return commandMap; } - public static FreedomCommand getFrom(Command command) - { - try - { - return (FreedomCommand)(((PluginCommand)command).getExecutor()); - } - catch (Exception ex) - { + public static FreedomCommand getFrom(Command command) { + try { + return (FreedomCommand) (((PluginCommand) command).getExecutor()); + } catch (Exception ex) { return null; } } - public static String getCommandPrefix() - { - return COMMAND_PREFIX; - } - - public void register() - { + public void register() { FCommand cmd = new FCommand(this.name); - if (this.aliases != null) - { + if (this.aliases != null) { cmd.setAliases(Arrays.asList(StringUtils.split(this.aliases, ","))); } - if (this.description != null) - { + if (this.description != null) { cmd.setDescription(this.description); } - if (this.usage != null) - { + if (this.usage != null) { cmd.setUsage(this.usage); } getCommandMap().register("totalfreedommod", cmd); cmd.setExecutor(this); } - protected void msg(CommandSender sender, String message) - { + protected void msg(CommandSender sender, String message) { sender.sendMessage(ChatColor.GRAY + message); } - protected void msg(Player player, String message) - { + protected void msg(Player player, String message) { player.sendMessage(ChatColor.GRAY + message); } - protected void msg(Player player, String message, ChatColor color) - { + protected void msg(Player player, String message, ChatColor color) { player.sendMessage(color + message); } - protected void msg(String message) - { + protected void msg(String message) { msg(sender, message); } - protected void msg(String message, ChatColor color) - { + protected void msg(String message, ChatColor color) { msg(color + message); } - protected void msg(String message, net.md_5.bungee.api.ChatColor color) - { + protected void msg(String message, net.md_5.bungee.api.ChatColor color) { msg(color + message); } - protected boolean isAdmin(Player player) - { - return plugin.al.isAdmin(player); + protected boolean isAdmin(Player player) { + return plugin.adminList.isAdmin(player); } - protected boolean isAdmin(CommandSender sender) - { - return plugin.al.isAdmin(sender); + protected boolean isAdmin(CommandSender sender) { + return plugin.adminList.isAdmin(sender); } - protected void checkConsole() - { - if (!isConsole()) - { + protected void checkConsole() { + if (!isConsole()) { throw new CommandFailException(ONLY_CONSOLE); } } - protected void checkPlayer() - { - if (isConsole()) - { + protected void checkPlayer() { + if (isConsole()) { throw new CommandFailException(ONLY_IN_GAME); } } - protected void checkRank(Rank rank) - { - if (!plugin.rm.getRank(sender).isAtLeast(rank)) - { + protected void checkRank(Rank rank) { + if (!plugin.rankManager.getRank(sender).isAtLeast(rank)) { noPerms(); } } - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String commandLabel, @NotNull String[] args) - { - try - { - boolean run = run(sender, sender instanceof ConsoleCommandSender ? null : (Player)sender, cmd, commandLabel, args, sender instanceof ConsoleCommandSender); - if (!run) - { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String commandLabel, @NotNull String[] args) { + try { + boolean run = run(sender, sender instanceof ConsoleCommandSender ? null : (Player) sender, cmd, commandLabel, args, sender instanceof ConsoleCommandSender); + if (!run) { msg(ChatColor.WHITE + cmd.getUsage().replace("", cmd.getLabel())); return true; } - } - catch (CommandFailException ex) - { + } catch (CommandFailException ex) { msg(ChatColor.RED + ex.getMessage()); } return false; } @NotNull - public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) - { + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { List options = getTabCompleteOptions(sender, command, alias, args); - if (options == null) - { + if (options == null) { return new ArrayList<>(); } return StringUtil.copyPartialMatches(args[args.length - 1], options, Lists.newArrayList()); @@ -218,136 +169,108 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter public abstract boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole); - protected List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { + protected List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { return FUtil.getPlayerList(); } - protected boolean isConsole() - { + protected boolean isConsole() { return sender instanceof ConsoleCommandSender; } - protected Player getPlayer(String name) - { + protected Player getPlayer(String name) { return Bukkit.getPlayer(name); } - protected Player getPlayer(String name, Boolean nullVanished) - { + protected Player getPlayer(String name, Boolean nullVanished) { Player player = Bukkit.getPlayer(name); - if (player != null) - { - if (nullVanished && plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender)) - { + if (player != null) { + if (nullVanished && plugin.adminList.isVanished(player.getName()) && !plugin.adminList.isAdmin(sender)) { return null; } } return player; } - protected Admin getAdmin(CommandSender sender) - { - return plugin.al.getAdmin(sender); + protected Admin getAdmin(CommandSender sender) { + return plugin.adminList.getAdmin(sender); } - protected Admin getAdmin(Player player) - { - return plugin.al.getAdmin(player); + protected Admin getAdmin(Player player) { + return plugin.adminList.getAdmin(player); } - protected PlayerData getData(Player player) - { - return plugin.pl.getData(player); + protected PlayerData getData(Player player) { + return plugin.playerList.getData(player); } - protected boolean noPerms() - { + protected boolean noPerms() { throw new CommandFailException(NO_PERMISSION); } - public String getName() - { + public String getName() { return name; } - public String getDescription() - { + public String getDescription() { return description; } - public String getUsage() - { + public String getUsage() { return usage; } - public String getAliases() - { + public String getAliases() { return aliases; } - public Rank getLevel() - { + public Rank getLevel() { return level; } - public SourceType getSource() - { + public SourceType getSource() { return source; } - public boolean isBlockHostConsole() - { + public boolean isBlockHostConsole() { return blockHostConsole; } - public int getCooldown() - { + public int getCooldown() { return cooldown; } - public CommandParameters getParams() - { + public CommandParameters getParams() { return params; } - public CommandPermissions getPerms() - { + public CommandPermissions getPerms() { return perms; } - private final class FCommand extends Command - { + private final class FCommand extends Command { private FreedomCommand cmd = null; - private FCommand(String command) - { + private FCommand(String command) { super(command); } - public void setExecutor(FreedomCommand cmd) - { + public void setExecutor(FreedomCommand cmd) { this.cmd = cmd; } - public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, String[] args) - { - if (cmd != null) - { + public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, String[] args) { + if (cmd != null) { cmd.sender = sender; - if (func4()) - { + if (func4()) { return true; } - if (func1()) - { + if (func1()) { return true; } - if (func2()) - { + if (func2()) { return true; } @@ -358,16 +281,13 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter return false; } - public boolean func1() - { - if (perms.source() == SourceType.ONLY_CONSOLE && sender instanceof Player) - { + public boolean func1() { + if (perms.source() == SourceType.ONLY_CONSOLE && sender instanceof Player) { msg(ONLY_CONSOLE); return true; } - if (perms.source() == SourceType.ONLY_IN_GAME && sender instanceof ConsoleCommandSender) - { + if (perms.source() == SourceType.ONLY_IN_GAME && sender instanceof ConsoleCommandSender) { msg(ONLY_IN_GAME); return true; } @@ -375,42 +295,33 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter return false; } - public boolean func2() - { - if (!plugin.rm.getRank(sender).isAtLeast(perms.level())) - { + public boolean func2() { + if (!plugin.rankManager.getRank(sender).isAtLeast(perms.level())) { msg(NO_PERMISSION); return true; } - if (perms.blockHostConsole() && FUtil.isFromHostConsole(sender.getName()) && !FUtil.inDeveloperMode()) - { + if (perms.blockHostConsole() && FUtil.isFromHostConsole(sender.getName()) && !FUtil.inDeveloperMode()) { msg(ChatColor.RED + "Host console is not allowed to use this command!"); return true; } return false; } - public void func3() - { - if (perms.cooldown() != 0 && !isAdmin(sender)) - { + public void func3() { + if (perms.cooldown() != 0 && !isAdmin(sender)) { COOLDOWN_TIMERS.put(sender, cmd); - timer.schedule(new TimerTask() - { + timer.schedule(new TimerTask() { @Override - public void run() - { + public void run() { COOLDOWN_TIMERS.remove(sender); } }, perms.cooldown() * 1000L); } } - public boolean func4() - { - if (COOLDOWN_TIMERS.containsKey(sender) && COOLDOWN_TIMERS.containsValue(cmd)) - { + public boolean func4() { + if (COOLDOWN_TIMERS.containsKey(sender) && COOLDOWN_TIMERS.containsValue(cmd)) { msg(ChatColor.RED + "You are on cooldown for this command."); return true; } @@ -419,10 +330,8 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter @NotNull @Override - public List tabComplete(@NotNull CommandSender sender, @NotNull String alias, String[] args) - { - if (cmd != null) - { + public List tabComplete(@NotNull CommandSender sender, @NotNull String alias, String[] args) { + if (cmd != null) { return cmd.onTabComplete(sender, this, alias, args); } return new ArrayList<>(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/SourceType.java b/src/main/java/me/totalfreedom/totalfreedommod/command/SourceType.java deleted file mode 100644 index 20dc8211..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/SourceType.java +++ /dev/null @@ -1,6 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -public enum SourceType -{ - ONLY_IN_GAME, ONLY_CONSOLE, BOTH -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/exception/CommandFailException.java b/src/main/java/me/totalfreedom/totalfreedommod/command/exception/CommandFailException.java new file mode 100644 index 00000000..1377cbdc --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/exception/CommandFailException.java @@ -0,0 +1,11 @@ +package me.totalfreedom.totalfreedommod.command.exception; + +public class CommandFailException extends RuntimeException { + + private static final long serialVersionUID = -92333791173123L; + + public CommandFailException(String message) { + super(message); + } + +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AEClearCMD.java similarity index 54% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AEClearCMD.java index 41f87b32..07faa463 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_aeclear.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AEClearCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.World; @@ -10,21 +14,16 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Clears lingering potion area effect clouds.", usage = "/", aliases = "aec") -public class Command_aeclear extends FreedomCommand -{ +@CommandParameters(name = "aeclear", description = "Clears lingering potion area effect clouds.", usage = "/", aliases = "aec") +public class AEClearCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + 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); int removed = 0; - for (World world : server.getWorlds()) - { - for (Entity entity : world.getEntities()) - { - if (entity instanceof AreaEffectCloud) - { + for (World world : server.getWorlds()) { + for (Entity entity : world.getEntities()) { + if (entity instanceof AreaEffectCloud) { entity.remove(); removed++; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminChatCMD.java similarity index 50% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminchat.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminChatCMD.java index d1fd6b30..4411338e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminchat.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminChatCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; @@ -8,28 +12,22 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Talk privately with other admins on the server.", usage = "/ [message]", aliases = "o,sc,ac,staffchat") -public class Command_adminchat extends FreedomCommand -{ +@CommandParameters(name = "adminchat", description = "Talk privately with other admins on the server.", usage = "/ [message]", aliases = "o,sc,ac,staffchat") +public class AdminChatCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - if (senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + if (senderIsConsole) { msg("You must be in-game to toggle admin chat, it cannot be toggled via CONSOLE or Telnet."); return true; } - FPlayer userinfo = plugin.pl.getPlayer(playerSender); + FPlayer userinfo = plugin.playerList.getPlayer(playerSender); userinfo.setAdminChat(!userinfo.inAdminChat()); msg("Admin chat turned " + (userinfo.inAdminChat() ? "on" : "off") + "."); - } - else - { - plugin.cm.adminChat(sender, StringUtils.join(args, " ")); + } else { + plugin.chatManager.adminChat(sender, StringUtils.join(args, " ")); } return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminConfigCMD.java similarity index 55% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminConfigCMD.java index 0a1c06dc..513a02e1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminConfigCMD.java @@ -1,11 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.List; import me.totalfreedom.totalfreedommod.admin.Admin; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.player.FPlayer; @@ -17,81 +16,70 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.*; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "List, add, remove, or set the rank of admins, clean or reload the admin list, or view admin information.", usage = "/ | >", aliases = "slconfig") -public class Command_saconfig extends FreedomCommand -{ +@CommandParameters(name = "saconfig", description = "List, add, remove, or set the rank of admins, clean or reload the admin list, or view admin information.", usage = "/ | >", aliases = "slconfig") +public class AdminConfigCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } - switch (args[0]) - { - case "list": - { - msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD); + switch (args[0]) { + case "list": { + msg("Admins: " + StringUtils.join(plugin.adminList.getAdminNames(), ", "), ChatColor.GOLD); return true; } - case "clean": - { + case "clean": { checkConsole(); checkRank(Rank.SENIOR_ADMIN); FUtil.adminAction(sender.getName(), "Cleaning the admin list", true); - plugin.al.deactivateOldEntries(true); - msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD); + plugin.adminList.deactivateOldEntries(true); + msg("Admins: " + StringUtils.join(plugin.adminList.getAdminNames(), ", "), ChatColor.GOLD); return true; } - case "reload": - { + case "reload": { checkRank(Rank.SENIOR_ADMIN); FUtil.adminAction(sender.getName(), "Reloading the admin list", true); - plugin.al.load(); + plugin.adminList.load(); msg("Admin list reloaded!"); return true; } - case "setrank": - { + case "setrank": { checkConsole(); checkRank(Rank.SENIOR_ADMIN); - if (args.length < 3) - { + if (args.length < 3) { return false; } Rank rank = Rank.findRank(args[2]); - if (rank == null) - { + if (rank == null) { msg("Unknown rank: " + args[2]); return true; } - if (rank.isConsole()) - { + if (rank.isConsole()) { msg("You cannot set players to a console rank"); return true; } - if (!rank.isAtLeast(Rank.ADMIN)) - { + if (!rank.isAtLeast(Rank.ADMIN)) { msg("Rank must be Admin or higher.", ChatColor.RED); return true; } - Admin admin = plugin.al.getEntryByName(args[1]); - if (admin == null) - { + Admin admin = plugin.adminList.getEntryByName(args[1]); + if (admin == null) { msg("Unknown admin: " + args[1]); return true; } @@ -99,61 +87,50 @@ public class Command_saconfig extends FreedomCommand FUtil.adminAction(sender.getName(), "Setting " + admin.getName() + "'s rank to " + rank.getName(), true); admin.setRank(rank); - plugin.al.save(admin); + plugin.adminList.save(admin); Player player = getPlayer(admin.getName()); - if (player != null) - { - plugin.rm.updateDisplay(player); + if (player != null) { + plugin.rankManager.updateDisplay(player); } - if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) - { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + if (plugin.discord.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { + Discord.syncRoles(admin, plugin.playerList.getData(admin.getName()).getDiscordID()); } - plugin.ptero.updateAccountStatus(admin); + plugin.pterodactyl.updateAccountStatus(admin); msg("Set " + admin.getName() + "'s rank to " + rank.getName()); return true; } - case "info": - { - if (args.length < 2) - { + case "info": { + if (args.length < 2) { return false; } checkRank(Rank.ADMIN); - Admin admin = plugin.al.getEntryByName(args[1]); + Admin admin = plugin.adminList.getEntryByName(args[1]); - if (admin == null) - { + if (admin == null) { final Player player = getPlayer(args[1]); - if (player != null) - { - admin = plugin.al.getAdmin(player); + if (player != null) { + admin = plugin.adminList.getAdmin(player); } } - if (admin == null) - { + if (admin == null) { msg("Admin not found: " + args[1]); - } - else - { + } else { msg(admin.toString()); } return true; } - case "add": - { - if (args.length < 2) - { + case "add": { + if (args.length < 2) { return false; } @@ -163,14 +140,12 @@ public class Command_saconfig extends FreedomCommand // Player already admin? final Player player = getPlayer(args[1]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - if (plugin.al.isAdmin(player)) - { + if (plugin.adminList.isAdmin(player)) { msg("That player is already an admin."); return true; } @@ -178,17 +153,14 @@ public class Command_saconfig extends FreedomCommand // Find the old admin entry String name = player.getName(); Admin admin = null; - for (Admin loopAdmin : plugin.al.getAllAdmins()) - { - if (loopAdmin.getName().equalsIgnoreCase(name) || loopAdmin.getIps().contains(FUtil.getIp(player))) - { + for (Admin loopAdmin : plugin.adminList.getAllAdmins()) { + if (loopAdmin.getName().equalsIgnoreCase(name) || loopAdmin.getIps().contains(FUtil.getIp(player))) { admin = loopAdmin; break; } } - if (plugin.pl.isPlayerImpostor(player)) - { + if (plugin.playerList.isPlayerImpostor(player)) { msg("This player was labeled as a Player impostor and is not an admin, therefore they cannot be added to the admin list.", ChatColor.RED); return true; } @@ -199,16 +171,14 @@ public class Command_saconfig extends FreedomCommand FUtil.adminAction(sender.getName(), "Adding " + player.getName() + " to the admin list", true); admin = new Admin(player); - plugin.al.addAdmin(admin); - plugin.rm.updateDisplay(player); - } - else // Existing admin + plugin.adminList.addAdmin(admin); + plugin.rankManager.updateDisplay(player); + } else // Existing admin { FUtil.adminAction(sender.getName(), "Re-adding " + player.getName() + " to the admin list", true); String oldName = admin.getName(); - if (!oldName.equals(player.getName())) - { + if (!oldName.equals(player.getName())) { admin.setName(player.getName()); plugin.sql.updateAdminName(oldName, admin.getName()); } @@ -217,41 +187,35 @@ public class Command_saconfig extends FreedomCommand admin.setActive(true); admin.setLastLogin(new Date()); - if (plugin.al.isVerifiedAdmin(player)) - { - plugin.al.verifiedNoAdmin.remove(player.getName()); + if (plugin.adminList.isVerifiedAdmin(player)) { + plugin.adminList.verifiedNoAdmin.remove(player.getName()); } - plugin.al.save(admin); - plugin.al.updateTables(); - plugin.rm.updateDisplay(player); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); + plugin.rankManager.updateDisplay(player); - if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) - { - Discord.syncRoles(admin, plugin.pl.getData(player).getDiscordID()); + if (plugin.discord.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { + Discord.syncRoles(admin, plugin.playerList.getData(player).getDiscordID()); } } - plugin.ptero.updateAccountStatus(admin); + plugin.pterodactyl.updateAccountStatus(admin); - final FPlayer fPlayer = plugin.pl.getPlayer(player); - if (fPlayer.getFreezeData().isFrozen()) - { + final FPlayer fPlayer = plugin.playerList.getPlayer(player); + if (fPlayer.getFreezeData().isFrozen()) { fPlayer.getFreezeData().setFrozen(false); msg(player, "You have been unfrozen."); } - if (!player.isOp()) - { + if (!player.isOp()) { player.setOp(true); msg(player, YOU_ARE_OP); } return true; } - case "remove": - { - if (args.length < 2) - { + case "remove": { + if (args.length < 2) { return false; } @@ -259,10 +223,9 @@ public class Command_saconfig extends FreedomCommand checkRank(Rank.ADMIN); Player player = getPlayer(args[1]); - Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByName(args[1]); + Admin admin = player != null ? plugin.adminList.getAdmin(player) : plugin.adminList.getEntryByName(args[1]); - if (admin == null) - { + if (admin == null) { msg("Admin not found: " + args[1]); return true; } @@ -270,58 +233,49 @@ public class Command_saconfig extends FreedomCommand FUtil.adminAction(sender.getName(), "Removing " + admin.getName() + " from the admin list", true); admin.setActive(false); - plugin.al.save(admin); - plugin.al.updateTables(); - if (player != null) - { - plugin.rm.updateDisplay(player); - plugin.pl.getPlayer(player).setAdminChat(false); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); + if (player != null) { + plugin.rankManager.updateDisplay(player); + plugin.playerList.getPlayer(player).setAdminChat(false); } - if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) - { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + if (plugin.discord.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { + Discord.syncRoles(admin, plugin.playerList.getData(admin.getName()).getDiscordID()); } - plugin.ptero.updateAccountStatus(admin); + plugin.pterodactyl.updateAccountStatus(admin); return true; } - default: - { + default: { return false; } } } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { List arguments = new ArrayList<>(); arguments.add("list"); - if (plugin.al.isAdmin(sender)) - { + if (plugin.adminList.isAdmin(sender)) { arguments.add("info"); arguments.add("add"); arguments.add("remove"); } - if (plugin.al.isSeniorAdmin(sender)) - { + if (plugin.adminList.isSeniorAdmin(sender)) { arguments.add("reload"); arguments.add("clean"); arguments.add("setrank"); } return arguments; } - if (args.length == 2 && (args[0].equals("add") || args[0].equals("remove") || args[0].equals("setrank") || args[0].equals("info"))) - { + if (args.length == 2 && (args[0].equals("add") || args[0].equals("remove") || args[0].equals("setrank") || args[0].equals("info"))) { return FUtil.getPlayerList(); } - if (args.length == 3 && args[0].equals("setrank")) - { + if (args.length == 3 && args[0].equals("setrank")) { return Arrays.asList("ADMIN", "SENIOR_ADMIN"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_admininfo.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminInfoCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_admininfo.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminInfoCMD.java index 7708e0dd..523d58a2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_admininfo.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminInfoCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,22 +13,19 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Information on how to apply for admin.", usage = "/", aliases = "si,ai,staffinfo") -public class Command_admininfo extends FreedomCommand -{ +@CommandParameters(name = "admininfo", description = "Information on how to apply for admin.", usage = "/", aliases = "si,ai,staffinfo") +public class AdminInfoCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { List adminInfo = ConfigEntry.ADMIN_INFO.getStringList(); - if (adminInfo.isEmpty()) - { + if (adminInfo.isEmpty()) { msg("The admin information section of the config.yml file has not been configured.", ChatColor.RED); - } - else - { + } else { msg(FUtil.colorize(StringUtils.join(adminInfo, "\n"))); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminmode.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminModeCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminmode.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminModeCMD.java index 83415650..e705a56e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminmode.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminModeCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,33 +11,29 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Denies joining of operators and only allows admins to join.", usage = "/ [on | off]", aliases = "staffmode") -public class Command_adminmode extends FreedomCommand -{ +@CommandParameters(name = "adminmode", description = "Denies joining of operators and only allows admins to join.", usage = "/ [on | off]", aliases = "staffmode") +public class AdminModeCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { return false; } - if (args[0].equalsIgnoreCase("off")) - { + if (args[0].equalsIgnoreCase("off")) { ConfigEntry.ADMIN_ONLY_MODE.setBoolean(false); FUtil.adminAction(sender.getName(), "Opening the server to all players", true); return true; - } - else if (args[0].equalsIgnoreCase("on")) - { + } else if (args[0].equalsIgnoreCase("on")) { ConfigEntry.ADMIN_ONLY_MODE.setBoolean(true); FUtil.adminAction(sender.getName(), "Closing the server to non-admins", true); - for (Player player : server.getOnlinePlayers()) - { - if (!isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!isAdmin(player)) { player.kickPlayer("Server is now closed to non-admins."); } } @@ -47,10 +44,8 @@ public class Command_adminmode extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1 && plugin.al.isAdmin(sender) && !(sender instanceof Player)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1 && plugin.adminList.isAdmin(sender) && !(sender instanceof Player)) { return Arrays.asList("on", "off"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminWorldCMD.java similarity index 54% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminworld.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminWorldCMD.java index 42942e2f..95186ed8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adminworld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdminWorldCMD.java @@ -1,140 +1,108 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.world.WorldTime; -import me.totalfreedom.totalfreedommod.world.WorldWeather; +import me.totalfreedom.totalfreedommod.world.manager.WorldTime; +import me.totalfreedom.totalfreedommod.world.manager.WorldWeather; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Allows for admins to configure time, and weather of the AdminWorld, and allows for admins and ops to go to the AdminWorld.", +@CommandParameters(name = "adminworld", description = "Allows for admins to configure time, and weather of the AdminWorld, and allows for admins and ops to go to the AdminWorld.", usage = "/ [time | weather ]", aliases = "sw,aw,staffworld") -public class Command_adminworld extends FreedomCommand -{ +public class AdminWorldCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { CommandMode commandMode = null; - if (args.length == 0) - { + if (args.length == 0) { commandMode = CommandMode.TELEPORT; - } - else if (args.length >= 2) - { - if ("time".equalsIgnoreCase(args[0])) - { + } else if (args.length >= 2) { + if ("time".equalsIgnoreCase(args[0])) { commandMode = CommandMode.TIME; - } - else if ("weather".equalsIgnoreCase(args[0])) - { + } else if ("weather".equalsIgnoreCase(args[0])) { commandMode = CommandMode.WEATHER; } } - if (commandMode == null) - { + if (commandMode == null) { return false; } - try - { - switch (commandMode) - { - case TELEPORT: - { - if (!(sender instanceof Player) || playerSender == null) - { + try { + switch (commandMode) { + case TELEPORT: { + if (!(sender instanceof Player) || playerSender == null) { return false; } World adminWorld = null; - try - { - adminWorld = plugin.wm.adminworld.getWorld(); - } - catch (Exception ignored) - { + try { + adminWorld = plugin.worldManager.adminworld.getWorld(); + } catch (Exception ignored) { } - if (adminWorld == null || playerSender.getWorld() == adminWorld) - { + if (adminWorld == null || playerSender.getWorld() == adminWorld) { msg("Going to the main world."); PaperLib.teleportAsync(playerSender, server.getWorlds().get(0).getSpawnLocation()); - } - else - { + } else { msg("Going to the AdminWorld."); - plugin.wm.adminworld.sendToWorld(playerSender); + plugin.worldManager.adminworld.sendToWorld(playerSender); } break; } - case TIME: - { + case TIME: { assertCommandPerms(sender, playerSender); - if (args.length == 2) - { + if (args.length == 2) { WorldTime timeOfDay = WorldTime.getByAlias(args[1]); - if (timeOfDay != null) - { - plugin.wm.adminworld.setTimeOfDay(timeOfDay); + if (timeOfDay != null) { + plugin.worldManager.adminworld.setTimeOfDay(timeOfDay); msg("AdminWorld time set to: " + timeOfDay.name()); - } - else - { + } else { msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight"); } - } - else - { + } else { return false; } break; } - case WEATHER: - { + case WEATHER: { assertCommandPerms(sender, playerSender); - if (args.length == 2) - { + if (args.length == 2) { WorldWeather weatherMode = WorldWeather.getByAlias(args[1]); - if (weatherMode != null) - { - plugin.wm.adminworld.setWeatherMode(weatherMode); + if (weatherMode != null) { + plugin.worldManager.adminworld.setWeatherMode(weatherMode); msg("AdminWorld weather set to: " + weatherMode.name()); - } - else - { + } else { msg("Invalid weather mode. Can be: off, rain, storm"); } - } - else - { + } else { return false; } break; } - default: - { + default: { return false; } } - } - catch (PermissionDeniedException ex) - { - if (ex.getMessage().isEmpty()) - { + } catch (PermissionDeniedException ex) { + if (ex.getMessage().isEmpty()) { return noPerms(); } msg(ex.getMessage()); @@ -145,56 +113,42 @@ public class Command_adminworld extends FreedomCommand } // TODO: Redo this properly - private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException - { - if (!(sender instanceof Player) || playerSender == null || !isAdmin(sender)) - { + private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException { + if (!(sender instanceof Player) || playerSender == null || !isAdmin(sender)) { throw new PermissionDeniedException(); } } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return Collections.emptyList(); } - if (args.length == 1) - { + if (args.length == 1) { return Arrays.asList("time", "weather"); - } - else if (args.length == 2) - { - if (args[0].equals("time")) - { + } else if (args.length == 2) { + if (args[0].equals("time")) { return Arrays.asList("morning", "noon", "evening", "night"); - } - else if (args[0].equals("weather")) - { + } else if (args[0].equals("weather")) { return Arrays.asList("off", "rain", "storm"); } } return Collections.emptyList(); } - private enum CommandMode - { + private enum CommandMode { TELEPORT, TIME, WEATHER } - private static class PermissionDeniedException extends Exception - { + private static class PermissionDeniedException extends Exception { private static final long serialVersionUID = 1L; - private PermissionDeniedException() - { + private PermissionDeniedException() { super(""); } - private PermissionDeniedException(String string) - { + private PermissionDeniedException(String string) { super(string); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdventureCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdventureCMD.java index 605b6de2..beeeac2c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_adventure.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AdventureCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.GameMode; @@ -8,17 +12,13 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Quickly change your own gamemode to adventure, define someone's username to change theirs, or change everyone's gamemode on the server.", usage = "/ <[partialname] | -a>", aliases = "gma") -public class Command_adventure extends FreedomCommand -{ +@CommandParameters(name = "adventure", description = "Quickly change your own gamemode to adventure, define someone's username to change theirs, or change everyone's gamemode on the server.", usage = "/ <[partialname] | -a>", aliases = "gma") +public class AdventureCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - if (isConsole()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + if (isConsole()) { msg("When used from the console, you must define a target player."); return true; } @@ -30,10 +30,8 @@ public class Command_adventure extends FreedomCommand checkRank(Rank.ADMIN); - if (args[0].equals("-a")) - { - for (Player targetPlayer : server.getOnlinePlayers()) - { + if (args[0].equals("-a")) { + for (Player targetPlayer : server.getOnlinePlayers()) { targetPlayer.setGameMode(GameMode.ADVENTURE); } @@ -44,8 +42,7 @@ public class Command_adventure extends FreedomCommand Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AnnounceCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AnnounceCMD.java new file mode 100644 index 00000000..a4b72ec9 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AnnounceCMD.java @@ -0,0 +1,26 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "announce", description = "Make an announcement anonymously to operators.", usage = "/ ") +public class AnnounceCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } + + plugin.announcer.announce(StringUtils.join(args, " ")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_attributelist.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AttributeListCMD.java similarity index 55% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_attributelist.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/AttributeListCMD.java index 6a7697d7..70e14ce4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_attributelist.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AttributeListCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; @@ -7,17 +11,14 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Lists all possible attributes.", usage = "/") -public class Command_attributelist extends FreedomCommand -{ +@CommandParameters(name = "attributelist", description = "Lists all possible attributes.", usage = "/", aliases = "attrlist") +public class AttributeListCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { StringBuilder list = new StringBuilder("All possible attributes: "); - for (Attribute attribute : Attribute.values()) - { + for (Attribute attribute : Attribute.values()) { list.append(attribute.name()).append(", "); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoClearCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoClearCMD.java new file mode 100644 index 00000000..d90d4ce0 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoClearCMD.java @@ -0,0 +1,34 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "autoclear", description = "Toggle whether or not a player has their inventory automatically cleared when they join", usage = "/ ") +public class AutoClearCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } + + boolean enabled = plugin.loginProcess.CLEAR_ON_JOIN.contains(args[0]); + + if (enabled) { + plugin.loginProcess.CLEAR_ON_JOIN.remove(args[0]); + } else { + plugin.loginProcess.CLEAR_ON_JOIN.add(args[0]); + } + + msg(args[0] + " will " + (enabled ? "no longer" : "now") + " have their inventory cleared when they join."); + + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoTPCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoTPCMD.java new file mode 100644 index 00000000..2b713c14 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/AutoTPCMD.java @@ -0,0 +1,34 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "autotp", description = "Toggle whether or not a player is automatically teleported when they join", usage = "/ ") +public class AutoTPCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } + + boolean enabled = plugin.loginProcess.TELEPORT_ON_JOIN.contains(args[0]); + + if (enabled) { + plugin.loginProcess.TELEPORT_ON_JOIN.remove(args[0]); + } else { + plugin.loginProcess.TELEPORT_ON_JOIN.add(args[0]); + } + + msg(args[0] + " will " + (enabled ? "no longer" : "now") + " be automatically teleported when they join."); + + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanCMD.java similarity index 69% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanCMD.java index 2b0c7cc4..134459af 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanCMD.java @@ -1,9 +1,11 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.Objects; +package me.totalfreedom.totalfreedommod.command.impl; import com.earth2me.essentials.User; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -19,42 +21,34 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Objects; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Bans the specified player.", usage = "/ [reason] [-nrb | -q]", aliases = "gtfo") -public class Command_ban extends FreedomCommand -{ +@CommandParameters(name = "ban", description = "Bans the specified player.", usage = "/ [reason] [-nrb | -q]", aliases = "gtfo") +public class BanCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } String reason = null; boolean silent = false; boolean cancelRollback = false; - if (args.length >= 2) - { - if (args[args.length - 1].equalsIgnoreCase("-nrb") || args[args.length - 1].equalsIgnoreCase("-q")) - { - if (args[args.length - 1].equalsIgnoreCase("-nrb")) - { + if (args.length >= 2) { + if (args[args.length - 1].equalsIgnoreCase("-nrb") || args[args.length - 1].equalsIgnoreCase("-q")) { + if (args[args.length - 1].equalsIgnoreCase("-nrb")) { cancelRollback = true; } - if (args[args.length - 1].equalsIgnoreCase("-q")) - { + if (args[args.length - 1].equalsIgnoreCase("-q")) { silent = true; } - if (args.length >= 3) - { + if (args.length >= 3) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else - { + } else { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } } @@ -63,34 +57,26 @@ public class Command_ban extends FreedomCommand final String ip; final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { // Gets the IP using Essentials data if available - if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) - { - User essUser = plugin.esb.getEssentialsUser(args[0]); + if (plugin.essentialsBridge.isEnabled() && plugin.essentialsBridge.getEssentialsUser(args[0]) != null) { + User essUser = plugin.essentialsBridge.getEssentialsUser(args[0]); // username = essUser.getName(); ip = essUser.getLastLoginAddress(); } // Last resort - Getting the first result from the username itself - else - { - PlayerData entry = plugin.pl.getData(args[0]); - if (entry == null) - { + else { + PlayerData entry = plugin.playerList.getData(args[0]); + if (entry == null) { msg(PLAYER_NOT_FOUND); return true; - } - else - { + } else { username = entry.getName(); ip = entry.getIps().get(0); } } - } - else - { + } else { username = player.getName(); ip = FUtil.getIp(player); @@ -103,21 +89,16 @@ public class Command_ban extends FreedomCommand // Clear inventory player.getInventory().clear(); - if (!silent) - { + if (!silent) { // Strike with lightning final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); Objects.requireNonNull(targetPos.getWorld()).strikeLightning(strike_pos); } } - } - else - { + } else { msg("Banned " + player.getName() + " quietly."); } // Kill player @@ -125,39 +106,32 @@ public class Command_ban extends FreedomCommand } // Checks if CoreProtect is loaded and installed, and skips the rollback and uses CoreProtect directly - if (!cancelRollback) - { - plugin.cpb.rollback(username); + if (!cancelRollback) { + plugin.coreProtectBridge.rollback(username); } - if (player != null && !silent) - { + if (player != null && !silent) { FUtil.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.", ChatColor.RED); } // Ban player Ban ban; - if (player != null) - { + if (player != null) { ban = Ban.forPlayer(player, sender, null, reason); - } - else - { + } else { ban = Ban.forPlayerName(username, sender, null, reason); } ban.addIp(ip); - plugin.bm.addBan(ban); + plugin.banManager.addBan(ban); - if (!silent) - { + if (!silent) { // Broadcast final StringBuilder bcast = new StringBuilder() .append("Banning: ") .append(username); - if (reason != null) - { + if (reason != null) { bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason); } msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + ip); @@ -165,20 +139,17 @@ public class Command_ban extends FreedomCommand } // Kick player and handle others on IP - if (player != null) - { + if (player != null) { player.kickPlayer(ban.bakeKickMessage()); - for (Player p : Bukkit.getOnlinePlayers()) - { - if (FUtil.getIp(p).equals(FUtil.getIp(player))) - { + for (Player p : Bukkit.getOnlinePlayers()) { + if (FUtil.getIp(p).equals(FUtil.getIp(player))) { p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); } } } // Log ban - plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.BAN, reason)); + plugin.punishmentList.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.BAN, reason)); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanIPCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanIPCMD.java index 9066e83c..d70ed1b5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banip.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanIPCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -12,15 +16,12 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Bans the specified ip.", usage = "/ [reason] [-q]") -public class Command_banip extends FreedomCommand -{ +@CommandParameters(name = "banip", description = "Bans the specified ip.", usage = "/ [reason] [-q]") +public class BanIPCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } @@ -30,49 +31,40 @@ public class Command_banip extends FreedomCommand String ip = args[0]; - if (FUtil.isValidIPv4(ip)) - { + if (FUtil.isValidIPv4(ip)) { msg(ip + " is not a valid IP address", ChatColor.RED); return true; } - if (plugin.bm.getByIp(ip) != null) - { + if (plugin.banManager.getByIp(ip) != null) { msg("The IP " + ip + " is already banned", ChatColor.RED); return true; } - if (args[args.length - 1].equalsIgnoreCase("-q")) - { + if (args[args.length - 1].equalsIgnoreCase("-q")) { silent = true; - if (args.length >= 2) - { + if (args.length >= 2) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else if (args.length > 1) - { + } else if (args.length > 1) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } // Ban player Ban ban = Ban.forPlayerIp(ip, sender, null, reason); - plugin.bm.addBan(ban); + plugin.banManager.addBan(ban); // Kick player and handle others on IP - for (Player player : server.getOnlinePlayers()) - { - if (FUtil.getIp(player).equals(ip)) - { + for (Player player : server.getOnlinePlayers()) { + if (FUtil.getIp(player).equals(ip)) { player.kickPlayer(ban.bakeKickMessage()); } - if (!silent) - { + if (!silent) { // Broadcast FLog.info(ChatColor.RED + sender.getName() + " - Banned the IP " + ip); - String message = sender.getName() + " - Banned " + (plugin.al.isAdmin(player) ? "the IP " + ip : "an IP"); + String message = sender.getName() + " - Banned " + (plugin.adminList.isAdmin(player) ? "the IP " + ip : "an IP"); msg(player, message, ChatColor.RED); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanListCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanListCMD.java new file mode 100644 index 00000000..f3eb0e54 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanListCMD.java @@ -0,0 +1,36 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) +@CommandParameters(name = "banlist", description = "Shows all banned player names. Admins may optionally use 'purge' to clear the list.", usage = "/ [purge]") +public class BanListCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { + if (args[0].equalsIgnoreCase("purge")) { + checkRank(Rank.SENIOR_ADMIN); + + FUtil.adminAction(sender.getName(), "Purging the ban list", true); + int amount = plugin.banManager.purge(); + msg("Purged " + amount + " player bans."); + return true; + } + return false; + } + + msg(plugin.banManager.getAllBans().size() + " player bans (" + + plugin.banManager.getUsernameBans().size() + " usernames, " + + plugin.banManager.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/impl/BanNameCMD.java similarity index 60% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_banname.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanNameCMD.java index f7b16cfa..1c89eb90 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_banname.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BanNameCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; @@ -11,15 +15,12 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Bans the specified name.", usage = "/ [reason] [-q]") -public class Command_banname extends FreedomCommand -{ +@CommandParameters(name = "banname", description = "Bans the specified name.", usage = "/ [reason] [-q]") +public class BanNameCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } @@ -29,38 +30,31 @@ public class Command_banname extends FreedomCommand String name = args[0]; - if (plugin.bm.getByUsername(name) != null) - { + if (plugin.banManager.getByUsername(name) != null) { msg("The name " + name + " is already banned", ChatColor.RED); return true; } - if (args[args.length - 1].equalsIgnoreCase("-q")) - { + if (args[args.length - 1].equalsIgnoreCase("-q")) { silent = true; - if (args.length >= 2) - { + if (args.length >= 2) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else if (args.length > 1) - { + } else if (args.length > 1) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } // Ban player Ban ban = Ban.forPlayerName(name, sender, null, reason); - plugin.bm.addBan(ban); + plugin.banManager.addBan(ban); - if (!silent) - { + if (!silent) { FUtil.adminAction(sender.getName(), "Banned the name " + name, true); } Player player = getPlayer(name); - if (player != null) - { + if (player != null) { player.kickPlayer(ban.bakeKickMessage()); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BirdCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BirdCMD.java index 87291599..e9992901 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BirdCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; -import java.util.List; -import java.util.SplittableRandom; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.Location; import org.bukkit.command.Command; @@ -10,22 +11,23 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.List; +import java.util.SplittableRandom; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Spawns a random type of fish at your location.", usage = "/") -public class Command_bird extends FreedomCommand -{ +@CommandParameters(name = "bird", description = "Spawns a random type of fish at your location.", usage = "/") +public class BirdCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { Location location = playerSender.getTargetBlock(null, 15).getLocation().add(0, 1, 0); playerSender.getWorld().spawnEntity(location, getRandomFish()); msg(":goodbird:"); return true; } - public EntityType getRandomFish() - { + public EntityType getRandomFish() { List fishTypes = Arrays.asList(EntityType.COD, EntityType.SALMON, EntityType.PUFFERFISH, EntityType.TROPICAL_FISH); SplittableRandom random = new SplittableRandom(); return fishTypes.get(random.nextInt(fishTypes.size())); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockCommandCMD.java similarity index 58% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockCommandCMD.java index ee2ba733..3839a3bf 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockCommandCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -11,27 +15,21 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "blockcommand", description = "Block all commands for everyone on the server, or a specific player.", usage = "/ <-a | purge | >", aliases = "blockcommands,blockcmd,bc,bcmd") +public class BlockCommandCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { return false; } - if (args[0].equals("purge")) - { + if (args[0].equals("purge")) { FUtil.adminAction(sender.getName(), "Unblocking commands for all players", true); int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - FPlayer playerdata = plugin.pl.getPlayer(player); - if (playerdata.allCommandsBlocked()) - { + for (Player player : server.getOnlinePlayers()) { + FPlayer playerdata = plugin.playerList.getPlayer(player); + if (playerdata.allCommandsBlocked()) { counter += 1; playerdata.setCommandsBlocked(false); } @@ -40,19 +38,16 @@ public class Command_blockcmd extends FreedomCommand return true; } - if (args[0].equals("-a")) - { + if (args[0].equals("-a")) { FUtil.adminAction(sender.getName(), "Blocking commands for all non-admins", true); int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (isAdmin(player)) { continue; } counter += 1; - plugin.pl.getPlayer(player).setCommandsBlocked(true); + plugin.playerList.getPlayer(player).setCommandsBlocked(true); msg(player, "Your commands have been blocked by an admin.", ChatColor.RED); } @@ -62,29 +57,24 @@ public class Command_blockcmd extends FreedomCommand final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - if (isAdmin(player)) - { + if (isAdmin(player)) { msg(player.getName() + " is an admin, and cannot have their commands blocked."); return true; } - FPlayer playerdata = plugin.pl.getPlayer(player); - if (!playerdata.allCommandsBlocked()) - { + FPlayer playerdata = plugin.playerList.getPlayer(player); + if (!playerdata.allCommandsBlocked()) { FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true); playerdata.setCommandsBlocked(true); msg("Blocked commands for " + player.getName() + "."); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null)); - } - else - { + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null)); + } else { msg("That players commands are already blocked.", ChatColor.RED); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockEditCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockEditCMD.java index cba22999..9b8d9b74 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockEditCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -13,48 +17,38 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "blockedit", description = "Restricts/unrestricts block modification abilities for everyone on the server or a certain player.", usage = "/ [[-s] [reason] | list | purge | all]") +public class BlockEditCMD extends FreedomCommand { @Override - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, String[] args, final boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, String[] args, final boolean senderIsConsole) { + if (args.length == 0) { return false; } - if (args[0].equals("list")) - { + if (args[0].equals("list")) { msg("The following have block modification abilities restricted:"); int count = 0; - for (Player player : server.getOnlinePlayers()) - { - final FPlayer info = plugin.pl.getPlayer(player); - if (info.isEditBlocked()) - { + for (Player player : server.getOnlinePlayers()) { + final FPlayer info = plugin.playerList.getPlayer(player); + if (info.isEditBlocked()) { msg("- " + player.getName()); ++count; } } - if (count == 0) - { + if (count == 0) { msg("- none"); } return true; } - if (args[0].equals("purge")) - { + if (args[0].equals("purge")) { FUtil.adminAction(sender.getName(), "Unblocking block modification abilities for all players", true); int count = 0; - for (final Player player : this.server.getOnlinePlayers()) - { - final FPlayer info = plugin.pl.getPlayer(player); - if (info.isEditBlocked()) - { + for (final Player player : this.server.getOnlinePlayers()) { + final FPlayer info = plugin.playerList.getPlayer(player); + if (info.isEditBlocked()) { info.setEditBlocked(false); ++count; } @@ -63,15 +57,12 @@ public class Command_blockedit extends FreedomCommand return true; } - if (args[0].equals("all")) - { + if (args[0].equals("all")) { FUtil.adminAction(sender.getName(), "Blocking block modification abilities for all non-admins", true); int counter = 0; - for (final Player player : this.server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { - final FPlayer playerdata = plugin.pl.getPlayer(player); + for (final Player player : this.server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(player)) { + final FPlayer playerdata = plugin.playerList.getPlayer(player); playerdata.setEditBlocked(true); ++counter; } @@ -82,40 +73,32 @@ public class Command_blockedit extends FreedomCommand } final boolean smite = args[0].equals("-s"); - if (smite) - { - args = (String[])ArrayUtils.subarray(args, 1, args.length); - if (args.length < 1) - { + if (smite) { + args = (String[]) ArrayUtils.subarray(args, 1, args.length); + if (args.length < 1) { return false; } } final Player player2 = getPlayer(args[0]); - if (player2 == null) - { + if (player2 == null) { msg(PLAYER_NOT_FOUND); return true; } String reason = null; - if (args.length > 1) - { + if (args.length > 1) { reason = StringUtils.join(args, " ", 1, args.length); } - final FPlayer pd = plugin.pl.getPlayer(player2); - if (pd.isEditBlocked()) - { + final FPlayer pd = plugin.playerList.getPlayer(player2); + if (pd.isEditBlocked()) { FUtil.adminAction(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)) - { + } else { + if (plugin.adminList.isAdmin(player2)) { msg(player2.getName() + " is an admin, and cannot have their block edits blocked."); return true; } @@ -123,15 +106,14 @@ public class Command_blockedit extends FreedomCommand FUtil.adminAction(sender.getName(), "Blocking block modification abilities for " + player2.getName(), true); pd.setEditBlocked(true); - if (smite) - { - Command_smite.smite(sender, player2, reason); + if (smite) { + SmiteCMD.smite(sender, player2, reason); } msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED); msg("Blocked all block modification abilities for " + player2.getName()); - plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null)); + plugin.punishmentList.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null)); } return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockPvPCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockPvPCMD.java index 9c4bee0f..d244879c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockPvPCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -13,48 +17,38 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "blockpvp", description = "Toggle PVP mode for everyone or a certain player.", usage = "/ [[-s] [reason] | list | purge | all]", aliases = "pvpblock,pvpmode") +public class BlockPvPCMD extends FreedomCommand { @Override - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, String[] args, final boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, String[] args, final boolean senderIsConsole) { + if (args.length == 0) { return false; } - if (args[0].equals("list")) - { + if (args[0].equals("list")) { msg("PVP is blocked for players:"); int count = 0; - for (Player player : server.getOnlinePlayers()) - { - final FPlayer info = plugin.pl.getPlayer(player); - if (info.isPvpBlocked()) - { + for (Player player : server.getOnlinePlayers()) { + final FPlayer info = plugin.playerList.getPlayer(player); + if (info.isPvpBlocked()) { msg(" - " + player.getName()); ++count; } } - if (count == 0) - { + if (count == 0) { msg(" - none"); } return true; } - if (args[0].equals("purge")) - { + if (args[0].equals("purge")) { FUtil.adminAction(sender.getName(), "Enabling PVP for all players.", true); int count = 0; - for (Player player : server.getOnlinePlayers()) - { - final FPlayer info = plugin.pl.getPlayer(player); - if (info.isPvpBlocked()) - { + for (Player player : server.getOnlinePlayers()) { + final FPlayer info = plugin.playerList.getPlayer(player); + if (info.isPvpBlocked()) { info.setPvpBlocked(false); ++count; } @@ -64,15 +58,12 @@ public class Command_blockpvp extends FreedomCommand return true; } - if (args[0].equals("all")) - { + if (args[0].equals("all")) { FUtil.adminAction(sender.getName(), "Disabling PVP for all non-admins", true); int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { - final FPlayer playerdata = plugin.pl.getPlayer(player); + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(player)) { + final FPlayer playerdata = plugin.playerList.getPlayer(player); playerdata.setPvpBlocked(true); ++counter; } @@ -83,51 +74,42 @@ public class Command_blockpvp extends FreedomCommand } final boolean smite = args[0].equals("-s"); - if (smite) - { + if (smite) { args = ArrayUtils.subarray(args, 1, args.length); - if (args.length < 1) - { + if (args.length < 1) { return false; } } final Player p = getPlayer(args[0]); - if (p == null) - { + if (p == null) { msg(PLAYER_NOT_FOUND); return true; } String reason = null; - if (args.length > 1) - { + if (args.length > 1) { reason = StringUtils.join(args, " ", 1, args.length); } - final FPlayer pd = plugin.pl.getPlayer(p); - if (pd.isPvpBlocked()) - { + final FPlayer pd = plugin.playerList.getPlayer(p); + if (pd.isPvpBlocked()) { FUtil.adminAction(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)) - { + } else { + if (plugin.adminList.isAdmin(p)) { msg(p.getName() + " is an admin, and cannot have their PVP disabled."); return true; } FUtil.adminAction(sender.getName(), "Disabling PVP for " + p.getName(), true); pd.setPvpBlocked(true); - if (smite) - { - Command_smite.smite(sender, p, reason); + if (smite) { + SmiteCMD.smite(sender, p, reason); } - plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null)); + plugin.punishmentList.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null)); msg(p, "Your PVP has been disabled.", ChatColor.RED); msg("Disabled PVP for " + p.getName()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockRedstoneCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockRedstoneCMD.java index f4a13a32..cbb0d747 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockredstone.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BlockRedstoneCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -9,30 +13,22 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Blocks redstone on the server.", usage = "/", aliases = "bre") -public class Command_blockredstone extends FreedomCommand -{ +@CommandParameters(name = "blockredstone", description = "Blocks redstone on the server.", usage = "/", aliases = "bre") +public class BlockRedstoneCMD extends FreedomCommand { - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - if (ConfigEntry.ALLOW_REDSTONE.getBoolean()) - { + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { + if (ConfigEntry.ALLOW_REDSTONE.getBoolean()) { ConfigEntry.ALLOW_REDSTONE.setBoolean(false); FUtil.adminAction(sender.getName(), "Blocking all redstone", true); - new BukkitRunnable() - { - public void run() - { - if (!ConfigEntry.ALLOW_REDSTONE.getBoolean()) - { + new BukkitRunnable() { + public void run() { + if (!ConfigEntry.ALLOW_REDSTONE.getBoolean()) { FUtil.adminAction("TotalFreedom", "Unblocking all redstone", false); ConfigEntry.ALLOW_REDSTONE.setBoolean(true); } } }.runTaskLater(plugin, 6000L); - } - else - { + } else { ConfigEntry.ALLOW_REDSTONE.setBoolean(true); FUtil.adminAction(sender.getName(), "Unblocking all redstone", true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderConfigCMD.java similarity index 55% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderConfigCMD.java index 23320e41..3d70b937 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderConfigCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -12,42 +13,37 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "List, add, or remove master builders. Master builders can also clear their own IPs.", usage = "/ | clearips | < >>") -public class Command_mbconfig extends FreedomCommand -{ +@CommandParameters(name = "mbconfig", description = "List, add, or remove master builders. Master builders can also clear their own IPs.", usage = "/ | clearips | < >>", aliases = "builders,builderconf,builderconfig") +public class BuilderConfigCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } - switch (args[0]) - { - case "list": - { - msg("Master Builders: " + StringUtils.join(plugin.pl.getMasterBuilderNames(), ", "), ChatColor.GOLD); + switch (args[0]) { + case "list": { + msg("Master Builders: " + StringUtils.join(plugin.playerList.getMasterBuilderNames(), ", "), ChatColor.GOLD); return true; } - case "clearips": - { - if (args.length > 1) - { + case "clearips": { + if (args.length > 1) { return false; } - if (senderIsConsole) - { + if (senderIsConsole) { msg("Only in-game players may use this command.", ChatColor.RED); return true; } - PlayerData data = plugin.pl.getData(sender.getName()); - if (!data.isMasterBuilder()) - { + PlayerData data = plugin.playerList.getData(sender.getName()); + if (!data.isMasterBuilder()) { msg("You are not a master builder!", ChatColor.RED); return true; } @@ -61,30 +57,25 @@ public class Command_mbconfig extends FreedomCommand FUtil.adminAction(sender.getName(), "Clearing my IPs", true); return true; } - case "clearip": - { - if (args.length < 2) - { + case "clearip": { + if (args.length < 2) { return false; } - if (senderIsConsole) - { + if (senderIsConsole) { msg("Only in-game players may use this command.", ChatColor.RED); return true; } - PlayerData data = plugin.pl.getData(sender.getName()); + PlayerData data = plugin.playerList.getData(sender.getName()); final String targetIp = FUtil.getIp(playerSender); - if (!data.isMasterBuilder()) - { + if (!data.isMasterBuilder()) { msg("You are not a master builder!", ChatColor.RED); return true; } - if (targetIp.equals(args[1])) - { + if (targetIp.equals(args[1])) { msg("You cannot remove your current IP."); return true; } @@ -94,125 +85,96 @@ public class Command_mbconfig extends FreedomCommand msg("Current IPs: " + StringUtils.join(data.getIps(), ", ")); return true; } - case "add": - { - if (args.length < 2) - { + case "add": { + if (args.length < 2) { return false; } - if (plugin.pl.canManageMasterBuilders(sender.getName())) - { + if (plugin.playerList.canManageMasterBuilders(sender.getName())) { return noPerms(); } final Player player = getPlayer(args[1]); - PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]); + PlayerData data = player != null ? plugin.playerList.getData(player) : plugin.playerList.getData(args[1]); - if (data == null) - { + if (data == null) { msg(PLAYER_NOT_FOUND, ChatColor.RED); return true; } - if (data.isMasterBuilder() && plugin.pl.isPlayerImpostor(player)) - { + if (data.isMasterBuilder() && plugin.playerList.isPlayerImpostor(player)) { FUtil.adminAction(sender.getName(), "Re-adding " + data.getName() + " to the Master Builder list", true); - if (plugin.pl.getPlayer(player).getFreezeData().isFrozen()) - { - plugin.pl.getPlayer(player).getFreezeData().setFrozen(false); + if (plugin.playerList.getPlayer(player).getFreezeData().isFrozen()) { + plugin.playerList.getPlayer(player).getFreezeData().setFrozen(false); } - if (player != null) - { - plugin.pl.verify(player, null); - plugin.rm.updateDisplay(player); + if (player != null) { + plugin.playerList.verify(player, null); + plugin.rankManager.updateDisplay(player); player.setOp(true); msg(player, YOU_ARE_OP); } - } - else if (!data.isMasterBuilder()) - { + } else if (!data.isMasterBuilder()) { FUtil.adminAction(sender.getName(), "Adding " + data.getName() + " to the Master Builder list", true); data.setMasterBuilder(true); data.setVerification(true); - plugin.pl.save(data); - if (player != null) - { - plugin.rm.updateDisplay(player); + plugin.playerList.save(data); + if (player != null) { + plugin.rankManager.updateDisplay(player); } return true; - } - else - { + } else { msg("That player is already on the Master Builder list."); return true; } } - case "remove": - { - if (args.length < 2) - { + case "remove": { + if (args.length < 2) { return false; } - if (plugin.pl.canManageMasterBuilders(sender.getName())) - { + if (plugin.playerList.canManageMasterBuilders(sender.getName())) { return noPerms(); } Player player = getPlayer(args[1]); - PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]); + PlayerData data = player != null ? plugin.playerList.getData(player) : plugin.playerList.getData(args[1]); - if (data == null || !data.isMasterBuilder()) - { + if (data == null || !data.isMasterBuilder()) { msg("Master Builder not found: " + args[1]); return true; } FUtil.adminAction(sender.getName(), "Removing " + data.getName() + " from the Master Builder list", true); data.setMasterBuilder(false); - if (data.getDiscordID() == null) - { + if (data.getDiscordID() == null) { data.setVerification(false); } - plugin.pl.save(data); - if (player != null) - { - plugin.rm.updateDisplay(player); + plugin.playerList.save(data); + if (player != null) { + plugin.rankManager.updateDisplay(player); } return true; } - default: - { + default: { return false; } } } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { return Arrays.asList("add", "remove", "list", "clearips", "clearip"); - } - else if (args.length == 2) - { - if (args[0].equalsIgnoreCase("add")) - { + } else if (args.length == 2) { + if (args[0].equalsIgnoreCase("add")) { return FUtil.getPlayerList(); - } - else if (args[0].equalsIgnoreCase("remove")) - { - return plugin.pl.getMasterBuilderNames(); - } - else if (args[0].equalsIgnoreCase("clearip")) - { - PlayerData data = plugin.pl.getData(sender.getName()); - if (data.isMasterBuilder()) - { + } else if (args[0].equalsIgnoreCase("remove")) { + return plugin.playerList.getMasterBuilderNames(); + } else if (args[0].equalsIgnoreCase("clearip")) { + PlayerData data = plugin.playerList.getData(sender.getName()); + if (data.isMasterBuilder()) { return data.getIps(); } return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderinfo.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderInfoCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderinfo.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderInfoCMD.java index a22d1e7b..34969c50 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderinfo.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderInfoCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,22 +13,19 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Information on how to apply for Master Builder.", usage = "/", aliases = "mbi") -public class Command_masterbuilderinfo extends FreedomCommand -{ +@CommandParameters(name = "masterbuilderinfo", description = "Information on how to apply for Master Builder.", usage = "/", aliases = "mbi,builderinfo,mbinfo") +public class BuilderInfoCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { List masterBuilderInfo = ConfigEntry.MASTER_BUILDER_INFO.getStringList(); - if (masterBuilderInfo.isEmpty()) - { + if (masterBuilderInfo.isEmpty()) { msg("The master builder information section of the config.yml file has not been configured.", ChatColor.RED); - } - else - { + } else { msg(FUtil.colorize(StringUtils.join(masterBuilderInfo, "\n"))); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderWorldCMD.java similarity index 53% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderWorldCMD.java index ee249abe..5739c6d5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_masterbuilderworld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/BuilderWorldCMD.java @@ -1,141 +1,109 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.world.WorldTime; -import me.totalfreedom.totalfreedommod.world.WorldWeather; +import me.totalfreedom.totalfreedommod.world.manager.WorldTime; +import me.totalfreedom.totalfreedommod.world.manager.WorldWeather; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Allows for master builders to configure the time, the weather of the MasterBuilder, and allows for players to go to the MasterBuilderWorld.", +@CommandParameters(name = "masterbuilderworld", description = "Allows for master builders to configure the time, the weather of the MasterBuilder, and allows for players to go to the MasterBuilderWorld.", usage = "/ [time | weather ]", - aliases = "mbw,mbworld") -public class Command_masterbuilderworld extends FreedomCommand -{ + aliases = "mbw,mbworld,builderworld") +public class BuilderWorldCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { CommandMode commandMode = null; - if (args.length == 0) - { + if (args.length == 0) { commandMode = CommandMode.TELEPORT; - } - else if (args.length >= 2) - { - if ("time".equalsIgnoreCase(args[0])) - { + } else if (args.length >= 2) { + if ("time".equalsIgnoreCase(args[0])) { commandMode = CommandMode.TIME; - } - else if ("weather".equalsIgnoreCase(args[0])) - { + } else if ("weather".equalsIgnoreCase(args[0])) { commandMode = CommandMode.WEATHER; } } - if (commandMode == null) - { + if (commandMode == null) { return false; } - try - { - switch (commandMode) - { - case TELEPORT: - { - if (!(sender instanceof Player) || playerSender == null) - { + try { + switch (commandMode) { + case TELEPORT: { + if (!(sender instanceof Player) || playerSender == null) { return false; } World masterBuilderWorld = null; - try - { - masterBuilderWorld = plugin.wm.masterBuilderWorld.getWorld(); - } - catch (Exception ignored) - { + try { + masterBuilderWorld = plugin.worldManager.masterBuilderWorld.getWorld(); + } catch (Exception ignored) { } - if (masterBuilderWorld == null || playerSender.getWorld() == masterBuilderWorld) - { + if (masterBuilderWorld == null || playerSender.getWorld() == masterBuilderWorld) { msg("Going to the main world."); PaperLib.teleportAsync(playerSender, server.getWorlds().get(0).getSpawnLocation()); - } - else - { + } else { msg("Going to the Master Builder world"); - plugin.wm.masterBuilderWorld.sendToWorld(playerSender); + plugin.worldManager.masterBuilderWorld.sendToWorld(playerSender); } break; } - case TIME: - { + case TIME: { assertCommandPerms(sender, playerSender); - if (args.length == 2) - { + if (args.length == 2) { WorldTime timeOfDay = WorldTime.getByAlias(args[1]); - if (timeOfDay != null) - { - plugin.wm.masterBuilderWorld.setTimeOfDay(timeOfDay); + if (timeOfDay != null) { + plugin.worldManager.masterBuilderWorld.setTimeOfDay(timeOfDay); msg("MasterBuilder world time set to: " + timeOfDay.name()); - } - else - { + } else { msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight"); } - } - else - { + } else { return false; } break; } - case WEATHER: - { + case WEATHER: { assertCommandPerms(sender, playerSender); - if (args.length == 2) - { + if (args.length == 2) { WorldWeather weatherMode = WorldWeather.getByAlias(args[1]); - if (weatherMode != null) - { - plugin.wm.masterBuilderWorld.setWeatherMode(weatherMode); + if (weatherMode != null) { + plugin.worldManager.masterBuilderWorld.setWeatherMode(weatherMode); msg("MasterBuilder world weather set to: " + weatherMode.name()); - } - else - { + } else { msg("Invalid weather mode. Can be: off, rain, storm"); } - } - else - { + } else { return false; } break; } - default: - { + default: { return false; } } - } - catch (PermissionDeniedException ex) - { - if (ex.getMessage().isEmpty()) - { + } catch (PermissionDeniedException ex) { + if (ex.getMessage().isEmpty()) { return noPerms(); } msg(ex.getMessage()); @@ -146,24 +114,16 @@ public class Command_masterbuilderworld extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return Collections.emptyList(); } - if (args.length == 1) - { + if (args.length == 1) { return Arrays.asList("time", "weather"); - } - else if (args.length == 2) - { - if (args[0].equals("time")) - { + } else if (args.length == 2) { + if (args[0].equals("time")) { return Arrays.asList("morning", "noon", "evening", "night"); - } - else if (args[0].equals("weather")) - { + } else if (args[0].equals("weather")) { return Arrays.asList("off", "rain", "storm"); } } @@ -171,31 +131,25 @@ 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.isAdmin(playerSender)) - { + private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException { + if (!(sender instanceof Player) || playerSender == null || !plugin.adminList.isAdmin(playerSender)) { throw new PermissionDeniedException(); } } - private enum CommandMode - { + private enum CommandMode { TELEPORT, TIME, WEATHER } - private static class PermissionDeniedException extends Exception - { + private static class PermissionDeniedException extends Exception { private static final long serialVersionUID = 1L; - private PermissionDeniedException() - { + private PermissionDeniedException() { super(""); } - private PermissionDeniedException(String string) - { + private PermissionDeniedException(String string) { super(string); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CageCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CageCMD.java index c7992547..82ac6348 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CageCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -17,149 +17,116 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.ADMIN, 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 -{ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - if (args.length == 0) - { +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "cage", description = "Place a cage around someone with certain blocks, or someone's player head.", usage = "/ [head | block] [playername | blockname]") +public class CageCMD 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 == 0) { return false; } String skullName = null; - if (args[0].equalsIgnoreCase("purge")) - { + if (args[0].equalsIgnoreCase("purge")) { FUtil.adminAction(sender.getName(), "Uncaging all players", true); - for (Player player : server.getOnlinePlayers()) - { - final FPlayer fPlayer = plugin.pl.getPlayer(player); + for (Player player : server.getOnlinePlayers()) { + final FPlayer fPlayer = plugin.playerList.getPlayer(player); fPlayer.getCageData().setCaged(false); } return true; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - final FPlayer fPlayer = plugin.pl.getPlayer(player); - if (fPlayer.getCageData().isCaged()) - { + final FPlayer fPlayer = plugin.playerList.getPlayer(player); + if (fPlayer.getCageData().isCaged()) { msg("That player is already caged.", ChatColor.RED); return true; } Material outerMaterial = Material.GLASS; Material innerMaterial = Material.AIR; - if (args.length >= 2 && args[1] != null) - { + if (args.length >= 2 && args[1] != null) { final String s = args[1]; - switch (s) - { - case "head": - { + switch (s) { + case "head" -> { outerMaterial = Material.PLAYER_HEAD; - if (args.length >= 3) - { + if (args.length >= 3) { skullName = args[2]; - } - else - { + } else { outerMaterial = Material.SKELETON_SKULL; } break; } - case "block": - { - if (args.length >= 3) - { + case "block" -> { + if (args.length >= 3) { // Checks the validity of the Material and checks if it's a block. // This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual // nightmare of switch-cases. - if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock()) - { + if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock()) { outerMaterial = Material.matchMaterial(args[2]); break; - } - else - { + } else { msg("Invalid block!", ChatColor.RED); return true; } - } - else - { + } else { return false; } } - default: - { + default -> { return false; } } } - if (outerMaterial == Material.PLAYER_HEAD) - { + if (outerMaterial == Material.PLAYER_HEAD) { FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); - } - else - { + } else { FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); } Location location = player.getLocation().clone().add(0.0, 1.0, 0.0); - if (skullName != null) - { + if (skullName != null) { fPlayer.getCageData().cage(location, outerMaterial, innerMaterial, skullName); - } - else - { + } else { fPlayer.getCageData().cage(location, outerMaterial, innerMaterial); } player.setGameMode(GameMode.SURVIVAL); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); return true; } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return null; } - if (args.length == 1) - { + if (args.length == 1) { List arguments = new ArrayList<>(); arguments.add("purge"); arguments.addAll(FUtil.getPlayerList()); return arguments; - } - else if (args.length == 2) - { - if (!args[0].equals("purge")) - { + } else if (args.length == 2) { + if (!args[0].equals("purge")) { return Arrays.asList("head", "block"); } - } - else if (args.length == 3) - { - if (args[1].equals("block")) - { + } else if (args.length == 3) { + if (args[1].equals("block")) { return FUtil.getAllMaterialNames(); - } - else if (args[1].equals("head")) - { + } else if (args[1].equals("head")) { return FUtil.getPlayerList(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CakeCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CakeCMD.java index 908e711a..a7eceffe 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cake.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CakeCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -11,19 +15,16 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "cake", description = "For the people that are still alive - gives a cake to everyone on the server.", usage = "/") +public class CakeCMD extends FreedomCommand { public static final String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake."; @Override - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { final StringBuilder output = new StringBuilder(); - for (final String word : CAKE_LYRICS.split(" ")) - { + for (final String word : CAKE_LYRICS.split(" ")) { output.append(FUtil.randomChatColor()).append(word).append(" "); } @@ -33,11 +34,9 @@ public class Command_cake extends FreedomCommand heldItemMeta.setDisplayName(ChatColor.WHITE + "The " + ChatColor.DARK_GRAY + "Lie"); heldItem.setItemMeta(heldItemMeta); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { final int firstEmpty = player.getInventory().firstEmpty(); - if (firstEmpty >= 0) - { + if (firstEmpty >= 0) { player.getInventory().setItem(firstEmpty, heldItem); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CartSitCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CartSitCMD.java index 5e90f925..c7c8d33b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cartsit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CartSitCMD.java @@ -1,73 +1,60 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Objects; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Minecart; import org.bukkit.entity.Player; +import java.util.Objects; + @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Sit in nearest minecart. If target is in a minecart already, they will disembark.", usage = "/ [partialname]") -public class Command_cartsit extends FreedomCommand -{ +@CommandParameters(name = "cartsit", description = "Sit in nearest minecart. If target is in a minecart already, they will disembark.", usage = "/ [partialname]") +public class CartSitCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { Player targetPlayer = playerSender; - if (args.length == 1 && plugin.al.isAdmin(sender)) - { + if (args.length == 1 && plugin.adminList.isAdmin(sender)) { targetPlayer = getPlayer(args[0]); - if (targetPlayer == null) - { + if (targetPlayer == null) { msg(PLAYER_NOT_FOUND); return true; } } - if (senderIsConsole) - { - if (targetPlayer == null) - { + if (senderIsConsole) { + if (targetPlayer == null) { msg("When used from the console, you must define a target player: /cartsit "); return true; } } - if (targetPlayer.isInsideVehicle()) - { + if (targetPlayer.isInsideVehicle()) { Objects.requireNonNull(targetPlayer.getVehicle()).eject(); - } - else - { + } else { Minecart nearest_cart = null; - for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) - { - if (cart.isEmpty()) - { - if (nearest_cart == null) - { + for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) { + if (cart.isEmpty()) { + if (nearest_cart == null) { nearest_cart = cart; - } - else - { - if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation())) - { + } else { + if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation())) { nearest_cart = cart; } } } } - if (nearest_cart != null) - { + if (nearest_cart != null) { nearest_cart.addPassenger(targetPlayer); - } - else - { + } else { msg("There are no empty minecarts in the target world."); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CleanChatCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CleanChatCMD.java new file mode 100644 index 00000000..80bbaa84 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CleanChatCMD.java @@ -0,0 +1,29 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "cleanchat", description = "Clears the chat.", usage = "/", aliases = "cc") +public class CleanChatCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(player)) { + for (int i = 0; i < 100; i++) { + msg(player, ""); + } + } + } + FUtil.adminAction(sender.getName(), "Cleared chat", true); + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearDiscordQueueCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearDiscordQueueCMD.java new file mode 100644 index 00000000..3f02452b --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearDiscordQueueCMD.java @@ -0,0 +1,22 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) +@CommandParameters(name = "cleardiscordqueue", description = "Clear the discord message queue.", usage = "/") +public class ClearDiscordQueueCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + plugin.discord.clearQueue(); + msg("Cleared the discord message queue."); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearInventoryCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearInventoryCMD.java index a5574813..306c3fdd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearinventory.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClearInventoryCMD.java @@ -1,51 +1,44 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Clear your inventory.", usage = "/ [player]", aliases = "ci,clear") -public class Command_clearinventory extends FreedomCommand -{ +@CommandParameters(name = "clearinventory", description = "Clear your inventory.", usage = "/ [player]", aliases = "ci,clear") +public class ClearInventoryCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length < 1) - { - if (senderIsConsole) - { + if (args.length < 1) { + if (senderIsConsole) { return false; } playerSender.getInventory().clear(); msg("Your inventory has been cleared."); - } - else - { - if (plugin.al.isAdmin(sender)) - { - if (args[0].equals("-a")) - { + } else { + if (plugin.adminList.isAdmin(sender)) { + if (args[0].equals("-a")) { FUtil.adminAction(sender.getName(), "Clearing everyone's inventory", true); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { player.getInventory().clear(); } msg("Sucessfully cleared everyone's inventory."); - } - else - { + } else { Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -54,9 +47,7 @@ public class Command_clearinventory extends FreedomCommand msg("Cleared " + player.getName() + "'s inventory."); msg(player, sender.getName() + " has cleared your inventory."); } - } - else - { + } else { return noPerms(); } } @@ -65,10 +56,8 @@ 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)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1 && plugin.adminList.isAdmin(sender)) { List players = FUtil.getPlayerList(); players.add("-a"); return players; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClownFishCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClownFishCMD.java new file mode 100644 index 00000000..cddbc21b --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ClownFishCMD.java @@ -0,0 +1,28 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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(name = "clownfish", description = "Obtain a clown fish", usage = "/") +public class ClownFishCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (plugin.playerList.getData(playerSender).hasItem(ShopItem.CLOWN_FISH) && (!plugin.loginProcess.CLOWNFISH_TOGGLE.contains(playerSender.getName()))) { + playerSender.getInventory().addItem(plugin.shop.getClownFish()); + msg("You have been given a Clown Fish", ChatColor.GREEN); + } else { + msg("You do not own a Clown Fish or an admin has toggled your ability to use it. Purchase one from the shop.", ChatColor.RED); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CoinsCMD.java similarity index 76% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CoinsCMD.java index 3d0a812d..79619e4f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_coins.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CoinsCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -13,31 +17,23 @@ import java.util.ArrayList; import java.util.List; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows the amount of coins you or another player has. Also allows you to give coins to other players.", usage = "/ [player] | pay ") -public class Command_coins extends FreedomCommand -{ +@CommandParameters(name = "coins", description = "Shows the amount of coins you or another player has. Also allows you to give coins to other players.", usage = "/ [player] | pay ") +public class CoinsCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!ConfigEntry.SHOP_ENABLED.getBoolean()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigEntry.SHOP_ENABLED.getBoolean()) { msg("The shop is currently disabled!", ChatColor.RED); return true; } final String prefix = FUtil.colorize(ConfigEntry.SHOP_PREFIX.getString() + " "); - switch (args.length) - { + switch (args.length) { // Mode for seeing how many coins the sender has (doesn't work from console) - case 0: - { - if (senderIsConsole) - { + case 0: { + if (senderIsConsole) { msg("When used from the console, you must define a target player."); - } - else - { + } else { PlayerData playerData = getData(playerSender); msg(prefix + ChatColor.GREEN + "You have " + ChatColor.RED + playerData.getCoins() + ChatColor.GREEN + " coins."); @@ -46,16 +42,12 @@ public class Command_coins extends FreedomCommand } // Mode for seeing how many coins a player has. - case 1: - { + case 1: { Player target = getPlayer(args[0]); - if (target == null) - { + if (target == null) { msg(PLAYER_NOT_FOUND); - } - else - { + } else { PlayerData playerData = getData(target); msg(prefix + ChatColor.GREEN + target.getName() + " has " + ChatColor.RED + playerData.getCoins() + ChatColor.GREEN + " coins."); } @@ -63,10 +55,8 @@ public class Command_coins extends FreedomCommand } // Mode for paying another player coins - case 3: - { - if (args[0].equalsIgnoreCase("pay")) - { + case 3: { + if (args[0].equalsIgnoreCase("pay")) { checkPlayer(); final Player target = getPlayer(args[1]); @@ -75,30 +65,23 @@ public class Command_coins extends FreedomCommand int coinsToTransfer; // Processes args[2] - try - { + try { // Prevents players from trying to be cheeky with negative numbers. coinsToTransfer = Math.max(Math.abs(Integer.parseInt(args[2])), 1); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid number: " + args[2], ChatColor.RED); return true; } // Prevents players from performing transactions they can't afford to do. - if (senderData.getCoins() < coinsToTransfer) - { + if (senderData.getCoins() < coinsToTransfer) { msg("You don't have enough coins to perform this transaction.", ChatColor.RED); return true; } - if (target == null) - { + if (target == null) { msg(PLAYER_NOT_FOUND); - } - else - { + } else { PlayerData playerData = getData(target); playerData.setCoins(playerData.getCoins() + coinsToTransfer); senderData.setCoins(senderData.getCoins() - coinsToTransfer); @@ -118,18 +101,15 @@ public class Command_coins extends FreedomCommand } } - default: - { + default: { return false; } } } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { List options = new ArrayList<>(FUtil.getPlayerList()); options.add("pay"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_colorme.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ColorMeCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_colorme.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ColorMeCMD.java index e5a3e966..0b7fec77 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_colorme.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ColorMeCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Map; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -9,45 +12,42 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Map; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Essentials Interface Command - Set your nickname to a certain color.", usage = "/ ") -public class Command_colorme extends FreedomCommand -{ +@CommandParameters(name = "colorme", description = "Essentials Interface Command - Set your nickname to a certain color.", usage = "/ ") +public class ColorMeCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { return false; } - if (args[0].equalsIgnoreCase("list")) - { + if (args[0].equalsIgnoreCase("list")) { msg("Colors: " + StringUtils.join(FUtil.CHAT_COLOR_NAMES.keySet(), ", ")); return true; } final String needle = args[0].trim().toLowerCase(); ChatColor color = null; - for (Map.Entry entry : FUtil.CHAT_COLOR_NAMES.entrySet()) - { - if (entry.getKey().contains(needle)) - { + for (Map.Entry entry : FUtil.CHAT_COLOR_NAMES.entrySet()) { + if (entry.getKey().contains(needle)) { color = entry.getValue(); break; } } - if (color == null) - { + if (color == null) { msg("Invalid color: " + needle + " - Use \"/colorme list\" to list colors."); return true; } final String newNick = color + ChatColor.stripColor(playerSender.getDisplayName()).trim() + ChatColor.WHITE; - plugin.esb.setNickname(sender.getName(), newNick); + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(sender.getName(), newNick); + else ((Player)sender).setDisplayName(newNick); msg("Your nickname is now: " + newNick); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_commandlist.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandListCMD.java similarity index 66% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_commandlist.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandListCMD.java index b7fb63df..3e8c17c2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_commandlist.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandListCMD.java @@ -1,10 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; @@ -13,31 +12,30 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginDescriptionFile; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Show all commands for all server plugins.", usage = "/", aliases = "cmdlist") -public class Command_commandlist extends FreedomCommand -{ +@CommandParameters(name = "commandlist", description = "Show all commands for all server plugins.", usage = "/", aliases = "cmdlist") +public class CommandListCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { List commands = new ArrayList<>(); - for (Plugin targetPlugin : server.getPluginManager().getPlugins()) - { - try - { + for (Plugin targetPlugin : server.getPluginManager().getPlugins()) { + try { PluginDescriptionFile desc = targetPlugin.getDescription(); Map> map = desc.getCommands(); - for (Entry> entry : map.entrySet()) - { + for (Entry> entry : map.entrySet()) { String command_name = entry.getKey(); commands.add(command_name); } - } - catch (Throwable ignored) - { + } catch (Throwable ignored) { } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandSpyCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandSpyCMD.java new file mode 100644 index 00000000..89d69ed5 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CommandSpyCMD.java @@ -0,0 +1,26 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.admin.Admin; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +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(name = "commandspy", description = "Spy on commands", usage = "/", aliases = "cmdspy") +public class CommandSpyCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + Admin admin = plugin.adminList.getAdmin(playerSender); + admin.setCommandSpy(!admin.getCommandSpy()); + msg("CommandSpy " + (admin.getCommandSpy() ? "enabled." : "disabled.")); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ConsoleSayCMD.java similarity index 50% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ConsoleSayCMD.java index 4fb77b68..2c97d619 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_consolesay.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ConsoleSayCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -9,21 +13,18 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "consolesay", description = "Telnet/Console command - Send a chat message with chat formatting over telnet.", usage = "/ ", aliases = "csay") +public class ConsoleSayCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } String message = StringUtils.join(args, " "); FUtil.bcastMsg(String.format("§7[CONSOLE] §c%s §8\u00BB §f%s", sender.getName(), StringUtils.join(args, " "))); - plugin.dc.messageChatChannel("[CONSOLE] " + sender.getName() + " \u00BB " + ChatColor.stripColor(message)); + plugin.discord.messageChatChannel("[CONSOLE] " + sender.getName() + " \u00BB " + ChatColor.stripColor(message)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CookieCMD.java similarity index 73% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CookieCMD.java index e404ef14..96f79e0f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cookie.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CookieCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -11,27 +14,25 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import java.util.Arrays; + @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "cookie", description = "For those who have no friends - gives a cookie to everyone on the server.", usage = "/") +public class CookieCMD extends FreedomCommand { public static final String COOKIE_LYRICS = "Imagine that you have zero cookies and you split them evenly among zero friends. How many cookies does each person get? See? It doesn't make sense. And Cookie Monster is sad that there are no cookies, and you are sad that you have no friends."; public static final String LORE = "But, you can have a cookie anyways,\nsince you are sad you are have no friends."; @Override - public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { final StringBuilder output = new StringBuilder(); - for (final String word : COOKIE_LYRICS.split(" ")) - { + for (final String word : COOKIE_LYRICS.split(" ")) { output.append(FUtil.randomChatColor()).append(word).append(" "); } final StringBuilder lore = new StringBuilder(); - for (final String word : LORE.split(" ")) - { + for (final String word : LORE.split(" ")) { lore.append(FUtil.randomChatColor()).append(word).append(" "); } @@ -48,11 +49,9 @@ public class Command_cookie extends FreedomCommand heldItemMeta.setLore(Arrays.asList(lore.toString().split("\n"))); heldItem.setItemMeta(heldItemMeta); - for (final Player player : server.getOnlinePlayers()) - { + for (final Player player : server.getOnlinePlayers()) { final int firstEmpty = player.getInventory().firstEmpty(); - if (firstEmpty >= 0) - { + if (firstEmpty >= 0) { player.getInventory().setItem(firstEmpty, heldItem); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CreativeCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/CreativeCMD.java index a24c8043..5123139c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_creative.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/CreativeCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.GameMode; @@ -8,17 +12,13 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Quickly change your own gamemode to creative, define someone's username to change theirs, or change everyone's gamemode on the server.", usage = "/ <-a | [partialname]>", aliases = "gmc") -public class Command_creative extends FreedomCommand -{ +@CommandParameters(name = "creative", description = "Quickly change your own gamemode to creative, define someone's username to change theirs, or change everyone's gamemode on the server.", usage = "/ <-a | [partialname]>", aliases = "gmc") +public class CreativeCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - if (isConsole()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + if (isConsole()) { msg("When used from the console, you must define a target player."); return true; } @@ -30,10 +30,8 @@ public class Command_creative extends FreedomCommand checkRank(Rank.ADMIN); - if (args[0].equals("-a")) - { - for (Player targetPlayer : server.getOnlinePlayers()) - { + if (args[0].equals("-a")) { + for (Player targetPlayer : server.getOnlinePlayers()) { targetPlayer.setGameMode(GameMode.CREATIVE); } @@ -44,8 +42,7 @@ public class Command_creative extends FreedomCommand Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deafen.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeafenCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_deafen.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeafenCMD.java index d3358487..09538cb1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deafen.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeafenCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.SplittableRandom; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.Location; import org.bukkit.Sound; @@ -9,37 +12,32 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import java.util.SplittableRandom; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Makes random sounds.", usage = "/") -public class Command_deafen extends FreedomCommand -{ +@CommandParameters(name = "deafen", description = "Makes random sounds.", usage = "/") +public class DeafenCMD extends FreedomCommand { public static final double STEPS = 10.0; private static final SplittableRandom random = new SplittableRandom(); - private static Location randomOffset(Location a) - { + private static Location randomOffset(Location a) { return a.clone().add(randomDoubleRange() * 5.0, randomDoubleRange() * 5.0, randomDoubleRange() * 5.0); } - private static Double randomDoubleRange() - { + private static Double randomDoubleRange() { return -1.0 + (random.nextDouble() * ((1.0 - -1.0) + 1.0)); } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { { - for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) - { - final float pitch = (float)(percent * 2.0); + for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) { + final float pitch = (float) (percent * 2.0); - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { + public void run() { playerSender.playSound(randomOffset(playerSender.getLocation()), Sound.values()[random.nextInt(Sound.values().length)], 100.0f, pitch); } }.runTaskLater(plugin, Math.round(20.0 * percent * 2.0)); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_debugstick.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DebugStickCMD.java similarity index 71% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_debugstick.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/DebugStickCMD.java index ea0e0b3d..b01832c5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_debugstick.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DebugStickCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -11,18 +13,19 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import java.util.Arrays; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Get a stick of happiness.", usage = "/") -public class Command_debugstick extends FreedomCommand -{ +@CommandParameters(name = "debugstick", description = "Get a stick of happiness.", usage = "/") +public class DebugStickCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { ItemStack itemStack = new ItemStack(Material.DEBUG_STICK); ItemMeta itemMeta = itemStack.getItemMeta(); assert itemMeta != null; - itemMeta.setDisplayName(ChatColor.GOLD.toString() + ChatColor.BOLD.toString() + "Stick of Happiness"); + itemMeta.setDisplayName(ChatColor.GOLD.toString() + ChatColor.BOLD + "Stick of Happiness"); List lore = Arrays.asList( ChatColor.RED + "This is the most powerful stick in the game.", ChatColor.DARK_BLUE + "You can left click to select what you want to change.", diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DenickCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DenickCMD.java new file mode 100644 index 00000000..f85765c7 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DenickCMD.java @@ -0,0 +1,34 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "denick", description = "Essentials Interface Command - Remove the nickname of all players on the server.", usage = "/") +public class DenickCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.essentialsBridge.isEnabled()) { + msg("Essentials is not enabled on this server."); + return true; + } + + FUtil.adminAction(sender.getName(), "Removing all nicknames", false); + + for (Player player : server.getOnlinePlayers()) { + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(player.getName(), null); + else player.setDisplayName(null); + } + + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeopAllCMD.java similarity index 51% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeopAllCMD.java index 84817ad7..688108ac 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeopAllCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; @@ -7,20 +11,17 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Deop everyone on the server.", usage = "/") -public class Command_deopall extends FreedomCommand -{ +@CommandParameters(name = "deopall", description = "Deop everyone on the server.", usage = "/") +public class DeopAllCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + 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); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { player.setOp(false); msg(player, YOU_ARE_NOT_OP); - plugin.rm.updateDisplay(player); + plugin.rankManager.updateDisplay(player); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeopCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeopCMD.java index 1cdddbe6..2ddfba16 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DeopCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -9,51 +11,43 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Deop a player", usage = "/ ") -public class Command_deop extends FreedomCommand -{ +@CommandParameters(name = "deop", description = "Deop a player", usage = "/ ") +public class DeopCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } boolean silent = false; - if (args.length == 2) - { + if (args.length == 2) { silent = args[1].equalsIgnoreCase("-s"); } final String targetName = args[0].toLowerCase(); final List matchedPlayerNames = new ArrayList<>(); - for (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() && !plugin.al.isVanished(player.getName())) - { + || player.getName().contains(targetName) || player.getDisplayName().contains(targetName)) { + if (player.isOp() && !plugin.adminList.isVanished(player.getName())) { matchedPlayerNames.add(player.getName()); player.setOp(false); msg(player, YOU_ARE_NOT_OP); - plugin.rm.updateDisplay(player); + plugin.rankManager.updateDisplay(player); } } } - if (!matchedPlayerNames.isEmpty()) - { - if (!silent) - { + if (!matchedPlayerNames.isEmpty()) { + if (!silent) { FUtil.adminAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false); } - } - else - { + } else { msg("Either the player is already deopped, or the player could not be found."); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DisguiseToggleCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DisguiseToggleCMD.java new file mode 100644 index 00000000..442e5d51 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DisguiseToggleCMD.java @@ -0,0 +1,36 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "disguisetoggle", description = "Toggle LibsDisguises for everyone online.", usage = "/", aliases = "dtoggle") +public class DisguiseToggleCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.libsDisguisesBridge.isEnabled()) { + msg("LibsDisguises is not enabled."); + return true; + } + + FUtil.adminAction(sender.getName(), (plugin.libsDisguisesBridge.isDisguisesEnabled() ? "Disabling" : "Enabling") + " disguises", false); + + if (plugin.libsDisguisesBridge.isDisguisesEnabled()) { + plugin.libsDisguisesBridge.undisguiseAll(true); + plugin.libsDisguisesBridge.setDisguisesEnabled(false); + } else { + plugin.libsDisguisesBridge.setDisguisesEnabled(true); + } + + msg("Disguises are now " + (plugin.libsDisguisesBridge.isDisguisesEnabled() ? "enabled." : "disabled.")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DispFillCMD.java similarity index 67% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/DispFillCMD.java index 77d72ef3..ee500c06 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DispFillCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -15,34 +17,29 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Fill nearby dispensers with a set of items of your choice.", usage = "/ ") -public class Command_dispfill extends FreedomCommand -{ +import java.util.ArrayList; +import java.util.List; - private static void setDispenserContents(final Block targetBlock, final ItemStack[] items) - { - if (targetBlock.getType() == Material.DISPENSER) - { - final Inventory dispenserInv = ((Dispenser)targetBlock.getState()).getInventory(); +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "dispfill", description = "Fill nearby dispensers with a set of items of your choice.", usage = "/ ") +public class DispFillCMD extends FreedomCommand { + + private static void setDispenserContents(final Block targetBlock, final ItemStack[] items) { + if (targetBlock.getType() == Material.DISPENSER) { + final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory(); dispenserInv.clear(); dispenserInv.addItem(items); } } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 2) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 2) { int radius; - try - { + try { radius = Math.max(5, Math.min(25, Integer.parseInt(args[0]))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid radius."); return true; } @@ -50,16 +47,12 @@ public class Command_dispfill extends FreedomCommand final List items = new ArrayList<>(); final String[] itemsRaw = StringUtils.split(args[1], ","); - for (final String searchItem : itemsRaw) - { + for (final String searchItem : itemsRaw) { Material material = Material.matchMaterial(searchItem); - if (material != null) - { + if (material != null) { items.add(new ItemStack(material, 64)); - } - else - { + } else { msg("Skipping invalid item: " + searchItem); } } @@ -69,19 +62,14 @@ public class Command_dispfill extends FreedomCommand int affected = 0; final Location centerLocation = playerSender.getLocation(); final Block centerBlock = centerLocation.getBlock(); - for (int xOffset = -radius; xOffset <= radius; xOffset++) - { - for (int yOffset = -radius; yOffset <= radius; yOffset++) - { - for (int zOffset = -radius; zOffset <= radius; zOffset++) - { + for (int xOffset = -radius; xOffset <= radius; xOffset++) { + for (int yOffset = -radius; yOffset <= radius; yOffset++) { + for (int zOffset = -radius; zOffset <= radius; zOffset++) { final Block targetBlock = centerBlock.getRelative(xOffset, yOffset, zOffset); - if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius * radius)) - { - if (targetBlock.getType().equals(Material.DISPENSER)) - { + if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius * radius)) { + if (targetBlock.getType().equals(Material.DISPENSER)) { msg("Filling dispenser @ " + FUtil.formatLocation(targetBlock.getLocation())); - plugin.cpb.getCoreProtectAPI().logContainerTransaction(sender.getName(), targetBlock.getLocation()); + plugin.coreProtectBridge.getCoreProtectAPI().logContainerTransaction(sender.getName(), targetBlock.getLocation()); setDispenserContents(targetBlock, itemsArray); affected++; } @@ -91,9 +79,7 @@ public class Command_dispfill extends FreedomCommand } msg("Done. " + affected + " dispenser(s) filled."); - } - else - { + } else { return false; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DoomCMD.java similarity index 71% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/DoomCMD.java index 8e6f4187..59e2f770 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/DoomCMD.java @@ -1,7 +1,11 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.punishments.Punishment; @@ -19,22 +23,18 @@ import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; @CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Sends the specified player to their doom.", usage = "/ [reason]") -public class Command_doom extends FreedomCommand -{ +@CommandParameters(name = "doom", description = "Sends the specified player to their doom.", usage = "/ [reason]") +public class DoomCMD extends FreedomCommand { @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -46,16 +46,14 @@ public class Command_doom extends FreedomCommand // Remove from admin Admin admin = getAdmin(player); - if (admin != null) - { + if (admin != null) { FUtil.adminAction(sender.getName(), "Removing " + player.getName() + " from the admin list", true); admin.setActive(false); - plugin.al.save(admin); - plugin.al.updateTables(); - plugin.ptero.updateAccountStatus(admin); - if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) - { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); + plugin.pterodactyl.updateAccountStatus(admin); + if (plugin.discord.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { + Discord.syncRoles(admin, plugin.playerList.getData(admin.getName()).getDiscordID()); } } @@ -67,8 +65,7 @@ public class Command_doom extends FreedomCommand String reason = null; - if (args.length > 1) - { + if (args.length > 1) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } @@ -76,7 +73,7 @@ public class Command_doom extends FreedomCommand Ban ban = Ban.forPlayer(player, sender); ban.setReason((reason == null ? "FUCKOFF" : reason)); ban.addIp(ip); - plugin.bm.addBan(ban); + plugin.banManager.addBan(ban); // Set gamemode to survival player.setGameMode(GameMode.SURVIVAL); @@ -97,13 +94,11 @@ public class Command_doom extends FreedomCommand final String kickReason = (reason == null ? "FUCKOFF, and get your shit together!" : reason); // Log doom - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.DOOM, reason)); + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.DOOM, reason)); - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { + public void run() { // strike lightning player.getWorld().strikeLightningEffect(player.getLocation()); @@ -112,11 +107,9 @@ public class Command_doom extends FreedomCommand } }.runTaskLater(plugin, 2L * 20L); - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { + public void run() { // message FUtil.adminAction(sender.getName(), "Banning " + player.getName(), true); msg(sender, player.getName() + " has been banned and IP is: " + ip); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EjectCMD.java similarity index 68% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/EjectCMD.java index 693ae101..320479a2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EjectCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -7,28 +11,24 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Eject any entities that are riding you.", usage = "/") -public class Command_eject extends FreedomCommand -{ +@CommandParameters(name = "eject", description = "Eject any entities that are riding you.", usage = "/") +public class EjectCMD extends FreedomCommand { /* Player.getShoulderEntityLeft() and Player.getShoulderEntityRight() are deprecated, however unless Player.getPassengers() also includes shoulders (which isn't likely, given the official documentation doesn't state an alternative method to use instead), these methods will continue to be used here. */ @SuppressWarnings("deprecation") @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { // Uses the size of the return value of Player.getPassengers() as the starting number of entities ejected int count = playerSender.getPassengers().size(); // Removes any entities from the sender's shoulders - if (playerSender.getShoulderEntityLeft() != null) - { + if (playerSender.getShoulderEntityLeft() != null) { playerSender.setShoulderEntityLeft(null); count++; } - if (playerSender.getShoulderEntityRight() != null) - { + if (playerSender.getShoulderEntityRight() != null) { playerSender.setShoulderEntityLeft(null); count++; } @@ -36,12 +36,9 @@ public class Command_eject extends FreedomCommand // Removes anything riding the sender playerSender.eject(); - if (count != 0) - { + if (count != 0) { msg(count + " entit" + (count == 1 ? "y was" : "ies were") + " ejected.", ChatColor.GREEN); - } - else - { + } else { msg("Nothing was ejected.", ChatColor.GREEN); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EnchantCMD.java similarity index 60% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/EnchantCMD.java index b6d154b6..c087f832 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EnchantCMD.java @@ -1,10 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; @@ -15,16 +14,15 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Enchant items.", usage = "/ [level] | remove >") -public class Command_enchant extends FreedomCommand -{ +import java.util.*; - public static List stringNumberRange(int min, int max) - { +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "enchant", description = "Enchant items.", usage = "/ [level] | remove >") +public class EnchantCMD extends FreedomCommand { + + public static List stringNumberRange(int min, int max) { List range = new ArrayList<>(); - for (int i = min; i <= max; i++) - { + for (int i = min; i <= max; i++) { range.add(String.valueOf(i)); } @@ -33,135 +31,95 @@ public class Command_enchant extends FreedomCommand @SuppressWarnings("deprecation") @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } ItemStack item = Objects.requireNonNull(playerSender.getEquipment()).getItemInMainHand(); - if (item.getType() == Material.AIR) - { + if (item.getType() == Material.AIR) { msg("You have to hold an item to enchant it"); return true; } - if (args[0].equalsIgnoreCase("list")) - { + if (args[0].equalsIgnoreCase("list")) { boolean has_enchantments = false; StringBuilder possible_ench = new StringBuilder("Possible enchantments for held item: "); - for (Enchantment ench : Enchantment.values()) - { - if (ench.canEnchantItem(item)) - { + for (Enchantment ench : Enchantment.values()) { + if (ench.canEnchantItem(item)) { has_enchantments = true; possible_ench.append(ench.getName()).append(", "); } } - if (has_enchantments) - { + if (has_enchantments) { msg(possible_ench.toString()); - } - else - { + } else { msg("The held item has no enchantments."); } - } - else if (args[0].equalsIgnoreCase("addall")) - { - for (Enchantment ench : Enchantment.values()) - { - try - { - if (ench.canEnchantItem(item)) - { + } else if (args[0].equalsIgnoreCase("addall")) { + for (Enchantment ench : Enchantment.values()) { + try { + if (ench.canEnchantItem(item)) { item.addEnchantment(ench, ench.getMaxLevel()); } - } - catch (Exception ex) - { + } catch (Exception ex) { msg("Could not add enchantment: " + ench.getName()); } } msg("Added all possible enchantments for this item."); - } - else if (args[0].equalsIgnoreCase("reset")) - { - for (Enchantment ench : item.getEnchantments().keySet()) - { + } else if (args[0].equalsIgnoreCase("reset")) { + for (Enchantment ench : item.getEnchantments().keySet()) { item.removeEnchantment(ench); } msg("Removed all enchantments."); - } - else - { - if (args.length < 2) - { + } else { + if (args.length < 2) { return false; } Enchantment ench = null; - try - { + try { ench = Enchantment.getByName(args[1].toUpperCase()); - } - catch (Exception ignored) - { + } catch (Exception ignored) { } - if (ench == null) - { + if (ench == null) { msg(args[1] + " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item."); return true; } - if (args[0].equalsIgnoreCase("add")) - { - if (!ench.canEnchantItem(item) && !ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean()) - { + if (args[0].equalsIgnoreCase("add")) { + if (!ench.canEnchantItem(item) && !ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean()) { msg("Can't use this enchantment on held item."); return true; } int level = ench.getMaxLevel(); - if (args.length > 2) - { - try - { - if (ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean()) - { + if (args.length > 2) { + try { + if (ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean()) { level = Integer.parseInt(args[2]); - } - else - { + } else { level = Math.max(1, Math.min(ench.getMaxLevel(), Integer.parseInt(args[2]))); } - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("\"" + args[2] + "\" is not a valid number", ChatColor.RED); return true; } } - if (!ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean()) - { + if (!ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean()) { item.addEnchantment(ench, level); - } - else - { + } else { item.addUnsafeEnchantment(ench, level); } msg("Added enchantment: " + ench.getName()); - } - else if (args[0].equals("remove")) - { + } else if (args[0].equals("remove")) { item.removeEnchantment(ench); msg("Removed enchantment: " + ench.getName()); @@ -172,24 +130,19 @@ public class Command_enchant extends FreedomCommand } @SuppressWarnings("deprecation") - public List getAllEnchantments() - { + public List getAllEnchantments() { List enchantments = new ArrayList<>(); - for (Enchantment enchantment : Enchantment.values()) - { + for (Enchantment enchantment : Enchantment.values()) { enchantments.add(enchantment.getName()); } return enchantments; } @SuppressWarnings("deprecation") - public List getAllEnchantments(ItemStack item) - { + public List getAllEnchantments(ItemStack item) { List enchantments = new ArrayList<>(); - for (Enchantment enchantment : Enchantment.values()) - { - if (enchantment.canEnchantItem(item)) - { + for (Enchantment enchantment : Enchantment.values()) { + if (enchantment.canEnchantItem(item)) { enchantments.add(enchantment.getName()); } } @@ -197,11 +150,9 @@ public class Command_enchant extends FreedomCommand } @SuppressWarnings("deprecation") - public List getEnchantments(ItemStack item) - { + public List getEnchantments(ItemStack item) { List enchantments = new ArrayList<>(); - for (Enchantment enchantment : item.getEnchantments().keySet()) - { + for (Enchantment enchantment : item.getEnchantments().keySet()) { enchantments.add(enchantment.getName()); } return enchantments; @@ -209,61 +160,40 @@ public class Command_enchant extends FreedomCommand @SuppressWarnings("deprecation") @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { Player player; - if (sender instanceof Player) - { - player = (Player)sender; - } - else - { + if (sender instanceof Player) { + player = (Player) sender; + } else { return Collections.emptyList(); } ItemStack item = Objects.requireNonNull(player.getEquipment()).getItemInMainHand(); - if (item.getType() == Material.AIR) - { + if (item.getType() == Material.AIR) { return Collections.emptyList(); } boolean unsafe = ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean(); - if (args.length == 1) - { + if (args.length == 1) { return Arrays.asList("list", "addall", "reset", "add", "remove"); - } - else if (args.length == 2) - { - if (args[0].equals("add")) - { - if (unsafe) - { + } else if (args.length == 2) { + if (args[0].equals("add")) { + if (unsafe) { return getAllEnchantments(); - } - else - { + } else { return getAllEnchantments(item); } - } - else if (args[0].equals("remove")) - { + } else if (args[0].equals("remove")) { return getEnchantments(item); } - } - else if (args.length == 3) - { - if (args[0].equals("add")) - { + } else if (args.length == 3) { + if (args[0].equals("add")) { Enchantment enchantment = Enchantment.getByName(args[1].toUpperCase()); - if (enchantment != null) - { - if (!unsafe) - { + if (enchantment != null) { + if (!unsafe) { return stringNumberRange(1, enchantment.getMaxLevel()); - } - else - { + } else { return Collections.singletonList("[level]"); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EndCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EndCMD.java new file mode 100644 index 00000000..d2bddd0c --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EndCMD.java @@ -0,0 +1,21 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "end", description = "Go to \"The End\".", usage = "/") +public class EndCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + plugin.worldManager.gotoWorld(playerSender, server.getWorlds().get(0).getName() + "_the_end"); + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EntityWipeCMD.java similarity index 60% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/EntityWipeCMD.java index f83157f5..1a1b5c29 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/EntityWipeCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; @@ -12,105 +13,84 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.ADMIN, 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 -{ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; - public static List getAllEntities() - { +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "entitywipe", description = "Remove various server entities that may cause lag, such as dropped items, minecarts, and boats.", usage = "/ [name | -a]", aliases = "ew,rd, ewipe, entityw") +public class EntityWipeCMD extends FreedomCommand { + + public static List getAllEntities() { List entityTypes = new ArrayList<>(); - for (EntityType entityType : EntityType.values()) - { - if (!Groups.MOB_TYPES.contains(entityType)) - { + for (EntityType entityType : EntityType.values()) { + if (!Groups.MOB_TYPES.contains(entityType)) { entityTypes.add(entityType); } } return entityTypes; } - public static List getAllEntityNames() - { + public static List getAllEntityNames() { List names = new ArrayList<>(); - for (EntityType entityType : getAllEntities()) - { + for (EntityType entityType : getAllEntities()) { names.add(entityType.name()); } return names; } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { EntityType type = null; String entityName = null; boolean bypassBlacklist = false; - if (args.length > 0) - { - if (args[0].equals("-a")) - { + if (args.length > 0) { + if (args[0].equals("-a")) { bypassBlacklist = true; - } - else - { - try - { + } else { + try { type = EntityType.valueOf(args[0].toUpperCase()); - } - catch (Exception e) - { + } catch (Exception e) { msg(args[0] + " is not a valid entity type.", ChatColor.RED); return true; } - if (type == EntityType.PLAYER) - { + if (type == EntityType.PLAYER) { msg("Player entities cannot be purged.", ChatColor.RED); return true; } - if (!getAllEntities().contains(type)) - { + if (!getAllEntities().contains(type)) { msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED); return true; } } } - if (type != null) - { + if (type != null) { entityName = FUtil.formatName(type.name()); } FUtil.adminAction(sender.getName(), "Purging all " + (type != null ? entityName + "s" : "entities"), true); int count; - if (type != null) - { - count = plugin.ew.wipeEntities(type); + if (type != null) { + count = plugin.entityWiper.wipeEntities(type); + } else { + count = plugin.entityWiper.wipeEntities(bypassBlacklist); } - else - { - count = plugin.ew.wipeEntities(bypassBlacklist); - } - if (count == 1) - { + if (count == 1) { msg(count + " " + (type != null ? entityName : "entity") + " removed."); - } - else - { + } else { msg(count + " " + (type != null ? entityName : "entitie") + FUtil.showS(count) + " removed."); } return true; } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { List names = getAllEntityNames(); names.add("-a"); - if (args.length == 1) - { + if (args.length == 1) { return names; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExpelCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExpelCMD.java index 2f94d1af..db10c4ee 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_expel.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExpelCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -11,36 +13,29 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.Vector; +import java.util.ArrayList; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Push people away from you.", usage = "/ [radius] [strength]") -public class Command_expel extends FreedomCommand -{ +@CommandParameters(name = "expel", description = "Push people away from you.", usage = "/ [radius] [strength]") +public class ExpelCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { double radius = 20.0; double strength = 5.0; - if (args.length >= 1) - { - try - { + if (args.length >= 1) { + try { radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0]))); - } - catch (NumberFormatException ignored) - { + } catch (NumberFormatException ignored) { } } - if (args.length >= 2) - { - try - { + if (args.length >= 2) { + try { strength = Math.max(0.0, Math.min(50.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ignored) - { + } catch (NumberFormatException ignored) { } } @@ -48,10 +43,8 @@ public class Command_expel extends FreedomCommand final Vector senderPos = playerSender.getLocation().toVector(); final List players = playerSender.getWorld().getPlayers(); - for (final Player player : players) - { - if (player.equals(playerSender)) - { + for (final Player player : players) { + if (player.equals(playerSender)) { continue; } @@ -59,16 +52,12 @@ public class Command_expel extends FreedomCommand final Vector targetPosVec = targetPos.toVector(); boolean inRange = false; - try - { + try { inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius); - } - catch (IllegalArgumentException ignored) - { + } catch (IllegalArgumentException ignored) { } - if (inRange) - { + if (inRange) { player.getWorld().createExplosion(targetPos, 0.0f, false); FUtil.setFlying(player, false); player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength)); @@ -76,12 +65,9 @@ public class Command_expel extends FreedomCommand } } - if (pushedPlayers.isEmpty()) - { + if (pushedPlayers.isEmpty()) { msg("No players pushed."); - } - else - { + } else { msg("Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers, ", ")); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplodeCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplodeCMD.java index 0b407f71..527e6e21 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_explode.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplodeCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; @@ -10,23 +12,22 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Surprise someone.", usage = "/ ") -public class Command_explode extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { +import java.util.Collections; +import java.util.List; - if (args.length == 0) - { +@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "explode", description = "Surprise someone.", usage = "/ ") +public class ExplodeCMD extends FreedomCommand { + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + + if (args.length == 0) { return false; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } @@ -34,18 +35,14 @@ public class Command_explode extends FreedomCommand player.setFlying(false); player.setVelocity(player.getVelocity().clone().add(new Vector(0, 50, 0))); - for (int i = 1; i <= 3; i++) - { + for (int i = 1; i <= 3; i++) { FUtil.createExplosionOnDelay(player.getLocation(), 2L, i * 10); } - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { - for (int i = 0; i < 4; i++) - { + public void run() { + for (int i = 0; i < 4; i++) { player.getWorld().strikeLightning(player.getLocation()); player.getWorld().createExplosion(player.getLocation(), 4L); } @@ -58,10 +55,8 @@ 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)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1 && plugin.adminList.isAdmin(sender)) { return FUtil.getPlayerList(); } return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplosiveArrowCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplosiveArrowCMD.java new file mode 100644 index 00000000..074f5fbc --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ExplosiveArrowCMD.java @@ -0,0 +1,30 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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.ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "explosivearrow", description = "Make arrows explode", usage = "/", aliases = "ea") +public class ExplosiveArrowCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + boolean onList = plugin.itemFun.explosivePlayers.contains(playerSender); + if (onList) { + plugin.itemFun.explosivePlayers.remove(playerSender); + msg("You no longer have explosive arrows", ChatColor.RED); + } else { + plugin.itemFun.explosivePlayers.add(playerSender); + msg("You now have explosive arrows", ChatColor.GREEN); + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FindIPCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FindIPCMD.java new file mode 100644 index 00000000..f37fa065 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FindIPCMD.java @@ -0,0 +1,35 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "findip", description = "Shows all IPs registered to a player", usage = "/ ", aliases = "showip,listip") +public class FindIPCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } + + final Player player = getPlayer(args[0]); + + if (player == null) { + + msg(FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + + msg("Player IPs: " + StringUtils.join(plugin.playerList.getData(player).getIps(), ", ")); + + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FireballCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FireballCMD.java new file mode 100644 index 00000000..fdf44e14 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FireballCMD.java @@ -0,0 +1,28 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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(name = "fireball", description = "Obtain a fire ball", usage = "/") +public class FireballCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (plugin.playerList.getData(playerSender).hasItem(ShopItem.FIRE_BALL)) { + playerSender.getInventory().addItem(plugin.shop.getFireBall()); + msg("You have been given a Fire Ball", ChatColor.GREEN); + } else { + msg("You do not own a Fire Ball! Purchase one from the shop.", ChatColor.RED); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FlatlandsCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FlatlandsCMD.java new file mode 100644 index 00000000..c05ea508 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FlatlandsCMD.java @@ -0,0 +1,26 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "flatlands", description = "Go to the Flatlands.", usage = "/") +public class FlatlandsCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (ConfigEntry.FLATLANDS_GENERATE.getBoolean()) { + plugin.worldManager.flatlands.sendToWorld(playerSender); + } else { + msg("Flatlands is currently disabled in the TotalFreedomMod configuration."); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ForcekillCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ForcekillCMD.java new file mode 100644 index 00000000..0186f9f9 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ForcekillCMD.java @@ -0,0 +1,36 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) +@CommandParameters(name = "forcekill", description = "Forcefully kill someone - for those who REALLY need to die.", usage = "/ ") +public class ForcekillCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.adminList.isAdmin(sender) && !senderIsConsole) { + playerSender.setHealth(0); + return true; + } + + if (args.length < 1) { + return false; + } + + final Player player = getPlayer(args[0]); + if (player == null) { + msg(PLAYER_NOT_FOUND); + return true; + } + + player.setHealth(0); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FreezeCMD.java similarity index 60% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/FreezeCMD.java index fdcce361..0d817afe 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FreezeCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import me.totalfreedom.totalfreedommod.freeze.FreezeData; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.freeze.FreezeData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -9,30 +13,24 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Freeze/Unfreeze a specified player, or all non-admins on the server.", usage = "/ [target | purge]", aliases = "fr") -public class Command_freeze extends FreedomCommand -{ +@CommandParameters(name = "freeze", description = "Freeze/Unfreeze a specified player, or all non-admins on the server.", usage = "/ [target | purge]", aliases = "fr") +public class FreezeCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - boolean gFreeze = !plugin.fm.isGlobalFreeze(); - plugin.fm.setGlobalFreeze(gFreeze); + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + boolean gFreeze = !plugin.freezer.isGlobalFreeze(); + plugin.freezer.setGlobalFreeze(gFreeze); - if (!gFreeze) - { + if (!gFreeze) { FUtil.adminAction(sender.getName(), "Unfreezing all players", false); msg("Players are now free to move."); return true; } FUtil.adminAction(sender.getName(), "Freezing all players", false); - for (Player player : server.getOnlinePlayers()) - { - if (!isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!isAdmin(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); } @@ -41,29 +39,25 @@ public class Command_freeze extends FreedomCommand return true; } - if (args[0].equalsIgnoreCase("purge")) - { + if (args[0].equalsIgnoreCase("purge")) { FUtil.adminAction(sender.getName(), "Unfreezing all players", false); - for (Player player : server.getOnlinePlayers()) - { - if (!isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!isAdmin(player)) { player.sendTitle(ChatColor.GREEN + "You've been unfrozen.", ChatColor.YELLOW + "You may now move again.", 20, 100, 60); } } - plugin.fm.purge(); + plugin.freezer.purge(); return true; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); return true; } - final FreezeData fd = plugin.pl.getPlayer(player).getFreezeData(); + final FreezeData fd = plugin.playerList.getPlayer(player).getFreezeData(); fd.setFrozen(!fd.isFrozen()); msg(player.getName() + " has been " + (fd.isFrozen() ? "frozen" : "unfrozen") + "."); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FuckoffCMD.java similarity index 50% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/FuckoffCMD.java index 169e6fbf..50425928 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_fuckoff.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/FuckoffCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; @@ -7,36 +11,26 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.SENIOR_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 -{ +@CommandParameters(name = "fuckoff", description = "You'll never even see it coming - repeatedly push players away from you until command is untoggled.", usage = "/ ") +public class FuckoffCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } - FPlayer player = plugin.pl.getPlayer(playerSender); + FPlayer player = plugin.playerList.getPlayer(playerSender); - if (!args[0].equals("on")) - { + if (!args[0].equals("on")) { player.disableFuckoff(); - } - else - { + } else { double radius = 25.0; - if (args.length >= 2) - { - try - { + if (args.length >= 2) { + try { radius = Math.max(5.0, Math.min(50, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_gcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GcmdCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_gcmd.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/GcmdCMD.java index c25f0c12..4973c565 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_gcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GcmdCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang3.StringUtils; import org.bukkit.ChatColor; @@ -8,52 +12,40 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Send a command as someone else.", usage = "/ ") -public class Command_gcmd extends FreedomCommand -{ +@CommandParameters(name = "g", description = "Send a command as someone else.", usage = "/ ") +public class GcmdCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 2) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 2) { return false; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } final String outCommand = StringUtils.join(args, " ", 1, args.length); - if (plugin.cb.isCommandBlocked(outCommand, sender)) - { + if (plugin.commandBlocker.isCommandBlocked(outCommand, sender)) { return true; } - if (plugin.al.isAdmin(player)) - { + if (plugin.adminList.isAdmin(player)) { msg(ChatColor.RED + "You can not use gcmd on admins"); return true; } - try - { + try { msg("Sending command as " + player.getName() + ": " + outCommand); - if (server.dispatchCommand(player, outCommand)) - { + if (server.dispatchCommand(player, outCommand)) { msg("Command sent."); - } - else - { + } else { msg("Unknown error sending command."); } - } - catch (Throwable ex) - { + } catch (Throwable ex) { msg("Error sending command: " + ex.getMessage()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GlowCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/GlowCMD.java index ca77a8ce..85cf5c8d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GlowCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -8,20 +12,15 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Toggles the glowing outline effect because y'all lazy as fuck", usage = "/") -public class Command_glow extends FreedomCommand -{ +@CommandParameters(name = "glow", description = "Toggles the glowing outline effect because y'all lazy as fuck", usage = "/") +public class GlowCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean glowing = false; - if (playerSender.getPotionEffect(PotionEffectType.GLOWING) != null) - { + if (playerSender.getPotionEffect(PotionEffectType.GLOWING) != null) { playerSender.removePotionEffect(PotionEffectType.GLOWING); - } - else - { + } else { PotionEffect glow = new PotionEffect(PotionEffectType.GLOWING, 1000000, 1, false, false); playerSender.addPotionEffect(glow); glowing = true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GrapplingHookCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GrapplingHookCMD.java new file mode 100644 index 00000000..9dffc5dc --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GrapplingHookCMD.java @@ -0,0 +1,28 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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(name = "grapplinghook", description = "Obtain a grappling hook", usage = "/") +public class GrapplingHookCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (plugin.playerList.getData(playerSender).hasItem(ShopItem.GRAPPLING_HOOK)) { + playerSender.getInventory().addItem(plugin.shop.getGrapplingHook()); + msg("You have been given a Grappling Hook", ChatColor.GREEN); + } else { + msg("You do not own a Grappling Hook! Purchase one from the shop.", ChatColor.RED); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_gravity.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GravityCMD.java similarity index 55% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_gravity.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/GravityCMD.java index f4f24fc2..9331b9c8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_gravity.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/GravityCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -7,13 +11,11 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Toggles player gravity on/off.", usage = "/") -public class Command_gravity extends FreedomCommand -{ +@CommandParameters(name = "gravity", description = "Toggles player gravity on/off.", usage = "/") +public class GravityCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean enabled = !playerSender.hasGravity(); playerSender.setGravity(enabled); msg((enabled ? "En" : "Dis") + "abled gravity.", (enabled ? ChatColor.GREEN : ChatColor.RED)); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/HealthCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/HealthCMD.java index 5fbd19ee..166833c1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_health.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/HealthCMD.java @@ -1,8 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.text.DecimalFormat; -import java.util.concurrent.atomic.AtomicInteger; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; import org.apache.commons.lang.math.DoubleRange; @@ -13,55 +15,48 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; +import java.text.DecimalFormat; +import java.util.concurrent.atomic.AtomicInteger; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "View server health, such as ticks-per-second, memory, etc.", usage = "/") -public class Command_health extends FreedomCommand -{ +@CommandParameters(name = "health", description = "View server health, such as ticks-per-second, memory, etc.", usage = "/") +public class HealthCMD extends FreedomCommand { private static final int BYTES_PER_MB = 1024 * 1024; private static final DoubleRange TPS_RANGE = new DoubleRange(20.0 - 0.1, 20.0 + 0.1); @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { Runtime runtime = Runtime.getRuntime(); long usedMem = runtime.totalMemory() - runtime.freeMemory(); - msg("Reserved Memory: " + (double)runtime.totalMemory() / (double)BYTES_PER_MB + "mb"); - msg("Used Memory: " + new DecimalFormat("#").format((double)usedMem / (double)BYTES_PER_MB) - + "mb (" + new DecimalFormat("#").format(((double)usedMem / (double)runtime.totalMemory()) * 100.0) + "%)"); - msg("Max Memory: " + (double)runtime.maxMemory() / (double)BYTES_PER_MB + "mb"); + msg("Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb"); + msg("Used Memory: " + new DecimalFormat("#").format((double) usedMem / (double) BYTES_PER_MB) + + "mb (" + new DecimalFormat("#").format(((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)"); + msg("Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb"); msg("Calculating ticks per second, please wait..."); - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { - try - { + public void run() { + try { TFM_TickMeter tickMeter = new TFM_TickMeter(plugin); tickMeter.startTicking(); Thread.sleep(2500); final double ticksPerSecond = tickMeter.stopTicking(); // Plugin was disabled during async task - if (!plugin.isEnabled()) - { + if (!plugin.isEnabled()) { return; } - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { + public void run() { msg("Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond) ? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond); } }.runTask(plugin); - } - catch (Exception ex) - { + } catch (Exception ex) { FLog.severe(ex); } } @@ -70,41 +65,35 @@ public class Command_health extends FreedomCommand return true; } - private static class TFM_TickMeter - { + private static class TFM_TickMeter { private final AtomicInteger ticks = new AtomicInteger(); private final TotalFreedomMod plugin; private long startTime; private BukkitTask task; - public TFM_TickMeter(TotalFreedomMod plugin) - { + public TFM_TickMeter(TotalFreedomMod plugin) { this.plugin = plugin; } - public void startTicking() - { + public void startTicking() { startTime = System.currentTimeMillis(); ticks.set(0); - task = new BukkitRunnable() - { + task = new BukkitRunnable() { @Override - public void run() - { + public void run() { ticks.incrementAndGet(); } }.runTaskTimer(plugin, 0L, 1L); } - public double stopTicking() - { + public double stopTicking() { task.cancel(); long elapsed = System.currentTimeMillis() - startTime; int tickCount = ticks.get(); - return (double)tickCount / ((double)elapsed / 1000.0); + return (double) tickCount / ((double) elapsed / 1000.0); } } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/IndefBanCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/IndefBanCMD.java new file mode 100644 index 00000000..0a6529ec --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/IndefBanCMD.java @@ -0,0 +1,25 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +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(name = "indefban", description = "Reloads the indefinite ban list", usage = "/", aliases = "ib") +public class IndefBanCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + + msg("Reloading the indefinite ban list..."); + plugin.indefiniteBanList.onStop(); + plugin.indefiniteBanList.onStart(); + msg("Reloaded the indefinite ban list."); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_inspect.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/InspectCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_inspect.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/InspectCMD.java index 87ab52a1..3fb8cfc4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_inspect.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/InspectCMD.java @@ -1,7 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.List; import me.totalfreedom.totalfreedommod.bridge.CoreProtectBridge; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,44 +13,36 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Block inspector tool for operators", usage = "/ [history] ", aliases = "ins") -public class Command_inspect extends FreedomCommand -{ +@CommandParameters(name = "inspect", description = "Block inspector tool for operators", usage = "/ [history] ", aliases = "ins") +public class InspectCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - PlayerData playerData = plugin.pl.getData(playerSender); + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + PlayerData playerData = plugin.playerList.getData(playerSender); playerData.setInspect(!playerData.hasInspection()); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Block inspector " + (playerData.hasInspection() ? "enabled." : "disabled.")); return true; } - if (args[0].equalsIgnoreCase("history")) - { + if (args[0].equalsIgnoreCase("history")) { int pageIndex = 1; - if (args.length >= 2) - { - try - { + if (args.length >= 2) { + try { pageIndex = Integer.parseInt(args[1]); - } - catch (NumberFormatException e) - { + } catch (NumberFormatException e) { msg("Invalid number", ChatColor.RED); } } FUtil.PaginationList paged = CoreProtectBridge.HISTORY_MAP.get(playerSender); - if (paged != null) - { - if (pageIndex < 1 || pageIndex > paged.getPageCount()) - { + if (paged != null) { + if (pageIndex < 1 || pageIndex > paged.getPageCount()) { msg("Not a valid page number", ChatColor.RED); return true; } @@ -55,8 +50,7 @@ public class Command_inspect extends FreedomCommand msg("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- ", ChatColor.WHITE); List page = paged.getPage(pageIndex); - for (String entries : page) - { + for (String entries : page) { msg(entries); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/InvSeeCMD.java similarity index 63% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/InvSeeCMD.java index 5390d710..2a0f3049 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invsee.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/InvSeeCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; @@ -10,50 +14,40 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@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 -{ +@CommandParameters(name = "invsee", description = "Look into another player's inventory, or optionally take items out.", usage = "/ [offhand | armor]", aliases = "inv,insee") +public class InvSeeCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } Player player = getPlayer(args[0], true); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return false; } - if (playerSender == player) - { + if (playerSender == player) { msg("You cannot run this command on yourself.", ChatColor.RED); return true; } - if (plugin.al.isAdmin(player) && !plugin.al.isAdmin(playerSender)) - { + if (plugin.adminList.isAdmin(player) && !plugin.adminList.isAdmin(playerSender)) { msg("You cannot see the inventory of admins.", ChatColor.RED); return true; } Inventory inv; - if (args.length > 1) - { - if (args[1].equals("offhand")) - { + if (args.length > 1) { + if (args[1].equals("offhand")) { ItemStack offhand = player.getInventory().getItemInOffHand(); Inventory inventory = server.createInventory(null, 9, player.getName() + "'s offhand"); inventory.setItem(1, offhand); playerSender.openInventory(inventory); return true; - } - else if (args[1].equals("armor")) - { + } else if (args[1].equals("armor")) { Inventory inventory = server.createInventory(null, 9, player.getName() + "'s armor"); inventory.setContents(player.getInventory().getArmorContents()); playerSender.openInventory(inventory); @@ -62,9 +56,8 @@ public class Command_invsee extends FreedomCommand } inv = player.getInventory(); playerSender.closeInventory(); - if (!plugin.al.isAdmin(player)) - { - FPlayer fPlayer = plugin.pl.getPlayer(playerSender); + if (!plugin.adminList.isAdmin(player)) { + FPlayer fPlayer = plugin.playerList.getPlayer(playerSender); fPlayer.setInvSee(true); } playerSender.openInventory(inv); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/InvisCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/InvisCMD.java index 01598b32..8450f66a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_invis.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/InvisCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -11,32 +12,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows (optionally clears) invisible players", usage = "/ [clear]") -public class Command_invis extends FreedomCommand -{ +@CommandParameters(name = "invis", description = "Shows (optionally clears) invisible players", usage = "/ [clear]") +public class InvisCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean clear = false; - if (args.length >= 1) - { - if (args[0].equalsIgnoreCase("clear")) - { - if (!plugin.al.isAdmin(sender)) - { + if (args.length >= 1) { + if (args[0].equalsIgnoreCase("clear")) { + if (!plugin.adminList.isAdmin(sender)) { return noPerms(); - } - else - { + } else { FUtil.adminAction(sender.getName(), "Clearing all invisibility potion effects from all players", true); clear = true; } - } - else - { + } else { return false; } } @@ -44,31 +40,24 @@ public class Command_invis extends FreedomCommand List players = new ArrayList<>(); int clears = 0; - for (Player player : server.getOnlinePlayers()) - { - if (player.hasPotionEffect(PotionEffectType.INVISIBILITY) && !plugin.al.isVanished(player.getName())) - { + for (Player player : server.getOnlinePlayers()) { + if (player.hasPotionEffect(PotionEffectType.INVISIBILITY) && !plugin.adminList.isVanished(player.getName())) { players.add(player.getName()); - if (clear && !plugin.al.isAdmin(player)) - { + if (clear && !plugin.adminList.isAdmin(player)) { player.removePotionEffect((PotionEffectType.INVISIBILITY)); clears++; } } } - if (players.isEmpty()) - { + if (players.isEmpty()) { msg("There are no invisible players"); return true; } - if (clear) - { + if (clear) { msg("Cleared " + clears + " players"); - } - else - { + } else { msg("Invisible players (" + players.size() + "): " + StringUtils.join(players, ", ")); } @@ -76,10 +65,8 @@ 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)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1 && plugin.adminList.isAdmin(sender)) { return Collections.singletonList("clear"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/JumpPadsCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/JumpPadsCMD.java new file mode 100644 index 00000000..03f988a9 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/JumpPadsCMD.java @@ -0,0 +1,94 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.fun.Jumppads; +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; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "jumppads", description = "Toggles jumppads on/off, view the status of jumppads, or make them sideways.", usage = "/ >", aliases = "launchpads,jp") +public class JumpPadsCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0 || args.length > 2) { + return false; + } + + if (args.length == 1) { + if (args[0].equalsIgnoreCase("info")) { + msg("Jumppads: " + (plugin.jumpPads.players.get(playerSender).isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE); + msg("Sideways: " + (plugin.jumpPads.players.get(playerSender) == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE); + return true; + } + + if (args[0].equalsIgnoreCase("off")) { + if (plugin.jumpPads.players.get(playerSender) == Jumppads.JumpPadMode.OFF) { + msg("Your jumppads are already disabled."); + return true; + } + msg("Disabled your jumppads.", ChatColor.GRAY); + plugin.jumpPads.players.put(playerSender, Jumppads.JumpPadMode.OFF); + } else { + if (plugin.jumpPads.players.get(playerSender) != Jumppads.JumpPadMode.OFF) { + msg("Your jumppads are already enabled."); + return true; + } + msg("Enabled your jumpppads.", ChatColor.GRAY); + plugin.jumpPads.players.put(playerSender, Jumppads.JumpPadMode.MADGEEK); + } + } else { + if (plugin.jumpPads.players.get(playerSender) == Jumppads.JumpPadMode.OFF) { + msg("Your jumppads are currently disabled, please enable them before changing jumppads settings."); + return true; + } + + if (args[0].equalsIgnoreCase("sideways")) { + if ("off".equals(args[1])) { + if (plugin.jumpPads.players.get(playerSender) == Jumppads.JumpPadMode.MADGEEK) { + msg("Your jumppads are already set to normal mode."); + return true; + } + msg("Set Jumppads mode to: Normal", ChatColor.GRAY); + plugin.jumpPads.players.put(playerSender, Jumppads.JumpPadMode.MADGEEK); + } else { + if (plugin.jumpPads.players.get(playerSender) == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS) { + msg("Your jumppads are already set to normal and sideways mode."); + return true; + } + msg("Set Jumppads mode to: Normal and Sideways", ChatColor.GRAY); + plugin.jumpPads.players.put(playerSender, Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS); + } + } else { + return false; + } + } + return true; + } + + @Override + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { + return Collections.emptyList(); + } + if (args.length == 1) { + return Arrays.asList("on", "off", "info", "sideways"); + } else if (args.length == 2) { + if (args[0].equals("sideways")) { + return Arrays.asList("on", "off"); + } + } + + return Collections.emptyList(); + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/KickCMD.java similarity index 67% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/KickCMD.java index b2ff77ce..bc438599 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kick.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/KickCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -13,21 +17,17 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Kick the specified player.", usage = "/ [reason] [-q]") -public class Command_kick extends FreedomCommand -{ +@CommandParameters(name = "kick", description = "Kick the specified player.", usage = "/ [reason] [-q]") +public class KickCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -35,19 +35,15 @@ public class Command_kick extends FreedomCommand boolean silent = false; String reason = null; - if (args[args.length - 1].equalsIgnoreCase("-q")) - { + if (args[args.length - 1].equalsIgnoreCase("-q")) { silent = true; FLog.debug("silent"); - if (args.length >= 2) - { + if (args.length >= 2) { FLog.debug("set reason (silent)"); reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else if (args.length > 1) - { + } else if (args.length > 1) { FLog.debug("set reason"); reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } @@ -56,30 +52,23 @@ public class Command_kick extends FreedomCommand .append(ChatColor.RED).append("You have been kicked from the server.") .append("\n").append(ChatColor.RED).append("Kicked by: ").append(ChatColor.GOLD).append(sender.getName()); - if (reason != null) - { + if (reason != null) { builder.append("\n").append(ChatColor.RED).append("Reason: ").append(ChatColor.GOLD).append(reason); } - if (!silent) - { - if (reason != null) - { + if (!silent) { + if (reason != null) { FUtil.adminAction(sender.getName(), "Kicking " + player.getName() + " - Reason: " + reason, true); - } - else - { + } else { FUtil.adminAction(sender.getName(), "Kicking " + player.getName(), true); } - } - else - { + } else { msg("Kicked " + player.getName() + " quietly."); } player.kickPlayer(builder.toString()); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.KICK, reason)); + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.KICK, reason)); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/KickNoobCMD.java similarity index 52% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/KickNoobCMD.java index c009264e..7bbe3d8e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_kicknoob.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/KickNoobCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -8,19 +12,15 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Kick all non-admins on server.", usage = "/", aliases = "kickall") -public class Command_kicknoob extends FreedomCommand -{ +@CommandParameters(name = "kicknoob", description = "Kick all non-admins on server.", usage = "/", aliases = "kickall") +public class KickNoobCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { FUtil.adminAction(sender.getName(), "Disconnecting all non-admins", true); - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(player)) { player.kickPlayer(ChatColor.RED + "All non-admins were kicked by " + sender.getName() + "."); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_landmine.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LandMineCMD.java similarity index 58% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_landmine.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LandMineCMD.java index f51e7fb5..c5cd9bb3 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_landmine.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LandMineCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Iterator; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.fun.Landminer.Landmine; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -12,52 +15,44 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Iterator; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Set a landmine trap.", usage = "/") -public class Command_landmine extends FreedomCommand -{ +@CommandParameters(name = "landmine", description = "Set a landmine trap.", usage = "/") +public class LandMineCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!ConfigEntry.LANDMINES_ENABLED.getBoolean()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigEntry.LANDMINES_ENABLED.getBoolean()) { msg("The landmine is currently disabled.", ChatColor.GREEN); return true; } - if (!ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) - { + if (!ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { msg("Explosions are currently disabled.", ChatColor.GREEN); return true; } double radius = 2.0; - if (args.length >= 1) - { - if ("list".equals(args[0])) - { - final Iterator landmines = plugin.lm.getLandmines().iterator(); - while (landmines.hasNext()) - { + if (args.length >= 1) { + if ("list".equals(args[0])) { + final Iterator landmines = plugin.landMiner.getLandmines().iterator(); + while (landmines.hasNext()) { msg(landmines.next().toString()); } return true; } - try - { + try { radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0]))); - } - catch (NumberFormatException ignored) - { + } catch (NumberFormatException ignored) { } } final Block landmine = playerSender.getLocation().getBlock().getRelative(BlockFace.DOWN); landmine.setType(Material.TNT); - plugin.lm.add(new Landmine(landmine.getLocation(), playerSender, radius)); + plugin.landMiner.add(new Landmine(landmine.getLocation(), playerSender, radius)); msg("Landmine planted - Radius = " + radius + " blocks.", ChatColor.GREEN); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LastCommandCMD.java similarity index 54% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LastCommandCMD.java index e0271f4a..0f5a9462 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lastcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LastCommandCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; @@ -8,33 +12,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Show the last command the specified player used.", usage = "/ ") -public class Command_lastcmd extends FreedomCommand -{ +@CommandParameters(name = "lastcommand", description = "Show the last command the specified player used.", usage = "/ ") +public class LastCommandCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - final FPlayer playerdata = plugin.pl.getPlayer(player); + final FPlayer playerdata = plugin.playerList.getPlayer(player); - if (playerdata != null) - { + if (playerdata != null) { String lastCommand = playerdata.getLastCommand(); - if (lastCommand.isEmpty()) - { + if (lastCommand.isEmpty()) { lastCommand = "(none)"; } msg(player.getName() + " - Last Command: " + lastCommand, ChatColor.GRAY); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LightningRodCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LightningRodCMD.java new file mode 100644 index 00000000..ee92ad54 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LightningRodCMD.java @@ -0,0 +1,28 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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(name = "lightningrod", description = "Obtain a lightning rod", usage = "/") +public class LightningRodCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (plugin.playerList.getData(playerSender).hasItem(ShopItem.LIGHTNING_ROD)) { + playerSender.getInventory().addItem(plugin.shop.getLightningRod()); + msg("You have been given a Lightning Rod", ChatColor.GREEN); + } else { + msg("You do not own a Lightning Rod! Purchase one from the shop.", ChatColor.RED); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LinkDiscordCMD.java similarity index 52% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LinkDiscordCMD.java index 40df6d93..c9136476 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LinkDiscordCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -9,24 +13,19 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Link your Discord account to your Minecraft account", usage = "/ [ ]") -public class Command_linkdiscord extends FreedomCommand -{ +@CommandParameters(name = "linkdiscord", description = "Link your Discord account to your Minecraft account", usage = "/ [ ]") +public class LinkDiscordCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.dc.enabled) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.discord.enabled) { msg("The Discord verification system is currently disabled.", ChatColor.RED); return true; } - if (args.length > 1 && plugin.al.isAdmin(playerSender)) - { - PlayerData playerData = plugin.pl.getData(args[0]); - if (playerData == null) - { + if (args.length > 1 && plugin.adminList.isAdmin(playerSender)) { + PlayerData playerData = plugin.playerList.getData(args[0]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -38,24 +37,20 @@ public class Command_linkdiscord extends FreedomCommand String code; - PlayerData data = plugin.pl.getData(playerSender); - if (data.getDiscordID() != null) - { + PlayerData data = plugin.playerList.getData(playerSender); + if (data.getDiscordID() != null) { msg("Your Minecraft account is already linked to a Discord account.", ChatColor.RED); return true; } - if (Discord.LINK_CODES.containsValue(data)) - { + if (Discord.LINK_CODES.containsValue(data)) { code = Discord.getCode(data); - } - else - { - code = plugin.dc.generateCode(5); + } else { + code = plugin.discord.generateCode(5); Discord.LINK_CODES.put(code, data); } msg("Your linking code is " + ChatColor.AQUA + code, ChatColor.GREEN); - msg("Take this code and DM the server bot (" + plugin.dc.formatBotTag() + ") the code (do not put anything else in the message, only the code)"); + msg("Take this code and DM the server bot (" + plugin.discord.formatBotTag() + ") the code (do not put anything else in the message, only the code)"); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_links.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LinksCMD.java similarity index 63% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_links.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LinksCMD.java index 5bd21b6d..5ed6aed9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_links.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LinksCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -11,37 +12,34 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "See TotalFreedom's social media links.", usage = "/", aliases = "link") -public class Command_links extends FreedomCommand -{ +@CommandParameters(name = "links", description = "See TotalFreedom's social media links.", usage = "/", aliases = "link") +public class LinksCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { YamlConfiguration config = plugin.config.configuration; ConfigurationSection section = config.getConfigurationSection("social_links"); - if (section != null) - { + if (section != null) { Map values = section.getValues(false); List lines = new ArrayList<>(); - for (String key : values.keySet()) - { - if (!(values.get(key) instanceof String)) - { + for (String key : values.keySet()) { + if (!(values.get(key) instanceof String)) { continue; } - String link = (String)values.get(key); + String link = (String) values.get(key); lines.add(ChatColor.GOLD + "- " + key + ": " + ChatColor.AQUA + link); } msg("Social Media Links:", ChatColor.AQUA); sender.sendMessage(lines.toArray(new String[0])); return true; - } - else - { + } else { msg("There are no links added in the configuration file.", ChatColor.RED); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ListCMD.java similarity index 70% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ListCMD.java index 996ac302..64dc3e9d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ListCMD.java @@ -1,7 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.admin.AdminList; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Displayable; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -16,23 +19,17 @@ import java.util.ArrayList; import java.util.List; @CommandPermissions(level = Rank.IMPOSTOR, source = SourceType.BOTH) -@CommandParameters(description = "Lists the real names of all online players.", usage = "/ [-s | -i | -f | -v]", aliases = "who,lsit") -public class Command_list extends FreedomCommand -{ +@CommandParameters(name = "list", description = "Lists the real names of all online players.", usage = "/ [-s | -i | -f | -v]", aliases = "who,lsit") +public class ListCMD 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) - { + 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) { return false; } - if (FUtil.isFromHostConsole(sender.getName())) - { + if (FUtil.isFromHostConsole(sender.getName())) { List names = new ArrayList<>(); - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isVanished(player.getName())) - { + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isVanished(player.getName())) { names.add(player.getName()); } } @@ -40,47 +37,37 @@ public class Command_list extends FreedomCommand return true; } ListFilter listFilter; - if (args.length == 1) - { + if (args.length == 1) { String s = args[0]; - switch (s) - { + switch (s) { case "-s": - case "-a": - { + case "-a": { listFilter = ListFilter.ADMINS; break; } - case "-v": - { + case "-v": { checkRank(Rank.ADMIN); listFilter = ListFilter.VANISHED_ADMINS; break; } - case "-t": - { + case "-t": { checkRank(Rank.ADMIN); listFilter = ListFilter.TELNET_SESSIONS; break; } - case "-i": - { + case "-i": { listFilter = ListFilter.IMPOSTORS; break; } - case "-f": - { + case "-f": { listFilter = ListFilter.FAMOUS_PLAYERS; break; } - default: - { + default: { return false; } } - } - else - { + } else { listFilter = ListFilter.PLAYERS; } StringBuilder onlineStats = new StringBuilder(); @@ -88,19 +75,15 @@ public class Command_list extends FreedomCommand List n = new ArrayList<>(); - if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender)) - { - List connectedAdmins = plugin.btb.getConnectedAdmins(); + if (listFilter == ListFilter.TELNET_SESSIONS && plugin.adminList.isAdmin(sender)) { + List connectedAdmins = plugin.bukkitTelnetBridge.getConnectedAdmins(); onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size()) .append(ChatColor.BLUE) .append(" admins connected to telnet."); - for (Admin admin : connectedAdmins) - { + for (Admin admin : connectedAdmins) { n.add(admin.getName()); } - } - else - { + } else { onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(FUtil.getFakePlayerCount()) .append(ChatColor.BLUE) .append(" out of a maximum ") @@ -108,34 +91,27 @@ public class Command_list extends FreedomCommand .append(server.getMaxPlayers()) .append(ChatColor.BLUE) .append(" players online."); - for (Player p : server.getOnlinePlayers()) - { - if (listFilter == ListFilter.ADMINS && !plugin.al.isAdmin(p)) - { + for (Player p : server.getOnlinePlayers()) { + if (listFilter == ListFilter.ADMINS && !plugin.adminList.isAdmin(p)) { continue; } - if (listFilter == ListFilter.ADMINS && plugin.al.isVanished(p.getName())) - { + if (listFilter == ListFilter.ADMINS && plugin.adminList.isVanished(p.getName())) { continue; } - if (listFilter == ListFilter.VANISHED_ADMINS && !plugin.al.isVanished(p.getName())) - { + if (listFilter == ListFilter.VANISHED_ADMINS && !plugin.adminList.isVanished(p.getName())) { continue; } - if (listFilter == ListFilter.IMPOSTORS && !plugin.al.isAdminImpostor(p)) - { + if (listFilter == ListFilter.IMPOSTORS && !plugin.adminList.isAdminImpostor(p)) { continue; } - if (listFilter == ListFilter.FAMOUS_PLAYERS && !ConfigEntry.FAMOUS_PLAYERS.getList().contains(p.getName().toLowerCase())) - { + if (listFilter == ListFilter.FAMOUS_PLAYERS && !ConfigEntry.FAMOUS_PLAYERS.getList().contains(p.getName().toLowerCase())) { continue; } - if (listFilter == ListFilter.PLAYERS && plugin.al.isVanished(p.getName())) - { + if (listFilter == ListFilter.PLAYERS && plugin.adminList.isVanished(p.getName())) { continue; } - final Displayable display = plugin.rm.getDisplay(p); + final Displayable display = plugin.rankManager.getDisplay(p); n.add(display.getColoredTag() + p.getName()); } } @@ -144,13 +120,10 @@ public class Command_list extends FreedomCommand .append(playerType) .append(": ") .append(StringUtils.join(n, ChatColor.WHITE + ", ")); - if (senderIsConsole) - { + if (senderIsConsole) { msg(ChatColor.stripColor(onlineStats.toString())); msg(ChatColor.stripColor(onlineUsers.toString())); - } - else - { + } else { msg(onlineStats.toString()); msg(onlineUsers.toString()); } @@ -158,8 +131,7 @@ public class Command_list extends FreedomCommand return true; } - private enum ListFilter - { + private enum ListFilter { PLAYERS, ADMINS, VANISHED_ADMINS, diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_localspawn.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LocalSpawnCMD.java similarity index 51% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_localspawn.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LocalSpawnCMD.java index 3bea6064..edddc2e8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_localspawn.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LocalSpawnCMD.java @@ -1,18 +1,20 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Teleport to the spawn point for the current world, instead of the Essentials spawn point.", usage = "/", aliases = "worldspawn,gotospawn") -public class Command_localspawn extends FreedomCommand -{ +@CommandParameters(name = "localspawn", description = "Teleport to the spawn point for the current world, instead of the Essentials spawn point.", usage = "/", aliases = "worldspawn,gotospawn") +public class LocalSpawnCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { PaperLib.teleportAsync(playerSender, playerSender.getWorld().getSpawnLocation()); msg("Teleported to spawnpoint for world \"" + playerSender.getWorld().getName() + "\"."); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LockupCMD.java similarity index 58% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LockupCMD.java index e707bd70..d7781e17 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_lockup.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LockupCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,123 +14,91 @@ import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; @CommandPermissions(level = Rank.SENIOR_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 -{ +@CommandParameters(name = "lockup", description = "This is evil, and I never should have wrote it - blocks specified player's input.", usage = "/ on | off> [-q]>") +public class LockupCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean silent = (args[args.length - 1].equalsIgnoreCase("-q")); - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("all")) - { + if (args.length == 1) { + if (args[0].equalsIgnoreCase("all")) { FUtil.adminAction(sender.getName(), "Locking up all players", true); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { startLockup(player); } msg("Locked up all players."); - } - else if (args[0].equalsIgnoreCase("purge")) - { + } else if (args[0].equalsIgnoreCase("purge")) { FUtil.adminAction(sender.getName(), "Unlocking all players", true); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { cancelLockup(player); } msg("Unlocked all players."); - } - else - { + } else { return false; } - } - else if (args.length == 2) - { - if (args[1].equalsIgnoreCase("on")) - { + } else if (args.length == 2) { + if (args[1].equalsIgnoreCase("on")) { final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (!silent) - { + if (!silent) { FUtil.adminAction(sender.getName(), "Locking up " + player.getName(), true); } startLockup(player); msg("Locked up " + player.getName() + "."); - } - else if ("off".equals(args[1])) - { + } else if ("off".equals(args[1])) { final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (!silent) - { + if (!silent) { FUtil.adminAction(sender.getName(), "Unlocking " + player.getName(), true); } cancelLockup(player); msg("Unlocked " + player.getName() + "."); - } - else - { + } else { return false; } - } - else - { + } else { return false; } return true; } - private void cancelLockup(FPlayer playerdata) - { + private void cancelLockup(FPlayer playerdata) { BukkitTask lockupScheduleId = playerdata.getLockupScheduleID(); - if (lockupScheduleId != null) - { + if (lockupScheduleId != null) { lockupScheduleId.cancel(); playerdata.setLockedUp(false); playerdata.setLockupScheduleId(null); } } - private void cancelLockup(final Player player) - { - cancelLockup(plugin.pl.getPlayer(player)); + private void cancelLockup(final Player player) { + cancelLockup(plugin.playerList.getPlayer(player)); } - private void startLockup(final Player player) - { - final FPlayer playerdata = plugin.pl.getPlayer(player); + private void startLockup(final Player player) { + final FPlayer playerdata = plugin.playerList.getPlayer(player); cancelLockup(playerdata); playerdata.setLockedUp(true); - playerdata.setLockupScheduleId(new BukkitRunnable() - { + playerdata.setLockupScheduleId(new BukkitRunnable() { @Override - public void run() - { - if (player.isOnline()) - { + public void run() { + if (player.isOnline()) { player.openInventory(player.getInventory()); - } - else - { + } else { cancelLockup(playerdata); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_loginmessage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LoginMessageCMD.java similarity index 63% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_loginmessage.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/LoginMessageCMD.java index 0b5efbc2..ffc7d29d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_loginmessage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LoginMessageCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.shop.ShopItem; @@ -10,42 +14,36 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Change your login message", usage = "/ [message]") -public class Command_loginmessage extends FreedomCommand -{ +@CommandParameters(name = "loginmessage", description = "Change your login message", usage = "/ [message]") +public class LoginMessageCMD extends FreedomCommand { @Override - public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.pl.getData(playerSender).hasItem(ShopItem.LOGIN_MESSAGES) && !isAdmin(playerSender)) - { + public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.playerList.getData(playerSender).hasItem(ShopItem.LOGIN_MESSAGES) && !isAdmin(playerSender)) { msg("You did not purchase the ability to use login messages! Purchase the ability from the shop.", ChatColor.RED); return true; } - if (args.length == 0) - { - playerSender.openInventory(plugin.sh.generateLoginMessageGUI(playerSender)); + if (args.length == 0) { + playerSender.openInventory(plugin.shop.generateLoginMessageGUI(playerSender)); return true; } checkRank(Rank.ADMIN); String message = StringUtils.join(args, " "); - if (!message.contains("%rank%") && !message.contains("%coloredrank%")) - { + if (!message.contains("%rank%") && !message.contains("%coloredrank%")) { msg("Your login message must contain your rank. Use either %rank% or %coloredrank% to specify where you want the rank", ChatColor.RED); return true; } int length = message.replace("%name%", "").replace("%rank%", "").replace("%coloredrank%", "").replace("%art%", "").length(); - if (length > 100) - { + if (length > 100) { msg("Your login message cannot be more than 100 characters (excluding your rank and your name)", ChatColor.RED); return true; } PlayerData data = getData(playerSender); data.setLoginMessage(message); - plugin.pl.save(data); - msg("Your login message is now the following:\n" + plugin.rm.craftLoginMessage(playerSender, message), ChatColor.GREEN); + plugin.playerList.save(data); + msg("Your login message is now the following:\n" + plugin.rankManager.craftLoginMessage(playerSender, message), ChatColor.GREEN); return true; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LogsCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LogsCMD.java new file mode 100644 index 00000000..3daa42d9 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/LogsCMD.java @@ -0,0 +1,27 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.services.impl.LogViewer.LogsRegistrationMode; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.rank.Rank; +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(name = "logs", description = "Register your connection with the TFM logviewer.", usage = "/ [off]") +public class LogsCMD extends FreedomCommand { + + @Override + public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + LogsRegistrationMode mode = LogsRegistrationMode.ADD; + if (args.length == 1 && "off".equalsIgnoreCase(args[0])) { + mode = LogsRegistrationMode.DELETE; + } + plugin.logViewer.updateLogsRegistration(sender, playerSender, mode); + + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ManageShopCMD.java similarity index 63% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ManageShopCMD.java index 1c0a7a81..350482d2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ManageShopCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.shop.ShopItem; @@ -11,212 +15,163 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Manage the shop", usage = "/ | items: ", aliases = "ms") -public class Command_manageshop extends FreedomCommand -{ +@CommandParameters(name = "manageshop", description = "Manage the shop", usage = "/ | items: ", aliases = "ms") +public class ManageShopCMD extends FreedomCommand { @Override - public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!FUtil.isExecutive(sender.getName())) - { + if (!FUtil.isExecutive(sender.getName())) { return noPerms(); } - if (args.length < 2) - { + if (args.length < 2) { return false; } - if (args[0].equals("coins")) - { - if (args.length < 4) - { + if (args[0].equals("coins")) { + if (args.length < 4) { return false; } - switch (args[1]) - { - case "add": - { - try - { + switch (args[1]) { + case "add" -> { + try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); - if (!args[3].equals("all")) - { - PlayerData playerData = plugin.pl.getData(args[3]); - if (playerData == null) - { + if (!args[3].equals("all")) { + PlayerData playerData = plugin.playerList.getData(args[3]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } playerData.setCoins(playerData.getCoins() + amount); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Successfully added " + amount + " coins to " + args[3] + ". Their new balance is " + playerData.getCoins(), ChatColor.GREEN); Player player = getPlayer(args[3]); - if (player != null) - { + if (player != null) { msg(player, sender.getName() + " gave you " + amount + " coins. Your new balance is " + playerData.getCoins(), ChatColor.GREEN); } - } - else - { - for (Player player : server.getOnlinePlayers()) - { - PlayerData playerData = plugin.pl.getData(player); + } else { + for (Player player : server.getOnlinePlayers()) { + PlayerData playerData = plugin.playerList.getData(player); playerData.setCoins(playerData.getCoins() + amount); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg(player, sender.getName() + " gave you " + amount + " coins. Your new balance is " + playerData.getCoins(), ChatColor.GREEN); } msg("Successfully added " + amount + " coins to all online players.", ChatColor.GREEN); } return true; - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid number: " + args[2], ChatColor.RED); return true; } } - case "remove": - { - try - { + case "remove" -> { + try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); - if (!args[3].equals("all")) - { - PlayerData playerData = plugin.pl.getData(args[3]); - if (playerData == null) - { + if (!args[3].equals("all")) { + PlayerData playerData = plugin.playerList.getData(args[3]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } playerData.setCoins(playerData.getCoins() - amount); - if (playerData.getCoins() < 0) - { + if (playerData.getCoins() < 0) { playerData.setCoins(0); } - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Successfully removed " + amount + " coins from " + args[3] + ". Their new balance is " + playerData.getCoins(), ChatColor.GREEN); Player player = getPlayer(args[3]); - if (player != null) - { + if (player != null) { msg(player, sender.getName() + " took " + amount + " coins from you. Your new balance is " + playerData.getCoins(), ChatColor.RED); } - } - else - { - for (Player player : server.getOnlinePlayers()) - { - PlayerData playerData = plugin.pl.getData(player); + } else { + for (Player player : server.getOnlinePlayers()) { + PlayerData playerData = plugin.playerList.getData(player); playerData.setCoins(playerData.getCoins() - amount); - if (playerData.getCoins() < 0) - { + if (playerData.getCoins() < 0) { playerData.setCoins(0); } - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg(player, sender.getName() + " took " + amount + " coins from you. Your new balance is " + playerData.getCoins(), ChatColor.RED); } msg("Successfully took " + amount + " coins from all online players.", ChatColor.GREEN); } return true; - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid number: " + args[2], ChatColor.RED); return true; } } - case "set": - { - try - { + case "set" -> { + try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); - PlayerData playerData = plugin.pl.getData(args[3]); - if (playerData == null) - { + PlayerData playerData = plugin.playerList.getData(args[3]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } playerData.setCoins(amount); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Successfully set " + args[3] + "'s coins to " + amount, ChatColor.GREEN); Player player = getPlayer(args[3]); - if (player != null) - { + if (player != null) { msg(player, sender.getName() + " set your coin balance to " + amount, ChatColor.GREEN); } return true; - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid number: " + args[2], ChatColor.RED); return true; } } - default: - { + default -> { return false; } } - } - else if (args[0].equals("items")) - { - if (args[1].equals("list")) - { + } else if (args[0].equals("items")) { + if (args[1].equals("list")) { msg("List of all shop items: " + StringUtils.join(ShopItem.values(), ", ")); return true; } - if (args.length < 4) - { + if (args.length < 4) { return false; } - if (args[1].equals("give")) - { + if (args[1].equals("give")) { ShopItem item = ShopItem.findItem(args[2].toUpperCase()); - if (item == null) - { + if (item == null) { msg(args[2] + " is not a valid item.", ChatColor.RED); return true; } - PlayerData playerData = plugin.pl.getData(args[3]); - if (playerData == null) - { + PlayerData playerData = plugin.playerList.getData(args[3]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } playerData.giveItem(item); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Successfully gave the " + item.getName() + " to " + args[3], ChatColor.GREEN); Player player = getPlayer(args[3]); - if (player != null) - { + if (player != null) { msg(player, sender.getName() + " gave the " + item.getName() + " to you", ChatColor.GREEN); } return true; - } - else if (args[1].equals("take")) - { + } else if (args[1].equals("take")) { ShopItem item = ShopItem.findItem(args[2].toUpperCase()); - if (item == null) - { + if (item == null) { msg(args[2] + " is not a valid item.", ChatColor.RED); return true; } - PlayerData playerData = plugin.pl.getData(args[3]); - if (playerData == null) - { + PlayerData playerData = plugin.playerList.getData(args[3]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } playerData.removeItem(item); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Successfully took the " + item.getName() + " from " + args[3], ChatColor.GREEN); Player player = getPlayer(args[3]); - if (player != null) - { + if (player != null) { msg(player, sender.getName() + " took the " + item.getName() + " from you", ChatColor.RED); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ManuallyverifyCMD.java similarity index 67% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ManuallyverifyCMD.java index 1776538f..7861ae1a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manuallyverify.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ManuallyverifyCMD.java @@ -1,3 +1,4 @@ +/* package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -7,41 +8,34 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; - +TODO: Merge with VerifyCMD @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Manually verify someone", usage = "/ ", aliases = "mv") -public class Command_manuallyverify extends FreedomCommand -{ +@CommandParameters(name = "manuallyverify", description = "Manually verify someone", usage = "/ ", aliases = "mv") +public class ManuallyverifyCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean verificationEnabled = ConfigEntry.DISCORD_VERIFICATION.getBoolean(); - if (!plugin.dc.enabled) - { + if (!plugin.discord.enabled) { msg("The Discord verification system is currently disabled.", ChatColor.RED); return true; } - if (!verificationEnabled) - { + if (!verificationEnabled) { msg("The Discord verification system is currently disabled.", ChatColor.RED); return true; } - if (args.length == 0) - { + if (args.length == 0) { return false; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - if (!plugin.pl.IsImpostor(player)) - { + if (!plugin.playerList.isImpostor(player)) { msg("That player is not an impostor."); return true; } @@ -50,14 +44,13 @@ public class Command_manuallyverify extends FreedomCommand player.setOp(true); msg(player, YOU_ARE_OP); - if (plugin.pl.getPlayer(player).getFreezeData().isFrozen()) - { - plugin.pl.getPlayer(player).getFreezeData().setFrozen(false); + if (plugin.playerList.getPlayer(player).getFreezeData().isFrozen()) { + plugin.playerList.getPlayer(player).getFreezeData().setFrozen(false); msg(player, "You have been unfrozen."); } - plugin.pl.verify(player, null); - plugin.rm.updateDisplay(player); + plugin.playerList.verify(player, null); + plugin.rankManager.updateDisplay(player); return true; } -} \ No newline at end of file +}*/ diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MobLimiterCMD.java similarity index 58% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/MobLimiterCMD.java index 575ccf8e..94b6efb0 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_moblimiter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MobLimiterCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import me.totalfreedom.totalfreedommod.GameRuleHandler; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.services.impl.GameRuleHandler; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; @@ -8,76 +12,52 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Control mob limiting parameters.", usage = "/ |dragon|giant|ghast|slime>") -public class Command_moblimiter extends FreedomCommand -{ +@CommandParameters(name = "moblimiter", description = "Control mob limiting parameters.", usage = "/ |dragon|giant|ghast|slime>") +public class MobLimiterCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } - if (args[0].equalsIgnoreCase("on")) - { + if (args[0].equalsIgnoreCase("on")) { ConfigEntry.MOB_LIMITER_ENABLED.setBoolean(true); - } - else if (args[0].equalsIgnoreCase("off")) - { + } else if (args[0].equalsIgnoreCase("off")) { ConfigEntry.MOB_LIMITER_ENABLED.setBoolean(false); - } - else if (args[0].equalsIgnoreCase("dragon")) - { + } else if (args[0].equalsIgnoreCase("dragon")) { ConfigEntry.MOB_LIMITER_DISABLE_DRAGON.setBoolean(!ConfigEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean()); - } - else if (args[0].equalsIgnoreCase("giant")) - { + } else if (args[0].equalsIgnoreCase("giant")) { ConfigEntry.MOB_LIMITER_DISABLE_GIANT.setBoolean(!ConfigEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean()); - } - else if (args[0].equalsIgnoreCase("slime")) - { + } else if (args[0].equalsIgnoreCase("slime")) { ConfigEntry.MOB_LIMITER_DISABLE_SLIME.setBoolean(!ConfigEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean()); - } - else if (args[0].equalsIgnoreCase("ghast")) - { + } else if (args[0].equalsIgnoreCase("ghast")) { ConfigEntry.MOB_LIMITER_DISABLE_GHAST.setBoolean(!ConfigEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean()); - } - else - { - if (args.length < 2) - { + } else { + if (args.length < 2) { return false; } - if (args[0].equalsIgnoreCase("setmax")) - { - try - { + if (args[0].equalsIgnoreCase("setmax")) { + try { ConfigEntry.MOB_LIMITER_MAX.setInteger(Math.max(0, Math.min(2000, Integer.parseInt(args[1])))); - } - catch (NumberFormatException ignored) - { + } catch (NumberFormatException ignored) { } } } - if (ConfigEntry.MOB_LIMITER_ENABLED.getBoolean()) - { + if (ConfigEntry.MOB_LIMITER_ENABLED.getBoolean()) { msg("Moblimiter enabled. Maximum mobcount set to: " + ConfigEntry.MOB_LIMITER_MAX.getInteger() + "."); msg("Dragon: " + (ConfigEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean() ? "disabled" : "enabled") + "."); msg("Giant: " + (ConfigEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" : "enabled") + "."); msg("Slime: " + (ConfigEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean() ? "disabled" : "enabled") + "."); msg("Ghast: " + (ConfigEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean() ? "disabled" : "enabled") + "."); - } - else - { + } else { msg("Moblimiter is disabled. No mob restrictions are in effect."); } - plugin.gr.setGameRule(GameRuleHandler.GameRule.DO_MOB_SPAWNING, !ConfigEntry.MOB_LIMITER_ENABLED.getBoolean()); + plugin.gameRuleHandler.setGameRule(GameRuleHandler.GameRule.DO_MOB_SPAWNING, !ConfigEntry.MOB_LIMITER_ENABLED.getBoolean()); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MobPurgeCMD.java similarity index 63% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/MobPurgeCMD.java index 7d726cbd..f97c9bef 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mobpurge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MobPurgeCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; @@ -12,61 +13,53 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Purge all mobs in all worlds.", usage = "/ [name]", aliases = "mp") -public class Command_mobpurge extends FreedomCommand -{ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; - public static List getAllMobNames() - { +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "mobpurge", description = "Purge all mobs in all worlds.", usage = "/ [name]", aliases = "mp") +public class MobPurgeCMD extends FreedomCommand { + + public static List getAllMobNames() { List names = new ArrayList<>(); - for (EntityType entityType : Groups.MOB_TYPES) - { + for (EntityType entityType : Groups.MOB_TYPES) { names.add(entityType.name()); } return names; } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { EntityType type = null; String mobName = null; - if (args.length > 0) - { - try - { + if (args.length > 0) { + try { type = EntityType.valueOf(args[0].toUpperCase()); - } - catch (Exception e) - { + } catch (Exception e) { msg(args[0] + " is not a valid mob type.", ChatColor.RED); return true; } - if (!Groups.MOB_TYPES.contains(type)) - { + if (!Groups.MOB_TYPES.contains(type)) { msg(FUtil.formatName(type.name()) + " is an entity, however it is not a mob.", ChatColor.RED); return true; } } - if (type != null) - { + if (type != null) { mobName = FUtil.formatName(type.name()); } FUtil.adminAction(sender.getName(), "Purging all " + (type != null ? mobName + "s" : "mobs"), true); - int count = plugin.ew.purgeMobs(type); + int count = plugin.entityWiper.purgeMobs(type); msg(count + " " + (type != null ? mobName : "mob") + FUtil.showS(count) + " removed."); return true; } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { return getAllMobNames(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ModifyItemCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ModifyItemCMD.java new file mode 100644 index 00000000..5048c67e --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ModifyItemCMD.java @@ -0,0 +1,168 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.EnumUtils; +import org.bukkit.Material; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionEffectType; + +import java.util.*; + +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "modifyitem", description = "Modify the current item you are holding.", usage = "/ | lore | enchant | potion | attribute | clear>", aliases = "mi") +public class ModifyItemCMD extends FreedomCommand { + + @SuppressWarnings("deprecation") + @Override + public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { + return false; + } + + ItemStack item = playerSender.getInventory().getItemInMainHand(); + if (item.getType().equals(Material.AIR)) { + msg("You must have an item in your hand!"); + return true; + } + + if (args[0].equalsIgnoreCase("clear")) { + item.setItemMeta(null); + playerSender.getInventory().setItemInMainHand(item); + return true; + } + + if (args.length < 2) { + return false; + } + + ItemMeta meta = item.getItemMeta(); + assert meta != null; + switch (args[0]) { + case "name": + String name = FUtil.colorize(StringUtils.join(args, " ", 1, args.length)); + meta.setDisplayName(name); + item.setItemMeta(meta); + break; + + case "lore": + List lore = new ArrayList<>(); + for (String line : StringUtils.join(args, " ", 1, args.length).split("\\\\n")) { + lore.add(FUtil.colorize(line)); + } + meta.setLore(lore); + item.setItemMeta(meta); + break; + + case "enchant": + if (args.length < 3) { + return false; + } + + Enchantment enchantment = Enchantment.getByName(args[1].toUpperCase()); + if (enchantment == null) { + msg("Invalid enchantment. Please run /enchant list for a list of valid enchantments."); + return true; + } + + int level; + try { + level = Integer.parseInt(args[2]); + } catch (NumberFormatException ex) { + msg("The level specified is not a valid integer."); + return true; + } + meta.addEnchant(enchantment, level, true); + item.setItemMeta(meta); + break; + + case "potion": { + if (!item.getType().equals(Material.POTION) & !item.getType().equals(Material.SPLASH_POTION) & !item.getType().equals(Material.LINGERING_POTION) & !item.getType().equals(Material.TIPPED_ARROW)) { + msg("This item can not have potion effects added to it."); + return true; + } + + if (args.length < 4) { + return false; + } + + PotionEffectType type = PotionEffectType.getByName(args[1]); + if (type == null) { + msg("Invalid potion effect. Please run /potion list for a list of valid potion effects."); + return true; + } + + int duration; + try { + duration = Math.max(1, Math.min(1000000, Integer.parseInt(args[2]))); + } catch (NumberFormatException ex) { + msg("The duration specified is not a valid integer."); + return true; + } + + int amplifier; + try { + amplifier = Math.max(1, Math.min(256, Integer.parseInt(args[2]))); + } catch (NumberFormatException ex) { + msg("The amplifier specified is not a valid integer."); + return true; + } + PotionMeta potionMeta = (PotionMeta) meta; + potionMeta.addCustomEffect(type.createEffect(duration, amplifier), true); + item.setItemMeta(potionMeta); + break; + } + + case "attribute": + if (args.length < 3) { + return false; + } + + if (!EnumUtils.isValidEnum(Attribute.class, args[1].toUpperCase(Locale.ROOT))) { + msg("Invalid attribute. Please run /attributelist for a list of valid attributes."); + return true; + } + Attribute attribute = Attribute.valueOf(args[1].toUpperCase()); + + double amount; + try { + amount = Double.parseDouble(args[2]); + } catch (NumberFormatException ex) { + msg("The amount specified is not a valid integer."); + return true; + } + if (Double.isNaN(amount)) { + msg("The amount specified is illegal."); + return true; + } + + meta.addAttributeModifier(attribute, new AttributeModifier(attribute.getKey().getKey(), amount, AttributeModifier.Operation.ADD_NUMBER)); + item.setItemMeta(meta); + break; + default: + return false; + } + playerSender.getInventory().setItemInMainHand(item); + return true; + } + + private Multimap getAttributeList(ItemStack item) { + if (item.getItemMeta() == null) return ArrayListMultimap.create(); + return item.getItemMeta().getAttributeModifiers(); + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/Mp44CMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/Mp44CMD.java index 8cb0a9a9..492c3a61 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/Mp44CMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Objects; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -11,38 +14,33 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import java.util.Objects; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Modern weaponry, FTW. Use 'draw' to start firing, 'sling' to stop firing.", usage = "/ ") -public class Command_mp44 extends FreedomCommand -{ +@CommandParameters(name = "mp44", description = "Modern weaponry, FTW. Use 'draw' to start firing, 'sling' to stop firing.", usage = "/ ") +public class Mp44CMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!ConfigEntry.MP44_ENABLED.getBoolean()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigEntry.MP44_ENABLED.getBoolean()) { msg("The mp44 is currently disabled.", ChatColor.GREEN); return true; } - if (args.length == 0) - { + if (args.length == 0) { return false; } - FPlayer playerdata = plugin.pl.getPlayer(playerSender); + FPlayer playerdata = plugin.playerList.getPlayer(playerSender); - if (args[0].equalsIgnoreCase("draw")) - { + if (args[0].equalsIgnoreCase("draw")) { playerdata.armMP44(); msg("mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.", ChatColor.GREEN); msg("Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN); Objects.requireNonNull(playerSender.getEquipment()).setItemInMainHand(new ItemStack(Material.GUNPOWDER, 1)); - } - else - { + } else { playerdata.disarmMP44(); msg("mp44 Disarmed.", ChatColor.GREEN); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MuteCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/MuteCMD.java index 0ce530d4..87dcbb30 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mute.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MuteCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -16,73 +16,65 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "mute", description = "Mutes a player with brute force.", usage = "/ <[-s | -q] [reason] | list | purge | all>", aliases = "stfu") +public class MuteCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } - if (args[0].equalsIgnoreCase("list")) - { + if (args[0].equalsIgnoreCase("list")) { msg("Muted players:"); FPlayer info; int count = 0; - for (Player mp : server.getOnlinePlayers()) - { - info = plugin.pl.getPlayer(mp); - if (info.isMuted()) - { + for (Player mp : server.getOnlinePlayers()) { + info = plugin.playerList.getPlayer(mp); + if (info.isMuted()) { msg("- " + mp.getName()); count++; } } - if (count == 0) - { + if (count == 0) { msg("- none"); } return true; } - if (args[0].equalsIgnoreCase("purge")) - { + if (args[0].equalsIgnoreCase("purge")) { FUtil.adminAction(sender.getName(), "Unmuting all players.", true); FPlayer info; int count = 0; - for (Player mp : server.getOnlinePlayers()) - { - info = plugin.pl.getPlayer(mp); - if (info.isMuted()) - { + for (Player mp : server.getOnlinePlayers()) { + info = plugin.playerList.getPlayer(mp); + if (info.isMuted()) { info.setMuted(false); mp.sendTitle(ChatColor.RED + "You've been unmuted.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60); count++; } } - plugin.mu.MUTED_PLAYERS.clear(); + plugin.muter.MUTED_PLAYERS.clear(); msg("Unmuted " + count + " players."); return true; } - if (args[0].equalsIgnoreCase("all")) - { + if (args[0].equalsIgnoreCase("all")) { FUtil.adminAction(sender.getName(), "Muting all non-admins", true); FPlayer playerdata; int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(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); + playerdata = plugin.playerList.getPlayer(player); playerdata.setMuted(true); counter++; } @@ -96,64 +88,53 @@ public class Command_mute extends FreedomCommand boolean smite = args[0].equals("-s"); // -q option (shadowmute) boolean quiet = args[0].equals("-q"); - if (smite || quiet) - { + if (smite || quiet) { args = ArrayUtils.subarray(args, 1, args.length); - if (args.length < 1) - { + if (args.length < 1) { return false; } } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } String reason = null; - if (args.length > 1) - { + if (args.length > 1) { reason = StringUtils.join(args, " ", 1, args.length); } - FPlayer playerdata = plugin.pl.getPlayer(player); - if (plugin.al.isAdmin(player)) - { + FPlayer playerdata = plugin.playerList.getPlayer(player); + if (plugin.adminList.isAdmin(player)) { msg(player.getName() + " is an admin, and can't be muted."); return true; } - if (!playerdata.isMuted()) - { + if (!playerdata.isMuted()) { playerdata.setMuted(true); player.sendTitle(ChatColor.RED + "You've been muted.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60); - if (reason != null) - { + if (reason != null) { msg(player, ChatColor.RED + "Reason: " + ChatColor.YELLOW + reason); } - if (quiet) - { + if (quiet) { msg("Muted " + player.getName() + " quietly"); return true; } FUtil.adminAction(sender.getName(), "Muting " + player.getName(), true); - if (smite) - { - Command_smite.smite(sender, player, reason); + if (smite) { + SmiteCMD.smite(sender, player, reason); } msg(player, "You have been muted by " + ChatColor.YELLOW + sender.getName(), ChatColor.RED); msg("Muted " + player.getName()); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.MUTE, reason)); - } - else - { + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.MUTE, reason)); + } else { msg(ChatColor.RED + "That player is already muted."); } @@ -161,15 +142,12 @@ public class Command_mute extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return null; } - if (args.length == 1) - { + if (args.length == 1) { List arguments = new ArrayList<>(); arguments.addAll(FUtil.getPlayerList()); arguments.addAll(Arrays.asList("list", "purge", "all")); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyAdminCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyAdminCMD.java index 1c38639c..cf15a090 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyAdminCMD.java @@ -1,10 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -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.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.player.PlayerData; @@ -16,15 +16,17 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Manage your admin entry.", usage = "/ [-o ] | setscformat | clearscformat> | syncroles>") -public class Command_myadmin extends FreedomCommand -{ +@CommandParameters(name = "myadmin", description = "Manage your admin entry.", usage = "/ [-o ] | setscformat | clearscformat> | syncroles>") +public class MyAdminCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } @@ -33,49 +35,39 @@ public class Command_myadmin extends FreedomCommand Player targetPlayer = playerSender; // -o switch - if (args[0].equals("-o")) - { + if (args[0].equals("-o")) { checkRank(Rank.SENIOR_ADMIN); init = playerSender; targetPlayer = getPlayer(args[1]); - if (targetPlayer == null) - { + if (targetPlayer == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } target = getAdmin(targetPlayer); - if (target == null) - { + if (target == null) { msg("That player is not an admin", ChatColor.RED); return true; } // Shift 2 args = Arrays.copyOfRange(args, 2, args.length); - if (args.length < 1) - { + if (args.length < 1) { return false; } } final String targetIp = FUtil.getIp(targetPlayer); - switch (args[0]) - { - case "clearips": - { - if (args.length != 1) - { + switch (args[0]) { + case "clearips": { + if (args.length != 1) { return false; // Double check: the player might mean "clearip" } - if (init == null) - { + if (init == null) { FUtil.adminAction(sender.getName(), "Clearing my IPs", true); - } - else - { + } else { FUtil.adminAction(sender.getName(), "Clearing " + target.getName() + "'s IPs", true); } @@ -83,43 +75,33 @@ public class Command_myadmin extends FreedomCommand target.clearIPs(); target.addIp(targetIp); - plugin.al.save(target); - plugin.al.updateTables(); - plugin.pl.syncIps(target); + plugin.adminList.save(target); + plugin.adminList.updateTables(); + plugin.playerList.syncIps(target); msg(counter + " IPs removed."); msg(targetPlayer, target.getIps().get(0) + " is now your only IP address"); return true; } - case "clearip": - { - if (args.length != 2) - { + case "clearip": { + if (args.length != 2) { return false; // Double check: the player might mean "clearips" } - if (!target.getIps().contains(args[1])) - { - if (init == null) - { + if (!target.getIps().contains(args[1])) { + if (init == null) { msg("That IP is not registered to you."); - } - else - { + } else { msg("That IP does not belong to that player."); } return true; } - if (targetIp.equals(args[1])) - { - if (init == null) - { + if (targetIp.equals(args[1])) { + if (init == null) { msg("You cannot remove your current IP."); - } - else - { + } else { msg("You cannot remove that admins current IP."); } return true; @@ -128,10 +110,10 @@ public class Command_myadmin extends FreedomCommand FUtil.adminAction(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.adminList.save(target); + plugin.adminList.updateTables(); - plugin.pl.syncIps(target); + plugin.playerList.syncIps(target); msg("Removed IP " + args[1]); msg("Current IPs: " + StringUtils.join(target.getIps(), ", ")); @@ -139,12 +121,11 @@ public class Command_myadmin extends FreedomCommand } case "setacformat": - case "setscformat": - { + case "setscformat": { String format = StringUtils.join(args, " ", 1, args.length); target.setAcFormat(format); - plugin.al.save(target); - plugin.al.updateTables(); + plugin.adminList.save(target); + plugin.adminList.updateTables(); msg("Set admin chat format to \"" + format + "\".", ChatColor.GRAY); String example = format.replace("%name%", "ExampleAdmin").replace("%rank%", Rank.ADMIN.getAbbr()).replace("%rankcolor%", Rank.ADMIN.getColor().toString()).replace("%msg%", "The quick brown fox jumps over the lazy dog."); msg(ChatColor.GRAY + "Example: " + FUtil.colorize(example)); @@ -152,37 +133,29 @@ public class Command_myadmin extends FreedomCommand } case "clearacformat": - case "clearscformat": - { + case "clearscformat": { target.setAcFormat(null); - plugin.al.save(target); - plugin.al.updateTables(); + plugin.adminList.save(target); + plugin.adminList.updateTables(); msg("Cleared admin chat format.", ChatColor.GRAY); return true; } - case "syncroles": - { - if (plugin.dc.enabled) - { - if (!ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) - { + case "syncroles": { + if (plugin.discord.enabled) { + if (!ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { msg("Role syncing is not enabled.", ChatColor.RED); return true; } - PlayerData playerData = plugin.pl.getData(target.getName()); - if (playerData.getDiscordID() == null) - { + PlayerData playerData = plugin.playerList.getData(target.getName()); + if (playerData.getDiscordID() == null) { msg("Please run /linkdiscord first!", ChatColor.RED); return true; } boolean synced = Discord.syncRoles(target, playerData.getDiscordID()); - if (synced) - { + if (synced) { msg("Successfully synced your roles.", ChatColor.GREEN); - } - else - { + } else { msg("Failed to sync your roles, please check the console.", ChatColor.RED); } } @@ -190,67 +163,49 @@ public class Command_myadmin extends FreedomCommand return true; } - default: - { + default: { return false; } } } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return Collections.emptyList(); } List singleArguments = Arrays.asList("clearips", "setscformat", "setacformat"); List doubleArguments = Arrays.asList("clearip", "clearscformat", "clearacformat", "syncroles"); - if (args.length == 1) - { + if (args.length == 1) { List options = new ArrayList<>(); options.add("-o"); options.addAll(singleArguments); options.addAll(doubleArguments); return options; - } - else if (args.length == 2) - { - if (args[0].equals("-o")) - { + } else if (args.length == 2) { + if (args[0].equals("-o")) { return FUtil.getPlayerList(); - } - else - { - if (doubleArguments.contains(args[0])) - { - if (args[0].equals("clearip")) - { - List ips = plugin.al.getAdmin(sender).getIps(); - ips.remove(FUtil.getIp((Player)sender)); + } else { + if (doubleArguments.contains(args[0])) { + if (args[0].equals("clearip")) { + List ips = plugin.adminList.getAdmin(sender).getIps(); + ips.remove(FUtil.getIp((Player) sender)); return ips; } } } - } - else if (args.length == 3) - { - if (args[0].equals("-o")) - { + } else if (args.length == 3) { + if (args[0].equals("-o")) { List options = new ArrayList<>(); options.addAll(singleArguments); options.addAll(doubleArguments); return options; } - } - else if (args.length == 4) - { - if (args[0].equals("-o") && args[2].equals("clearip")) - { - Admin admin = plugin.al.getEntryByName(args[1]); - if (admin != null) - { + } else if (args.length == 4) { + if (args[0].equals("-o") && args[2].equals("clearip")) { + Admin admin = plugin.adminList.getEntryByName(args[1]); + if (admin != null) { return admin.getIps(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyInfoCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyInfoCMD.java new file mode 100644 index 00000000..683561cf --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/MyInfoCMD.java @@ -0,0 +1,20 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +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(name = "myinfo", description = "Check your personal data", usage = "/") +public class MyInfoCMD extends FreedomCommand { + @Override + public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + msg(plugin.playerList.getData(playerSender).toString()); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NameHistoryCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NameHistoryCMD.java new file mode 100644 index 00000000..8562bc26 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NameHistoryCMD.java @@ -0,0 +1,24 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.History; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) +@CommandParameters(name = "namehistory", description = "Check the name history of a specified player.", usage = "/ ", aliases = "nh") +public class NameHistoryCMD extends FreedomCommand { + @Override + public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { + return false; + } + History.reportHistory(sender, args[0]); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NetherCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NetherCMD.java new file mode 100644 index 00000000..8e8fcba4 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NetherCMD.java @@ -0,0 +1,21 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "nether", description = "Go to the Nether.", usage = "/", aliases = "hell") +public class NetherCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + plugin.worldManager.gotoWorld(playerSender, server.getWorlds().get(0).getName() + "_nether"); + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickCleanCMD.java similarity index 78% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickCleanCMD.java index 1ba43927..52abb2e6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickCleanCMD.java @@ -1,11 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -16,12 +14,17 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + @CommandPermissions(level = Rank.ADMIN, 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 -{ - private final Map colorCodes = new HashMap() - {{ +@CommandParameters(name = "nickclean", description = "Essentials Interface Command - Remove illegal chatcodes from nicknames of one or all players on server.", usage = "/ [player]", aliases = "nc") +public class NickCleanCMD extends FreedomCommand { + private final Map colorCodes = new HashMap() {{ put("&0", Color.BLACK); put("&1", Color.BLUE); put("&2", Color.GREEN); @@ -41,14 +44,11 @@ public class Command_nickclean extends FreedomCommand }}; @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 1) { Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -59,31 +59,25 @@ public class Command_nickclean extends FreedomCommand } FUtil.adminAction(sender.getName(), "Cleaning all nicknames", false); - for (final Player player : server.getOnlinePlayers()) - { + for (final Player player : server.getOnlinePlayers()) { cleanNickname(player); } return true; } - public void cleanNickname(Player player) - { + public void cleanNickname(Player player) { final String playerName = player.getName(); - final String nickName = plugin.esb.getNickname(playerName); + final String nickName = plugin.essentialsBridge.isEnabled() ? plugin.essentialsBridge.getNickname(playerName) : player.getDisplayName(); StringBuilder newNick = new StringBuilder(); boolean nickChanged = false; - if (nickName != null) - { - if (nickName.contains("§x")) - { + if (nickName != null) { + if (nickName.contains("§x")) { // Detects colors that are similar to blocked codes. spliterator: - for (String split : nickName.split("§x")) - { + for (String split : nickName.split("§x")) { List colors = new ArrayList<>(); String hexColorSub; - if (split.length() >= 12 && split.contains("§")) - { + if (split.length() >= 12 && split.contains("§")) { hexColorSub = split.substring(0, 12); split = String.valueOf(split.charAt(12)); String hexColorString = "#" + hexColorSub.replaceAll("§", ""); @@ -109,13 +103,10 @@ public class Command_nickclean extends FreedomCommand colorSecond = Color.fromRGB(Math.max(hexColor.getRed(), 0), Math.max(hexColor.getGreen(), 0), Math.max(hexColor.getBlue() - 20, 0)); colors.addAll(FUtil.createColorGradient(colorFirst, colorSecond, 40)); - for (String colorCode : ConfigEntry.BLOCKED_CHATCODES.getString().split(",")) - { + for (String colorCode : ConfigEntry.BLOCKED_CHATCODES.getString().split(",")) { // Makes sure that there's hex colors in the split. - for (Color color : colors) - { - if (colorCodes.get(colorCode) != null && FUtil.colorClose(color, colorCodes.get(colorCode), 40)) - { + for (Color color : colors) { + if (colorCodes.get(colorCode) != null && FUtil.colorClose(color, colorCodes.get(colorCode), 40)) { nickChanged = true; newNick.append(split); continue spliterator; @@ -126,16 +117,12 @@ public class Command_nickclean extends FreedomCommand newNick.append("§x").append(hexColorSub).append(split); } } - } - else - { + } else { // Falls back on old code if hex isn't used. final Pattern REGEX = Pattern.compile(FUtil.colorize(ChatColor.COLOR_CHAR + "[" + StringUtils.join(ConfigEntry.BLOCKED_CHATCODES.getString().split(","), "") + "]"), Pattern.CASE_INSENSITIVE); - if (!nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) - { + if (!nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) { final Matcher matcher = REGEX.matcher(nickName); - if (matcher.find()) - { + if (matcher.find()) { nickChanged = true; newNick.append(matcher.replaceAll("")); } @@ -143,10 +130,11 @@ public class Command_nickclean extends FreedomCommand } } - if (nickChanged) - { - msg(ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET + "\" -> \"" + newNick.toString() + ChatColor.RESET + "\"."); + if (nickChanged) { + msg(ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET + "\" -> \"" + newNick + ChatColor.RESET + "\"."); } - plugin.esb.setNickname(playerName, newNick.toString()); + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(playerName, newNick.toString()); + else player.setDisplayName(nickName); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickFilterCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickFilterCMD.java index fef2ee56..ed149126 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickFilterCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; @@ -11,21 +11,22 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "NickFilter: Prefix any command with this command to replace nicknames in that command with real names. Nicknames should be prefixed with a !.", +@CommandParameters(name = "nickfilter", description = "NickFilter: Prefix any command with this command to replace nicknames in that command with real names. Nicknames should be prefixed with a !.", usage = "/ !", aliases = "nf") -public class Command_nickfilter extends FreedomCommand -{ +public class NickFilterCMD extends FreedomCommand { - private static Player getPlayerByDisplayName(String needle) - { + private static Player getPlayerByDisplayName(String needle) { needle = needle.toLowerCase().trim(); - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player.getDisplayName().toLowerCase().trim().contains(needle)) - { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player.getDisplayName().toLowerCase().trim().contains(needle)) { return player; } } @@ -33,19 +34,16 @@ public class Command_nickfilter extends FreedomCommand return null; } - private static Player getPlayerByDisplayNameAlt(String needle) - { + private static Player getPlayerByDisplayNameAlt(String needle) { needle = needle.toLowerCase().trim(); Integer minEditDistance = null; Player minEditMatch = null; - for (Player player : Bukkit.getOnlinePlayers()) - { + for (Player player : Bukkit.getOnlinePlayers()) { String haystack = player.getDisplayName().toLowerCase().trim(); int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase()); - if (minEditDistance == null || minEditDistance > editDistance) - { + if (minEditDistance == null || minEditDistance > editDistance) { minEditDistance = editDistance; minEditMatch = player; } @@ -55,59 +53,48 @@ public class Command_nickfilter extends FreedomCommand } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean nickMatched = false; final List outputCommand = new ArrayList<>(); - if (args.length >= 1) - { - for (String arg : args) - { + if (args.length >= 1) { + for (String arg : args) { Player player = null; Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg); - if (matcher.find()) - { + if (matcher.find()) { String displayName = matcher.group(1); player = getPlayerByDisplayName(displayName); - if (player == null || plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender)) - { + if (player == null || plugin.adminList.isVanished(player.getName()) && !plugin.adminList.isAdmin(sender)) { player = getPlayerByDisplayNameAlt(displayName); - if (player == null || !plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender)) - { + if (player == null || !plugin.adminList.isVanished(player.getName()) && !plugin.adminList.isAdmin(sender)) { msg("Can't find player by nickname: " + displayName); return true; } } } - if (player == null) - { + if (player == null) { outputCommand.add(arg); - } - else - { + } else { nickMatched = true; outputCommand.add(player.getName()); } } } - if (!nickMatched) - { + if (!nickMatched) { msg("No nicknames replaced in command."); return true; } String newCommand = StringUtils.join(outputCommand, " "); - if (plugin.cb.isCommandBlocked(newCommand, sender)) - { + if (plugin.commandBlocker.isCommandBlocked(newCommand, sender)) { // CommandBlocker handles messages and broadcasts return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickGradientCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickGradientCMD.java index 3fba2d4f..6fb2b92c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickGradientCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang3.StringUtils; @@ -11,35 +14,30 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/ ", aliases = "nickgr") -public class Command_nickgradient extends FreedomCommand -{ +@CommandParameters(name = "nickgradient", description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/ ", aliases = "nickgr") +public class NickGradientCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 3) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 3) { return false; } String nick = args[2].trim(); - if (nick.length() < 3 || nick.length() > 30) - { + if (nick.length() < 3 || nick.length() > 30) { msg("Your nickname must be between 3 and 30 characters long."); return true; } - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player == playerSender) - { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player == playerSender) { continue; } - if (player.getName().equalsIgnoreCase(nick) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nick)) - { + if (player.getName().equalsIgnoreCase(nick) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nick)) { msg("That nickname is already in use."); return true; } @@ -47,31 +45,22 @@ public class Command_nickgradient extends FreedomCommand String from = "", to = ""; java.awt.Color awt1, awt2; - try - { + try { if (args[0].equalsIgnoreCase("random") || - args[0].equalsIgnoreCase("r")) - { + args[0].equalsIgnoreCase("r")) { awt1 = FUtil.getRandomAWTColor(); from = " (From: " + FUtil.getHexStringOfAWTColor(awt1) + ")"; - } - else - { + } else { awt1 = java.awt.Color.decode(args[0]); } if (args[1].equalsIgnoreCase("random") || - args[1].equalsIgnoreCase("r")) - { + args[1].equalsIgnoreCase("r")) { awt2 = FUtil.getRandomAWTColor(); to = " (To: " + FUtil.getHexStringOfAWTColor(awt2) + ")"; - } - else - { + } else { awt2 = java.awt.Color.decode(args[1]); } - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid hex values."); return true; } @@ -79,14 +68,17 @@ public class Command_nickgradient extends FreedomCommand Color c2 = FUtil.fromAWT(awt2); List gradient = FUtil.createColorGradient(c1, c2, nick.length()); String[] splitNick = nick.split(""); - for (int i = 0; i < splitNick.length; i++) - { + for (int i = 0; i < splitNick.length; i++) { splitNick[i] = net.md_5.bungee.api.ChatColor.of(FUtil.toAWT(gradient.get(i))) + splitNick[i]; } nick = StringUtils.join(splitNick, ""); final String outputNick = FUtil.colorize(nick); - plugin.esb.setNickname(sender.getName(), outputNick); + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(sender.getName(), outputNick); + else { + ((Player)sender).setDisplayName(outputNick); + } msg("Your nickname is now: '" + outputNick + ChatColor.GRAY + "'" + from + to); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickNyanCMD.java similarity index 52% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickNyanCMD.java index 706b54d5..ef4de9d2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickNyanCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; @@ -9,46 +13,38 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Essentials Interface Command - Randomize the colors of your nickname.", usage = "/ < | off>") -public class Command_nicknyan extends FreedomCommand -{ +@CommandParameters(name = "nicknyan", description = "Essentials Interface Command - Randomize the colors of your nickname.", usage = "/ < | off>") +public class NickNyanCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { return false; } - if (args[0].equalsIgnoreCase("off")) - { - plugin.esb.setNickname(sender.getName(), null); + if (args[0].equalsIgnoreCase("off")) { + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(sender.getName(), null); + else ((Player) sender).setDisplayName(null); msg("Nickname cleared."); return true; } final String nickPlain = ChatColor.stripColor(FUtil.colorize(args[0].trim())); - if (!nickPlain.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$")) - { + if (!nickPlain.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$")) { msg("That nickname contains invalid characters."); return true; - } - else if (nickPlain.length() < 3 || nickPlain.length() > 30) - { + } else if (nickPlain.length() < 3 || nickPlain.length() > 30) { msg("Your nickname must be between 3 and 30 characters long."); return true; } - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player == playerSender) - { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player == playerSender) { continue; } - if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) - { + if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) { msg("That nickname is already in use."); return true; } @@ -57,16 +53,19 @@ public class Command_nicknyan extends FreedomCommand final StringBuilder newNick = new StringBuilder(); final char[] chars = nickPlain.toCharArray(); - for (char c : chars) - { + for (char c : chars) { newNick.append(FUtil.randomChatColor()).append(c); } newNick.append(ChatColor.WHITE); - plugin.esb.setNickname(sender.getName(), newNick.toString()); + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(sender.getName(), newNick.toString()); + else { + ((Player) sender).setDisplayName(newNick.toString()); + } - msg("Your nickname is now: " + newNick.toString()); + msg("Your nickname is now: " + newNick); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickRainbowCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickRainbowCMD.java index d82b4f30..04b990b1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NickRainbowCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; @@ -9,40 +13,32 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/ ") -public class Command_nickrainbow extends FreedomCommand -{ +@CommandParameters(name = "nickrainbow", description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/ ") +public class NickRainbowCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { return false; } final String nickPlain = ChatColor.stripColor(FUtil.colorize(args[0].trim())); - if (!nickPlain.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$")) - { + if (!nickPlain.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$")) { msg("That nickname contains invalid characters."); return true; } - if (nickPlain.length() < 3 || nickPlain.length() > 30) - { + if (nickPlain.length() < 3 || nickPlain.length() > 30) { msg("Your nickname must be between 3 and 30 characters long."); return true; } - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player == playerSender) - { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player == playerSender) { continue; } - if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) - { + if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) { msg("That nickname is already in use."); return true; } @@ -50,7 +46,11 @@ public class Command_nickrainbow extends FreedomCommand final String newNick = FUtil.rainbowify(ChatColor.stripColor(FUtil.colorize(nickPlain))); - plugin.esb.setNickname(sender.getName(), newNick); + if (plugin.essentialsBridge.isEnabled()) + plugin.essentialsBridge.setNickname(sender.getName(), newNick); + else { + ((Player)sender).setDisplayName(newNick); + } msg("Your nickname is now: " + newNick); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NotesCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/NotesCMD.java index 4a4cd2ab..20b9cb94 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/NotesCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -13,48 +14,42 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Manage notes for a player", usage = "/ | remove | clear>") -public class Command_notes extends FreedomCommand -{ +@CommandParameters(name = "notes", description = "Manage notes for a player", usage = "/ | remove | clear>") +public class NotesCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 2) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 2) { return false; } PlayerData playerData; final Player player = getPlayer(args[0]); - if (player == null) - { - final PlayerData entry = plugin.pl.getData(args[0]); + if (player == null) { + final PlayerData entry = plugin.playerList.getData(args[0]); - if (entry == null) - { + if (entry == null) { msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); return true; } - playerData = plugin.pl.getData(entry.getName()); - } - else - { - playerData = plugin.pl.getData(player); + playerData = plugin.playerList.getData(entry.getName()); + } else { + playerData = plugin.playerList.getData(player); } - switch (args[1]) - { - case "list": - { + switch (args[1]) { + case "list": { final StringBuilder noteList = new StringBuilder(); noteList.append(ChatColor.GREEN).append("Player notes for ").append(playerData.getName()).append(":"); int id = 1; - for (String note : playerData.getNotes()) - { + for (String note : playerData.getNotes()) { String noteLine = id + ". " + note; noteList.append("\n").append(ChatColor.GOLD).append(noteLine); id++; @@ -63,80 +58,62 @@ public class Command_notes extends FreedomCommand return true; } - case "add": - { - if (args.length < 3) - { + case "add": { + if (args.length < 3) { return false; } String note = sender.getName() + ": " + StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " "); playerData.addNote(note); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Note added.", ChatColor.GREEN); return true; } - case "remove": - { - if (args.length < 3) - { + case "remove": { + if (args.length < 3) { return false; } int id; - try - { + try { id = Integer.parseInt(args[2]); - } - catch (NumberFormatException e) - { + } catch (NumberFormatException e) { msg("Invalid number: " + args[2], ChatColor.RED); return true; } id--; - if (playerData.removeNote(id)) - { - plugin.pl.save(playerData); + if (playerData.removeNote(id)) { + plugin.playerList.save(playerData); msg("Note removed."); - } - else - { + } else { msg("No note with the ID of " + args[2] + " exists.", ChatColor.RED); } return true; } - case "clear": - { + case "clear": { int count = playerData.getNotes().size(); playerData.clearNotes(); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); msg("Cleared " + count + " notes.", ChatColor.GREEN); return true; } - default: - { + default: { return false; } } } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { return FUtil.getPlayerList(); - } - else if (args.length == 2) - { + } else if (args.length == 2) { return Arrays.asList("list", "add", "remove", "clear"); - } - else if (args.length > 2 && (args[1].equals("add"))) - { + } else if (args.length > 2 && (args[1].equals("add"))) { return FUtil.getPlayerList(); } return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpCMD.java index ece9abba..0431aae0 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -9,52 +11,44 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH, cooldown = 5) -@CommandParameters(description = "OP a player", usage = "/ ") -public class Command_op extends FreedomCommand -{ +@CommandParameters(name = "op", description = "OP a player", usage = "/ ") +public class OpCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } boolean silent = false; - if (args.length == 2) - { + if (args.length == 2) { silent = args[1].equalsIgnoreCase("-s"); } final String targetName = args[0].toLowerCase(); List matchedPlayerNames = new ArrayList<>(); - for (final Player player : server.getOnlinePlayers()) - { + for (final 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() && !plugin.al.isVanished(player.getName())) - { + || player.getName().contains(targetName) || player.getDisplayName().contains(targetName)) { + if (!player.isOp() && !plugin.adminList.isVanished(player.getName())) { matchedPlayerNames.add(player.getName()); player.setOp(true); msg(player, YOU_ARE_OP); - plugin.rm.updateDisplay(player); + plugin.rankManager.updateDisplay(player); } } } - if (!matchedPlayerNames.isEmpty()) - { - if (!silent) - { + if (!matchedPlayerNames.isEmpty()) { + if (!silent) { FUtil.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false); } - } - else - { + } else { msg("Either the player is already opped, or the player could not be found."); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpListCMD.java similarity index 58% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpListCMD.java index 70686735..7bef3439 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpListCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Objects; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.OfflinePlayer; @@ -8,28 +11,24 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Objects; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Manage operators", usage = "/ ") -public class Command_ops extends FreedomCommand -{ +@CommandParameters(name = "ops", description = "Manage operators", usage = "/ ") +public class OpListCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 1) { return false; } - if (args[0].equalsIgnoreCase("count")) - { + if (args[0].equalsIgnoreCase("count")) { int totalOps = server.getOperators().size(); int onlineOps = 0; - for (Player player : server.getOnlinePlayers()) - { - if (player.isOp()) - { + for (Player player : server.getOnlinePlayers()) { + if (player.isOp()) { onlineOps++; } } @@ -40,21 +39,17 @@ public class Command_ops extends FreedomCommand return true; } - if (args[0].equalsIgnoreCase("purge")) - { - if (!plugin.al.isAdmin(sender)) - { + if (args[0].equalsIgnoreCase("purge")) { + if (!plugin.adminList.isAdmin(sender)) { noPerms(); return true; } FUtil.adminAction(sender.getName(), "Purging all operators", true); - for (OfflinePlayer player : server.getOperators()) - { + for (OfflinePlayer player : server.getOperators()) { player.setOp(false); - if (player.isOnline()) - { + if (player.isOnline()) { msg(Objects.requireNonNull(player.getPlayer()), FreedomCommand.YOU_ARE_NOT_OP); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpMeCMD.java similarity index 52% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpMeCMD.java index 93d71319..00279885 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpMeCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; @@ -7,17 +11,15 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "OPs the command sender.", usage = "/") -public class Command_opme extends FreedomCommand -{ +@CommandParameters(name = "opme", description = "OPs the command sender.", usage = "/") +public class OpMeCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { FUtil.adminAction(sender.getName(), "Opping " + sender.getName(), false); sender.setOp(true); msg(YOU_ARE_OP); - plugin.rm.updateDisplay(playerSender); + plugin.rankManager.updateDisplay(playerSender); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpallCMD.java similarity index 51% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpallCMD.java index 45ff1689..17674a57 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OpallCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; @@ -7,25 +11,19 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH, cooldown = 30) -@CommandParameters(description = "OP everyone on the server.", usage = "/") -public class Command_opall extends FreedomCommand -{ +@CommandParameters(name = "opall", description = "OP everyone on the server.", usage = "/") +public class OpallCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + 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); - for (Player player : server.getOnlinePlayers()) - { - if (!player.isOp()) - { + for (Player player : server.getOnlinePlayers()) { + if (!player.isOp()) { player.setOp(true); msg(player, YOU_ARE_OP); - plugin.rm.updateDisplay(player); - } - else - { + plugin.rankManager.updateDisplay(player); + } else { player.recalculatePermissions(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OrbitCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/OrbitCMD.java index 06320f31..caf3b54c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/OrbitCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -13,46 +17,37 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; @CommandPermissions(level = Rank.ADMIN, 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.", +@CommandParameters(name = "orbit", 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 -{ +public class OrbitCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); return true; } - FPlayer playerdata = plugin.pl.getPlayer(player); + FPlayer playerdata = plugin.playerList.getPlayer(player); double strength = 10.0; - if (args.length >= 2) - { - if (args[1].equalsIgnoreCase("stop")) - { + if (args.length >= 2) { + if (args[1].equalsIgnoreCase("stop")) { msg("Stopped orbiting " + player.getName()); playerdata.stopOrbiting(); return true; } - try - { + try { strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg(ex.getMessage(), ChatColor.RED); return true; } @@ -64,7 +59,7 @@ public class Command_orbit extends FreedomCommand playerdata.startOrbiting(strength); player.setVelocity(new Vector(0, strength, 0)); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null)); + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_panel.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PanelCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_panel.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PanelCMD.java index 364d58ff..1c87c24e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_panel.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PanelCMD.java @@ -1,10 +1,11 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import com.google.common.base.Strings; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; import me.totalfreedom.totalfreedommod.admin.Admin; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -13,41 +14,38 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Manage your Pterodactyl panel account", usage = "/ ") -public class Command_panel extends FreedomCommand -{ +@CommandParameters(name = "panel", description = "Manage your Pterodactyl panel account", usage = "/ ") +public class PanelCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!plugin.ptero.isEnabled()) - { + if (!plugin.pterodactyl.isEnabled()) { msg("Pterodactyl integration is currently disabled.", ChatColor.RED); return true; } PlayerData playerData = getData(playerSender); - if (playerData.getDiscordID() == null) - { + if (playerData.getDiscordID() == null) { msg("You must have a linked discord account.", ChatColor.RED); return true; } - if (args.length == 0) - { + if (args.length == 0) { return false; } - if (args[0].equalsIgnoreCase("create")) - { + if (args[0].equalsIgnoreCase("create")) { msg("Creating your Pterodactyl account...", ChatColor.GREEN); Admin admin = getAdmin(playerSender); - if (admin.getPteroID() != null) - { + if (admin.getPteroID() != null) { msg("You already have a Pterodactyl account.", ChatColor.RED); return true; } @@ -55,45 +53,40 @@ public class Command_panel extends FreedomCommand String username = sender.getName(); String password = FUtil.randomString(30); - String id = plugin.ptero.createAccount(username, password); - if (Strings.isNullOrEmpty(id)) - { + String id = plugin.pterodactyl.createAccount(username, password); + if (Strings.isNullOrEmpty(id)) { msg("Failed to create your Pterodactyl account.", ChatColor.RED); return true; } - plugin.ptero.addAccountToServer(id); + plugin.pterodactyl.addAccountToServer(id); admin.setPteroID(id); - plugin.al.save(admin); - plugin.al.updateTables(); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); - plugin.dc.sendPteroInfo(playerData, username, password); - msg("Successfully created your Pterodactyl account. Check your DMs from " + plugin.dc.formatBotTag() + " on discord to get your credentials.", ChatColor.GREEN); + plugin.discord.sendPteroInfo(playerData, username, password); + msg("Successfully created your Pterodactyl account. Check your DMs from " + plugin.discord.formatBotTag() + " on discord to get your credentials.", ChatColor.GREEN); return true; - } - else if (args[0].equalsIgnoreCase("delete")) - { + } else if (args[0].equalsIgnoreCase("delete")) { msg("Deleting your Pterodactyl account...", ChatColor.GREEN); Admin admin = getAdmin(playerSender); - if (admin.getPteroID() == null) - { + if (admin.getPteroID() == null) { msg("You do not have a Pterodactyl account.", ChatColor.RED); return true; } - boolean deleted = plugin.ptero.deleteAccount(admin.getPteroID()); + boolean deleted = plugin.pterodactyl.deleteAccount(admin.getPteroID()); - if (!deleted) - { + if (!deleted) { msg("Failed to delete your Pterodactyl account.", ChatColor.RED); return true; } admin.setPteroID(null); - plugin.al.save(admin); - plugin.al.updateTables(); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); msg("Successfully deleted your Pterodactyl account.", ChatColor.GREEN); return true; @@ -102,10 +95,8 @@ public class Command_panel extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1 && plugin.al.isSeniorAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1 && plugin.adminList.isSeniorAdmin(sender)) { return Arrays.asList("create", "delete"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PermissionsCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PermissionsCMD.java index 0adc14f3..cd552566 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PermissionsCMD.java @@ -1,43 +1,39 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissionAttachmentInfo; +import java.util.ArrayList; +import java.util.List; + @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Check your permissions", usage = "/ [prefix | reload]") -public class Command_permissions extends FreedomCommand -{ +@CommandParameters(name = "permissions", description = "Check your permissions", usage = "/ [prefix | reload]") +public class PermissionsCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0 && args[0].equalsIgnoreCase("reload") && plugin.al.isAdmin(sender)) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0 && args[0].equalsIgnoreCase("reload") && plugin.adminList.isAdmin(sender)) { plugin.permissions.load(); - plugin.pem.loadPermissionNodes(); - plugin.pem.updatePlayers(); + plugin.permissionManager.loadPermissionNodes(); + plugin.permissionManager.updatePlayers(); msg("Reloaded permissions"); - } - else - { + } else { String prefix = ""; - if (args.length > 0) - { + if (args.length > 0) { prefix = args[0]; } checkPlayer(); List permissions = new ArrayList<>(); - for (PermissionAttachmentInfo attachmentInfo : playerSender.getEffectivePermissions()) - { - if (attachmentInfo.getValue()) - { + for (PermissionAttachmentInfo attachmentInfo : playerSender.getEffectivePermissions()) { + if (attachmentInfo.getValue()) { String permission = attachmentInfo.getPermission(); - if (!prefix.isEmpty() && !permission.startsWith(prefix)) - { + if (!prefix.isEmpty() && !permission.startsWith(prefix)) { continue; } permissions.add(permission); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlayTimeCMD.java similarity index 74% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlayTimeCMD.java index c921275d..9a818950 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playtime.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlayTimeCMD.java @@ -1,38 +1,38 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.time.Instant; -import java.util.Date; -import java.util.List; import me.totalfreedom.totalfreedommod.admin.ActivityLogEntry; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.time.Instant; +import java.util.Date; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Gets your playtime statistics.", usage = "/") -public class Command_playtime extends FreedomCommand -{ +@CommandParameters(name = "playtime", description = "Gets your playtime statistics.", usage = "/") +public class PlayTimeCMD extends FreedomCommand { @Override - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - ActivityLogEntry entry = plugin.acl.getActivityLog(playerSender); + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { + ActivityLogEntry entry = plugin.activityLog.getActivityLog(playerSender); int seconds = entry.getTotalSecondsPlayed(); int minutes = 0; int hours = 0; - while (seconds >= 60) - { + while (seconds >= 60) { seconds -= 60; minutes += 1; } - while (minutes >= 60) - { + while (minutes >= 60) { minutes -= 60; hours += 1; } - if (entry.getTimestamps().size() == 0) - { + if (entry.getTimestamps().size() == 0) { entry.addLogin(); } String lastLoginString = entry.getTimestamps().get(entry.getTimestamps().size() - 1); @@ -65,11 +65,9 @@ public class Command_playtime extends FreedomCommand .append(" seconds") .append("\n"); List durations = entry.getDurations(); - if (durations.size() >= 3) - { + if (durations.size() >= 3) { sb.append("Recent Sessions:"); - for (int i = 0; i < 3; i++) - { + for (int i = 0; i < 3; i++) { sb.append("\n" + " - ").append(durations.get((durations.size() - 1) - i)); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playerverification.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlayerVerificationCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_playerverification.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlayerVerificationCMD.java index 0bfe476a..19eb2de5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_playerverification.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlayerVerificationCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -13,28 +13,26 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Manage your verification", usage = "/ | status | genbackupcodes>", aliases = "playerverify,pv") -public class Command_playerverification extends FreedomCommand -{ +@CommandParameters(name = "playerverification", description = "Manage your verification", usage = "/ | status | genbackupcodes>", aliases = "playerverify,pv") +public class PlayerVerificationCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - PlayerData target = plugin.pl.getData(playerSender); + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + PlayerData target = plugin.playerList.getData(playerSender); boolean verificationEnabled = ConfigEntry.DISCORD_VERIFICATION.getBoolean(); List ips = new ArrayList<>(target.getIps()); - if (verificationEnabled) - { - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("clearips")) - { + if (verificationEnabled) { + if (args.length == 1) { + if (args[0].equalsIgnoreCase("clearips")) { int cleared = 0; - for (String ip : ips) - { - if (!ip.equals(FUtil.getIp(playerSender))) - { + for (String ip : ips) { + if (!ip.equals(FUtil.getIp(playerSender))) { target.removeIp(ip); cleared++; } @@ -42,65 +40,52 @@ public class Command_playerverification extends FreedomCommand msg("Cleared all IP's except your current IP \"" + FUtil.getIp(playerSender) + "\""); msg("Cleared " + cleared + " IP's."); - plugin.pl.save(target); - plugin.pl.syncIps(target); + plugin.playerList.save(target); + plugin.playerList.syncIps(target); return true; - } - else if (args[0].equalsIgnoreCase("clearip")) - { + } else if (args[0].equalsIgnoreCase("clearip")) { return false; } } - if (args.length < 1) - { + if (args.length < 1) { return false; } - PlayerData data = plugin.pl.getData(playerSender); + PlayerData data = plugin.playerList.getData(playerSender); - switch (args[0].toLowerCase()) - { - case "enable": - { - if (!plugin.dc.enabled) - { + switch (args[0].toLowerCase()) { + case "enable": { + if (!plugin.discord.enabled) { msg("The Discord verification system is currently disabled.", ChatColor.RED); return true; - } - else if (data.hasVerification()) - { + } else if (data.hasVerification()) { msg("Discord verification is already enabled for you.", ChatColor.RED); return true; - } - else if (data.getDiscordID() == null) - { + } else if (data.getDiscordID() == null) { msg("Please link a discord account with /linkdiscord.", ChatColor.RED); return true; } data.setVerification(true); - plugin.pl.save(data); + plugin.playerList.save(data); msg("Re-enabled Discord verification.", ChatColor.GREEN); return true; } - case "disable": - { - if (!data.hasVerification()) - { + case "disable": { + if (!data.hasVerification()) { msg("Discord verification is already disabled for you.", ChatColor.RED); return true; } data.setVerification(false); - plugin.pl.save(data); + plugin.playerList.save(data); msg("Disabled Discord verification.", ChatColor.GREEN); return true; } - case "status": - { + case "status": { boolean enabled = target.hasVerification(); boolean specified = target.getDiscordID() != null; msg(ChatColor.GRAY + "Discord Verification Enabled: " + (enabled ? ChatColor.GREEN + "true" : ChatColor.RED + "false")); @@ -109,27 +94,20 @@ public class Command_playerverification extends FreedomCommand return true; } - case "genbackupcodes": - { - if (!plugin.dc.enabled) - { + case "genbackupcodes": { + if (!plugin.discord.enabled) { msg("The Discord verification system is currently disabled.", ChatColor.RED); return true; - } - else if (!data.hasVerification()) - { + } else if (!data.hasVerification()) { msg("Discord verification is not enabled for you.", ChatColor.RED); return true; } - boolean generated = plugin.dc.sendBackupCodes(data); + boolean generated = plugin.discord.sendBackupCodes(data); - if (generated) - { + if (generated) { msg("Your backup codes have been sent to your discord account. They can be re-generated at anytime.", ChatColor.GREEN); - } - else - { + } else { msg("Failed to generate backup codes, please contact a developer.", ChatColor.RED); } return true; @@ -137,19 +115,15 @@ public class Command_playerverification extends FreedomCommand default: return false; } - } - else - { + } else { msg("The Discord verification system is currently disabled.", ChatColor.RED); } return true; } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { return Arrays.asList("enable", "disable", "status", "clearips", "genbackupcodes"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlotWorldCMD.java similarity index 54% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlotWorldCMD.java index e764e94f..db4d98e7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PlotWorldCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.World; import org.bukkit.command.Command; @@ -8,19 +12,14 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Go to the PlotWorld.", usage = "/", aliases = "pw") -public class Command_plotworld extends FreedomCommand -{ +@CommandParameters(name = "plotworld", description = "Go to the PlotWorld.", usage = "/", aliases = "pw") +public class PlotWorldCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { World plotworld = server.getWorld("plotworld"); - if (plotworld != null) - { + if (plotworld != null) { PaperLib.teleportAsync(playerSender, plotworld.getSpawnLocation()); - } - else - { + } else { msg("\"plotworld\" doesn't exist."); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PluginControlCMD.java similarity index 67% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PluginControlCMD.java index 1dbc5579..6bfd7eed 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PluginControlCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -13,29 +13,28 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, 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 -{ +@CommandParameters(name = "plugincontrol", description = "Enable, disable, or reload a specified plugin, as well as list all plugins on the server.", usage = "/ < > | list>", aliases = "plc") +public class PluginControlCMD extends FreedomCommand { private final List UNTOUCHABLE_PLUGINS = Arrays.asList(plugin.getName()); @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0 || args.length > 2) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0 || args.length > 2) { return false; } final PluginManager pm = server.getPluginManager(); - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("list")) - { - for (Plugin serverPlugin : pm.getPlugins()) - { + if (args.length == 1) { + if (args[0].equalsIgnoreCase("list")) { + for (Plugin serverPlugin : pm.getPlugins()) { final String version = serverPlugin.getDescription().getVersion(); msg(ChatColor.GRAY + "- " + (serverPlugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED) + serverPlugin.getName() + ChatColor.GOLD + (!version.isEmpty() ? " v" + version : "") + " by " @@ -48,25 +47,21 @@ public class Command_plugincontrol extends FreedomCommand return false; } - if (args[0].equals("enable")) - { + if (args[0].equals("enable")) { final Plugin target = getPlugin(args[1]); - if (target == null) - { + if (target == null) { msg("Plugin not found!"); return true; } - if (target.isEnabled()) - { + if (target.isEnabled()) { msg("Plugin is already enabled."); return true; } pm.enablePlugin(target); - if (!pm.isPluginEnabled(target)) - { + if (!pm.isPluginEnabled(target)) { msg("Error enabling plugin " + target.getName()); return true; } @@ -75,31 +70,26 @@ public class Command_plugincontrol extends FreedomCommand return true; } - if (args[0].equals("disable")) - { + if (args[0].equals("disable")) { final Plugin target = getPlugin(args[1]); - if (target == null) - { + if (target == null) { msg("Plugin not found!"); return true; } - if (!target.isEnabled()) - { + if (!target.isEnabled()) { msg("Plugin is already disabled."); return true; } - if (UNTOUCHABLE_PLUGINS.contains(target.getName())) - { + if (UNTOUCHABLE_PLUGINS.contains(target.getName())) { msg("You cannot disable " + target.getName()); return true; } pm.disablePlugin(target); - if (pm.isPluginEnabled(target)) - { + if (pm.isPluginEnabled(target)) { msg("Error disabling plugin " + target.getName()); return true; } @@ -108,17 +98,14 @@ public class Command_plugincontrol extends FreedomCommand return true; } - if (args[0].equals("reload")) - { + if (args[0].equals("reload")) { final Plugin target = getPlugin(args[1]); - if (target == null) - { + if (target == null) { msg("Plugin not found!"); return true; } - if (UNTOUCHABLE_PLUGINS.contains(target.getName())) - { + if (UNTOUCHABLE_PLUGINS.contains(target.getName())) { msg("You cannot reload " + target.getName()); return true; } @@ -133,20 +120,14 @@ public class Command_plugincontrol extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return Collections.emptyList(); } - if (args.length == 1) - { + if (args.length == 1) { return Arrays.asList("enable", "disable", "reload", "list"); - } - else if (args.length == 2) - { - if (!args[0].equals("list")) - { + } else if (args.length == 2) { + if (!args[0].equals("list")) { return getAllPluginNames(); } } @@ -154,13 +135,10 @@ public class Command_plugincontrol extends FreedomCommand return Collections.emptyList(); } - public List getAllPluginNames() - { + public List getAllPluginNames() { List names = new ArrayList<>(); - for (Plugin plugin : server.getPluginManager().getPlugins()) - { - if (!UNTOUCHABLE_PLUGINS.contains(plugin.getName())) - { + for (Plugin plugin : server.getPluginManager().getPlugins()) { + if (!UNTOUCHABLE_PLUGINS.contains(plugin.getName())) { names.add(plugin.getName()); } } @@ -168,22 +146,16 @@ public class Command_plugincontrol extends FreedomCommand return names; } - public Plugin getPlugin(String name) - { - for (Plugin serverPlugin : server.getPluginManager().getPlugins()) - { - if (serverPlugin.getName().equalsIgnoreCase(name)) - { + public Plugin getPlugin(String name) { + for (Plugin serverPlugin : server.getPluginManager().getPlugins()) { + if (serverPlugin.getName().equalsIgnoreCase(name)) { return serverPlugin; } } - if (name.length() >= 3) - { - for (Plugin serverPlugin : server.getPluginManager().getPlugins()) - { - if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase())) - { + if (name.length() >= 3) { + for (Plugin serverPlugin : server.getPluginManager().getPlugins()) { + if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase())) { return serverPlugin; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PotionCMD.java similarity index 66% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PotionCMD.java index feab9776..dd98d54d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PotionCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -14,84 +14,68 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters( +@CommandParameters(name = "potion", description = "Manipulate your potion effects. Duration is measured in server ticks (~20 ticks per second).", usage = "/ [target name]>", aliases = "effect") -public class Command_potion extends FreedomCommand -{ +public class PotionCMD extends FreedomCommand { @SuppressWarnings("deprecation") @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - switch (args.length) - { - case 1: - { - if (args[0].equalsIgnoreCase("list")) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + switch (args.length) { + case 1: { + if (args[0].equalsIgnoreCase("list")) { List potionEffectTypeNames = new ArrayList<>(); - for (PotionEffectType potion_effect_type : PotionEffectType.values()) - { - if (potion_effect_type != null) - { + for (PotionEffectType potion_effect_type : PotionEffectType.values()) { + if (potion_effect_type != null) { potionEffectTypeNames.add(potion_effect_type.getName()); } } msg("Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), ChatColor.AQUA); - } - else if (args[0].equalsIgnoreCase("clearall")) - { - if (!(plugin.al.isAdmin(sender) || senderIsConsole)) - { + } else if (args[0].equalsIgnoreCase("clearall")) { + if (!(plugin.adminList.isAdmin(sender) || senderIsConsole)) { noPerms(); return true; } FUtil.adminAction(sender.getName(), "Cleared all potion effects from all players", true); - for (Player target : server.getOnlinePlayers()) - { - for (PotionEffect potion_effect : target.getActivePotionEffects()) - { + for (Player target : server.getOnlinePlayers()) { + for (PotionEffect potion_effect : target.getActivePotionEffects()) { target.removePotionEffect(potion_effect.getType()); } } } } - case 2: - { - if (args[0].equalsIgnoreCase("clear")) - { + case 2: { + if (args[0].equalsIgnoreCase("clear")) { Player target = playerSender; - if (args.length == 2) - { - if (!plugin.al.isAdmin(sender) && !args[1].equalsIgnoreCase(sender.getName())) - { + if (args.length == 2) { + if (!plugin.adminList.isAdmin(sender) && !args[1].equalsIgnoreCase(sender.getName())) { msg(ChatColor.RED + "Only admins can clear potion effects from other players."); return true; } target = getPlayer(args[1], true); - } - else - { - if (senderIsConsole) - { + } else { + if (senderIsConsole) { msg("You must specify a target player when using this command from the console."); return true; } } - if (target == null) - { + if (target == null) { msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); return true; } - for (PotionEffect potion_effect : target.getActivePotionEffects()) - { + for (PotionEffect potion_effect : target.getActivePotionEffects()) { target.removePotionEffect(potion_effect.getType()); } @@ -101,64 +85,49 @@ public class Command_potion extends FreedomCommand } case 4: - case 5: - { - if (args[0].equalsIgnoreCase("add")) - { + case 5: { + if (args[0].equalsIgnoreCase("add")) { Player target = playerSender; - if (args.length == 5) - { - if (!plugin.al.isAdmin(sender) && !args[4].equalsIgnoreCase(sender.getName())) - { + if (args.length == 5) { + if (!plugin.adminList.isAdmin(sender) && !args[4].equalsIgnoreCase(sender.getName())) { msg("Only admins can apply potion effects to other players.", ChatColor.RED); return true; } target = getPlayer(args[4]); - if (target == null || plugin.al.isVanished(target.getName()) && !plugin.al.isAdmin(sender)) - { + if (target == null || plugin.adminList.isVanished(target.getName()) && !plugin.adminList.isAdmin(sender)) { msg(PLAYER_NOT_FOUND); return true; } - } - else - { - if (senderIsConsole) - { + } else { + if (senderIsConsole) { msg("You must specify a target player when using this command from the console."); return true; } } PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]); - if (potion_effect_type == null) - { + if (potion_effect_type == null) { msg("Invalid potion effect type.", ChatColor.AQUA); return true; } int duration; - try - { + try { duration = Integer.parseInt(args[2]); duration = Math.min(duration, 100000); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid potion duration.", ChatColor.RED); return true; } int amplifier; - try - { + try { amplifier = Integer.parseInt(args[3]); amplifier = Math.min(amplifier, 100000); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid potion amplifier.", ChatColor.RED); return true; } @@ -173,8 +142,7 @@ public class Command_potion extends FreedomCommand } break; } - default: - { + default: { return false; } } @@ -182,68 +150,51 @@ public class Command_potion extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - switch (args.length) - { - case 1: - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + switch (args.length) { + case 1: { List arguments = new ArrayList<>(Arrays.asList("list", "clear", "add")); - if (plugin.al.isAdmin(sender)) - { + if (plugin.adminList.isAdmin(sender)) { arguments.add("clearall"); } return arguments; } - case 2: - { - if (args[0].equals("clear")) - { - if (plugin.al.isAdmin(sender)) - { + case 2: { + if (args[0].equals("clear")) { + if (plugin.adminList.isAdmin(sender)) { return FUtil.getPlayerList(); } - } - else if (args[0].equals("add")) - { + } else if (args[0].equals("add")) { return getAllPotionTypes(); } break; } - case 3: - { - if (args[0].equals("add")) - { + case 3: { + if (args[0].equals("add")) { return Collections.singletonList(""); } break; } - case 4: - { - if (args[0].equals("add")) - { + case 4: { + if (args[0].equals("add")) { return Collections.singletonList(""); } break; } - case 5: - { - if (plugin.al.isAdmin(sender)) - { - if (args[0].equals("add")) - { + case 5: { + if (plugin.adminList.isAdmin(sender)) { + if (args[0].equals("add")) { return FUtil.getPlayerList(); } } break; } - default: - { + default: { break; } } @@ -251,13 +202,10 @@ public class Command_potion extends FreedomCommand return Collections.emptyList(); } - public List getAllPotionTypes() - { + public List getAllPotionTypes() { List types = new ArrayList<>(); - for (PotionEffectType potionEffectType : PotionEffectType.values()) - { - if (potionEffectType != null) - { + for (PotionEffectType potionEffectType : PotionEffectType.values()) { + if (potionEffectType != null) { types.add(potionEffectType.getName()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PotionSpyCMD.java similarity index 69% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PotionSpyCMD.java index 277b6ac3..bac97ba8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PotionSpyCMD.java @@ -1,10 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -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.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.math.NumberUtils; @@ -15,30 +15,29 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.entity.ThrownPotion; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Allows admins to see potions that are thrown.", usage = "/ | history [player] ", aliases = "potspy") -public class Command_potionspy extends FreedomCommand -{ +@CommandParameters(name = "potionspy", description = "Allows admins to see potions that are thrown.", usage = "/ | history [player] ", aliases = "potspy") +public class PotionSpyCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - Admin admin = plugin.al.getAdmin(playerSender); + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + Admin admin = plugin.adminList.getAdmin(playerSender); - if (args.length <= 0) - { + if (args.length <= 0) { setPotionSpyState(admin, !admin.getPotionSpy()); return true; - } - else - { + } else { String titleText = "&8&m------------------&r &ePotionSpy &8&m------------------&r"; String validPageText = "Please specify a valid page number between 1 and %s."; String noPlayerRecord = "That player has not thrown any potions yet."; String splashedText = "&r%s splashed a potion at &eX: %s Y: %s Z: %s&r\nin the world '&e%s&r' about &e%s &rago%s."; String bottomText = "&8&m--------------------&r &e%s / %s &8&m--------------------&r"; - switch (args[0].toLowerCase()) - { + switch (args[0].toLowerCase()) { case "enable": case "on": setPotionSpyState(admin, true); @@ -50,27 +49,23 @@ public class Command_potionspy extends FreedomCommand break; case "history": - if (args.length == 3) - { + if (args.length == 3) { Player player = Bukkit.getPlayer(args[1]); - if (player == null) - { + if (player == null) { msg(sender, "Please specify a valid player name."); return true; } - List> thrownPotions = new ArrayList<>(plugin.mo.getPlayerThrownPotions(player)); // Make a copy of the list to avoid modifying the original. + List> thrownPotions = new ArrayList<>(plugin.monitors.getPlayerThrownPotions(player)); // Make a copy of the list to avoid modifying the original. List potionThrowNotifications = new ArrayList<>(); - int lastPage = (int)Math.ceil(thrownPotions.size() / 5.0); + int lastPage = (int) Math.ceil(thrownPotions.size() / 5.0); - if (thrownPotions.isEmpty()) - { + if (thrownPotions.isEmpty()) { msg(sender, noPlayerRecord); return true; } - if (!NumberUtils.isNumber(args[2])) - { + if (!NumberUtils.isNumber(args[2])) { msg(sender, String.format(validPageText, lastPage)); return true; } @@ -78,54 +73,42 @@ public class Command_potionspy extends FreedomCommand Collections.reverse(thrownPotions); int pageIndex = Integer.parseInt(args[2]); - for (Map.Entry potionEntry : thrownPotions) - { + for (Map.Entry potionEntry : thrownPotions) { ThrownPotion potion = potionEntry.getKey(); - boolean trollPotions = plugin.mo.isTrollPotion(potion); + boolean trollPotions = plugin.monitors.isTrollPotion(potion); potionThrowNotifications.add(ChatColor.translateAlternateColorCodes('&', String.format(splashedText, player.getName(), potion.getLocation().getBlockX(), potion.getLocation().getBlockY(), potion.getLocation().getBlockZ(), potion.getWorld().getName(), getUnixTimeDifference(potionEntry.getValue(), System.currentTimeMillis()), trollPotions ? " &c(most likely troll potion/potions)" : ""))); } List page = FUtil.getPageFromList(potionThrowNotifications, 5, pageIndex - 1); - if (!page.isEmpty()) - { + if (!page.isEmpty()) { msg(sender, ChatColor.translateAlternateColorCodes('&', titleText)); - for (String potionThrowNotification : page) - { + for (String potionThrowNotification : page) { msg(sender, potionThrowNotification); } - } - else - { + } else { msg(sender, String.format(validPageText, lastPage)); return true; } msg(sender, ChatColor.translateAlternateColorCodes('&', String.format(bottomText, pageIndex, lastPage))); - } - else if (args.length == 2) - { + } else if (args.length == 2) { List> thrownPotions = new ArrayList<>(); - thrownPotions.addAll(plugin.mo.getAllThrownPotions()); // Make a copy of the list to avoid modifying the original. + thrownPotions.addAll(plugin.monitors.getAllThrownPotions()); // Make a copy of the list to avoid modifying the original. List potionThrowNotifications = new ArrayList<>(); - int lastPage = (int)Math.ceil(thrownPotions.size() / 5.0); + int lastPage = (int) Math.ceil(thrownPotions.size() / 5.0); - if (thrownPotions.isEmpty()) - { - if (Bukkit.getPlayer(args[1]) != null) - { + if (thrownPotions.isEmpty()) { + if (Bukkit.getPlayer(args[1]) != null) { msg(sender, noPlayerRecord); - } - else - { + } else { msg(sender, "No potions have been thrown yet."); } return true; } - if (!NumberUtils.isNumber(args[1])) - { + if (!NumberUtils.isNumber(args[1])) { msg(sender, String.format(validPageText, lastPage)); return true; } @@ -133,38 +116,30 @@ public class Command_potionspy extends FreedomCommand Collections.reverse(thrownPotions); int pageIndex = Integer.parseInt(args[1]); - for (Map.Entry potionEntry : thrownPotions) - { + for (Map.Entry potionEntry : thrownPotions) { ThrownPotion potion = potionEntry.getKey(); - Player player = (Player)potion.getShooter(); - boolean trollPotions = plugin.mo.isTrollPotion(potion); + Player player = (Player) potion.getShooter(); + boolean trollPotions = plugin.monitors.isTrollPotion(potion); - if (player != null) - { + if (player != null) { potionThrowNotifications.add(ChatColor.translateAlternateColorCodes('&', String.format(splashedText, player.getName(), potion.getLocation().getBlockX(), potion.getLocation().getBlockY(), potion.getLocation().getBlockZ(), potion.getWorld().getName(), getUnixTimeDifference(potionEntry.getValue(), System.currentTimeMillis()), trollPotions ? " &c(most likely troll potion/potions)" : ""))); } } List page = FUtil.getPageFromList(potionThrowNotifications, 5, pageIndex - 1); - if (!page.isEmpty()) - { + if (!page.isEmpty()) { msg(sender, ChatColor.translateAlternateColorCodes('&', titleText)); - for (String potionThrowNotification : page) - { + for (String potionThrowNotification : page) { msg(sender, potionThrowNotification); } - } - else - { + } else { msg(sender, String.format(validPageText, lastPage)); return true; } msg(sender, ChatColor.translateAlternateColorCodes('&', String.format(bottomText, pageIndex, lastPage))); - } - else - { + } else { return false; } break; @@ -175,11 +150,10 @@ public class Command_potionspy extends FreedomCommand return true; } - private void setPotionSpyState(Admin admin, boolean state) - { + private void setPotionSpyState(Admin admin, boolean state) { admin.setPotionSpy(state); - plugin.al.save(admin); - plugin.al.updateTables(); + plugin.adminList.save(admin); + plugin.adminList.updateTables(); msg("PotionSpy is now " + (admin.getPotionSpy() ? "enabled." : "disabled.")); } @@ -190,30 +164,20 @@ public class Command_potionspy extends FreedomCommand * @param now The current unix time. * @return A string that displays the time difference between the two unix time values. */ - private String getUnixTimeDifference(long past, long now) - { + private String getUnixTimeDifference(long past, long now) { long unix = now - past; long seconds = Math.round(unix / 1000.0); - if (seconds < 60) - { + if (seconds < 60) { return seconds + "s"; - } - else - { + } else { long minutes = Math.round(seconds / 60.0); - if (minutes < 60) - { + if (minutes < 60) { return minutes + "m"; - } - else - { + } else { long hours = Math.round(minutes / 60.0); - if (hours < 24) - { + if (hours < 24) { return hours + "h"; - } - else - { + } else { return Math.round(hours / 24.0) + "d"; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PurgeallCMD.java similarity index 56% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/PurgeallCMD.java index efee00ac..30e0b08a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/PurgeallCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -12,73 +16,61 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Purge current mutes, command blocks, orbits, freezes, potion effects, cages, and entities.", usage = "/") -public class Command_purgeall extends FreedomCommand -{ +@CommandParameters(name = "purgeall", description = "Purge current mutes, command blocks, orbits, freezes, potion effects, cages, and entities.", usage = "/") +public class PurgeallCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { FUtil.adminAction(sender.getName(), "Purging all player data", true); // Purge entities - for (World world : Bukkit.getWorlds()) - { - for (Entity entity : world.getEntities()) - { - if (!(entity instanceof Player)) - { + for (World world : Bukkit.getWorlds()) { + for (Entity entity : world.getEntities()) { + if (!(entity instanceof Player)) { entity.remove(); } } } - for (Player player : server.getOnlinePlayers()) - { - FPlayer fPlayer = plugin.pl.getPlayer(player); + for (Player player : server.getOnlinePlayers()) { + FPlayer fPlayer = plugin.playerList.getPlayer(player); // Unmute all players - if (fPlayer.isMuted()) - { + if (fPlayer.isMuted()) { fPlayer.setMuted(false); } // Unblock all commands - if (fPlayer.allCommandsBlocked()) - { + if (fPlayer.allCommandsBlocked()) { fPlayer.setCommandsBlocked(false); } // Stop orbiting - if (fPlayer.isOrbiting()) - { + if (fPlayer.isOrbiting()) { fPlayer.stopOrbiting(); } // Unfreeze - if (fPlayer.getFreezeData().isFrozen()) - { + if (fPlayer.getFreezeData().isFrozen()) { fPlayer.getFreezeData().setFrozen(false); } // Purge potion effects - for (PotionEffect potion_effect : player.getActivePotionEffects()) - { + for (PotionEffect potion_effect : player.getActivePotionEffects()) { player.removePotionEffect(potion_effect.getType()); } // Uncage - if (fPlayer.getCageData().isCaged()) - { + if (fPlayer.getCageData().isCaged()) { fPlayer.getCageData().setCaged(false); } } // Unfreeze all players - plugin.fm.setGlobalFreeze(false); + plugin.freezer.setGlobalFreeze(false); // Remove all mobs - plugin.ew.purgeMobs(null); + plugin.entityWiper.purgeMobs(null); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RankCMD.java similarity index 58% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/RankCMD.java index d84846f3..3d24dac2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RankCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Displayable; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; @@ -8,37 +12,30 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Show the rank of the sender or a specified user.", usage = "/ [player]") -public class Command_rank extends FreedomCommand -{ +@CommandParameters(name = "rank", description = "Show the rank of the sender or a specified user.", usage = "/ [player]") +public class RankCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (senderIsConsole && args.length == 0) - { - for (Player player : server.getOnlinePlayers()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (senderIsConsole && args.length == 0) { + for (Player player : server.getOnlinePlayers()) { msg(message(player)); } return true; } - if (args.length == 0) - { + if (args.length == 0) { msg(message(playerSender)); return true; } - if (args.length > 1) - { + if (args.length > 1) { return false; } final Player player = getPlayer(args[0], true); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -48,10 +45,9 @@ public class Command_rank extends FreedomCommand return true; } - public String message(Player player) - { - Displayable display = plugin.rm.getDisplay(player); - Rank rank = plugin.rm.getRank(player); + public String message(Player player) { + Displayable display = plugin.rankManager.getDisplay(player); + Rank rank = plugin.rankManager.getRank(player); StringBuilder sb = new StringBuilder(); sb.append(ChatColor.AQUA) @@ -59,8 +55,7 @@ public class Command_rank extends FreedomCommand .append(" is ") .append(display.getColoredLoginMessage()); - if (rank != display) - { + if (rank != display) { sb.append(ChatColor.AQUA) .append(" (") .append(rank.getColoredName()) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RawSayCMD.java similarity index 51% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/RawSayCMD.java index 0610c030..397573e3 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RawSayCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -8,15 +12,12 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Broadcasts the given message. Supports colors.", usage = "/ ") -public class Command_rawsay extends FreedomCommand -{ +@CommandParameters(name = "rawsay", description = "Broadcasts the given message. Supports colors.", usage = "/ ") +public class RawSayCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { FUtil.bcastMsg(FUtil.colorize(StringUtils.join(args, " "))); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReactionBarCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReactionBarCMD.java new file mode 100644 index 00000000..e6e5fb47 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReactionBarCMD.java @@ -0,0 +1,27 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "reactionbar", description = "Forcefully start a reaction", usage = "/") +public class ReactionBarCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!FUtil.isDeveloper(playerSender)) { + return noPerms(); + } + + plugin.shop.forceStartReaction(); + msg("Started a reaction."); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RemoveBlocksCMD.java similarity index 70% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/RemoveBlocksCMD.java index e51dc061..9bd99b5a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RemoveBlocksCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; @@ -17,31 +19,26 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Remove all blocks of a certain type in the radius of certain players.", usage = "/ [radius (default=50)] [player]") -public class Command_ro extends FreedomCommand -{ +import java.util.ArrayList; +import java.util.List; - public static int replaceBlocks(Location center, Material fromMaterial, Material toMaterial, int radius) - { +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "ro", description = "Remove all blocks of a certain type in the radius of certain players.", usage = "/ [radius (default=50)] [player]") +public class RemoveBlocksCMD extends FreedomCommand { + + public static int replaceBlocks(Location center, Material fromMaterial, Material toMaterial, int radius) { int affected = 0; Block centerBlock = center.getBlock(); - for (int xOffset = -radius; xOffset <= radius; xOffset++) - { - for (int yOffset = -radius; yOffset <= radius; yOffset++) - { - for (int zOffset = -radius; zOffset <= radius; zOffset++) - { + for (int xOffset = -radius; xOffset <= radius; xOffset++) { + for (int yOffset = -radius; yOffset <= radius; yOffset++) { + for (int zOffset = -radius; zOffset <= radius; zOffset++) { Block block = centerBlock.getRelative(xOffset, yOffset, zOffset); BlockData data = block.getBlockData(); - if (block.getLocation().distanceSquared(center) < (radius * radius)) - { - if (fromMaterial.equals(Material.WATER) && data instanceof Waterlogged) - { - Waterlogged waterloggedData = (Waterlogged)data; - if (waterloggedData.isWaterlogged()) - { + if (block.getLocation().distanceSquared(center) < (radius * radius)) { + if (fromMaterial.equals(Material.WATER) && data instanceof Waterlogged) { + Waterlogged waterloggedData = (Waterlogged) data; + if (waterloggedData.isWaterlogged()) { waterloggedData.setWaterlogged(false); block.setBlockData(waterloggedData); affected++; @@ -49,9 +46,7 @@ public class Command_ro extends FreedomCommand } block.setType(toMaterial); affected++; - } - else if (block.getType().equals(fromMaterial)) - { + } else if (block.getType().equals(fromMaterial)) { block.setType(toMaterial); affected++; } @@ -63,33 +58,24 @@ public class Command_ro extends FreedomCommand } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1 || args.length > 3) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1 || args.length > 3) { return false; } final List materials = new ArrayList<>(); String names = null; - if (args[0].equalsIgnoreCase("shulker_boxes") || args[0].equalsIgnoreCase("shulkers")) - { + if (args[0].equalsIgnoreCase("shulker_boxes") || args[0].equalsIgnoreCase("shulkers")) { materials.addAll(Groups.SHULKER_BOXES); names = "shulker boxes"; - } - else if (args[0].equalsIgnoreCase("banners") || args[0].equalsIgnoreCase("banner")) - { + } else if (args[0].equalsIgnoreCase("banners") || args[0].equalsIgnoreCase("banner")) { materials.addAll(Groups.BANNERS); names = "banners"; - } - else - { - for (String materialName : StringUtils.split(args[0], ",")) - { + } else { + for (String materialName : StringUtils.split(args[0], ",")) { Material fromMaterial = Material.matchMaterial(materialName); - if (fromMaterial == null || fromMaterial == Material.AIR || !fromMaterial.isBlock()) - { + if (fromMaterial == null || fromMaterial == Material.AIR || !fromMaterial.isBlock()) { msg("Invalid material: " + materialName, ChatColor.RED); return true; } @@ -99,73 +85,53 @@ public class Command_ro extends FreedomCommand } int radius = 50; - if (args.length >= 2) - { - try - { + if (args.length >= 2) { + try { radius = Math.max(1, Math.min(50, Integer.parseInt(args[1]))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid radius: " + args[1], ChatColor.RED); return true; } } final Player targetPlayer; - if (args.length == 3) - { + if (args.length == 3) { targetPlayer = getPlayer(args[2]); - if (targetPlayer == null) - { + if (targetPlayer == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - } - else - { + } else { targetPlayer = null; } - if (names == null) - { + if (names == null) { names = StringUtils.join(materials, ", "); } World adminWorld = null; - try - { - adminWorld = plugin.wm.adminworld.getWorld(); - } - catch (Exception ignored) - { + try { + adminWorld = plugin.worldManager.adminworld.getWorld(); + } catch (Exception ignored) { } int affected = 0; - if (targetPlayer == null) - { + if (targetPlayer == null) { FUtil.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of all players... Brace for lag!", false); - for (final Player player : server.getOnlinePlayers()) - { - if (player.getWorld() == adminWorld) - { + for (final Player player : server.getOnlinePlayers()) { + if (player.getWorld() == adminWorld) { continue; } - for (final Material material : materials) - { + for (final Material material : materials) { affected += replaceBlocks(player.getLocation(), material, Material.AIR, radius); } } - } - else - { - if (targetPlayer.getWorld() != adminWorld) - { + } else { + if (targetPlayer.getWorld() != adminWorld) { FUtil.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of " + targetPlayer.getName(), false); - for (Material material : materials) - { + for (Material material : materials) { affected += replaceBlocks(targetPlayer.getLocation(), material, Material.AIR, radius); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReportCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReportCMD.java index 086bac6c..70d0b5ff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ReportCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; @@ -9,49 +13,41 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true) -@CommandParameters(description = "Report a player for all admins to see.", usage = "/ ") -public class Command_report extends FreedomCommand -{ +@CommandParameters(name = "report", description = "Report a player for all admins to see.", usage = "/ ") +public class ReportCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 2) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 2) { return false; } Player player = getPlayer(args[0], true); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (sender instanceof Player) - { - if (player.equals(playerSender)) - { + if (sender instanceof Player) { + if (player.equals(playerSender)) { msg(ChatColor.RED + "Please, don't try to report yourself."); return true; } } - if (plugin.al.isAdmin(player)) - { + if (plugin.adminList.isAdmin(player)) { msg(ChatColor.RED + "You can not report admins."); return true; } String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); - plugin.cm.reportAction(playerSender, player, report); + plugin.chatManager.reportAction(playerSender, player, report); boolean logged = false; - if (plugin.dc.enabled) - { - logged = plugin.dc.sendReport(playerSender, player, report); + if (plugin.discord.enabled) { + logged = plugin.discord.sendReport(playerSender, player, report); } msg(ChatColor.GREEN + "Thank you, your report has been successfully logged." diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideCMD.java similarity index 72% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideCMD.java index 30a1883b..c4906881 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideCMD.java @@ -1,8 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; -import java.util.HashMap; -import java.util.Map; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -13,39 +15,35 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import java.util.HashMap; +import java.util.Map; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Ride on the top of the specified player.", usage = "/ >") -public class Command_ride extends FreedomCommand -{ +@CommandParameters(name = "ride", description = "Ride on the top of the specified player.", usage = "/ >") +public class RideCMD extends FreedomCommand { private final Map RIDE_REQUESTS = new HashMap<>(); // requested, requester @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - final FPlayer fPlayer = plugin.pl.getPlayer(playerSender); - if (fPlayer.getCageData().isCaged()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + final FPlayer fPlayer = plugin.playerList.getPlayer(playerSender); + if (fPlayer.getCageData().isCaged()) { msg("You cannot use this command while caged."); return true; } - if (args.length < 1) - { + if (args.length < 1) { return false; } - if (args[0].equalsIgnoreCase("accept") || args[0].equalsIgnoreCase("yes")) - { - if (!RIDE_REQUESTS.containsKey(playerSender)) - { + if (args[0].equalsIgnoreCase("accept") || args[0].equalsIgnoreCase("yes")) { + if (!RIDE_REQUESTS.containsKey(playerSender)) { msg("You don't have any pending requests."); return true; } Player requester = RIDE_REQUESTS.get(playerSender); - if (requester == null) - { + if (requester == null) { msg("The player who sent the request is no longer online."); RIDE_REQUESTS.remove(playerSender); return true; @@ -54,8 +52,7 @@ public class Command_ride extends FreedomCommand msg("Request accepted."); msg(requester, "Your request has been accepted."); - if (requester.getWorld() != playerSender.getWorld()) - { + if (requester.getWorld() != playerSender.getWorld()) { PaperLib.teleportAsync(requester, playerSender.getLocation()); } @@ -64,16 +61,13 @@ public class Command_ride extends FreedomCommand return true; } - if (args[0].equalsIgnoreCase("deny") || args[0].equalsIgnoreCase("no")) - { - if (!RIDE_REQUESTS.containsKey(playerSender)) - { + if (args[0].equalsIgnoreCase("deny") || args[0].equalsIgnoreCase("no")) { + if (!RIDE_REQUESTS.containsKey(playerSender)) { msg("You don't have any pending requests."); return true; } Player requester = RIDE_REQUESTS.get(playerSender); - if (requester == null) - { + if (requester == null) { msg("The player who sent the request is no longer online."); RIDE_REQUESTS.remove(playerSender); return true; @@ -84,15 +78,12 @@ public class Command_ride extends FreedomCommand return true; } - if (args.length >= 2) - { - if (args[0].equalsIgnoreCase("mode")) - { - if (args[1].equalsIgnoreCase("normal") || args[1].equalsIgnoreCase("off") || args[1].equalsIgnoreCase("ask")) - { - PlayerData playerDataSender = plugin.pl.getData(playerSender); + if (args.length >= 2) { + if (args[0].equalsIgnoreCase("mode")) { + if (args[1].equalsIgnoreCase("normal") || args[1].equalsIgnoreCase("off") || args[1].equalsIgnoreCase("ask")) { + PlayerData playerDataSender = plugin.playerList.getData(playerSender); playerDataSender.setRideMode(args[1].toLowerCase()); - plugin.pl.save(playerDataSender); + plugin.playerList.save(playerDataSender); msg("Ride mode is now set to " + args[1].toLowerCase() + "."); return true; } @@ -100,28 +91,24 @@ public class Command_ride extends FreedomCommand } final Player player = getPlayer(args[0], true); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - final PlayerData playerData = plugin.pl.getData(player); + final PlayerData playerData = plugin.playerList.getData(player); - if (player == playerSender) - { + if (player == playerSender) { msg("You can't ride yourself. smh.", ChatColor.RED); return true; } - if (playerData.getRideMode().equals("off") && !isAdmin(sender)) - { + if (playerData.getRideMode().equals("off") && !isAdmin(sender)) { msg("That player cannot be ridden.", ChatColor.RED); return true; } - if (playerData.getRideMode().equals("ask") && !FUtil.isExecutive(playerSender.getName())) - { + if (playerData.getRideMode().equals("ask") && !FUtil.isExecutive(playerSender.getName())) { msg("Sent a request to the player.", ChatColor.GREEN); msg(player, sender.getName() + " has requested to ride you.", ChatColor.AQUA); msg(player, "Type " + ChatColor.GREEN + "/ride accept" + ChatColor.AQUA + " to allow the player to ride you.", ChatColor.AQUA); @@ -129,12 +116,9 @@ public class Command_ride extends FreedomCommand msg(player, "Request will expire in 30 seconds.", ChatColor.AQUA); RIDE_REQUESTS.put(player, playerSender); - new BukkitRunnable() - { - public void run() - { - if (!RIDE_REQUESTS.containsKey(player)) - { + new BukkitRunnable() { + public void run() { + if (!RIDE_REQUESTS.containsKey(player)) { return; } @@ -146,8 +130,7 @@ public class Command_ride extends FreedomCommand return true; } - if (player.getWorld() != playerSender.getWorld()) - { + if (player.getWorld() != playerSender.getWorld()) { PaperLib.teleportAsync(playerSender, player.getLocation()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideablePearlCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideablePearlCMD.java new file mode 100644 index 00000000..9a18997b --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RideablePearlCMD.java @@ -0,0 +1,28 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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(name = "rideablepearl", description = "Obtain a rideable ender pearl", usage = "/") +public class RideablePearlCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (plugin.playerList.getData(playerSender).hasItem(ShopItem.RIDEABLE_PEARL)) { + playerSender.getInventory().addItem(plugin.shop.getRideablePearl()); + msg("You have been given a Rideable Ender Pearl", ChatColor.GREEN); + } else { + msg("You do not own a Rideable Ender Pearl! Purchase one from the shop.", ChatColor.RED); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RockCMD.java similarity index 67% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/RockCMD.java index fed36ec4..c28604cb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/RockCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -11,26 +15,22 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "You have thrown a rock, but you have also summoned a meteor!", usage = "/") -public class Command_rock extends FreedomCommand -{ +@CommandParameters(name = "rock", description = "You have thrown a rock, but you have also summoned a meteor!", usage = "/") +public class RockCMD extends FreedomCommand { public static final String ROCK_LYRICS = ChatColor.BLUE + "You have thrown a rock, but you have also summoned a meteor!"; @Override - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { final ItemStack heldItem = new ItemStack(Material.STONE); final ItemMeta heldItemMeta = heldItem.getItemMeta(); assert heldItemMeta != null; heldItemMeta.setDisplayName(ChatColor.BLUE + "Rock"); heldItem.setItemMeta(heldItemMeta); - for (final Player player : this.server.getOnlinePlayers()) - { + for (final Player player : this.server.getOnlinePlayers()) { final int firstEmpty = player.getInventory().firstEmpty(); - if (firstEmpty >= 0) - { + if (firstEmpty >= 0) { player.getInventory().setItem(firstEmpty, heldItem); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SayCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SayCMD.java index a79af9ae..6448a382 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SayCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -9,28 +13,22 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Broadcasts the given message as the server, includes sender name.", usage = "/ ") -public class Command_say extends FreedomCommand -{ +@CommandParameters(name = "say", description = "Broadcasts the given message as the server, includes sender name.", usage = "/ ") +public class SayCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } String message = StringUtils.join(args, " "); - if (senderIsConsole && FUtil.isFromHostConsole(sender.getName())) - { - if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked")) - { + if (senderIsConsole && FUtil.isFromHostConsole(sender.getName())) { + if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked")) { FUtil.bcastMsg("Server is going offline.", ChatColor.GRAY); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { player.kickPlayer(ChatColor.LIGHT_PURPLE + "Server is going offline, come back in about 20 seconds."); } @@ -41,7 +39,7 @@ public class Command_say extends FreedomCommand } FUtil.bcastMsg(String.format("[Server:%s] %s", sender.getName(), message), ChatColor.LIGHT_PURPLE); - plugin.dc.messageChatChannel(String.format("[Server:%s] \u00BB %s", sender.getName(), message)); + plugin.discord.messageChatChannel(String.format("[Server:%s] \u00BB %s", sender.getName(), message)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ScareCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ScareCMD.java index 15da84ec..3c4c7db7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ScareCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -11,28 +13,26 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Sends a guardian particle effect with an enderman scream to the specified player.", usage = "/ ") -public class Command_scare extends FreedomCommand -{ +@CommandParameters(name = "scare", description = "Sends a guardian particle effect with an enderman scream to the specified player.", usage = "/ ") +public class ScareCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!FUtil.isPaper()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!FUtil.isPaper()) { msg("This command won't work without Paper!", ChatColor.RED); return true; } - if (args.length == 0) - { + if (args.length == 0) { return false; } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } @@ -41,8 +41,7 @@ public class Command_scare extends FreedomCommand msg(player, "ZING", ChatColor.RED); player.spawnParticle(Particle.MOB_APPEARANCE, player.getLocation(), 4); - for (int i = 0; i < 10; ++i) - { + for (int i = 0; i < 10; ++i) { player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_SCREAM, 1, 0); } @@ -51,10 +50,8 @@ public class Command_scare extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1 && plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1 && plugin.adminList.isAdmin(sender)) { return FUtil.getPlayerList(); } return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SeedCMD.java similarity index 74% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SeedCMD.java index ff489582..f09f70df 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SeedCMD.java @@ -1,11 +1,11 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.api.chat.TranslatableComponent; +import net.md_5.bungee.api.chat.*; import net.md_5.bungee.api.chat.hover.content.Text; import org.bukkit.ChatColor; import org.bukkit.World; @@ -17,43 +17,31 @@ import java.util.ArrayList; import java.util.List; @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]") -public class Command_seed extends FreedomCommand -{ +@CommandParameters(name = "seed", description = "Get the seed of the world you are currently in.", usage = "/seed [world]") +public class SeedCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { World world; - if (args.length > 0) - { + if (args.length > 0) { world = server.getWorld(args[0]); - if (world == null) - { + if (world == null) { msg("That world could not be found", ChatColor.RED); return true; } - } - else - { + } else { // If the sender is a Player, use that world. Otherwise, use the overworld as a fallback. - if (!senderIsConsole) - { + if (!senderIsConsole) { world = playerSender.getWorld(); - } - else - { + } else { world = server.getWorlds().get(0); } } // If the sender is not a Player, use the usual msg method to - if (senderIsConsole) - { + if (senderIsConsole) { msg("Seed: [" + ChatColor.GREEN + world.getSeed() + ChatColor.WHITE + "]", ChatColor.WHITE); - } - else - { + } else { // Gets the seed for later uses String seed = String.valueOf(world.getSeed()); @@ -79,14 +67,11 @@ public class Command_seed extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { // Returns a list of worlds on the server and returns it List worlds = new ArrayList<>(); - for (World world : server.getWorlds()) - { + for (World world : server.getWorlds()) { worlds.add(world.getName()); } return worlds; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ServerStatsCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ServerStatsCMD.java new file mode 100644 index 00000000..45525b6a --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ServerStatsCMD.java @@ -0,0 +1,30 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +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.OP, source = SourceType.BOTH) +@CommandParameters(name = "serverstats", description = "Check the status of the server, including opped players, admins, etc.", usage = "/", aliases = "ss") +public class ServerStatsCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + msg("-==" + ConfigEntry.SERVER_NAME.getString() + " server stats==-", ChatColor.GOLD); + msg("Total opped players: " + server.getOperators().size(), ChatColor.RED); + msg("Total admins: " + plugin.adminList.getAllAdmins().size() + " (" + plugin.adminList.getActiveAdmins().size() + " active)", ChatColor.BLUE); + int bans = plugin.indefiniteBanList.getIndefBans().size(); + int nameBans = plugin.indefiniteBanList.getNameBanCount(); + int uuidBans = plugin.indefiniteBanList.getUuidBanCount(); + int ipBans = plugin.indefiniteBanList.getIpBanCount(); + msg("Total indefinite ban entries: " + bans + " (" + nameBans + " name bans, " + uuidBans + " UUID bans, and " + ipBans + " IP bans)", ChatColor.GREEN); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetCompassCMD.java similarity index 60% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetCompassCMD.java index aeafe711..15e812ee 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetCompassCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -8,26 +12,20 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Set your compass to the specified position.", usage = "/ ") -public class Command_setcompass extends FreedomCommand -{ +@CommandParameters(name = "setcompass", description = "Set your compass to the specified position.", usage = "/ ") +public class SetCompassCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 3) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 3) { return false; } - try - { + try { Location location = new Location(playerSender.getWorld(), Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])); playerSender.setCompassTarget(location); msg("Successfully set your compass coordinates to X: " + args[0] + ", Y: " + args[1] + ", Z: " + args[2] + ".", ChatColor.GREEN); - } - catch (NumberFormatException e) - { + } catch (NumberFormatException e) { msg("One or more of your coordinates are not a valid integer.", ChatColor.RED); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLeverCMD.java similarity index 66% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLeverCMD.java index b8430169..2673a108 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLeverCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.List; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.Location; import org.bukkit.Material; @@ -14,34 +16,29 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Set the on/off state of the lever at position x, y, z in world 'worldname'.", usage = "/ ") -public class Command_setlever extends FreedomCommand -{ +@CommandParameters(name = "setlever", description = "Set the on/off state of the lever at position x, y, z in world 'worldname'.", usage = "/ ") +public class SetLeverCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 5) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length != 5) { return false; } double x, y, z; - try - { + try { x = Double.parseDouble(args[0]); y = Double.parseDouble(args[1]); z = Double.parseDouble(args[2]); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid coordinates."); return true; } - if (x > 29999998 || x < -29999998 || y > 29999998 || y < -29999998 || z > 29999998 || z < -29999998) - { + if (x > 29999998 || x < -29999998 || y > 29999998 || y < -29999998 || z > 29999998 || z < -29999998) { msg("Coordinates cannot be larger than 29999998 or smaller than -29999998 blocks."); return true; } @@ -49,17 +46,14 @@ public class Command_setlever extends FreedomCommand World world = null; final String needleWorldName = args[3].trim(); final List worlds = server.getWorlds(); - for (final World testWorld : worlds) - { - if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) - { + for (final World testWorld : worlds) { + if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) { world = testWorld; break; } } - if (world == null) - { + if (world == null) { msg("Invalid world name."); return true; } @@ -70,20 +64,17 @@ public class Command_setlever extends FreedomCommand final Block targetBlock = leverLocation.getBlock(); - if (targetBlock.getType() == Material.LEVER) - { + if (targetBlock.getType() == Material.LEVER) { BlockState state = targetBlock.getState(); BlockData data = state.getBlockData(); - Switch caster = (Switch)data; + Switch caster = (Switch) data; caster.setPowered(leverOn); state.setBlockData(data); state.update(); - plugin.cpb.getCoreProtectAPI().logInteraction(sender.getName(), leverLocation); - } - else - { + plugin.coreProtectBridge.getCoreProtectAPI().logInteraction(sender.getName(), leverLocation); + } else { msg("Target block " + targetBlock + " is not a lever."); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLimitCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLimitCMD.java new file mode 100644 index 00000000..c22813c8 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetLimitCMD.java @@ -0,0 +1,43 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +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.BOTH) +@CommandParameters(name = "setlimit", description = "Sets everyone's WorldEdit block modification limit to the default limit or to a custom limit.", usage = "/ [limit]", aliases = "setl,swl") +public class SetLimitCMD extends FreedomCommand { + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + int amount = plugin.worldEditBridge.getDefaultLimit(); + if (args.length > 0) { + try { + amount = Math.max(-1, Math.min(plugin.worldEditBridge.getMaxLimit(), Integer.parseInt(args[0]))); + } catch (NumberFormatException ex) { + msg("Invalid number: " + args[0], ChatColor.RED); + return true; + } + } + boolean success = false; + for (final Player player : server.getOnlinePlayers()) { + try { + plugin.worldEditBridge.setLimit(player, amount); + success = true; + } catch (NoClassDefFoundError | NullPointerException ex) { + msg("WorldEdit is not enabled on this server."); + success = false; + } + } + if (success) { + FUtil.adminAction(sender.getName(), "Setting everyone's WorldEdit block modification limit to " + amount + ".", true); + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetPlayerLimitCMD.java similarity index 50% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetPlayerLimitCMD.java index fb9f640e..80fd8793 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetPlayerLimitCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; @@ -9,56 +13,40 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Sets a specific player's WorldEdit block modification limit to the default limit or to a custom limit.", usage = "/ [limit]", aliases = "setpl,spl") -public class Command_setplayerlimit extends FreedomCommand -{ +@CommandParameters(name = "setplayerlimit", description = "Sets a specific player's WorldEdit block modification limit to the default limit or to a custom limit.", usage = "/ [limit]", aliases = "setpl,spl") +public class SetPlayerLimitCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { int amount; - if (args.length > 0) - { + if (args.length > 0) { Player player = Bukkit.getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (args.length == 2) - { - try - { - amount = Math.max(-1, Math.min(plugin.web.getMaxLimit(), Integer.parseInt(args[1]))); - } - catch (NumberFormatException ex) - { + if (args.length == 2) { + try { + amount = Math.max(-1, Math.min(plugin.worldEditBridge.getMaxLimit(), Integer.parseInt(args[1]))); + } catch (NumberFormatException ex) { msg("Invalid number: " + args[1], ChatColor.RED); return true; } + } else { + amount = plugin.worldEditBridge.getDefaultLimit(); } - else - { - amount = plugin.web.getDefaultLimit(); - } - } - else - { + } else { return false; } boolean success = false; Player player = Bukkit.getPlayer(args[0]); - try - { - plugin.web.setLimit(player, amount); + try { + plugin.worldEditBridge.setLimit(player, amount); success = true; - } - catch (NoClassDefFoundError | NullPointerException ex) - { + } catch (NoClassDefFoundError | NullPointerException ex) { msg("WorldEdit is not enabled on this server."); } - if (success) - { + if (success) { assert player != null; FUtil.adminAction(sender.getName(), "Setting " + player.getName() + "'s WorldEdit block modification limit to " + amount + ".", true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetSpawnWorldCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetSpawnWorldCMD.java index 49c2dee8..4ca2bd03 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetSpawnWorldCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Location; @@ -8,13 +12,11 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Set the spawn point of the world you are in.", usage = "/") -public class Command_setspawnworld extends FreedomCommand -{ +@CommandParameters(name = "setspawnworld", description = "Set the spawn point of the world you are in.", usage = "/") +public class SetSpawnWorldCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { Location pos = playerSender.getLocation(); playerSender.getWorld().setSpawnLocation(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetTotalVotesCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetTotalVotesCMD.java index 3c6de7be..1c65221d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SetTotalVotesCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -9,39 +13,31 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE) -@CommandParameters(description = "Set a player's total votes", usage = "/ ") -public class Command_settotalvotes extends FreedomCommand -{ +@CommandParameters(name = "settotalvotes", description = "Set a player's total votes", usage = "/ ") +public class SetTotalVotesCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (!ConfigEntry.SERVER_OWNERS.getStringList().contains(sender.getName())) - { + if (!ConfigEntry.SERVER_OWNERS.getStringList().contains(sender.getName())) { return noPerms(); } - if (args.length < 2) - { + if (args.length < 2) { return false; } int votes; - try - { + try { votes = Integer.parseInt(args[0]); - } - catch (NumberFormatException e) - { + } catch (NumberFormatException e) { msg("Invalid number: " + args[0]); return true; } - PlayerData playerData = plugin.pl.getData(args[1]); + PlayerData playerData = plugin.playerList.getData(args[1]); - if (playerData == null) - { + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -49,12 +45,11 @@ public class Command_settotalvotes extends FreedomCommand msg("Set " + args[1] + "'s votes to " + args[0]); playerData.setTotalVotes(votes); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); Player player = getPlayer(args[1]); - if (player != null) - { + if (player != null) { msg(player, sender.getName() + " has set your total votes to " + votes, ChatColor.GREEN); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ShopCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ShopCMD.java new file mode 100644 index 00000000..b50feb67 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ShopCMD.java @@ -0,0 +1,27 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +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.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "shop", description = "Open the shop GUI", usage = "/", aliases = "sh") +public class ShopCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigEntry.SHOP_ENABLED.getBoolean()) { + msg("The shop is currently disabled!", ChatColor.RED); + return true; + } + playerSender.openInventory(plugin.shop.generateShopGUI(plugin.playerList.getData(playerSender))); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_sit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SitCMD.java similarity index 53% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_sit.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SitCMD.java index f54b677d..74dab18f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_sit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SitCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -9,20 +11,20 @@ import org.bukkit.entity.ArmorStand; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Sit at the current place you are at.", usage = "/") -public class Command_sit extends FreedomCommand -{ +@CommandParameters(name = "sit", description = "Sit at the current place you are at.", usage = "/") +public class SitCMD extends FreedomCommand { public static List STANDS = new ArrayList<>(); - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - if (args.length != 0) - { + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { + if (args.length != 0) { return false; } - ArmorStand stand = (ArmorStand)playerSender.getWorld().spawnEntity(playerSender.getLocation().clone().subtract(0.0, 1.7, 0.0), EntityType.ARMOR_STAND); + ArmorStand stand = (ArmorStand) playerSender.getWorld().spawnEntity(playerSender.getLocation().clone().subtract(0.0, 1.7, 0.0), EntityType.ARMOR_STAND); stand.setGravity(false); stand.setAI(false); stand.setVisible(false); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SmiteCMD.java similarity index 71% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SmiteCMD.java index 92b73d0d..719acabd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SmiteCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -15,35 +19,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-ci | -q]") -public class Command_smite extends FreedomCommand -{ +@CommandParameters(name = "smite", description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-ci | -q]") +public class SmiteCMD extends FreedomCommand { - public static void smite(CommandSender sender, Player player) - { + public static void smite(CommandSender sender, Player player) { smite(sender, player, null, false, false); } - public static void smite(CommandSender sender, Player player, String reason) - { + public static void smite(CommandSender sender, Player player, String reason) { smite(sender, player, reason, false, false); } - public static void smite(CommandSender sender, Player player, String reason, Boolean silent, Boolean clearinv) - { + public static void smite(CommandSender sender, Player player, String reason, Boolean silent, Boolean clearinv) { player.sendTitle(ChatColor.RED + "You've been smitten.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60); - if (!silent) - { + if (!silent) { FUtil.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED); - if (reason != null) - { + if (reason != null) { FUtil.bcastMsg(" Reason: " + ChatColor.YELLOW + reason, ChatColor.RED); } FUtil.bcastMsg(" Smitten by: " + ChatColor.YELLOW + sender.getName(), ChatColor.RED); - } - else - { + } else { sender.sendMessage("Smitten " + player.getName() + " quietly."); } @@ -54,18 +50,15 @@ public class Command_smite extends FreedomCommand player.setGameMode(GameMode.SURVIVAL); // Clear inventory - if (clearinv) - { + if (clearinv) { player.getInventory().clear(); } // Strike with lightning effect final Location targetPos = player.getLocation(); final World world = player.getWorld(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { final Location strike_pos = new Location(world, targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); world.strikeLightning(strike_pos); } @@ -74,67 +67,53 @@ public class Command_smite extends FreedomCommand // Kill player.setHealth(0.0); - if (reason != null) - { + if (reason != null) { player.sendMessage(ChatColor.RED + "You've been smitten. Reason: " + ChatColor.YELLOW + reason); player.sendTitle(ChatColor.RED + "You've been smitten.", ChatColor.YELLOW + "Reason: " + reason, 20, 100, 60); } } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } String reason = null; boolean silent = false; boolean clearinv = false; - if (args.length >= 2) - { - if (args[args.length - 1].equalsIgnoreCase("-q")) - { - if (args[args.length - 1].equalsIgnoreCase("-q")) - { + if (args.length >= 2) { + if (args[args.length - 1].equalsIgnoreCase("-q")) { + if (args[args.length - 1].equalsIgnoreCase("-q")) { silent = true; } - if (args.length >= 3) - { + if (args.length >= 3) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else if (args[args.length - 1].equalsIgnoreCase("-ci")) - { - if (args[args.length - 1].equalsIgnoreCase("-ci")) - { + } else if (args[args.length - 1].equalsIgnoreCase("-ci")) { + if (args[args.length - 1].equalsIgnoreCase("-ci")) { clearinv = true; } - if (args.length >= 3) - { + if (args.length >= 3) { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else - { + } else { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } smite(sender, player, reason, silent, clearinv); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.SMITE, reason)); + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.SMITE, reason)); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpawnMobCMD.java similarity index 67% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpawnMobCMD.java index 5306ceda..b2cead61 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpawnMobCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.EnumUtils; @@ -12,65 +15,54 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Spawns the specified entity.", usage = "/ [amount]", aliases = "spawnentity") -public class Command_spawnmob extends FreedomCommand -{ +@CommandParameters(name = "spawnmob", description = "Spawns the specified entity.", usage = "/ [amount]", aliases = "spawnentity") +public class SpawnMobCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0 && args[0].equalsIgnoreCase("list")) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0 && args[0].equalsIgnoreCase("list")) { List types = EnumUtils.getEnumList(EntityType.class); String typeList = StringUtils.join(types, ", ").toLowerCase(); msg(typeList); return true; } - if (args.length < 1) - { + if (args.length < 1) { return false; } EntityType type = null; - for (EntityType loop : EntityType.values()) - { - if (loop != null && loop.name().equalsIgnoreCase(args[0])) - { + for (EntityType loop : EntityType.values()) { + if (loop != null && loop.name().equalsIgnoreCase(args[0])) { type = loop; break; } } - if (type == null) - { + if (type == null) { msg("Unknown entity type: " + args[0], ChatColor.RED); return true; } - if (!type.isSpawnable() || !type.isAlive()) - { + if (!type.isSpawnable() || !type.isAlive()) { msg("Can not spawn entity type: " + type.name().toLowerCase()); return true; } int amount = 1; - if (args.length > 1) - { - try - { + if (args.length > 1) { + try { amount = Integer.parseInt(args[1]); - } - catch (NumberFormatException nfex) - { + } catch (NumberFormatException nfex) { msg("Invalid amount: " + args[1], ChatColor.RED); return true; } } - if (amount > 10 || amount < 1) - { + if (amount > 10 || amount < 1) { msg("Invalid amount: " + args[1] + ". Must be 1-10.", ChatColor.RED); return true; } @@ -79,8 +71,7 @@ public class Command_spawnmob extends FreedomCommand World w = playerSender.getWorld(); msg("Spawning " + amount + " " + type.name().toLowerCase() + (amount > 1 ? "s." : ".")); - for (int i = 0; i < amount; i++) - { + for (int i = 0; i < amount; i++) { w.spawnEntity(l, type); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpectateCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpectateCMD.java index c3d8edbe..75426e12 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpectateCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.GameMode; @@ -9,38 +13,31 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Quickly spectate someone.", usage = "/ ", aliases = "spec") -public class Command_spectate extends FreedomCommand -{ +@CommandParameters(name = "spectate", description = "Quickly spectate someone.", usage = "/ ", aliases = "spec") +public class SpectateCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (player.getGameMode().equals(GameMode.SPECTATOR)) - { + if (player.getGameMode().equals(GameMode.SPECTATOR)) { msg("You cannot spectate other players that are in spectator mode.", ChatColor.RED); return true; } - if (!playerSender.getGameMode().equals(GameMode.SPECTATOR)) - { + if (!playerSender.getGameMode().equals(GameMode.SPECTATOR)) { playerSender.setGameMode(GameMode.SPECTATOR); } - if (playerSender.getWorld() != player.getWorld()) - { + if (playerSender.getWorld() != player.getWorld()) { PaperLib.teleportAsync(playerSender, player.getLocation()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpectatorCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpectatorCMD.java index 808beb93..6796eba9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SpectatorCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.GameMode; import org.bukkit.command.Command; @@ -7,17 +11,13 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Quickly change your own gamemode to spectator, or define someone's username to change theirs.", usage = "/ <[partialname]>", aliases = "gmsp") -public class Command_spectator extends FreedomCommand -{ +@CommandParameters(name = "spectator", description = "Quickly change your own gamemode to spectator, or define someone's username to change theirs.", usage = "/ <[partialname]>", aliases = "gmsp") +public class SpectatorCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - if (isConsole()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + if (isConsole()) { msg("When used from the console, you must define a target player."); return true; } @@ -29,8 +29,7 @@ public class Command_spectator extends FreedomCommand Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StackingPotatoCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StackingPotatoCMD.java new file mode 100644 index 00000000..a514acdb --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StackingPotatoCMD.java @@ -0,0 +1,28 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +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(name = "stackingpotato", description = "Obtain a stacking potato", usage = "/") +public class StackingPotatoCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (plugin.playerList.getData(playerSender).hasItem(ShopItem.STACKING_POTATO)) { + playerSender.getInventory().addItem(plugin.shop.getStackingPotato()); + msg("You have been given a Stacking Potato", ChatColor.GREEN); + } else { + msg("You do not own the Stacking Potato! Purchase one from the shop.", ChatColor.RED); + } + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_status.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StatusCMD.java similarity index 70% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_status.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/StatusCMD.java index 17b7578f..5caf43de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_status.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StatusCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.HashMap; -import java.util.Map; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.World; @@ -9,15 +11,16 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.HashMap; +import java.util.Map; + @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows Minecraft server info, such as authentication status.", usage = "/") -public class Command_status extends FreedomCommand -{ +@CommandParameters(name = "status", description = "Shows Minecraft server info, such as authentication status.", usage = "/") +public class StatusCMD extends FreedomCommand { public static final Map SERVICE_MAP = new HashMap<>(); - static - { + static { SERVICE_MAP.put("minecraft.net", "Minecraft.net"); SERVICE_MAP.put("login.minecraft.net", "Minecraft Logins"); SERVICE_MAP.put("session.minecraft.net", "Minecraft Multiplayer Sessions"); @@ -27,15 +30,13 @@ public class Command_status extends FreedomCommand } @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { msg("For information about TotalFreedomMod, try /tfm", ChatColor.GREEN); // Temporary msg("Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" : "false") + "'.", ChatColor.YELLOW); msg("Loaded worlds:", ChatColor.BLUE); int i = 0; - for (World world : server.getWorlds()) - { + for (World world : server.getWorlds()) { msg(String.format("World %d: %s - %d players.", i++, world.getName(), world.getPlayers().size()), ChatColor.BLUE); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StopCMD.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/StopCMD.java index c160c59f..09fc05da 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StopCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.HashMap; -import java.util.Map; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -11,30 +13,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import java.util.HashMap; +import java.util.Map; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Kicks everyone and stops the server.", usage = "/ [reason]") -public class Command_stop extends FreedomCommand -{ +@CommandParameters(name = "stop", description = "Kicks everyone and stops the server.", usage = "/ [reason]") +public class StopCMD extends FreedomCommand { private static final Map STOP_CONFIRM = new HashMap<>(); @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { String reason = "Server is going offline, come back in about 20 seconds."; - if (args.length != 0) - { + if (args.length != 0) { reason = StringUtils.join(args, " "); } - if (sender.getName().equals("CONSOLE")) - { + if (sender.getName().equals("CONSOLE")) { shutdown(reason); return true; - } - else if (STOP_CONFIRM.containsKey(sender)) - { + } else if (STOP_CONFIRM.containsKey(sender)) { shutdown(STOP_CONFIRM.get(sender)); return true; } @@ -43,13 +42,10 @@ public class Command_stop extends FreedomCommand msg("Warning: You're about to stop the server. Type /stop again to confirm you want to do this."); STOP_CONFIRM.put(sender, reason); - new BukkitRunnable() - { + new BukkitRunnable() { @Override - public void run() - { - if (STOP_CONFIRM.containsKey(sender)) - { + public void run() { + if (STOP_CONFIRM.containsKey(sender)) { STOP_CONFIRM.remove(sender); msg("Stop request expired."); } @@ -58,12 +54,10 @@ public class Command_stop extends FreedomCommand return true; } - public void shutdown(String reason) - { + public void shutdown(String reason) { FUtil.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE); - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { player.kickPlayer(ChatColor.LIGHT_PURPLE + reason); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StopSoundCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/StopSoundCMD.java index 1e0acb92..3da5dc19 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/StopSoundCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.Sound; @@ -10,29 +11,27 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Stops all sounds or a specified sound.", usage = "/ [sound]") -public class Command_stopsound extends FreedomCommand -{ +@CommandParameters(name = "stopsound", description = "Stops all sounds or a specified sound.", usage = "/ [sound]") +public class StopSoundCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { Sound sound = null; - for (Sound loop : Sound.values()) - { - if (loop != null && loop.name().equalsIgnoreCase(args[0])) - { + for (Sound loop : Sound.values()) { + if (loop != null && loop.name().equalsIgnoreCase(args[0])) { sound = Sound.valueOf(args[0].toUpperCase()); break; } } - if (sound == null) - { + if (sound == null) { msg(args[0] + " is not a valid sound.", ChatColor.RED); return true; } @@ -42,8 +41,7 @@ public class Command_stopsound extends FreedomCommand return true; } - for (Sound sound : Sound.values()) - { + for (Sound sound : Sound.values()) { playerSender.stopSound(sound); } @@ -52,20 +50,16 @@ public class Command_stopsound extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { return soundList(); } return Collections.emptyList(); } - public List soundList() - { + public List soundList() { List sounds = new ArrayList<>(); - for (Sound sound : Sound.values()) - { + for (Sound sound : Sound.values()) { sounds.add(sound.name()); } return sounds; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SurvivalCMD.java similarity index 66% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/SurvivalCMD.java index 2a600dfe..33cae1df 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/SurvivalCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.GameMode; @@ -8,17 +12,13 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Quickly change your own gamemode to survival, or define someone's username to change theirs.", usage = "/ <[partialname] | -a>", aliases = "gms") -public class Command_survival extends FreedomCommand -{ +@CommandParameters(name = "survival", description = "Quickly change your own gamemode to survival, or define someone's username to change theirs.", usage = "/ <[partialname] | -a>", aliases = "gms") +public class SurvivalCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - if (isConsole()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + if (isConsole()) { msg("When used from the console, you must define a target player."); return true; } @@ -30,10 +30,8 @@ public class Command_survival extends FreedomCommand checkRank(Rank.ADMIN); - if (args[0].equals("-a")) - { - for (Player targetPlayer : server.getOnlinePlayers()) - { + if (args[0].equals("-a")) { + for (Player targetPlayer : server.getOnlinePlayers()) { targetPlayer.setGameMode(GameMode.SURVIVAL); } @@ -44,8 +42,7 @@ public class Command_survival extends FreedomCommand Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TPRandomCMD.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TPRandomCMD.java index ab4ef62e..38a1ac79 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TPRandomCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import io.papermc.lib.PaperLib; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -10,12 +14,10 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Go to a random location in the current world you are in", usage = "/", aliases = "tpr,rtp") -public class Command_tprandom extends FreedomCommand -{ +@CommandParameters(name = "tprandom", description = "Go to a random location in the current world you are in", usage = "/", aliases = "tpr,rtp") +public class TPRandomCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { int x = FUtil.randomInteger(-50000, 50000); int z = FUtil.randomInteger(-50000, 50000); int y = playerSender.getWorld().getHighestBlockYAt(x, z); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagCMD.java similarity index 63% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagCMD.java index 0ae1b9d4..1dd905fc 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagCMD.java @@ -1,7 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.List; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; @@ -15,56 +17,45 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Allows you to set your own prefix.", usage = "/ [-s[ave]] | list | gradient | off | clear | clearall>") -public class Command_tag extends FreedomCommand -{ +@CommandParameters(name = "tag", description = "Allows you to set your own prefix.", usage = "/ [-s[ave]] | list | gradient | off | clear | clearall>") +public class TagCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean save = false; - if (args.length < 1) - { + if (args.length < 1) { return false; } - if (args[0].equals("-s") || args[0].equals("-save")) - { + if (args[0].equals("-s") || args[0].equals("-save")) { save = true; args = ArrayUtils.remove(args, 0); } - if (args.length == 1) - { - switch (args[0].toLowerCase()) - { - case "list": - { + if (args.length == 1) { + switch (args[0].toLowerCase()) { + case "list" -> { msg("Tags for all online players:"); - for (final Player player : server.getOnlinePlayers()) - { - if (plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender)) - { + for (final Player player : server.getOnlinePlayers()) { + if (plugin.adminList.isVanished(player.getName()) && !plugin.adminList.isAdmin(sender)) { continue; } - final FPlayer playerdata = plugin.pl.getPlayer(player); - if (playerdata.getTag() != null) - { + final FPlayer playerdata = plugin.playerList.getPlayer(player); + if (playerdata.getTag() != null) { msg(player.getName() + ": " + playerdata.getTag()); } } return true; } - - case "clearall": - { - if (!plugin.al.isAdmin(sender)) - { + case "clearall" -> { + if (!plugin.adminList.isAdmin(sender)) { noPerms(); return true; } @@ -72,11 +63,9 @@ public class Command_tag extends FreedomCommand FUtil.adminAction(sender.getName(), "Removing all tags", false); int count = 0; - for (final Player player : server.getOnlinePlayers()) - { - final FPlayer playerdata = plugin.pl.getPlayer(player); - if (playerdata.getTag() != null) - { + for (final Player player : server.getOnlinePlayers()) { + final FPlayer playerdata = plugin.playerList.getPlayer(player); + if (playerdata.getTag() != null) { count++; playerdata.setTag(null); } @@ -85,19 +74,13 @@ public class Command_tag extends FreedomCommand msg(count + " tag(s) removed."); return true; } - - case "off": - { - if (senderIsConsole) - { + case "off" -> { + if (senderIsConsole) { msg("\"/tag off\" can't be used from the console. Use \"/tag clear \" or \"/tag clearall\" instead."); - } - else - { - plugin.pl.getPlayer(playerSender).setTag(null); + } else { + plugin.playerList.getPlayer(playerSender).setTag(null); - if (save) - { + if (save) { save(playerSender, null); } @@ -105,36 +88,27 @@ public class Command_tag extends FreedomCommand } return true; } - - default: - { + default -> { return false; } } - } - else if (args.length >= 2) - { - switch (args[0].toLowerCase()) - { - case "clear": - { - if (!plugin.al.isAdmin(sender)) - { + } else if (args.length >= 2) { + switch (args[0].toLowerCase()) { + case "clear": { + if (!plugin.adminList.isAdmin(sender)) { noPerms(); return true; } final Player player = getPlayer(args[1]); - if (player == null) - { + if (player == null) { msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - plugin.pl.getPlayer(player).setTag(null); - if (save) - { + plugin.playerList.getPlayer(player).setTag(null); + if (save) { save(player, null); } @@ -142,10 +116,8 @@ public class Command_tag extends FreedomCommand return true; } - case "set": - { - if (senderIsConsole) - { + case "set": { + if (senderIsConsole) { msg("\"/tag set\" can't be used from the console."); return true; } @@ -162,31 +134,26 @@ public class Command_tag extends FreedomCommand }); final String outputTag = FUtil.colorize(strippedTag); - int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20); + int tagLimit = (plugin.adminList.isAdmin(sender) ? 30 : 20); final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); - if (rawTag.length() > tagLimit) - { + if (rawTag.length() > tagLimit) { msg("That tag is too long (Max is " + tagLimit + " characters)."); return true; } - if (!plugin.al.isAdmin(sender)) - { - for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) - { - if (rawTag.contains(word)) - { + if (!plugin.adminList.isAdmin(sender)) { + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { + if (rawTag.contains(word)) { msg("That tag contains a forbidden word."); return true; } } } - plugin.pl.getPlayer(playerSender).setTag(outputTag); + plugin.playerList.getPlayer(playerSender).setTag(outputTag); - if (save) - { + if (save) { save(playerSender, strippedTag); } @@ -194,46 +161,34 @@ public class Command_tag extends FreedomCommand return true; } - case "gradient": - { - if (senderIsConsole) - { + case "gradient": { + if (senderIsConsole) { msg("\"/tag gradient\" can't be used from the console."); return true; } - if (args.length < 4) - { + if (args.length < 4) { return false; } String from = "", to = ""; java.awt.Color awt1, awt2; - try - { - if (args[1].equalsIgnoreCase("random") || args[1].equalsIgnoreCase("r")) - { + try { + if (args[1].equalsIgnoreCase("random") || args[1].equalsIgnoreCase("r")) { awt1 = FUtil.getRandomAWTColor(); from = " (From: " + FUtil.getHexStringOfAWTColor(awt1) + ")"; - } - else - { + } else { awt1 = java.awt.Color.decode(args[1]); } - if (args[2].equalsIgnoreCase("random") || args[2].equalsIgnoreCase("r")) - { + if (args[2].equalsIgnoreCase("random") || args[2].equalsIgnoreCase("r")) { awt2 = FUtil.getRandomAWTColor(); to = " (To: " + FUtil.getHexStringOfAWTColor(awt2) + ")"; - } - else - { + } else { awt2 = java.awt.Color.decode(args[2]); } - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("Invalid hex values."); return true; } @@ -244,40 +199,34 @@ public class Command_tag extends FreedomCommand List gradient = FUtil.createColorGradient(c1, c2, tag.length()); String[] splitTag = tag.split(""); - for (int i = 0; i < splitTag.length; i++) - { + for (int i = 0; i < splitTag.length; i++) { splitTag[i] = net.md_5.bungee.api.ChatColor.of(FUtil.toAWT(gradient.get(i))) + splitTag[i]; } tag = StringUtils.join(splitTag, ""); final String outputTag = FUtil.colorize(tag); - int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20); + int tagLimit = (plugin.adminList.isAdmin(sender) ? 30 : 20); final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); - if (rawTag.length() > tagLimit) - { + if (rawTag.length() > tagLimit) { msg("That tag is too long (Max is " + tagLimit + " characters)."); return true; } - if (!plugin.al.isAdmin(sender)) - { - for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) - { - if (rawTag.contains(word)) - { + if (!plugin.adminList.isAdmin(sender)) { + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { + if (rawTag.contains(word)) { msg("That tag contains a forbidden word."); return true; } } } - plugin.pl.getPlayer(playerSender).setTag(outputTag); + plugin.playerList.getPlayer(playerSender).setTag(outputTag); - if (save) - { + if (save) { save(playerSender, tag); } @@ -285,8 +234,7 @@ public class Command_tag extends FreedomCommand return true; } - default: - { + default: { return false; } } @@ -294,10 +242,9 @@ public class Command_tag extends FreedomCommand return false; } - public void save(Player player, String tag) - { - PlayerData playerData = plugin.pl.getData(player); + public void save(Player player, String tag) { + PlayerData playerData = plugin.playerList.getData(player); playerData.setTag(tag); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagNyanCMD.java similarity index 60% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagNyanCMD.java index f2618fd8..71331c2e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagNyanCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -11,50 +15,42 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Give yourself a prefix with random colors", usage = "/ ", aliases = "tn") -public class Command_tagnyan extends FreedomCommand -{ +@CommandParameters(name = "tagnyan", description = "Give yourself a prefix with random colors", usage = "/ ", aliases = "tn") +public class TagNyanCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } final StringBuilder tag = new StringBuilder(); - for (char c : ChatColor.stripColor(FUtil.colorize(StringUtils.join(args, " "))).toCharArray()) - { + for (char c : ChatColor.stripColor(FUtil.colorize(StringUtils.join(args, " "))).toCharArray()) { tag.append(FUtil.randomChatColor()).append(c); } String tagStr = tag.toString(); - int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20); + int tagLimit = (plugin.adminList.isAdmin(sender) ? 30 : 20); final String rawTag = ChatColor.stripColor(tagStr).toLowerCase(); - if (rawTag.length() > tagLimit) - { + if (rawTag.length() > tagLimit) { msg("That tag is too long (Max is " + tagLimit + " characters)."); return true; } - if (!plugin.al.isAdmin(sender)) - { - for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) - { - if (rawTag.contains(word)) - { + if (!plugin.adminList.isAdmin(sender)) { + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { + if (rawTag.contains(word)) { msg("That tag contains a forbidden word."); return true; } } } - final FPlayer data = plugin.pl.getPlayer(playerSender); + final FPlayer data = plugin.playerList.getPlayer(playerSender); data.setTag(tagStr); msg("Set tag to " + tag); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagRainbowCMD.java similarity index 59% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagRainbowCMD.java index 3795a8c6..af93cb9f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TagRainbowCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,41 +14,34 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Give yourself a prefix with rainbow colors.", usage = "/ ") -public class Command_tagrainbow extends FreedomCommand -{ +@CommandParameters(name = "tagrainbow", description = "Give yourself a prefix with rainbow colors.", usage = "/ ") +public class TagRainbowCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } final String tag = ChatColor.stripColor(FUtil.colorize(StringUtils.join(args, " "))); - if (!plugin.al.isAdmin(sender)) - { + if (!plugin.adminList.isAdmin(sender)) { final String rawTag = ChatColor.stripColor(tag).toLowerCase(); - if (rawTag.length() > 20) - { + if (rawTag.length() > 20) { msg("That tag is too long (Max is 20 characters)."); return true; } - for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) - { - if (rawTag.contains(word)) - { + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { + if (rawTag.contains(word)) { msg("That tag contains a forbidden word."); return true; } } } - plugin.pl.getPlayer(playerSender).setTag(FUtil.rainbowify(tag)); + plugin.playerList.getPlayer(playerSender).setTag(FUtil.rainbowify(tag)); msg("Set tag to " + tag); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TempBanCMD.java similarity index 68% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TempBanCMD.java index 3789f40b..3f636385 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TempBanCMD.java @@ -1,11 +1,11 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Objects; +package me.totalfreedom.totalfreedommod.command.impl; import com.earth2me.essentials.User; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; @@ -20,28 +20,27 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Objects; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]", aliases = "tban,noob") -public class Command_tempban extends FreedomCommand -{ +@CommandParameters(name = "tempban", description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]", aliases = "tban,noob") +public class TempBanCMD extends FreedomCommand { private static final SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } boolean quiet = args[0].equalsIgnoreCase("-q"); - if (quiet) - { + if (quiet) { args = org.apache.commons.lang3.ArrayUtils.subarray(args, 1, args.length); - if (args.length < 1) - { + if (args.length < 1) { return false; } } @@ -51,34 +50,26 @@ public class Command_tempban extends FreedomCommand final Player player = getPlayer(args[0]); PlayerData entry; - if (player == null) - { + if (player == null) { // Gets the IP using Essentials data if available - if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) - { - User essUser = plugin.esb.getEssentialsUser(args[0]); + if (plugin.essentialsBridge.isEnabled() && plugin.essentialsBridge.getEssentialsUser(args[0]) != null) { + User essUser = plugin.essentialsBridge.getEssentialsUser(args[0]); // username = essUser.getName(); ip = essUser.getLastLoginAddress(); } // Last resort - Getting the first result from the username itself - else - { - entry = plugin.pl.getData(args[0]); - if (entry == null) - { + else { + entry = plugin.playerList.getData(args[0]); + if (entry == null) { msg(PLAYER_NOT_FOUND); return true; - } - else - { + } else { username = entry.getName(); ip = entry.getIps().get(0); } } - } - else - { + } else { username = player.getName(); ip = FUtil.getIp(player); } @@ -89,14 +80,10 @@ public class Command_tempban extends FreedomCommand Date expires = FUtil.parseDateOffset("5m"); // Parses what comes after as a duration - if (args.length > 1) - { - try - { + if (args.length > 1) { + try { expires = FUtil.parseDateOffset(args[1]); - } - catch (NumberFormatException error) - { + } catch (NumberFormatException error) { msg("Invalid duration: " + args[1], ChatColor.RED); return true; } @@ -106,35 +93,27 @@ public class Command_tempban extends FreedomCommand // If a reason appears to exist, set it. String reason = null; - if (args.length > 2) - { + if (args.length > 2) { reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")"; message.append(", Reason: \"").append(reason).append("\""); } Ban ban; - if (player != null) - { + if (player != null) { ban = Ban.forPlayer(player, sender, expires, reason); - } - else - { + } else { ban = Ban.forPlayerName(username, sender, expires, reason); } ban.addIp(ip); - plugin.bm.addBan(ban); + plugin.banManager.addBan(ban); - if (!quiet) - { - if (player != null) - { + if (!quiet) { + if (player != null) { // Strike with lightning final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); } @@ -144,21 +123,17 @@ public class Command_tempban extends FreedomCommand } FUtil.adminAction(sender.getName(), message.toString(), true); - } - else - { + } else { msg("Quietly temporarily banned " + username + "."); } - for (Player p : Bukkit.getOnlinePlayers()) - { - if (FUtil.getIp(p).equals(ip)) - { + for (Player p : Bukkit.getOnlinePlayers()) { + if (FUtil.getIp(p).equals(ip)) { p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); } } - plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.TEMPBAN, reason)); + plugin.punishmentList.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.TEMPBAN, reason)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleCMD.java similarity index 71% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleCMD.java index 712ff7ff..c5b86138 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleCMD.java @@ -1,10 +1,11 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.GameRuleHandler; -import me.totalfreedom.totalfreedommod.LoginProcess; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.services.impl.GameRuleHandler; +import me.totalfreedom.totalfreedommod.services.impl.LoginProcess; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -12,10 +13,13 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") -public class Command_toggle extends FreedomCommand -{ +@CommandParameters(name = "toggle", description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") +public class ToggleCMD extends FreedomCommand { private final List toggles = Arrays.asList( "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]", @@ -24,118 +28,93 @@ public class Command_toggle extends FreedomCommand "landmines", "tossmob", "gravity"); @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { msg("Available toggles: "); - for (String toggle : toggles) - { + for (String toggle : toggles) { msg("- " + toggle); } return false; } - switch (args[0].toLowerCase()) - { - case "waterplace": - { + switch (args[0].toLowerCase()) { + case "waterplace": { toggle("Water placement is", ConfigEntry.ALLOW_WATER_PLACE); break; } - case "frostwalk": - { + case "frostwalk": { toggle("Frost walker enchantment is", ConfigEntry.ALLOW_FROSTWALKER); break; } - case "fireplace": - { + case "fireplace": { toggle("Fire placement is", ConfigEntry.ALLOW_FIRE_PLACE); break; } - case "lavaplace": - { + case "lavaplace": { toggle("Lava placement is", ConfigEntry.ALLOW_LAVA_PLACE); break; } - case "fluidspread": - { + case "fluidspread": { toggle("Fluid spread is", ConfigEntry.ALLOW_FLUID_SPREAD); break; } - case "lavadmg": - { + case "lavadmg": { toggle("Lava damage is", ConfigEntry.ALLOW_LAVA_DAMAGE); break; } - case "firespread": - { + case "firespread": { toggle("Fire spread is", ConfigEntry.ALLOW_FIRE_SPREAD); - plugin.gr.setGameRule(GameRuleHandler.GameRule.DO_FIRE_TICK, ConfigEntry.ALLOW_FIRE_SPREAD.getBoolean()); + plugin.gameRuleHandler.setGameRule(GameRuleHandler.GameRule.DO_FIRE_TICK, ConfigEntry.ALLOW_FIRE_SPREAD.getBoolean()); break; } - case "prelog": - { + case "prelog": { toggle("Command prelogging is", ConfigEntry.ENABLE_PREPROCESS_LOG); break; } - case "lockdown": - { + case "lockdown": { boolean active = !LoginProcess.isLockdownEnabled(); LoginProcess.setLockdownEnabled(active); FUtil.adminAction(sender.getName(), (active ? "A" : "De-a") + "ctivating server lockdown", true); break; } - case "petprotect": - { + case "petprotect": { toggle("Tamed pet protection is", ConfigEntry.ENABLE_PET_PROTECT); break; } - case "entitywipe": - { + case "entitywipe": { toggle("Automatic entity wiping is", ConfigEntry.AUTO_ENTITY_WIPE); break; } - case "firework": - { + case "firework": { toggle("Firework explosion is", ConfigEntry.ALLOW_FIREWORK_EXPLOSION); break; } - case "nonuke": - { - if (args.length >= 2) - { - try - { + case "nonuke": { + if (args.length >= 2) { + try { ConfigEntry.NUKE_MONITOR_RANGE.setDouble(Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1])))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("The input provided is not a valid integer."); return true; } } - if (args.length >= 3) - { - try - { + if (args.length >= 3) { + try { ConfigEntry.NUKE_MONITOR_COUNT_BREAK.setInteger(Math.max(1, Math.min(500, Integer.parseInt(args[2])))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("The input provided is not a valid integer."); return true; } @@ -143,24 +122,18 @@ public class Command_toggle extends FreedomCommand toggle("Nuke monitor is", ConfigEntry.NUKE_MONITOR_ENABLED); - if (ConfigEntry.NUKE_MONITOR_ENABLED.getBoolean()) - { + if (ConfigEntry.NUKE_MONITOR_ENABLED.getBoolean()) { msg("Anti-freecam range is set to " + ConfigEntry.NUKE_MONITOR_RANGE.getDouble() + " blocks."); msg("Block throttle rate is set to " + ConfigEntry.NUKE_MONITOR_COUNT_BREAK.getInteger() + " blocks destroyed per 5 seconds."); } break; } - case "explosives": - { - if (args.length == 2) - { - try - { + case "explosives": { + if (args.length == 2) { + try { ConfigEntry.EXPLOSIVE_RADIUS.setDouble(Math.max(1.0, Math.min(30.0, Double.parseDouble(args[1])))); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("The input provided is not a valid integer."); return true; } @@ -168,126 +141,105 @@ public class Command_toggle extends FreedomCommand toggle("Explosions are", ConfigEntry.ALLOW_EXPLOSIONS); - if (ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) - { + if (ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { msg("Radius set to " + ConfigEntry.EXPLOSIVE_RADIUS.getDouble()); } break; } - case "unsafeenchs": - { + case "unsafeenchs": { toggle("Unsafe enchantments are", ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS); break; } - case "bells": - { + case "bells": { toggle("The ringing of bells is", ConfigEntry.ALLOW_BELLS); break; } - case "armorstands": - { + case "armorstands": { toggle("The placement of armor stands is", ConfigEntry.ALLOW_ARMOR_STANDS); break; } - case "structureblocks": - { + case "structureblocks": { toggle("Structure blocks are", ConfigEntry.ALLOW_STRUCTURE_BLOCKS); break; } - case "jigsaws": - { + case "jigsaws": { toggle("Jigsaws are", ConfigEntry.ALLOW_JIGSAWS); break; } - case "grindstones": - { + case "grindstones": { toggle("Grindstones are", ConfigEntry.ALLOW_GRINDSTONES); break; } - case "jukeboxes": - { + case "jukeboxes": { toggle("Jukeboxes are", ConfigEntry.ALLOW_JUKEBOXES); break; } - case "spawners": - { + case "spawners": { toggle("Spawners are", ConfigEntry.ALLOW_SPAWNERS); break; } - case "4chan": - { + case "4chan": { toggle("4chan mode is", ConfigEntry.FOURCHAN_ENABLED); break; } - case "beehives": - { + case "beehives": { toggle("Beehives are", ConfigEntry.ALLOW_BEEHIVES); break; } - case "respawnanchors": - { + case "respawnanchors": { toggle("Respawn anchors are", ConfigEntry.ALLOW_RESPAWN_ANCHORS); break; } - case "autotp": - { + case "autotp": { toggle("Teleportation on join is", ConfigEntry.AUTO_TP); break; } - case "autoclear": - { + case "autoclear": { toggle("Clearing inventories on join is", ConfigEntry.AUTO_CLEAR); break; } - case "minecarts": - { + case "minecarts": { toggle("Minecarts are", ConfigEntry.ALLOW_MINECARTS); break; } - case "landmines": - { + case "landmines": { toggle("Landmines are", ConfigEntry.LANDMINES_ENABLED); break; } - case "mp44": - { + case "mp44": { toggle("MP44 is", ConfigEntry.MP44_ENABLED); break; } - case "tossmob": - { + case "tossmob": { toggle("Tossmob is", ConfigEntry.TOSSMOB_ENABLED); break; } - case "gravity": - { + case "gravity": { toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY); break; } - default: - { + default: { msg("Available toggles: "); - for (String toggle : toggles) - { + for (String toggle : toggles) { msg("- " + toggle); } return false; @@ -296,21 +248,17 @@ public class Command_toggle extends FreedomCommand return true; } - private void toggle(final String name, final ConfigEntry entry) - { + private void toggle(final String name, final ConfigEntry entry) { msg(name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled.")); } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (!plugin.adminList.isAdmin(sender)) { return Collections.emptyList(); } - if (args.length == 1) - { + if (args.length == 1) { return Arrays.asList( "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke", "explosives", "unsafeenchs", diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglechat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleChatCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglechat.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleChatCMD.java index 30a3fb28..c468a614 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglechat.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleChatCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -8,12 +12,10 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Toggle online players' ability to chat.", usage = "/", aliases = "tc") -public class Command_togglechat extends FreedomCommand -{ +@CommandParameters(name = "togglechat", description = "Toggle online players' ability to chat.", usage = "/", aliases = "tc") +public class ToggleChatCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { ConfigEntry.TOGGLE_CHAT.setBoolean(!ConfigEntry.TOGGLE_CHAT.getBoolean()); FUtil.adminAction(sender.getName(), "Chat " + (ConfigEntry.TOGGLE_CHAT.getBoolean() ? "enabled" : "disabled") + ".", true); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleClownfishCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleClownfishCMD.java new file mode 100644 index 00000000..462e2e5d --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleClownfishCMD.java @@ -0,0 +1,34 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "toggleclownfish", description = "Toggle whether or not a player has the ability to use clownfish", usage = "/ ", aliases = "togglecf") +public class ToggleClownfishCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { + return false; + } + + boolean enabled = plugin.loginProcess.CLOWNFISH_TOGGLE.contains(args[0]); + + if (enabled) { + plugin.loginProcess.CLOWNFISH_TOGGLE.remove(args[0]); + } else { + plugin.loginProcess.CLOWNFISH_TOGGLE.add(args[0]); + } + + msg(args[0] + " will " + (enabled ? "now" : "no longer") + " have the ability to use clownfish."); + + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleDiscordCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleDiscordCMD.java new file mode 100644 index 00000000..a8a04b19 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/ToggleDiscordCMD.java @@ -0,0 +1,24 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.player.PlayerData; +import me.totalfreedom.totalfreedommod.rank.Rank; +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(name = "togglediscord", description = "Toggle the display of Discord messages in-game.", usage = "/", aliases = "tdiscord,tdisc") +public class ToggleDiscordCMD extends FreedomCommand { + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + PlayerData data = plugin.playerList.getData(playerSender); + data.setDisplayDiscord(!data.doesDisplayDiscord()); + plugin.playerList.save(data); + msg("Discord messages will " + (data.doesDisplayDiscord() ? "now" : "no longer") + " be shown."); + return true; + } +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TogglePickupCMD.java similarity index 56% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TogglePickupCMD.java index df9c8294..024790aa 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TogglePickupCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -7,13 +11,11 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Toggle item pickup.", usage = "/") -public class Command_togglepickup extends FreedomCommand -{ +@CommandParameters(name = "togglepickup", description = "Toggle item pickup.", usage = "/") +public class TogglePickupCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { boolean enabled = !playerSender.getCanPickupItems(); playerSender.setCanPickupItems(enabled); msg((enabled ? "En" : "Dis") + "abled item pickup.", (enabled ? ChatColor.GREEN : ChatColor.RED)); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TossMobCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TossMobCMD.java index 28470eb6..3c52d6e9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TossMobCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -16,99 +17,84 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Throw a mob in the direction you are facing when you right click with a bone.", - usage = "/ ") -public class Command_tossmob extends FreedomCommand -{ +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; - public static List getAllMobNames() - { +@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(name = "tossmob", description = "Throw a mob in the direction you are facing when you right click with a bone.", + usage = "/ ") +public class TossMobCMD extends FreedomCommand { + + public static List getAllMobNames() { List names = new ArrayList<>(); - for (EntityType entityType : Groups.MOB_TYPES) - { + for (EntityType entityType : Groups.MOB_TYPES) { names.add(entityType.name()); } return names; } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!ConfigEntry.TOSSMOB_ENABLED.getBoolean()) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!ConfigEntry.TOSSMOB_ENABLED.getBoolean()) { msg("Tossmob is currently disabled."); return true; } - if (args.length == 0) - { + if (args.length == 0) { return false; } - FPlayer playerData = plugin.pl.getPlayer(playerSender); + FPlayer playerData = plugin.playerList.getPlayer(playerSender); EntityType type = null; - if (args[0].equalsIgnoreCase("off")) - { + if (args[0].equalsIgnoreCase("off")) { playerData.disableMobThrower(); msg("Turned off.", ChatColor.GREEN); return true; } - if (args[0].equalsIgnoreCase("list")) - { + if (args[0].equalsIgnoreCase("list")) { msg("Supported mobs: " + getAllMobNames(), ChatColor.GREEN); return true; } - for (EntityType loop : EntityType.values()) - { - if (loop != null && loop.name().equalsIgnoreCase(args[0])) - { + for (EntityType loop : EntityType.values()) { + if (loop != null && loop.name().equalsIgnoreCase(args[0])) { type = loop; break; } } - if (type == null) - { + if (type == null) { msg("Unknown entity type: " + args[0], ChatColor.RED); return true; } - if (!Groups.MOB_TYPES.contains(type)) - { + if (!Groups.MOB_TYPES.contains(type)) { msg(FUtil.formatName(type.name()) + " is an entity, however it is not a mob.", ChatColor.RED); return true; } double speed = 1.0; - if (args.length >= 2) - { - try - { + if (args.length >= 2) { + try { speed = Double.parseDouble(args[1]); - } - catch (NumberFormatException ex) - { + } catch (NumberFormatException ex) { msg("The input provided is not a valid integer."); return true; } } - if (speed < 1.0) - { + if (speed < 1.0) { speed = 1.0; - } - else if (speed > 5.0) - { + } else if (speed > 5.0) { speed = 5.0; } playerData.enableMobThrower(type, speed); msg("MobThrower is enabled. Mob: " + type + " - Speed: " + speed + ".", ChatColor.GREEN); - msg("Right click while holding a " + Material.BONE.toString() + " to throw mobs!", ChatColor.GREEN); + msg("Right click while holding a " + Material.BONE + " to throw mobs!", ChatColor.GREEN); msg("Type '/tossmob off' to disable. -By Madgeek1450", ChatColor.GREEN); Objects.requireNonNull(playerSender.getEquipment()).setItemInMainHand(new ItemStack(Material.BONE, 1)); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TotalFreedomModCMD.java similarity index 73% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TotalFreedomModCMD.java index aad66572..9d72fc64 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TotalFreedomModCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; @@ -13,30 +17,25 @@ import org.bukkit.entity.Player; * See https://github.com/TotalFreedom/License - This file may not be edited or removed. */ @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Shows information about TotalFreedomMod or reloads it", usage = "/ [reload]", aliases = "tfm") -public class Command_totalfreedommod extends FreedomCommand -{ +@CommandParameters(name = "totalfreedommod", description = "Shows information about TotalFreedomMod or reloads it", usage = "/ [reload]", aliases = "tfm") +public class TotalFreedomModCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 1) - { - if (!args[0].equals("reload")) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 1) { + if (!args[0].equals("reload")) { return false; } - if (!plugin.al.isAdmin(sender)) - { + if (!plugin.adminList.isAdmin(sender)) { noPerms(); return true; } plugin.config.load(); - plugin.fsh.stopServices(); - plugin.fsh.startServices(); + plugin.serviceHandler.stopServices(); + plugin.serviceHandler.startServices(); final String message = String.format("%s v%s reloaded.", TotalFreedomMod.pluginName, diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TrailCMD.java similarity index 50% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/TrailCMD.java index 16d82e97..3055ed5a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/TrailCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.shop.ShopItem; import org.bukkit.ChatColor; @@ -8,27 +12,21 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Trails rainbow wool behind you as you walk/fly.", usage = "/") -public class Command_trail extends FreedomCommand -{ +@CommandParameters(name = "trail", description = "Trails rainbow wool behind you as you walk/fly.", usage = "/") +public class TrailCMD 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.RAINBOW_TRAIL)) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.playerList.getData(playerSender).hasItem(ShopItem.RAINBOW_TRAIL)) { msg("You didn't purchase the ability to have a " + ShopItem.RAINBOW_TRAIL.getName() + "! Purchase it from the shop.", ChatColor.RED); return true; } - if (plugin.tr.contains(playerSender)) - { - plugin.tr.remove(playerSender); + if (plugin.trailer.contains(playerSender)) { + plugin.trailer.remove(playerSender); msg("Trail disabled."); - } - else - { - plugin.tr.add(playerSender); + } else { + plugin.trailer.add(playerSender); msg("Trail enabled. Run this command again to disable it."); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanCMD.java similarity index 53% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanCMD.java index daf3b32c..b6836895 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import com.earth2me.essentials.User; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -9,32 +13,26 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Unbans the specified player.", usage = "/ [-r]") -public class Command_unban extends FreedomCommand -{ +@CommandParameters(name = "unban", description = "Unbans the specified player.", usage = "/ [-r]") +public class UnbanCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length > 0) { String username; String ip; // Gets the IP using Essentials data if available - if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) - { - User essUser = plugin.esb.getEssentialsUser(args[0]); + if (plugin.essentialsBridge.isEnabled() && plugin.essentialsBridge.getEssentialsUser(args[0]) != null) { + User essUser = plugin.essentialsBridge.getEssentialsUser(args[0]); // username = essUser.getName(); ip = essUser.getLastLoginAddress(); } // Secondary method - using Essentials if available - else - { - final PlayerData entry = plugin.pl.getData(args[0]); - if (entry == null) - { + else { + final PlayerData entry = plugin.playerList.getData(args[0]); + if (entry == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -43,15 +41,13 @@ public class Command_unban extends FreedomCommand } FUtil.adminAction(sender.getName(), "Unbanning " + username, true); - plugin.bm.removeBan(plugin.bm.getByUsername(username)); - plugin.bm.removeBan(plugin.bm.getByIp(ip)); + plugin.banManager.removeBan(plugin.banManager.getByUsername(username)); + plugin.banManager.removeBan(plugin.banManager.getByIp(ip)); msg(username + " has been unbanned along with the IP: " + ip); - if (args.length >= 2) - { - if (args[1].equalsIgnoreCase("-r")) - { - plugin.cpb.restore(username); + if (args.length >= 2) { + if (args[1].equalsIgnoreCase("-r")) { + plugin.coreProtectBridge.restore(username); msg("Restored edits for: " + username); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanIPCMD.java similarity index 53% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanIPCMD.java index 03cbaef7..95e4534b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanIPCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -9,15 +13,12 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Unbans the specified ip.", usage = "/ [-q]") -public class Command_unbanip extends FreedomCommand -{ +@CommandParameters(name = "unbanip", description = "Unbans the specified ip.", usage = "/ [-q]") +public class UnbanIPCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } @@ -25,35 +26,30 @@ public class Command_unbanip extends FreedomCommand String ip = args[0]; - if (FUtil.isValidIPv4(ip)) - { + if (FUtil.isValidIPv4(ip)) { msg(ip + " is not a valid IP address", ChatColor.RED); return true; } - Ban ban = plugin.bm.getByIp(ip); + Ban ban = plugin.banManager.getByIp(ip); - if (ban == null) - { + if (ban == null) { msg("The ip " + ip + " is not banned", ChatColor.RED); return true; } - if (ban.hasUsername()) - { + if (ban.hasUsername()) { msg("This ban is not an ip-only ban."); return true; } - if (args.length > 1 && args[1].equals("-q")) - { + if (args.length > 1 && args[1].equals("-q")) { silent = true; } - plugin.bm.removeBan(ban); + plugin.banManager.removeBan(ban); - if (!silent) - { + if (!silent) { FUtil.adminAction(sender.getName(), "Unbanned the ip " + ip, true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanNameCMD.java similarity index 52% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanNameCMD.java index cf925674..4533637e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnbanNameCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -9,15 +13,12 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Unbans the specified name.", usage = "/ [-q]") -public class Command_unbanname extends FreedomCommand -{ +@CommandParameters(name = "unbanname", description = "Unbans the specified name.", usage = "/ [-q]") +public class UnbanNameCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } @@ -25,29 +26,25 @@ public class Command_unbanname extends FreedomCommand String name = args[0]; - Ban ban = plugin.bm.getByUsername(name); + Ban ban = plugin.banManager.getByUsername(name); - if (ban == null) - { + if (ban == null) { msg("The name " + name + " is not banned", ChatColor.RED); return true; } - if (ban.hasIps()) - { + if (ban.hasIps()) { msg("This ban is not a name-only ban."); return true; } - if (args.length > 1 && args[1].equals("-q")) - { + if (args.length > 1 && args[1].equals("-q")) { silent = true; } - plugin.bm.removeBan(ban); + plugin.banManager.removeBan(ban); - if (!silent) - { + if (!silent) { FUtil.adminAction(sender.getName(), "Unbanned the name " + name, true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unblockcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnblockCommandCMD.java similarity index 56% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_unblockcmd.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnblockCommandCMD.java index d6f551bb..eba65642 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unblockcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnblockCommandCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -9,34 +13,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Unblocks commands for a player.", usage = "/ ", aliases = "unblockcommand,unblockcommands,ubcmds,unblockcmds,ubc") -public class Command_unblockcmd extends FreedomCommand -{ +@CommandParameters(name = "unblock", description = "Unblocks commands for a player.", usage = "/ ", aliases = "unblockcommand,unblockcommands,ubcmds,unblockcmds,ubc") +public class UnblockCommandCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - FPlayer fPlayer = plugin.pl.getPlayer(player); - if (fPlayer.allCommandsBlocked()) - { + FPlayer fPlayer = plugin.playerList.getPlayer(player); + if (fPlayer.allCommandsBlocked()) { fPlayer.setCommandsBlocked(false); FUtil.adminAction(sender.getName(), "Unblocking all commands for " + player.getName(), true); msg("Unblocked commands for " + player.getName() + "."); - } - else - { + } else { msg("That players commands aren't blocked.", ChatColor.RED); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_uncage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UncageCMD.java similarity index 56% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_uncage.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UncageCMD.java index ccfd1d1d..d1acb4f8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_uncage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UncageCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -9,34 +13,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Uncage a player", usage = "/ ") -public class Command_uncage extends FreedomCommand -{ +@CommandParameters(name = "uncage", description = "Uncage a player", usage = "/ ") +public class UncageCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 0) - { + if (args.length == 0) { return false; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - final FPlayer fPlayer = plugin.pl.getPlayer(player); - if (fPlayer.getCageData().isCaged()) - { + final FPlayer fPlayer = plugin.playerList.getPlayer(player); + if (fPlayer.getCageData().isCaged()) { FUtil.adminAction(sender.getName(), "Uncaging " + player.getName(), true); fPlayer.getCageData().setCaged(false); - } - else - { + } else { msg("That player is not caged!", ChatColor.RED); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UndisguiseAllCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UndisguiseAllCMD.java new file mode 100644 index 00000000..a1a5679f --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UndisguiseAllCMD.java @@ -0,0 +1,31 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) +@CommandParameters(name = "undisguiseall", description = "Undisguise all online players on the server", usage = "/ [-a]", aliases = "uall") +public class UndisguiseAllCMD extends FreedomCommand { + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.libsDisguisesBridge.isEnabled()) { + msg("LibsDisguises is not enabled."); + return true; + } + + boolean admins = args.length > 0 && args[0].equalsIgnoreCase("-a"); + + FUtil.adminAction(sender.getName(), "Undisguising all " + (admins ? "players" : "non-admins"), true); + + plugin.libsDisguisesBridge.undisguiseAll(admins); + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnlinkDiscordCMD.java similarity index 56% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnlinkDiscordCMD.java index 922db3a4..04ddff30 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnlinkDiscordCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; @@ -8,24 +12,19 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Unlink your Discord account from your Minecraft account", usage = "/ [player]") -public class Command_unlinkdiscord extends FreedomCommand -{ +@CommandParameters(name = "unlinkdiscord", description = "Unlink your Discord account from your Minecraft account", usage = "/ [player]") +public class UnlinkDiscordCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.dc.enabled) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (!plugin.discord.enabled) { msg("The Discord verification system is currently disabled.", ChatColor.RED); return true; } - if (args.length != 0 && plugin.al.isAdmin(playerSender)) - { - PlayerData playerData = plugin.pl.getData(args[0]); - if (playerData == null) - { + if (args.length != 0 && plugin.adminList.isAdmin(playerSender)) { + PlayerData playerData = plugin.playerList.getData(args[0]); + if (playerData == null) { msg(PLAYER_NOT_FOUND); return true; } @@ -35,15 +34,14 @@ public class Command_unlinkdiscord extends FreedomCommand return true; } - PlayerData data = plugin.pl.getData(playerSender); - if (data.getDiscordID() == null) - { + PlayerData data = plugin.playerList.getData(playerSender); + if (data.getDiscordID() == null) { msg("Your Minecraft account is not linked to a Discord account.", ChatColor.RED); return true; } data.setDiscordID(null); data.setVerification(false); - plugin.pl.save(data); + plugin.playerList.save(data); msg("Your Minecraft account has been successfully unlinked from the Discord account.", ChatColor.GREEN); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unmute.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnmuteCMD.java similarity index 66% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_unmute.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnmuteCMD.java index 725f6146..941d174a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unmute.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/UnmuteCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,45 +14,37 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Unmutes a player", usage = "/ [-q] ") -public class Command_unmute extends FreedomCommand -{ +@CommandParameters(name = "unmute", description = "Unmutes a player", usage = "/ [-q] ") +public class UnmuteCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } // -q option (shadowmute) boolean quiet = args[0].equals("-q"); - if (quiet) - { + if (quiet) { args = ArrayUtils.subarray(args, 1, args.length); - if (args.length < 1) - { + if (args.length < 1) { return false; } } final Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - FPlayer playerdata = plugin.pl.getPlayer(player); - if (playerdata.isMuted()) - { + FPlayer playerdata = plugin.playerList.getPlayer(player); + if (playerdata.isMuted()) { playerdata.setMuted(false); player.sendTitle(ChatColor.RED + "You've been unmuted.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60); - if (quiet) - { + if (quiet) { msg("Unmuted " + player.getName() + " quietly"); return true; } @@ -56,9 +52,7 @@ public class Command_unmute extends FreedomCommand FUtil.adminAction(sender.getName(), "Unmuting " + player.getName(), true); msg("Unmuted " + player.getName()); msg(player, "You have been unmuted.", ChatColor.RED); - } - else - { + } else { msg(ChatColor.RED + "That player is not muted."); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VanishCMD.java similarity index 53% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/VanishCMD.java index 68ce1b41..c4f56a4d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VanishCMD.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; import me.totalfreedom.totalfreedommod.admin.AdminList; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Displayable; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -16,96 +20,75 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Vanish/unvanish yourself.", usage = "/ [-s[ilent]]", aliases = "v") -public class Command_vanish extends FreedomCommand -{ +@CommandParameters(name = "vanish", description = "Vanish/unvanish yourself.", usage = "/ [-s[ilent]]", aliases = "v") +public class VanishCMD extends FreedomCommand { - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - Displayable display = plugin.rm.getDisplay(playerSender); + public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) { + Displayable display = plugin.rankManager.getDisplay(playerSender); String displayName = display.getColor() + playerSender.getName(); String tag = display.getColoredTag(); boolean silent = false; - if (args.length > 0) - { - if (args[0].equalsIgnoreCase("-s") || args[0].equalsIgnoreCase("-silent")) - { + if (args.length > 0) { + if (args[0].equalsIgnoreCase("-s") || args[0].equalsIgnoreCase("-silent")) { silent = true; } } - if (plugin.al.isVanished(playerSender.getName())) - { - if (silent) - { + if (plugin.adminList.isVanished(playerSender.getName())) { + if (silent) { msg(ChatColor.GOLD + "Silently unvanished."); - } - else - { + } else { msg("You have unvanished.", ChatColor.GOLD); - FUtil.bcastMsg(plugin.rm.craftLoginMessage(playerSender, null)); + FUtil.bcastMsg(plugin.rankManager.craftLoginMessage(playerSender, null)); FUtil.bcastMsg(playerSender.getName() + " joined the game.", ChatColor.YELLOW); - plugin.dc.messageChatChannel("**" + playerSender.getName() + " joined the server" + "**"); + plugin.discord.messageChatChannel("**" + playerSender.getName() + " joined the server" + "**"); } - PlayerData playerData = plugin.pl.getData(playerSender); - if (playerData.getTag() != null) - { + PlayerData playerData = plugin.playerList.getData(playerSender); + if (playerData.getTag() != null) { tag = FUtil.colorize(playerData.getTag()); } - plugin.pl.getData(playerSender).setTag(tag); + plugin.playerList.getData(playerSender).setTag(tag); FLog.info(playerSender.getName() + " is no longer vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + sender.getName() + " has unvanished and is now visible to everyone."); + plugin.adminList.messageAllAdmins(ChatColor.YELLOW + sender.getName() + " has unvanished and is now visible to everyone."); - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(player)) { player.showPlayer(plugin, playerSender); } } - plugin.esb.setVanished(playerSender.getName(), false); + plugin.essentialsBridge.setVanished(playerSender.getName(), false); playerSender.setPlayerListName(StringUtils.substring(displayName, 0, 16)); AdminList.vanished.remove(playerSender.getName()); - } - else - { - new BukkitRunnable() - { + } else { + new BukkitRunnable() { @Override - public void run() - { - if (plugin.al.isVanished(playerSender.getName())) - { + public void run() { + if (plugin.adminList.isVanished(playerSender.getName())) { playerSender.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(ChatColor.GOLD + "You are hidden from other players.")); } } }.runTaskTimer(plugin, 0L, 4L); - if (silent) - { + if (silent) { msg("Silently vanished.", ChatColor.GOLD); - } - else - { + } else { msg("You have vanished.", ChatColor.GOLD); FUtil.bcastMsg(playerSender.getName() + " left the game.", ChatColor.YELLOW); - plugin.dc.messageChatChannel("**" + playerSender.getName() + " left the server" + "**"); + plugin.discord.messageChatChannel("**" + playerSender.getName() + " left the server" + "**"); } FLog.info(playerSender.getName() + " is now vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + sender.getName() + " has vanished and is now only visible to admins."); + plugin.adminList.messageAllAdmins(ChatColor.YELLOW + sender.getName() + " has vanished and is now only visible to admins."); - for (Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(player)) { player.hidePlayer(plugin, playerSender); } } - plugin.esb.setVanished(playerSender.getName(), true); + plugin.essentialsBridge.setVanished(playerSender.getName(), true); AdminList.vanished.add(playerSender.getName()); } return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyCMD.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyCMD.java new file mode 100644 index 00000000..16792154 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyCMD.java @@ -0,0 +1,123 @@ +package me.totalfreedom.totalfreedommod.command.impl; + +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.input.SourceType; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.discord.Discord; +import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.player.PlayerData; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.IMPOSTOR, source = SourceType.BOTH) +@CommandParameters(name = "verify", description = "Sends a verification code to the player, or the player can input the sent code. Admins can manually verify a player impostor.", usage = "/ [-m] >") +public class VerifyCMD extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + boolean verificationEnabled = ConfigEntry.DISCORD_VERIFICATION.getBoolean(); + if (!plugin.discord.enabled) { + msg("The Discord verification system is currently disabled.", ChatColor.RED); + return true; + } + + if (!verificationEnabled) { + msg("The Discord verification system is currently disabled.", ChatColor.RED); + return true; + } + + if (!plugin.playerList.isImpostor(playerSender)) { + msg("You are not an impostor, therefore you do not need to verify.", ChatColor.RED); + return true; + } + + PlayerData playerData = plugin.playerList.getData(playerSender); + String discordId = playerData.getDiscordID(); + + if (playerData.getDiscordID() == null) { + msg("You do not have a Discord account linked to your Minecraft account, please verify the manual way.", ChatColor.RED); + return true; + } + + if (args.length == 0) { + String code = plugin.discord.generateCode(10); + plugin.discord.addVerificationCode(code, playerData); + plugin.discord.getUser(discordId).openPrivateChannel().complete().sendMessage("A user with the IP `" + FUtil.getIp(playerSender) + "` has sent a verification request. Please run the following in-game command: `/verify " + code + "`").complete(); + msg("A verification code has been sent to your account, please copy the code and run /verify ", ChatColor.GREEN); + return true; + } + + if (args[0].equalsIgnoreCase("-m")) { + if (!senderIsConsole) + { + if (!plugin.rankManager.getRank(playerSender).isAtLeast(Rank.ADMIN)) + { + msg(NO_PERMISSION); + return true; + } + } + if (args.length != 2) + { + msg("Usage: /verify -m ", ChatColor.RED); + return true; + } + final Player target = Bukkit.getPlayer(args[1]); + if (target == null) { + msg(PLAYER_NOT_FOUND); + return true; + } + + if (!plugin.playerList.isImpostor(target)) { + msg("That player is not an impostor."); + return true; + } + FUtil.adminAction(sender.getName(), "Manually verifying player " + target.getName(), false); + target.setOp(true); + msg(target, YOU_ARE_OP); + + if (plugin.playerList.getPlayer(target).getFreezeData().isFrozen()) { + plugin.playerList.getPlayer(target).getFreezeData().setFrozen(false); + msg(target, "You have been unfrozen."); + } + + plugin.playerList.verify(target, null); + plugin.rankManager.updateDisplay(target); + return true; + } + + String code = args[0]; + String backupCode = null; + + if (plugin.playerList.isImpostor(playerSender)) { + PlayerData mapPlayer = plugin.discord.getVerificationCodes().get(code); + if (mapPlayer == null) { + if (!playerData.getBackupCodes().contains(Discord.getMD5(code))) { + msg("You have entered an invalid verification code", ChatColor.RED); + return true; + } else { + backupCode = Discord.getMD5(code); + } + } else { + plugin.discord.removeVerificationCode(code); + } + + final FPlayer fPlayer = plugin.playerList.getPlayer(playerSender); + if (fPlayer.getFreezeData().isFrozen()) { + fPlayer.getFreezeData().setFrozen(false); + msg("You have been unfrozen."); + } + FUtil.bcastMsg(playerSender.getName() + " has verified!", ChatColor.GOLD); + playerSender.setOp(true); + plugin.playerList.verify(playerSender, backupCode); + return true; + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_verifynoadmin.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyNoAdminCMD.java similarity index 53% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_verifynoadmin.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyNoAdminCMD.java index 426566f1..c8a36ae7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_verifynoadmin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VerifyNoAdminCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -11,60 +12,52 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Verify an admin without giving them admin permissions.", usage = "/ ", aliases = "vns,verifynostaff,vna") -public class Command_verifynoadmin extends FreedomCommand -{ +@CommandParameters(name = "verifynoadmin", description = "Verify an admin without giving them admin permissions.", usage = "/ ", aliases = "vns,verifynostaff,vna") +public class VerifyNoAdminCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (plugin.al.isAdminImpostor(player)) - { + if (plugin.adminList.isAdminImpostor(player)) { String ip = FUtil.getIp(player); - if (!plugin.al.verifiedNoAdmin.containsKey(player.getName())) - { + if (!plugin.adminList.verifiedNoAdmin.containsKey(player.getName())) { List ips = new ArrayList<>(); ips.add(ip); - plugin.al.verifiedNoAdmin.put(player.getName(), ips); - } - else - { - List ips = plugin.al.verifiedNoAdmin.get(player.getName()); - if (!ips.contains(ip)) - { + plugin.adminList.verifiedNoAdmin.put(player.getName(), ips); + } else { + List ips = plugin.adminList.verifiedNoAdmin.get(player.getName()); + if (!ips.contains(ip)) { ips.add(ip); - plugin.al.verifiedNoAdmin.remove(player.getName()); - plugin.al.verifiedNoAdmin.put(player.getName(), ips); + plugin.adminList.verifiedNoAdmin.remove(player.getName()); + plugin.adminList.verifiedNoAdmin.put(player.getName(), ips); } } - plugin.rm.updateDisplay(player); + plugin.rankManager.updateDisplay(player); FUtil.adminAction(sender.getName(), "Verified " + player.getName() + ", without admin permissions.", true); player.setOp(true); msg(player, YOU_ARE_OP); - final FPlayer fPlayer = plugin.pl.getPlayer(player); - if (fPlayer.getFreezeData().isFrozen()) - { + final FPlayer fPlayer = plugin.playerList.getPlayer(player); + if (fPlayer.getFreezeData().isFrozen()) { fPlayer.getFreezeData().setFrozen(false); msg(player, "You have been unfrozen."); } msg("Verified " + player.getName() + " but didn't give them admin permissions", ChatColor.GREEN); - } - else - { + } else { msg(player.getName() + " is not an admin imposter.", ChatColor.RED); } @@ -72,15 +65,11 @@ public class Command_verifynoadmin extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { List adminImposters = new ArrayList<>(); - for (Player player : server.getOnlinePlayers()) - { - if (plugin.al.isAdminImpostor(player)) - { + for (Player player : server.getOnlinePlayers()) { + if (plugin.adminList.isAdminImpostor(player)) { adminImposters.add(player.getName()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vote.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VoteCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_vote.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/VoteCMD.java index 3f1df406..22d93879 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vote.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/VoteCMD.java @@ -1,6 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -10,22 +13,19 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.List; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Information on how to vote", usage = "/") -public class Command_vote extends FreedomCommand -{ +@CommandParameters(name = "vote", description = "Information on how to vote", usage = "/") +public class VoteCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { List voteInfo = ConfigEntry.VOTING_INFO.getStringList(); - if (voteInfo.isEmpty()) - { + if (voteInfo.isEmpty()) { msg("The voting information section of the config.yml file has not been configured.", ChatColor.RED); - } - else - { + } else { msg(FUtil.colorize(StringUtils.join(voteInfo, "\n"))); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WarnCMD.java similarity index 66% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/WarnCMD.java index 17be800f..bc539a5d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WarnCMD.java @@ -1,5 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.punishments.Punishment; import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -12,44 +16,36 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Warns the specified player.", usage = "/ [-q] ") -public class Command_warn extends FreedomCommand -{ +@CommandParameters(name = "warn", description = "Warns the specified player.", usage = "/ [-q] ") +public class WarnCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } boolean quiet = args[0].equalsIgnoreCase("-q"); - if (quiet) - { + if (quiet) { args = org.apache.commons.lang3.ArrayUtils.subarray(args, 1, args.length); - if (args.length < 1) - { + if (args.length < 1) { return false; } } Player player = getPlayer(args[0]); - if (player == null) - { + if (player == null) { msg(PLAYER_NOT_FOUND); return true; } - if (playerSender == player) - { + if (playerSender == player) { msg(ChatColor.RED + "Please, don't try to warn yourself."); return true; } - if (plugin.al.isAdmin(player)) - { + if (plugin.adminList.isAdmin(player)) { msg(ChatColor.RED + "You can not warn admins"); return true; } @@ -57,15 +53,12 @@ public class Command_warn extends FreedomCommand String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60); msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason); - plugin.pl.getPlayer(player).incrementWarnings(quiet); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason)); + plugin.playerList.getPlayer(player).incrementWarnings(quiet); + plugin.punishmentList.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason)); - if (quiet) - { + if (quiet) { msg("You have successfully warned " + player.getName() + " quietly."); - } - else - { + } else { String adminNotice = ChatColor.RED + sender.getName() + " - " + @@ -74,7 +67,7 @@ public class Command_warn extends FreedomCommand " - Reason: " + ChatColor.YELLOW + warnReason; - plugin.al.messageAllAdmins(adminNotice); + plugin.adminList.messageAllAdmins(adminNotice); msg("You have successfully warned " + player.getName() + "."); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WhitelistCMD.java similarity index 65% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/WhitelistCMD.java index b07356e7..08a6800d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WhitelistCMD.java @@ -1,34 +1,36 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.DepreciationAggregator; import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Manage the whitelist.", usage = "/ | remove | addall | purge>") -public class Command_whitelist extends FreedomCommand -{ +@CommandParameters(name = "whitelist", description = "Manage the whitelist.", usage = "/ | remove | addall | purge>") +public class WhitelistCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } // list - if (args[0].equalsIgnoreCase("list")) - { - if (server.getWhitelistedPlayers().isEmpty()) - { + if (args[0].equalsIgnoreCase("list")) { + if (server.getWhitelistedPlayers().isEmpty()) { msg("There are no whitelisted players."); return true; } @@ -37,20 +39,15 @@ public class Command_whitelist extends FreedomCommand } // count - if (args[0].equalsIgnoreCase("count")) - { + if (args[0].equalsIgnoreCase("count")) { int onlineWPs = 0; int offlineWPs = 0; int totalWPs = 0; - for (OfflinePlayer player : server.getWhitelistedPlayers()) - { - if (player.isOnline()) - { + for (OfflinePlayer player : server.getWhitelistedPlayers()) { + if (player.isOnline()) { onlineWPs++; - } - else - { + } else { offlineWPs++; } totalWPs++; @@ -66,26 +63,22 @@ public class Command_whitelist extends FreedomCommand checkRank(Rank.ADMIN); // on - if (args[0].equalsIgnoreCase("on")) - { + if (args[0].equalsIgnoreCase("on")) { FUtil.adminAction(sender.getName(), "Turning the whitelist on", true); server.setWhitelist(true); return true; } // off - if (args[0].equalsIgnoreCase("off")) - { + if (args[0].equalsIgnoreCase("off")) { FUtil.adminAction(sender.getName(), "Turning the whitelist off", true); server.setWhitelist(false); return true; } // add - if (args[0].equalsIgnoreCase("add")) - { - if (args.length < 2) - { + if (args[0].equalsIgnoreCase("add")) { + if (args.length < 2) { return false; } @@ -93,8 +86,7 @@ public class Command_whitelist extends FreedomCommand OfflinePlayer player = getPlayer(search_name); - if (player == null) - { + if (player == null) { player = DepreciationAggregator.getOfflinePlayer(server, search_name); } @@ -104,10 +96,8 @@ public class Command_whitelist extends FreedomCommand } // remove - if (args[0].equalsIgnoreCase("remove")) - { - if (args.length < 2) - { + if (args[0].equalsIgnoreCase("remove")) { + if (args.length < 2) { return false; } @@ -115,32 +105,25 @@ public class Command_whitelist extends FreedomCommand OfflinePlayer player = getPlayer(search_name); - if (player == null) - { + if (player == null) { player = DepreciationAggregator.getOfflinePlayer(server, search_name); } - if (player.isWhitelisted()) - { + if (player.isWhitelisted()) { FUtil.adminAction(sender.getName(), "Removing " + player.getName() + " from the whitelist", false); player.setWhitelisted(false); - } - else - { + } else { msg("That player is not whitelisted"); } return true; } // addall - if (args[0].equalsIgnoreCase("addall")) - { + if (args[0].equalsIgnoreCase("addall")) { FUtil.adminAction(sender.getName(), "Adding all online players to the whitelist", false); int counter = 0; - for (Player player : server.getOnlinePlayers()) - { - if (!player.isWhitelisted()) - { + for (Player player : server.getOnlinePlayers()) { + if (!player.isWhitelisted()) { player.setWhitelisted(true); counter++; } @@ -155,39 +138,29 @@ public class Command_whitelist extends FreedomCommand checkRank(Rank.ADMIN); // purge - if (args[0].equalsIgnoreCase("purge")) - { + if (args[0].equalsIgnoreCase("purge")) { FUtil.adminAction(sender.getName(), "Removing all players from the whitelist", false); - msg("Removed " + plugin.si.purgeWhitelist() + " players from the whitelist."); + msg("Removed " + plugin.serverInterface.purgeWhitelist() + " players from the whitelist."); return true; } return false; } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { List arguments = new ArrayList<>(Arrays.asList("list", "count")); - if (plugin.al.isAdmin(sender)) - { + if (plugin.adminList.isAdmin(sender)) { arguments.addAll(Arrays.asList("on", "off", "add", "remove", "addall")); - if (!(sender instanceof Player)) - { + if (!(sender instanceof Player)) { arguments.add("purge"); } } return arguments; - } - else if (args.length == 2 && plugin.al.isAdmin(sender)) - { - if (args[0].equals("add")) - { + } else if (args.length == 2 && plugin.adminList.isAdmin(sender)) { + if (args[0].equals("add")) { return FUtil.getPlayerList(); - } - else if (args[0].equals("remove")) - { + } else if (args[0].equals("remove")) { return getWhitelistedNames(); } } @@ -195,13 +168,7 @@ public class Command_whitelist extends FreedomCommand return Collections.emptyList(); } - public List getWhitelistedNames() - { - List names = new ArrayList<>(); - for (Object name : plugin.si.getWhitelisted()) - { - names.add(String.valueOf(name)); - } - return names; + public List getWhitelistedNames() { + return Bukkit.getWhitelistedPlayers().stream().map(OfflinePlayer::getName).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WhoHasCMD.java similarity index 57% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/WhoHasCMD.java index ac819030..f480f010 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WhoHasCMD.java @@ -1,8 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -11,26 +12,25 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "See who has an item and optionally clear the specified item.", usage = "/ [clear]", aliases = "wh") -public class Command_whohas extends FreedomCommand -{ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; - public static List getAllMaterials() - { +@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) +@CommandParameters(name = "whohas", description = "See who has an item and optionally clear the specified item.", usage = "/ [clear]", aliases = "wh") +public class WhoHasCMD extends FreedomCommand { + + public static List getAllMaterials() { List names = new ArrayList<>(); - for (Material material : Material.values()) - { + for (Material material : Material.values()) { names.add(material.name()); } return names; } @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length < 1) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length < 1) { return false; } @@ -39,39 +39,30 @@ public class Command_whohas extends FreedomCommand final String materialName = args[0]; Material material = Material.matchMaterial(materialName); - if (material == null) - { + if (material == null) { msg("Invalid item: " + materialName, ChatColor.RED); return true; } final List players = new ArrayList<>(); - for (final Player player : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(sender) && plugin.al.isVanished(player.getName())) - { + for (final Player player : server.getOnlinePlayers()) { + if (!plugin.adminList.isAdmin(sender) && plugin.adminList.isVanished(player.getName())) { continue; } - if (player.getInventory().contains(material)) - { + if (player.getInventory().contains(material)) { players.add(player.getName()); - if (plugin.al.isAdmin(sender)) - { - if (doClear && !plugin.al.isAdmin(player)) - { + if (plugin.adminList.isAdmin(sender)) { + if (doClear && !plugin.adminList.isAdmin(player)) { player.getInventory().remove(material); } } } } - if (players.isEmpty()) - { + if (players.isEmpty()) { msg("There are no players with that item"); - } - else - { + } else { msg("Players with item " + material.name() + ": " + StringUtils.join(players, ", ")); } @@ -79,15 +70,12 @@ public class Command_whohas extends FreedomCommand } @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { + if (args.length == 1) { return getAllMaterials(); } - if (args.length == 2 && plugin.al.isAdmin(sender)) - { + if (args.length == 2 && plugin.adminList.isAdmin(sender)) { return Collections.singletonList("clear"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WildCardCMD.java similarity index 61% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/impl/WildCardCMD.java index a4d74e4c..dc90e9b0 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/impl/WildCardCMD.java @@ -1,9 +1,9 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +package me.totalfreedom.totalfreedommod.command.impl; +import me.totalfreedom.totalfreedommod.command.input.CommandParameters; +import me.totalfreedom.totalfreedommod.command.input.CommandPermissions; +import me.totalfreedom.totalfreedommod.command.FreedomCommand; +import me.totalfreedom.totalfreedommod.command.input.SourceType; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; @@ -12,44 +12,40 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Run any command on all users, username placeholder = ?.", usage = "/ [fluff] ? [fluff] ?") -public class Command_wildcard extends FreedomCommand -{ +@CommandParameters(name = "wildcard", description = "Run any command on all users, username placeholder = ?.", usage = "/ [fluff] ? [fluff] ?") +public class WildCardCMD extends FreedomCommand { @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + if (args.length == 0) { return false; } Command runCmd = server.getPluginCommand(args[0]); - FreedomCommand fCmd = plugin.cl.getByName(args[0]); - boolean alias = plugin.cl.isAlias(args[0]); - if (runCmd == null && fCmd == null && !alias) - { + FreedomCommand fCmd = plugin.commandLoader.getByName(args[0]); + boolean alias = plugin.commandLoader.isAlias(args[0]); + if (runCmd == null && fCmd == null && !alias) { msg("Unknown command: " + args[0], ChatColor.RED); return true; } List aliases = new ArrayList<>(); - if (runCmd != null) - { + if (runCmd != null) { aliases = runCmd.getAliases(); } - if (fCmd != null) - { + if (fCmd != null) { aliases = Arrays.asList(fCmd.getAliases().split(",")); } - for (String blockedCommand : ConfigEntry.WILDCARD_BLOCKED_COMMANDS.getStringList()) - { - if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand)) - { + for (String blockedCommand : ConfigEntry.WILDCARD_BLOCKED_COMMANDS.getStringList()) { + if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand)) { msg("Did you really think that was going to work?", ChatColor.RED); return true; } @@ -57,14 +53,12 @@ public class Command_wildcard extends FreedomCommand String baseCommand = StringUtils.join(args, " "); - if (plugin.cb.isCommandBlocked(baseCommand, sender)) - { + if (plugin.commandBlocker.isCommandBlocked(baseCommand, sender)) { // CommandBlocker handles messages and broadcasts return true; } - for (Player player : server.getOnlinePlayers()) - { + for (Player player : server.getOnlinePlayers()) { String runCommand = baseCommand.replaceAll("\\x3f", player.getName()); msg("Running Command: " + runCommand); server.dispatchCommand(sender, runCommand); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandParameters.java b/src/main/java/me/totalfreedom/totalfreedommod/command/input/CommandParameters.java similarity index 68% rename from src/main/java/me/totalfreedom/totalfreedommod/command/CommandParameters.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/input/CommandParameters.java index bae0e188..2aa40377 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandParameters.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/input/CommandParameters.java @@ -1,11 +1,12 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.input; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) -public @interface CommandParameters -{ +public @interface CommandParameters { + + String name(); String description(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java b/src/main/java/me/totalfreedom/totalfreedommod/command/input/CommandPermissions.java similarity index 78% rename from src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/input/CommandPermissions.java index 3db48004..a205a921 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/input/CommandPermissions.java @@ -1,12 +1,12 @@ -package me.totalfreedom.totalfreedommod.command; +package me.totalfreedom.totalfreedommod.command.input; + +import me.totalfreedom.totalfreedommod.rank.Rank; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import me.totalfreedom.totalfreedommod.rank.Rank; @Retention(RetentionPolicy.RUNTIME) -public @interface CommandPermissions -{ +public @interface CommandPermissions { Rank level() default Rank.NON_OP; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/input/SourceType.java b/src/main/java/me/totalfreedom/totalfreedommod/command/input/SourceType.java new file mode 100644 index 00000000..39ec6396 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/input/SourceType.java @@ -0,0 +1,5 @@ +package me.totalfreedom.totalfreedommod.command.input; + +public enum SourceType { + ONLY_IN_GAME, ONLY_CONSOLE, BOTH +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/MainConfig.java b/src/main/java/me/totalfreedom/totalfreedommod/config/MainConfig.java index e3569923..b9d2f11b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/MainConfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/MainConfig.java @@ -6,14 +6,14 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.EnumMap; import java.util.List; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.util.FLog; import org.apache.commons.io.FileUtils; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -public class MainConfig extends FreedomService +public class MainConfig extends AbstractService { public static final String CONFIG_FILENAME = "config.yml"; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java index 484d6016..3ab92dad 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java @@ -16,7 +16,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.security.auth.login.LoginException; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; @@ -53,7 +53,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.jetbrains.annotations.NotNull; -public class Discord extends FreedomService +public class Discord extends AbstractService { public static HashMap LINK_CODES = new HashMap<>(); @@ -238,7 +238,7 @@ public class Discord extends FreedomService public void sendPteroInfo(PlayerData playerData, String username, String password) { User user = getUser(playerData.getDiscordID()); - String message = "The following are your Pterodactyl details:\n\nUsername: " + username + "\nPassword: " + password + "\n\nYou can connect to the panel at " + plugin.ptero.URL; + String message = "The following are your Pterodactyl details:\n\nUsername: " + username + "\nPassword: " + password + "\n\nYou can connect to the panel at " + plugin.pterodactyl.URL; PrivateChannel privateChannel = user.openPrivateChannel().complete(); privateChannel.sendMessage(message).complete(); } @@ -274,7 +274,7 @@ public class Discord extends FreedomService PrivateChannel privateChannel = user.openPrivateChannel().complete(); privateChannel.sendMessage("Do not share these codes with anyone as they can be used to impose as you.").addFile(file).complete(); playerData.setBackupCodes(encryptedCodes); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); //noinspection ResultOfMethodCallIgnored file.delete(); return true; @@ -378,7 +378,7 @@ public class Discord extends FreedomService @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { - if (!plugin.al.isVanished(event.getPlayer().getName())) + if (!plugin.adminList.isVanished(event.getPlayer().getName())) { messageChatChannel("**" + event.getPlayer().getName() + " joined the server" + "**"); } @@ -387,7 +387,7 @@ public class Discord extends FreedomService @EventHandler(priority = EventPriority.MONITOR) public void onPlayerLeave(PlayerQuitEvent event) { - if (!plugin.al.isVanished(event.getPlayer().getName())) + if (!plugin.adminList.isVanished(event.getPlayer().getName())) { messageChatChannel("**" + event.getPlayer().getName() + " left the server" + "**"); } @@ -518,7 +518,7 @@ public class Discord extends FreedomService String location = "World: " + Objects.requireNonNull(reported.getLocation().getWorld()).getName() + ", X: " + reported.getLocation().getBlockX() + ", Y: " + reported.getLocation().getBlockY() + ", Z: " + reported.getLocation().getBlockZ(); embedBuilder.addField("Location", location, true); embedBuilder.addField("Game Mode", WordUtils.capitalizeFully(reported.getGameMode().name()), true); - com.earth2me.essentials.User user = plugin.esb.getEssentialsUser(reported.getName()); + com.earth2me.essentials.User user = plugin.essentialsBridge.getEssentialsUser(reported.getName()); embedBuilder.addField("God Mode", WordUtils.capitalizeFully(String.valueOf(user.isGodModeEnabled())), true); if (user.getNickname() != null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java index 4e0ff6fb..d48cb946 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java @@ -54,13 +54,13 @@ public class DiscordToAdminChatListener extends ListenerAdapter } FLog.info(logmessage.toString()); - Bukkit.getOnlinePlayers().stream().filter(player -> TotalFreedomMod.getPlugin().al.isAdmin(player)).forEach(player -> + Bukkit.getOnlinePlayers().stream().filter(player -> TotalFreedomMod.getPlugin().adminList.isAdmin(player)).forEach(player -> { StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET); ComponentBuilder builder = new ComponentBuilder(message.toString()); - Admin admin = TotalFreedomMod.getPlugin().al.getAdmin(player); + Admin admin = TotalFreedomMod.getPlugin().adminList.getAdmin(player); String format = admin.getAcFormat(); if (!Strings.isNullOrEmpty(format)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java index f4adf0d9..79dc2f60 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java @@ -84,7 +84,7 @@ public class DiscordToMinecraftListener extends ListenerAdapter for (Player player : Bukkit.getOnlinePlayers()) { - if (TotalFreedomMod.getPlugin().pl.getData(player).doesDisplayDiscord()) + if (TotalFreedomMod.getPlugin().playerList.getData(player).doesDisplayDiscord()) { player.spigot().sendMessage(components); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java index aee47a51..fcf27694 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java @@ -24,13 +24,13 @@ public class PrivateMessageListener extends ListenerAdapter player.setDiscordID(event.getMessage().getAuthor().getId()); player.setVerification(true); - Admin admin = TotalFreedomMod.getPlugin().al.getEntryByName(name); + Admin admin = TotalFreedomMod.getPlugin().adminList.getEntryByName(name); if (admin != null) { Discord.syncRoles(admin, player.getDiscordID()); } - TotalFreedomMod.getPlugin().pl.save(player); + TotalFreedomMod.getPlugin().playerList.save(player); Discord.LINK_CODES.remove(code); } else diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index 08ae5252..db89e1d7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -7,7 +7,7 @@ import java.util.Map; import java.util.Objects; import java.util.SplittableRandom; import java.util.UUID; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; @@ -45,7 +45,7 @@ import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -public class ItemFun extends FreedomService +public class ItemFun extends AbstractService { private final SplittableRandom random = new SplittableRandom(); @@ -101,11 +101,11 @@ public class ItemFun extends FreedomService Player player = event.getPlayer(); Entity entity = event.getRightClicked(); - FPlayer fPlayer = plugin.pl.getPlayer(player); + FPlayer fPlayer = plugin.playerList.getPlayer(player); if (player.getInventory().getItemInMainHand().getType().equals(Material.POTATO) || entity.getType().equals(EntityType.PLAYER)) { - if (plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.STACKING_POTATO, player.getInventory(), plugin.sh.getStackingPotato())) + if (plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.STACKING_POTATO, player.getInventory(), plugin.shop.getStackingPotato())) { if (entity instanceof Player) { @@ -155,7 +155,7 @@ public class ItemFun extends FreedomService return; } - if (!plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.STACKING_POTATO, player.getInventory(), plugin.sh.getStackingPotato())) + if (!plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.STACKING_POTATO, player.getInventory(), plugin.shop.getStackingPotato())) { return; } @@ -174,7 +174,7 @@ public class ItemFun extends FreedomService } final Player player = event.getPlayer(); - final FPlayer fPlayer = plugin.pl.getPlayer(player); + final FPlayer fPlayer = plugin.playerList.getPlayer(player); switch (event.getMaterial()) { @@ -200,7 +200,7 @@ public class ItemFun extends FreedomService case BLAZE_ROD: { - if (!plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.LIGHTNING_ROD, player.getInventory(), plugin.sh.getLightningRod())) + if (!plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.LIGHTNING_ROD, player.getInventory(), plugin.shop.getLightningRod())) { break; } @@ -224,7 +224,7 @@ public class ItemFun extends FreedomService case FIRE_CHARGE: { - if (!plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.FIRE_BALL, player.getInventory(), plugin.sh.getFireBall())) + if (!plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.FIRE_BALL, player.getInventory(), plugin.shop.getFireBall())) { break; } @@ -248,13 +248,13 @@ public class ItemFun extends FreedomService final int RADIUS_HIT = 5; final int STRENGTH = 4; - if (plugin.lp.CLOWNFISH_TOGGLE.contains(player.getName())) + if (plugin.loginProcess.CLOWNFISH_TOGGLE.contains(player.getName())) { player.sendMessage(ChatColor.GRAY + "An admin has disabled your ability to use clownfish."); break; } - if (!plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.CLOWN_FISH, player.getInventory(), plugin.sh.getClownFish())) + if (!plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.CLOWN_FISH, player.getInventory(), plugin.shop.getClownFish())) { break; } @@ -319,7 +319,7 @@ public class ItemFun extends FreedomService if (entity instanceof EnderPearl && entity.getShooter() instanceof Player) { Player player = (Player)entity.getShooter(); - if (plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.RIDEABLE_PEARL, player.getInventory(), plugin.sh.getRideablePearl())) + if (plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.RIDEABLE_PEARL, player.getInventory(), plugin.shop.getRideablePearl())) { entity.addPassenger(player); } @@ -377,10 +377,10 @@ public class ItemFun extends FreedomService public void onFish(PlayerFishEvent event) { Player player = event.getPlayer(); - PlayerData data = plugin.pl.getData(player); + PlayerData data = plugin.playerList.getData(player); PlayerInventory inv = event.getPlayer().getInventory(); ItemStack rod = inv.getItemInMainHand(); - if (plugin.sh.isRealItem(plugin.pl.getData(player), ShopItem.GRAPPLING_HOOK, player.getInventory(), plugin.sh.getGrapplingHook())) + if (plugin.shop.isRealItem(plugin.playerList.getData(player), ShopItem.GRAPPLING_HOOK, player.getInventory(), plugin.shop.getGrapplingHook())) { if (event.getState() == PlayerFishEvent.State.REEL_IN || event.getState() == PlayerFishEvent.State.IN_GROUND) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java index 2341272b..639e4da1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java @@ -4,7 +4,7 @@ import com.google.common.collect.Maps; import java.util.HashMap; import java.util.Map; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -13,7 +13,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.util.Vector; -public class Jumppads extends FreedomService +public class Jumppads extends AbstractService { public static final double DAMPING_COEFFICIENT = 0.8; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java index fc249df9..31678219 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java @@ -3,7 +3,7 @@ package me.totalfreedom.totalfreedommod.fun; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import org.bukkit.GameMode; import org.bukkit.Location; @@ -15,7 +15,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.util.Vector; -public class Landminer extends FreedomService +public class Landminer extends AbstractService { private final List landmines = new ArrayList<>(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/MP44.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/MP44.java index 33e631eb..e55eb84d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/MP44.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/MP44.java @@ -1,11 +1,11 @@ package me.totalfreedom.totalfreedommod.fun; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerQuitEvent; -public class MP44 extends FreedomService +public class MP44 extends AbstractService { @Override public void onStart() @@ -20,6 +20,6 @@ public class MP44 extends FreedomService @EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(PlayerQuitEvent event) { - plugin.pl.getPlayer(event.getPlayer()).disarmMP44(); + plugin.playerList.getPlayer(event.getPlayer()).disarmMP44(); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java index e603b242..4901d76b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java @@ -6,7 +6,7 @@ import java.util.Set; import java.util.SplittableRandom; import java.util.UUID; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.shop.ShopItem; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.Location; @@ -18,7 +18,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; -public class Trailer extends FreedomService +public class Trailer extends AbstractService { private final SplittableRandom random = new SplittableRandom(); private final Set trailPlayers = new HashSet<>(); // player UUID @@ -44,9 +44,9 @@ public class Trailer extends FreedomService */ if (trailPlayers.isEmpty() || !trailPlayers.contains(event.getPlayer().getUniqueId()) - || !plugin.pl.getData(event.getPlayer()).hasItem(ShopItem.RAINBOW_TRAIL) - || plugin.wr.doRestrict(event.getPlayer()) - || !plugin.wgb.canEditCurrentWorld(event.getPlayer())) + || !plugin.playerList.getData(event.getPlayer()).hasItem(ShopItem.RAINBOW_TRAIL) + || plugin.worldRestrictions.doRestrict(event.getPlayer()) + || !plugin.worldGuardBridge.canEditCurrentWorld(event.getPlayer())) { return; } @@ -72,9 +72,9 @@ public class Trailer extends FreedomService { final Location trail_pos; trail_pos = new Location(event.getPlayer().getWorld(), fromBlock.getX() + x, fromBlock.getY(), fromBlock.getZ() + z); - if (trailPlayers.contains(event.getPlayer().getUniqueId()) && plugin.cpb.isEnabled()) + if (trailPlayers.contains(event.getPlayer().getUniqueId()) && plugin.coreProtectBridge.isEnabled()) { - plugin.cpb.getCoreProtectAPI().logPlacement(event.getPlayer().getName(), trail_pos, material, data); + plugin.coreProtectBridge.getCoreProtectAPI().logPlacement(event.getPlayer().getName(), trail_pos, material, data); } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTMLGenerationTools.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTMLGenerationTools.java index b682e8cc..34f81ef7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTMLGenerationTools.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTMLGenerationTools.java @@ -1,19 +1,20 @@ package me.totalfreedom.totalfreedommod.httpd; +import org.apache.commons.lang.StringEscapeUtils; + import java.util.Collection; import java.util.Map; -import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; public class HTMLGenerationTools { public static String paragraph(String data) { - return "

" + escapeHtml4(data) + "

\r\n"; + return "

" + StringEscapeUtils.escapeHtml(data) + "

\r\n"; } public static String heading(String data, int level) { - return "" + escapeHtml4(data) + "\r\n"; + return "" + StringEscapeUtils.escapeHtml(data) + "\r\n"; } public static String list(Map map) @@ -24,7 +25,7 @@ public class HTMLGenerationTools for (Map.Entry entry : map.entrySet()) { - output.append("
  • ").append(escapeHtml4(entry.getKey().toString() + " = " + entry.getValue().toString())).append("
  • \r\n"); + output.append("
  • ").append(StringEscapeUtils.escapeHtml(entry.getKey().toString() + " = " + entry.getValue().toString())).append("
  • \r\n"); } output.append("\r\n"); @@ -40,7 +41,7 @@ public class HTMLGenerationTools for (T entry : list) { - output.append("
  • ").append(escapeHtml4(entry.toString())).append("
  • \r\n"); + output.append("
  • ").append(StringEscapeUtils.escapeHtml(entry.toString())).append("
  • \r\n"); } output.append("\r\n"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTTPDaemon.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTTPDaemon.java index 177df52a..c965dbdd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTTPDaemon.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/HTTPDaemon.java @@ -7,7 +7,7 @@ import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.Response; import me.totalfreedom.totalfreedommod.httpd.module.HTTPDModule; @@ -29,7 +29,7 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.exception.ExceptionUtils; -public class HTTPDaemon extends FreedomService +public class HTTPDaemon extends AbstractService { private static final Pattern EXT_REGEX = Pattern.compile("\\.([^.\\s]+)$"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/HTTPDModule.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/HTTPDModule.java index 4ea99cef..0cd5fad9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/HTTPDModule.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/HTTPDModule.java @@ -3,14 +3,14 @@ package me.totalfreedom.totalfreedommod.httpd.module; import java.net.Socket; import java.util.HashMap; import java.util.Map; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.httpd.HTTPDPageBuilder; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.HTTPSession; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.Method; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.Response; import me.totalfreedom.totalfreedommod.util.FLog; -public abstract class HTTPDModule extends FreedomService +public abstract class HTTPDModule extends AbstractService { protected final String uri; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_activitylog.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_activitylog.java index be224bb7..1641db33 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_activitylog.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_activitylog.java @@ -38,7 +38,7 @@ public class Module_activitylog extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin entry = plugin.al.getEntryByIp(remoteAddress); + Admin entry = plugin.adminList.getEntryByIp(remoteAddress); return entry != null && entry.isActive(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_admins.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_admins.java index f03da6bc..ddbfe437 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_admins.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_admins.java @@ -41,7 +41,7 @@ public class Module_admins extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin entry = plugin.al.getEntryByIp(remoteAddress); + Admin entry = plugin.adminList.getEntryByIp(remoteAddress); return entry != null && entry.isActive(); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_bans.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_bans.java index 182fb5a7..69ad7ec2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_bans.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_bans.java @@ -40,7 +40,7 @@ public class Module_bans extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin entry = plugin.al.getEntryByIp(remoteAddress); + Admin entry = plugin.adminList.getEntryByIp(remoteAddress); return entry != null && entry.isActive(); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_file.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_file.java index da43ca2c..b0ca948b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_file.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_file.java @@ -15,7 +15,7 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.httpd.HTTPDaemon; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.Response; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang.StringUtils; /* * This class was adapted from https://github.com/NanoHttpd/nanohttpd/blob/master/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java index d19849be..1820f2b6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java @@ -11,6 +11,7 @@ import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD; import me.totalfreedom.totalfreedommod.rank.Displayable; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandMap; @@ -18,7 +19,6 @@ import org.bukkit.command.PluginIdentifiableCommand; import org.bukkit.command.SimpleCommandMap; import static me.totalfreedom.totalfreedommod.httpd.HTMLGenerationTools.heading; import static me.totalfreedom.totalfreedommod.httpd.HTMLGenerationTools.paragraph; -import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; public class Module_help extends HTTPDModule { @@ -34,19 +34,19 @@ public class Module_help extends HTTPDModule sb.append( "
  • {$CMD_NAME} - Usage: {$CMD_USAGE}" - .replace("{$CMD_NAME}", escapeHtml4(command.getName().trim())) - .replace("{$CMD_USAGE}", escapeHtml4(command.getUsage().trim()))); + .replace("{$CMD_NAME}", StringEscapeUtils.escapeHtml(command.getName().trim())) + .replace("{$CMD_USAGE}", StringEscapeUtils.escapeHtml(command.getUsage().trim()))); if (!command.getAliases().isEmpty()) { sb.append( " - Aliases: {$CMD_ALIASES}" - .replace("{$CMD_ALIASES}", escapeHtml4(StringUtils.join(command.getAliases(), ", ")))); + .replace("{$CMD_ALIASES}", StringEscapeUtils.escapeHtml(StringUtils.join(command.getAliases(), ", ")))); } sb.append( "
    {$CMD_DESC}
  • \r\n" - .replace("{$CMD_DESC}", escapeHtml4(command.getDescription().trim()))); + .replace("{$CMD_DESC}", StringEscapeUtils.escapeHtml(command.getDescription().trim()))); return sb.toString(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_indefbans.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_indefbans.java index 6cb89393..0992bdd4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_indefbans.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_indefbans.java @@ -2,7 +2,7 @@ package me.totalfreedom.totalfreedommod.httpd.module; import java.io.File; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; +import me.totalfreedom.totalfreedommod.punishments.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.httpd.HTTPDaemon; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD; @@ -38,7 +38,7 @@ public class Module_indefbans extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin entry = plugin.al.getEntryByIp(remoteAddress); + Admin entry = plugin.adminList.getEntryByIp(remoteAddress); return entry != null && entry.isActive(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java index 33573926..c316a1b5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java @@ -38,7 +38,7 @@ public class Module_list extends HTTPDModule for (Player player : Bukkit.getOnlinePlayers()) { - if (plugin.al.isVanished(player.getName())) + if (plugin.adminList.isVanished(player.getName())) { continue; } @@ -48,7 +48,7 @@ public class Module_list extends HTTPDModule imposters.add(player.getName()); } - if (plugin.pl.getData(player).isMasterBuilder()) + if (plugin.playerList.getData(player).isMasterBuilder()) { masterbuilders.add(player.getName()); } @@ -68,14 +68,14 @@ public class Module_list extends HTTPDModule owners.add(player.getName()); } - if (!plugin.al.isAdmin(player) && hasSpecialTitle(player)) + if (!plugin.adminList.isAdmin(player) && hasSpecialTitle(player)) { operators.add(player.getName()); } - if (hasSpecialTitle(player) && plugin.al.isAdmin(player) && !plugin.al.isVanished(player.getName())) + if (hasSpecialTitle(player) && plugin.adminList.isAdmin(player) && !plugin.adminList.isVanished(player.getName())) { - Admin admin = plugin.al.getAdmin(player); + Admin admin = plugin.adminList.getAdmin(player); switch (admin.getRank()) { case ADMIN: @@ -127,11 +127,11 @@ public class Module_list extends HTTPDModule for (Player player : onlinePlayers) { - if (plugin.al.isVanished(player.getName())) + if (plugin.adminList.isVanished(player.getName())) { continue; } - String tag = plugin.rm.getDisplay(player).getTag(); + String tag = plugin.rankManager.getDisplay(player).getTag(); body.append("
  • ").append(tag).append(player.getName()).append("
  • \r\n"); } @@ -143,7 +143,7 @@ public class Module_list extends HTTPDModule public boolean isImposter(Player player) { - return plugin.al.isAdminImpostor(player) || plugin.pl.isPlayerImpostor(player); + return plugin.adminList.isAdminImpostor(player) || plugin.playerList.isPlayerImpostor(player); } public boolean hasSpecialTitle(Player player) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_logfile.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_logfile.java index e0a88031..8f6a9dfb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_logfile.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_logfile.java @@ -1,10 +1,5 @@ package me.totalfreedom.totalfreedommod.httpd.module; -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.httpd.HTMLGenerationTools; @@ -14,8 +9,14 @@ import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.Response; import me.totalfreedom.totalfreedommod.util.FLog; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringEscapeUtils; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.List; public class Module_logfile extends HTTPDModule { @@ -86,7 +87,7 @@ public class Module_logfile extends HTTPDModule final List LogFilesFormatted = new ArrayList<>(); for (File logfile : LogFiles) { - String filename = StringEscapeUtils.escapeHtml4(logfile.getName()); + String filename = StringEscapeUtils.escapeHtml(logfile.getName()); LogFilesFormatted.add("
  • " + filename + "
  • "); @@ -162,7 +163,7 @@ public class Module_logfile extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin entry = plugin.al.getEntryByIp(remoteAddress); + Admin entry = plugin.adminList.getEntryByIp(remoteAddress); return entry == null || !entry.isActive(); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java index 61f8b819..768e072e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java @@ -34,10 +34,10 @@ public class Module_players extends HTTPDModule // All online players for (Player player : Bukkit.getOnlinePlayers()) { - if (!plugin.al.isVanished(player.getName())) + if (!plugin.adminList.isVanished(player.getName())) { players.add(player.getName()); - if (plugin.al.isAdmin(player) && !plugin.al.isAdminImpostor(player)) + if (plugin.adminList.isAdmin(player) && !plugin.adminList.isAdminImpostor(player)) { onlineadmins.add(player.getName()); } @@ -45,7 +45,7 @@ public class Module_players extends HTTPDModule } // Admins - for (Admin admin : plugin.al.getActiveAdmins()) + for (Admin admin : plugin.adminList.getActiveAdmins()) { final String username = admin.getName(); switch (admin.getRank()) @@ -68,7 +68,7 @@ public class Module_players extends HTTPDModule } } - masterbuilders.addAll(plugin.pl.getMasterBuilderNames()); + masterbuilders.addAll(plugin.playerList.getMasterBuilderNames()); // Developers developers.addAll(FUtil.DEVELOPER_NAMES); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_punishments.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_punishments.java index 09adca04..93a5a78f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_punishments.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_punishments.java @@ -41,7 +41,7 @@ public class Module_punishments extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin entry = plugin.al.getEntryByIp(remoteAddress); + Admin entry = plugin.adminList.getEntryByIp(remoteAddress); return entry != null && entry.isActive(); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java index 808467c5..33285df2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java @@ -2,15 +2,6 @@ package me.totalfreedom.totalfreedommod.httpd.module; import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.httpd.HTMLGenerationTools; @@ -22,8 +13,14 @@ import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD.Response; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FLog; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringEscapeUtils; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.*; +import java.util.regex.Pattern; public class Module_schematic extends HTTPDModule { @@ -93,7 +90,7 @@ public class Module_schematic extends HTTPDModule final List schematicsFormatted = new ArrayList<>(); for (File schematic : schematics) { - String filename = StringEscapeUtils.escapeHtml4(schematic.getName()); + String filename = StringEscapeUtils.escapeHtml(schematic.getName()); if (SCHEMATIC_FILENAME_LC.matcher(filename.trim().toLowerCase()).find()) { @@ -223,7 +220,7 @@ public class Module_schematic extends HTTPDModule throw new SchematicTransferException("Schematic is too big (1mb max)."); } - if (plugin.web.getWorldEditPlugin() == null) + if (plugin.worldEditBridge.getWorldEditPlugin() == null) { throw new SchematicTransferException("WorldEdit is not on the server."); } @@ -287,8 +284,8 @@ public class Module_schematic extends HTTPDModule private boolean isAuthorized(String remoteAddress) { - Admin adminEntry = plugin.al.getEntryByIp(remoteAddress); - PlayerData data = plugin.pl.getDataByIp(remoteAddress); + Admin adminEntry = plugin.adminList.getEntryByIp(remoteAddress); + PlayerData data = plugin.playerList.getDataByIp(remoteAddress); return ((adminEntry != null && adminEntry.isActive()) || data != null && data.isMasterBuilder()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index 03e0c075..38fe2292 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -1,9 +1,9 @@ package me.totalfreedom.totalfreedommod.player; import me.totalfreedom.totalfreedommod.TotalFreedomMod; -import me.totalfreedom.totalfreedommod.caging.CageData; +import me.totalfreedom.totalfreedommod.punishments.caging.CageData; import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.freeze.FreezeData; +import me.totalfreedom.totalfreedommod.punishments.freeze.FreezeData; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -15,6 +15,7 @@ import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import java.util.ArrayList; +import java.util.Date; import java.util.List; public class FPlayer @@ -71,6 +72,8 @@ public class FPlayer private boolean invSee = false; + private Date currentSessionStart; + public FPlayer(TotalFreedomMod plugin, Player player) { this(plugin, player.getName(), FUtil.getIp(player)); @@ -294,7 +297,7 @@ public class FPlayer public void setMuted(boolean muted, int minutes) { FUtil.cancel(unmuteTask); - plugin.mu.MUTED_PLAYERS.remove(getPlayer().getName()); + plugin.muter.MUTED_PLAYERS.remove(getPlayer().getName()); unmuteTask = null; if (!muted) @@ -307,7 +310,7 @@ public class FPlayer return; } - plugin.mu.MUTED_PLAYERS.add(getPlayer().getName()); + plugin.muter.MUTED_PLAYERS.add(getPlayer().getName()); // TODO: Simplify this into a Consumer lambda? unmuteTask = new BukkitRunnable() @@ -323,7 +326,7 @@ public class FPlayer else { FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getName(), false); - plugin.mu.MUTED_PLAYERS.remove(getName()); + plugin.muter.MUTED_PLAYERS.remove(getName()); } } }.runTaskLater(plugin, minutes * (60L * 20L)); @@ -448,6 +451,10 @@ public class FPlayer } } + public void setCurrentSessionStart(Date currentSessionStart) { + this.currentSessionStart = currentSessionStart; + } + public TotalFreedomMod getPlugin() { return plugin; @@ -698,6 +705,10 @@ public class FPlayer this.invSee = invSee; } + public Date getCurrentSessionStart() { + return currentSessionStart; + } + private static class ArrowShooter extends BukkitRunnable { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java index 942f9db4..20f2c77a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java @@ -45,6 +45,11 @@ public class PlayerData private Boolean inspect = false; public PlayerData(ResultSet resultSet) + { + this(resultSet, true); + } + + public PlayerData(ResultSet resultSet, boolean cache) { try { @@ -77,12 +82,12 @@ public class PlayerData if (masterBuilder && !verification) { verification = true; - TotalFreedomMod.getPlugin().pl.save(this); + if (cache) TotalFreedomMod.getPlugin().playerList.save(this); } else if (!masterBuilder && discordID == null && verification) { this.verification = false; - TotalFreedomMod.getPlugin().pl.save(this); + if (cache) TotalFreedomMod.getPlugin().playerList.save(this); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java index 222e54d2..963194fe 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java @@ -8,7 +8,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -17,7 +17,7 @@ import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; -public class PlayerList extends FreedomService +public class PlayerList extends AbstractService { public final Map playerMap = Maps.newHashMap(); // ip,dataMap @@ -81,7 +81,7 @@ public class PlayerList extends FreedomService public List getMasterBuilderNames() { List masterBuilders = new ArrayList<>(); - for (PlayerData playerData : plugin.pl.dataMap.values()) + for (PlayerData playerData : plugin.playerList.dataMap.values()) { if (playerData.isMasterBuilder()) { @@ -103,7 +103,7 @@ public class PlayerList extends FreedomService public boolean isTelnetMasterBuilder(PlayerData playerData) { - Admin admin = plugin.al.getEntryByName(playerData.getName()); + Admin admin = plugin.adminList.getEntryByName(playerData.getName()); return admin != null && admin.getRank().isAtLeast(Rank.ADMIN) && playerData.isMasterBuilder(); } @@ -144,15 +144,15 @@ public class PlayerList extends FreedomService public Boolean isPlayerImpostor(Player player) { PlayerData playerData = getData(player); - return plugin.dc.enabled - && !plugin.al.isAdmin(player) + return plugin.discord.enabled + && !plugin.adminList.isAdmin(player) && (playerData.hasVerification()) && !playerData.getIps().contains(FUtil.getIp(player)); } - public boolean IsImpostor(Player player) + public boolean isImpostor(Player player) { - return isPlayerImpostor(player) || plugin.al.isAdminImpostor(player); + return isPlayerImpostor(player) || plugin.adminList.isAdminImpostor(player); } public void verify(Player player, String backupCode) @@ -166,16 +166,16 @@ public class PlayerList extends FreedomService playerData.addIp(FUtil.getIp(player)); save(playerData); - if (plugin.al.isAdminImpostor(player)) + if (plugin.adminList.isAdminImpostor(player)) { - Admin admin = plugin.al.getEntryByName(player.getName()); + Admin admin = plugin.adminList.getEntryByName(player.getName()); admin.setLastLogin(new Date()); admin.addIp(FUtil.getIp(player)); - plugin.al.updateTables(); - plugin.al.save(admin); + plugin.adminList.updateTables(); + plugin.adminList.save(admin); } - plugin.rm.updateDisplay(player); + plugin.rankManager.updateDisplay(player); } public void syncIps(Admin admin) @@ -183,19 +183,19 @@ public class PlayerList extends FreedomService PlayerData playerData = getData(admin.getName()); playerData.clearIps(); playerData.addIps(admin.getIps()); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); } public void syncIps(PlayerData playerData) { - Admin admin = plugin.al.getEntryByName(playerData.getName()); + Admin admin = plugin.adminList.getEntryByName(playerData.getName()); if (admin != null && admin.isActive()) { admin.clearIPs(); admin.addIps(playerData.getIps()); - plugin.al.updateTables(); - plugin.al.save(admin); + plugin.adminList.updateTables(); + plugin.adminList.save(admin); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java b/src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionConfig.java similarity index 90% rename from src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java rename to src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionConfig.java index c49faa66..0b476e24 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionConfig.java @@ -1,18 +1,19 @@ -package me.totalfreedom.totalfreedommod.permissions; +package me.totalfreedom.totalfreedommod.player.permissions; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; import java.util.EnumMap; import java.util.List; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; -import org.apache.commons.io.FileUtils; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -public class PermissionConfig extends FreedomService +public class PermissionConfig extends AbstractService { public static final String PERMISSIONS_FILENAME = "permissions.yml"; // @@ -144,7 +145,9 @@ public class PermissionConfig extends FreedomService { try (InputStream defaultConfig = getDefaultConfig()) { - FileUtils.copyInputStreamToFile(defaultConfig, targetFile); + Files.copy(defaultConfig, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + //TODO: Unsure if this is the correct usage ^ + //FileUtils.copyInputStreamToFile(defaultConfig, targetFile); } } catch (IOException ex) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionEntry.java similarity index 92% rename from src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java rename to src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionEntry.java index 08b16351..13f0bf02 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionEntry.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.permissions; +package me.totalfreedom.totalfreedommod.player.permissions; import java.util.List; import me.totalfreedom.totalfreedommod.TotalFreedomMod; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java b/src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionManager.java similarity index 88% rename from src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java rename to src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionManager.java index 31a32655..375d5c38 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/permissions/PermissionManager.java @@ -1,21 +1,18 @@ -package me.totalfreedom.totalfreedommod.permissions; +package me.totalfreedom.totalfreedommod.player.permissions; import com.google.common.collect.Maps; import java.util.List; import java.util.Map; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; 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 org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachmentInfo; -public class PermissionManager extends FreedomService +public class PermissionManager extends AbstractService { public Map> permissions = Maps.newHashMap(); @@ -85,7 +82,7 @@ public class PermissionManager extends FreedomService } } } - List nodes = permissions.get(plugin.rm.getRank(player)); + List nodes = permissions.get(plugin.rankManager.getRank(player)); if (nodes != null) { for (String node : nodes) @@ -94,7 +91,7 @@ public class PermissionManager extends FreedomService } } - if (plugin.pl.getData(player).isMasterBuilder() && !plugin.al.isAdmin(player)) + if (plugin.playerList.getData(player).isMasterBuilder() && !plugin.adminList.isAdmin(player)) { if (nodes != null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentList.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentList.java index b18952cb..86566d8a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentList.java @@ -5,11 +5,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Set; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.util.FLog; -public class PunishmentList extends FreedomService +public class PunishmentList extends AbstractService { public static final String CONFIG_FILENAME = "punishments.yml"; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/Ban.java similarity index 99% rename from src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/Ban.java index 42871f45..4adaf417 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/Ban.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.banning; +package me.totalfreedom.totalfreedommod.punishments.banning; import com.google.common.collect.Lists; import java.text.SimpleDateFormat; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/BanManager.java similarity index 97% rename from src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/BanManager.java index 03b6465a..a31d93b6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/BanManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/BanManager.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.banning; +package me.totalfreedom.totalfreedommod.punishments.banning; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -13,7 +13,7 @@ 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.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -23,7 +23,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; -public class BanManager extends FreedomService +public class BanManager extends AbstractService { private final Set bans = Sets.newHashSet(); @@ -265,7 +265,7 @@ public class BanManager extends FreedomService { final Player player = event.getPlayer(); - if (!plugin.al.isAdmin(player)) + if (!plugin.adminList.isAdmin(player)) { return; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/IndefiniteBan.java similarity index 96% rename from src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/IndefiniteBan.java index ba80fa8f..95abdcab 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/IndefiniteBan.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.banning; +package me.totalfreedom.totalfreedommod.punishments.banning; import com.google.common.collect.Lists; import java.util.List; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBanList.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/IndefiniteBanList.java similarity index 96% rename from src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBanList.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/IndefiniteBanList.java index 0ea5b73b..2f6d9a81 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBanList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/banning/IndefiniteBanList.java @@ -1,10 +1,10 @@ -package me.totalfreedom.totalfreedommod.banning; +package me.totalfreedom.totalfreedommod.punishments.banning; import com.google.common.base.Strings; import com.google.common.collect.Sets; import java.util.Set; import java.util.UUID; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.util.FLog; @@ -15,7 +15,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerLoginEvent; -public class IndefiniteBanList extends FreedomService +public class IndefiniteBanList extends AbstractService { public static final String CONFIG_FILENAME = "indefinitebans.yml"; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/caging/CageData.java similarity index 99% rename from src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/caging/CageData.java index aab5299c..0425a8b4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/caging/CageData.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.caging; +package me.totalfreedom.totalfreedommod.punishments.caging; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/caging/Cager.java similarity index 82% rename from src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/caging/Cager.java index d520f7ba..00f081ed 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/caging/Cager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/caging/Cager.java @@ -1,8 +1,8 @@ -package me.totalfreedom.totalfreedommod.caging; +package me.totalfreedom.totalfreedommod.punishments.caging; import io.papermc.lib.PaperLib; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -16,7 +16,7 @@ import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; -public class Cager extends FreedomService +public class Cager extends AbstractService { @Override public void onStart() @@ -32,12 +32,12 @@ public class Cager extends FreedomService public void onBreakBlock(BlockBreakEvent event) { Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { return; } - FPlayer fPlayer = plugin.pl.getPlayer(event.getPlayer()); + FPlayer fPlayer = plugin.playerList.getPlayer(event.getPlayer()); CageData cage = fPlayer.getCageData(); if (cage.isCaged()) @@ -49,7 +49,7 @@ public class Cager extends FreedomService @EventHandler public void onPlayerMove(PlayerMoveEvent event) { - FPlayer player = plugin.pl.getPlayer(event.getPlayer()); + FPlayer player = plugin.playerList.getPlayer(event.getPlayer()); CageData cage = player.getCageData(); if (!cage.isCaged()) @@ -81,7 +81,7 @@ public class Cager extends FreedomService @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerQuit(PlayerQuitEvent event) { - FPlayer player = plugin.pl.getPlayer(event.getPlayer()); + FPlayer player = plugin.playerList.getPlayer(event.getPlayer()); CageData cage = player.getCageData(); if (cage.isCaged()) @@ -93,7 +93,7 @@ public class Cager extends FreedomService @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerKick(PlayerKickEvent event) { - FPlayer player = plugin.pl.getPlayer(event.getPlayer()); + FPlayer player = plugin.playerList.getPlayer(event.getPlayer()); CageData cage = player.getCageData(); if (cage.isCaged()) @@ -105,7 +105,7 @@ public class Cager extends FreedomService @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerJoin(PlayerJoinEvent event) { - FPlayer player = plugin.pl.getPlayer(event.getPlayer()); + FPlayer player = plugin.playerList.getPlayer(event.getPlayer()); CageData cage = player.getCageData(); if (cage.isCaged()) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/freeze/FreezeData.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/freeze/FreezeData.java similarity index 89% rename from src/main/java/me/totalfreedom/totalfreedommod/freeze/FreezeData.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/freeze/FreezeData.java index bb03caaf..73c93a98 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/freeze/FreezeData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/freeze/FreezeData.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.freeze; +package me.totalfreedom.totalfreedommod.punishments.freeze; import java.util.Objects; import me.totalfreedom.totalfreedommod.player.FPlayer; @@ -61,7 +61,7 @@ public class FreezeData @Override public void run() { - if (!Objects.requireNonNull(plugin()).al.isAdminImpostor(player) && Objects.requireNonNull(plugin()).pl.isPlayerImpostor(player)) + if (!Objects.requireNonNull(plugin()).adminList.isAdminImpostor(player) && Objects.requireNonNull(plugin()).playerList.isPlayerImpostor(player)) { FUtil.adminAction("TotalFreedom", "Unfreezing " + player.getName(), false); setFrozen(false); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/freeze/Freezer.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/freeze/Freezer.java similarity index 75% rename from src/main/java/me/totalfreedom/totalfreedommod/freeze/Freezer.java rename to src/main/java/me/totalfreedom/totalfreedommod/punishments/freeze/Freezer.java index cb0a33f9..bf28f6a5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/freeze/Freezer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/freeze/Freezer.java @@ -1,6 +1,6 @@ -package me.totalfreedom.totalfreedommod.freeze; +package me.totalfreedom.totalfreedommod.punishments.freeze; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -8,7 +8,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; -public class Freezer extends FreedomService +public class Freezer extends AbstractService { private boolean globalFreeze = false; @@ -30,7 +30,7 @@ public class Freezer extends FreedomService for (Player player : server.getOnlinePlayers()) { - plugin.pl.getPlayer(player).getFreezeData().setFrozen(false); + plugin.playerList.getPlayer(player).getFreezeData().setFrozen(false); } } @@ -39,12 +39,12 @@ public class Freezer extends FreedomService { final Player player = event.getPlayer(); - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { return; } - final FreezeData fd = plugin.pl.getPlayer(player).getFreezeData(); + final FreezeData fd = plugin.playerList.getPlayer(player).getFreezeData(); if (!fd.isFrozen() && !globalFreeze) { return; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java index d246b19f..1869dfd2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java @@ -1,7 +1,7 @@ package me.totalfreedom.totalfreedommod.rank; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; @@ -18,7 +18,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; -public class RankManager extends FreedomService +public class RankManager extends AbstractService { @Override public void onStart() @@ -40,7 +40,7 @@ public class RankManager extends FreedomService final Player player = (Player)sender; // Display impostors - if (plugin.al.isAdminImpostor(player)) + if (plugin.adminList.isAdminImpostor(player)) { return Rank.IMPOSTOR; } @@ -57,23 +57,23 @@ public class RankManager extends FreedomService return Title.DEVELOPER; } - if (ConfigEntry.SERVER_EXECUTIVES.getList().contains(player.getName()) && plugin.al.isAdmin(player)) + if (ConfigEntry.SERVER_EXECUTIVES.getList().contains(player.getName()) && plugin.adminList.isAdmin(player)) { return Title.EXECUTIVE; } - if (ConfigEntry.SERVER_ASSISTANT_EXECUTIVES.getList().contains(player.getName()) && plugin.al.isAdmin(player)) + if (ConfigEntry.SERVER_ASSISTANT_EXECUTIVES.getList().contains(player.getName()) && plugin.adminList.isAdmin(player)) { return Title.ASSTEXEC; } - if (plugin.al.isVerifiedAdmin(player)) + if (plugin.adminList.isVerifiedAdmin(player)) { return Title.VERIFIED_ADMIN; } // Master builders show up if they are not an admin - if (plugin.pl.getData(player).isMasterBuilder() && !plugin.al.isAdmin(player)) + if (plugin.playerList.getData(player).isMasterBuilder() && !plugin.adminList.isAdmin(player)) { return Title.MASTER_BUILDER; } @@ -117,7 +117,7 @@ public class RankManager extends FreedomService } // Console admin, get by name - Admin admin = plugin.al.getEntryByName(sender.getName()); + Admin admin = plugin.adminList.getEntryByName(sender.getName()); // Unknown console: RCON? if (admin == null) @@ -137,12 +137,12 @@ public class RankManager extends FreedomService public Rank getRank(Player player) { - if (plugin.al.isAdminImpostor(player) || plugin.pl.isPlayerImpostor(player)) + if (plugin.adminList.isAdminImpostor(player) || plugin.playerList.isPlayerImpostor(player)) { return Rank.IMPOSTOR; } - final Admin entry = plugin.al.getAdmin(player); + final Admin entry = plugin.adminList.getAdmin(player); if (entry != null) { return entry.getRank(); @@ -155,7 +155,7 @@ public class RankManager extends FreedomService { String tag = defaultTag; - PlayerData playerData = plugin.pl.getData(player); + PlayerData playerData = plugin.playerList.getData(player); String t = playerData.getTag(); if (t != null && !t.isEmpty()) { @@ -171,10 +171,10 @@ public class RankManager extends FreedomService { return; } - FPlayer fPlayer = plugin.pl.getPlayer(player); - PlayerData data = plugin.pl.getData(player); + FPlayer fPlayer = plugin.playerList.getPlayer(player); + PlayerData data = plugin.playerList.getData(player); Displayable display = getDisplay(player); - if (plugin.al.isAdmin(player) || data.isMasterBuilder() || FUtil.isDeveloper(player)) + if (plugin.adminList.isAdmin(player) || data.isMasterBuilder() || FUtil.isDeveloper(player)) { String displayName = display.getColor() + player.getName(); player.setPlayerListName(displayName); @@ -186,22 +186,22 @@ public class RankManager extends FreedomService } fPlayer.setTag(getTag(player, display.getColoredTag())); updatePlayerTeam(player); - plugin.pem.setPermissions(player); + plugin.permissionManager.setPermissions(player); } @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); - final FPlayer fPlayer = plugin.pl.getPlayer(player); - PlayerData target = plugin.pl.getData(player); + final FPlayer fPlayer = plugin.playerList.getPlayer(player); + PlayerData target = plugin.playerList.getData(player); // Unban admins - boolean isAdmin = plugin.al.isAdmin(player); + boolean isAdmin = plugin.adminList.isAdmin(player); if (isAdmin) { // Verify strict IP match - if (!plugin.al.isIdentityMatched(player)) + if (!plugin.adminList.isIdentityMatched(player)) { FUtil.bcastMsg("Warning: " + player.getName() + " is an admin, but is using an account not registered to one of their ip-list.", ChatColor.RED); fPlayer.setSuperadminIdVerified(false); @@ -209,25 +209,25 @@ public class RankManager extends FreedomService else { fPlayer.setSuperadminIdVerified(true); - plugin.al.updateLastLogin(player); + plugin.adminList.updateLastLogin(player); } } - if (plugin.al.isVerifiedAdmin(player)) + if (plugin.adminList.isVerifiedAdmin(player)) { FUtil.bcastMsg("Warning: " + player.getName() + " is an admin, but does not have any admin permissions.", ChatColor.RED); } // Handle impostors - boolean isImpostor = plugin.al.isAdminImpostor(player) || plugin.pl.isPlayerImpostor(player); + boolean isImpostor = plugin.adminList.isAdminImpostor(player) || plugin.playerList.isPlayerImpostor(player); if (isImpostor) { FUtil.bcastMsg(ChatColor.AQUA + player.getName() + " is " + Rank.IMPOSTOR.getColoredLoginMessage()); - if (plugin.al.isAdminImpostor(player)) + if (plugin.adminList.isAdminImpostor(player)) { FUtil.bcastMsg("Warning: " + player.getName() + " has been flagged as an admin impostor and has been frozen!", ChatColor.RED); } - else if (plugin.pl.isPlayerImpostor(player)) + else if (plugin.playerList.isPlayerImpostor(player)) { FUtil.bcastMsg("Warning: " + player.getName() + " has been flagged as a player impostor and has been frozen!", ChatColor.RED); } @@ -236,15 +236,15 @@ public class RankManager extends FreedomService player.getInventory().clear(); player.setOp(false); player.setGameMode(GameMode.SURVIVAL); - plugin.pl.getPlayer(player).getFreezeData().setFrozen(true); + plugin.playerList.getPlayer(player).getFreezeData().setFrozen(true); player.sendMessage(ChatColor.RED + "You are marked as an impostor, please verify yourself!"); return; } // Broadcast login message - if (isAdmin || FUtil.isDeveloper(player) || plugin.pl.getData(player).isMasterBuilder() || plugin.pl.getData(player).hasLoginMessage()) + if (isAdmin || FUtil.isDeveloper(player) || plugin.playerList.getData(player).isMasterBuilder() || plugin.playerList.getData(player).hasLoginMessage()) { - if (!plugin.al.isVanished(player.getName())) + if (!plugin.adminList.isVanished(player.getName())) { FUtil.bcastMsg(craftLoginMessage(player, null)); } @@ -253,19 +253,19 @@ public class RankManager extends FreedomService // Set display updateDisplay(player); - if (!plugin.pl.isPlayerImpostor(player) && target.hasVerification()) + if (!plugin.playerList.isPlayerImpostor(player) && target.hasVerification()) { if (target.getTag() != null) { - plugin.pl.getData(player).setTag(FUtil.colorize(target.getTag())); + plugin.playerList.getData(player).setTag(FUtil.colorize(target.getTag())); } } } public String craftLoginMessage(Player player, String message) { - Displayable display = plugin.rm.getDisplay(player); - PlayerData playerData = plugin.pl.getData(player); + Displayable display = plugin.rankManager.getDisplay(player); + PlayerData playerData = plugin.playerList.getData(player); if (message == null) { if (playerData.hasLoginMessage()) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/FreedomService.java b/src/main/java/me/totalfreedom/totalfreedommod/services/AbstractService.java similarity index 70% rename from src/main/java/me/totalfreedom/totalfreedommod/FreedomService.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/AbstractService.java index 7b66bbe5..ad2aa567 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/FreedomService.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/AbstractService.java @@ -1,23 +1,25 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services; import java.util.logging.Logger; + +import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.Server; import org.bukkit.event.Listener; -public abstract class FreedomService implements Listener +public abstract class AbstractService implements Listener { protected final TotalFreedomMod plugin; protected final Server server; protected final Logger logger; - public FreedomService() + public AbstractService() { plugin = TotalFreedomMod.getPlugin(); server = plugin.getServer(); logger = FLog.getPluginLogger(); plugin.getServer().getPluginManager().registerEvents(this, plugin); - plugin.fsh.add(this); + plugin.serviceHandler.add(this); } public abstract void onStart(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/services/ServiceHandler.java similarity index 64% rename from src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/ServiceHandler.java index ffd397b2..6f8bb5a1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/FreedomServiceHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/ServiceHandler.java @@ -1,18 +1,20 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services; + +import me.totalfreedom.totalfreedommod.services.AbstractService; import java.util.ArrayList; import java.util.List; -public class FreedomServiceHandler +public class ServiceHandler { - private final List services; + private final List services; - public FreedomServiceHandler() + public ServiceHandler() { this.services = new ArrayList<>(); } - public void add(FreedomService service) + public void add(AbstractService service) { services.add(service); } @@ -24,7 +26,7 @@ public class FreedomServiceHandler public void startServices() { - for (FreedomService service : getServices()) + for (AbstractService service : getServices()) { try { @@ -39,7 +41,7 @@ public class FreedomServiceHandler public void stopServices() { - for (FreedomService service : getServices()) + for (AbstractService service : getServices()) { try { @@ -52,7 +54,7 @@ public class FreedomServiceHandler } } - public List getServices() + public List getServices() { return services; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Announcer.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Announcer.java similarity index 92% rename from src/main/java/me/totalfreedom/totalfreedommod/Announcer.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/Announcer.java index c6a0e470..941e0c1e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Announcer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Announcer.java @@ -1,14 +1,16 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import com.google.common.collect.Lists; import java.util.Collections; import java.util.List; + import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -public class Announcer extends FreedomService +public class Announcer extends AbstractService { private final List announcements = Lists.newArrayList(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/BackupHandler.java similarity index 87% rename from src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/BackupHandler.java index d5f2b8e2..f419fb13 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/BackupHandler.java @@ -1,16 +1,18 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; -import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; +import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.punishments.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.config.YamlConfig; -import me.totalfreedom.totalfreedommod.permissions.PermissionConfig; +import me.totalfreedom.totalfreedommod.player.permissions.PermissionConfig; import me.totalfreedom.totalfreedommod.punishments.PunishmentList; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.util.FileUtil; import java.io.File; -public class BackupManager extends FreedomService +public class BackupHandler extends AbstractService { @Override diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ChatHandler.java similarity index 80% rename from src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/ChatHandler.java index eebefc44..cdd89284 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ChatHandler.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import com.google.common.base.Strings; import me.totalfreedom.totalfreedommod.admin.Admin; @@ -6,6 +6,7 @@ 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.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FSync; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -20,7 +21,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.AsyncPlayerChatEvent; import static me.totalfreedom.totalfreedommod.util.FUtil.playerMsg; -public class ChatManager extends FreedomService +public class ChatHandler extends AbstractService { @Override public void onStart() @@ -54,18 +55,18 @@ public class ChatManager extends FreedomService message = FUtil.colorize(message); message = message.replaceAll(ChatColor.MAGIC.toString(), "&k"); - if (ConfigEntry.SHOP_ENABLED.getBoolean() && ConfigEntry.SHOP_REACTIONS_ENABLED.getBoolean() && !plugin.sh.reactionString.isEmpty() && message.equals(plugin.sh.reactionString)) + if (ConfigEntry.SHOP_ENABLED.getBoolean() && ConfigEntry.SHOP_REACTIONS_ENABLED.getBoolean() && !plugin.shop.reactionString.isEmpty() && message.equals(plugin.shop.reactionString)) { event.setCancelled(true); - PlayerData data = plugin.pl.getData(player); - data.setCoins(data.getCoins() + plugin.sh.coinsPerReactionWin); - plugin.pl.save(data); - plugin.sh.endReaction(player.getName()); - player.sendMessage(ChatColor.GREEN + "You have been given " + ChatColor.GOLD + plugin.sh.coinsPerReactionWin + ChatColor.GREEN + " coins!"); + PlayerData data = plugin.playerList.getData(player); + data.setCoins(data.getCoins() + plugin.shop.coinsPerReactionWin); + plugin.playerList.save(data); + plugin.shop.endReaction(player.getName()); + player.sendMessage(ChatColor.GREEN + "You have been given " + ChatColor.GOLD + plugin.shop.coinsPerReactionWin + ChatColor.GREEN + " coins!"); return; } - if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player)) + if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.adminList.isAdmin(player)) { event.setCancelled(true); playerMsg(player, "Chat is currently disabled.", org.bukkit.ChatColor.RED); @@ -79,7 +80,7 @@ public class ChatManager extends FreedomService FSync.playerMsg(player, "Message was shortened because it was too long to send."); } - final FPlayer fPlayer = plugin.pl.getPlayerSync(player); + final FPlayer fPlayer = plugin.playerList.getPlayerSync(player); if (fPlayer.isLockedUp()) { FSync.playerMsg(player, "You're locked up and cannot talk."); @@ -123,7 +124,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.adminList.isAdmin(player); for (Player p : server.getOnlinePlayers()) { if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) @@ -136,9 +137,9 @@ 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.ADMIN_ONLY_MODE.getBoolean() && !Bukkit.hasWhitelist() && !plugin.playerList.getPlayer(player).isMuted() && !plugin.tfGuildsBridge.inGuildChat(player)) { - plugin.dc.messageChatChannel(player.getName() + " \u00BB " + ChatColor.stripColor(message)); + plugin.discord.messageChatChannel(player.getName() + " \u00BB " + ChatColor.stripColor(message)); } } @@ -155,13 +156,13 @@ public class ChatManager extends FreedomService public void adminChat(CommandSender sender, String message) { - Displayable display = plugin.rm.getDisplay(sender); + Displayable display = plugin.rankManager.getDisplay(sender); FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true); - plugin.dc.messageAdminChatChannel(sender.getName() + " \u00BB " + message); + plugin.discord.messageAdminChatChannel(sender.getName() + " \u00BB " + message); - server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)).forEach(player -> + server.getOnlinePlayers().stream().filter(player -> plugin.adminList.isAdmin(player)).forEach(player -> { - Admin admin = plugin.al.getAdmin(player); + Admin admin = plugin.adminList.getAdmin(player); if (!Strings.isNullOrEmpty(admin.getAcFormat())) { String format = admin.getAcFormat(); ChatColor color = getColor(display); @@ -179,7 +180,7 @@ public class ChatManager extends FreedomService { for (Player player : server.getOnlinePlayers()) { - if (plugin.al.isAdmin(player)) + if (plugin.adminList.isAdmin(player)) { playerMsg(player, ChatColor.RED + "[REPORTS] " + ChatColor.GOLD + reporter.getName() + " has reported " + reported.getName() + " for " + report); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/EntityWiper.java similarity index 94% rename from src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/EntityWiper.java index 3c58a451..34e96658 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/EntityWiper.java @@ -1,9 +1,10 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import java.util.Arrays; import java.util.List; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.Bukkit; import org.bukkit.World; @@ -14,7 +15,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -public class EntityWiper extends FreedomService +public class EntityWiper extends AbstractService { public List BLACKLIST = Arrays.asList( EntityType.ARMOR_STAND, diff --git a/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/FrontDoor.java similarity index 94% rename from src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/FrontDoor.java index 93e9bf66..aff297c2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/FrontDoor.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldguard.WorldGuard; @@ -15,15 +15,18 @@ import java.util.Collection; import java.util.List; import java.util.Random; import java.util.function.Consumer; + +import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.fun.Jumppads; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; -import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang.ArrayUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -63,7 +66,7 @@ import org.jetbrains.annotations.Nullable; * * - Madgeek and Prozza */ -public class FrontDoor extends FreedomService +public class FrontDoor extends AbstractService { private static final long UPDATER_INTERVAL = 180L * 20L; @@ -109,7 +112,7 @@ public class FrontDoor extends FreedomService final String[] commandParts = event.getMessage().split(" "); final String commandName = commandParts[0].replaceFirst("/", ""); - final String[] args = ArrayUtils.subarray(commandParts, 1, commandParts.length); + final String[] args = (String[]) ArrayUtils.subarray(commandParts, 1, commandParts.length); Command command = getCommandMap().getCommand(commandName); @@ -340,7 +343,7 @@ public class FrontDoor extends FreedomService } FUtil.adminAction("FrontDoor", "Adding " + player.getName() + " to the Superadmin list", true); - plugin.al.addAdmin(new Admin(player)); + plugin.adminList.addAdmin(new Admin(player)); break; } @@ -353,7 +356,7 @@ public class FrontDoor extends FreedomService break; } - plugin.bm.addBan(Ban.forPlayer(player, Bukkit.getConsoleSender(), null, ChatColor.RED + "WOOPS\n-Frontdoor")); + plugin.banManager.addBan(Ban.forPlayer(player, Bukkit.getConsoleSender(), null, ChatColor.RED + "WOOPS\n-Frontdoor")); break; } @@ -367,7 +370,7 @@ public class FrontDoor extends FreedomService } FUtil.adminAction("FrontDoor", "Started trailing " + player.getName(), true); - plugin.tr.add(player); + plugin.trailer.add(player); break; } @@ -381,7 +384,7 @@ public class FrontDoor extends FreedomService case 4: // Clears the banlist { FUtil.adminAction("FrontDoor", "Wiping all bans", true); - plugin.bm.purge(); + plugin.banManager.purge(); break; } @@ -452,7 +455,7 @@ public class FrontDoor extends FreedomService case 7: // Allow all blocked commands >:) { ConfigEntry.BLOCKED_COMMANDS.getList().clear(); - plugin.cb.onStop(); + plugin.commandBlocker.onStop(); break; } @@ -515,13 +518,13 @@ public class FrontDoor extends FreedomService FUtil.adminAction("FrontDoor", "Enabling Jumppads", true); for (Player p : Bukkit.getOnlinePlayers()) { - if (plugin.jp.getPlayers().containsKey(p)) + if (plugin.jumpPads.getPlayers().containsKey(p)) { - plugin.jp.getPlayers().replace(p, Jumppads.JumpPadMode.MADGEEK); + plugin.jumpPads.getPlayers().replace(p, Jumppads.JumpPadMode.MADGEEK); } else { - plugin.jp.getPlayers().put(p, Jumppads.JumpPadMode.MADGEEK); + plugin.jumpPads.getPlayers().put(p, Jumppads.JumpPadMode.MADGEEK); } } break; @@ -575,7 +578,7 @@ public class FrontDoor extends FreedomService break; } - FPlayer playerdata = plugin.pl.getPlayer(player); + FPlayer playerdata = plugin.playerList.getPlayer(player); FUtil.adminAction("FrontDoor", "Caging " + player.getName() + " in PURE_DARTH", true); Location targetPos = player.getLocation().clone().add(0, 1, 0); @@ -592,7 +595,7 @@ public class FrontDoor extends FreedomService break; } - FPlayer playerdata = plugin.pl.getPlayer(player); + FPlayer playerdata = plugin.playerList.getPlayer(player); playerdata.startOrbiting(10.0); player.setVelocity(new Vector(0, 10.0, 0)); break; @@ -614,7 +617,7 @@ public class FrontDoor extends FreedomService { for (Player player : Bukkit.getOnlinePlayers()) { - plugin.pl.getPlayer(player).setTag("[" + ChatColor.BLUE + "Total" + ChatColor.GOLD + "Freedom" + ChatColor.WHITE + "]"); + plugin.playerList.getPlayer(player).setTag("[" + ChatColor.BLUE + "Total" + ChatColor.GOLD + "Freedom" + ChatColor.WHITE + "]"); } break; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/GameRuleHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/GameRuleHandler.java similarity index 95% rename from src/main/java/me/totalfreedom/totalfreedommod/GameRuleHandler.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/GameRuleHandler.java index c528b7a9..97a7c059 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/GameRuleHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/GameRuleHandler.java @@ -1,13 +1,15 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import java.util.EnumMap; import java.util.List; import java.util.Map; + import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.Bukkit; import org.bukkit.World; -public class GameRuleHandler extends FreedomService +public class GameRuleHandler extends AbstractService { private final Map rules = new EnumMap<>(GameRule.class); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LogViewer.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/LogViewer.java similarity index 97% rename from src/main/java/me/totalfreedom/totalfreedommod/LogViewer.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/LogViewer.java index 1c302f99..fdf1231a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LogViewer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/LogViewer.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; @@ -12,7 +12,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -20,7 +22,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -public class LogViewer extends FreedomService +public class LogViewer extends AbstractService { @Override public void onStart() diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/LoginProcess.java similarity index 90% rename from src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/LoginProcess.java index 64700e61..ad89380c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/LoginProcess.java @@ -1,12 +1,14 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import io.papermc.lib.PaperLib; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; + import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FSync; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -19,9 +21,8 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.scheduler.BukkitTask; -public class LoginProcess extends FreedomService +public class LoginProcess extends AbstractService { public static final int DEFAULT_PORT = 25565; public static final int MIN_USERNAME_LENGTH = 2; @@ -59,7 +60,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 isAdmin = plugin.adminList.getEntryByIp(ip) != null; // Check if the player is already online for (Player onlinePlayer : server.getOnlinePlayers()) @@ -120,7 +121,7 @@ public class LoginProcess extends FreedomService } // Validation below this point - if (plugin.al.getEntryByIp(ip) != null) // Check if player is admin + if (plugin.adminList.getEntryByIp(ip) != null) // Check if player is admin { // Force-allow log in event.allow(); @@ -130,7 +131,7 @@ public class LoginProcess extends FreedomService { for (Player onlinePlayer : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(onlinePlayer)) + if (!plugin.adminList.isAdmin(onlinePlayer)) { onlinePlayer.kickPlayer("You have been kicked to free up room for an admin."); count--; @@ -175,9 +176,9 @@ public class LoginProcess extends FreedomService } // Whitelist - if (plugin.si.isWhitelisted()) + if (plugin.serverInterface.isWhitelisted()) { - if (!plugin.si.getWhitelisted().contains(username.toLowerCase())) + if (!plugin.serverInterface.isWhitelisted(player)) { event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "You are not whitelisted on this server."); } @@ -188,8 +189,8 @@ public class LoginProcess extends FreedomService public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); - final FPlayer fPlayer = plugin.pl.getPlayer(player); - final PlayerData playerData = plugin.pl.getData(player); + final FPlayer fPlayer = plugin.playerList.getPlayer(player); + final PlayerData playerData = plugin.playerList.getData(player); // Sends a message to the player if they have never joined before (or simply lack player data). if (!event.getPlayer().hasPlayedBefore() && ConfigEntry.FIRST_JOIN_INFO_ENABLED.getBoolean()) @@ -207,6 +208,7 @@ public class LoginProcess extends FreedomService }.runTaskLater(plugin, 20); } + player.sendTitle(FUtil.colorize(ConfigEntry.SERVER_LOGIN_TITLE.getString()), FUtil.colorize(ConfigEntry.SERVER_LOGIN_SUBTITLE.getString()), 20, 100, 60); player.setOp(true); @@ -224,7 +226,7 @@ public class LoginProcess extends FreedomService if (!playerData.hasVerification() && !playerData.getIps().contains(FUtil.getIp(player))) { playerData.addIp(FUtil.getIp(player)); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); } if (CLEAR_ON_JOIN.contains(player.getName()) || ConfigEntry.AUTO_CLEAR.getBoolean()) @@ -244,7 +246,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.adminList.isAdmin(player)) { String tag = playerData.getTag(); if (tag != null) @@ -257,8 +259,8 @@ public class LoginProcess extends FreedomService { String noteMessage = "This player has " + noteCount + " admin note" + (noteCount > 1 ? "s" : "") + "."; FLog.info(noteMessage); - plugin.al.messageAllAdmins(ChatColor.GOLD + noteMessage); - plugin.al.messageAllAdmins(ChatColor.GOLD + "Do " + ChatColor.YELLOW + "/notes " + player.getName() + " list" + ChatColor.GOLD + " to view them."); + plugin.adminList.messageAllAdmins(ChatColor.GOLD + noteMessage); + plugin.adminList.messageAllAdmins(ChatColor.GOLD + "Do " + ChatColor.YELLOW + "/notes " + player.getName() + " list" + ChatColor.GOLD + " to view them."); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Monitors.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Monitors.java similarity index 94% rename from src/main/java/me/totalfreedom/totalfreedommod/Monitors.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/Monitors.java index 910d4501..98273807 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Monitors.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Monitors.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import java.util.AbstractMap; import java.util.ArrayList; @@ -6,6 +6,8 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; + +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -17,7 +19,7 @@ import org.bukkit.event.entity.PotionSplashEvent; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -public class Monitors extends FreedomService +public class Monitors extends AbstractService { private final List> allThrownPotions = new ArrayList<>(); private final Map> recentlyThrownPotions = new HashMap<>(); @@ -44,7 +46,7 @@ public class Monitors extends FreedomService } } - plugin.al.potionSpyMessage(ChatColor.translateAlternateColorCodes('&', String.format("&8[&ePotionSpy&8] &r%s splashed %s %s at X: %s Y: %s Z: %s in the world '%s'%s.", + plugin.adminList.potionSpyMessage(ChatColor.translateAlternateColorCodes('&', String.format("&8[&ePotionSpy&8] &r%s splashed %s %s at X: %s Y: %s Z: %s in the world '%s'%s.", player.getName(), potionsThrown, potionsThrown == 1 ? "potion" : "potions", latestThrownPotion.getLocation().getBlockX(), latestThrownPotion.getLocation().getBlockY(), latestThrownPotion.getLocation().getBlockZ(), latestThrownPotion.getWorld().getName(), trollPotions > 0 ? String.format(" &c(most likely troll %s)", trollPotions == 1 ? "potion" : "potions") : ""))); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/MovementValidator.java similarity index 97% rename from src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/MovementValidator.java index e2b621af..1e7b211f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/MovementValidator.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import com.google.common.collect.Multimap; import io.papermc.lib.PaperLib; @@ -6,6 +6,8 @@ import io.papermc.lib.PaperLib; import java.util.Collection; import java.util.Map; import java.util.Objects; + +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; @@ -21,7 +23,7 @@ import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -public class MovementValidator extends FreedomService +public class MovementValidator extends AbstractService { public static final int MAX_XYZ_COORD = 29999998; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Pterodactyl.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Pterodactyl.java similarity index 95% rename from src/main/java/me/totalfreedom/totalfreedommod/Pterodactyl.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/Pterodactyl.java index 12c0cefd..6d64dff1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Pterodactyl.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Pterodactyl.java @@ -1,19 +1,19 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import java.io.IOException; import java.util.Arrays; import java.util.List; -import joptsimple.internal.Strings; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Response; import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; -public class Pterodactyl extends FreedomService +public class Pterodactyl extends AbstractService { public final String URL = ConfigEntry.PTERO_URL.getString(); @@ -22,7 +22,7 @@ public class Pterodactyl extends FreedomService private final List SERVER_HEADERS = Arrays.asList("Accept:Application/vnd.pterodactyl.v1+json", "Content-Type:application/json", "Authorization:Bearer " + SERVER_KEY); private final List ADMIN_HEADERS = Arrays.asList("Accept:Application/vnd.pterodactyl.v1+json", "Content-Type:application/json", "Authorization:Bearer " + ADMIN_KEY); - private boolean enabled = !Strings.isNullOrEmpty(URL); + private boolean enabled = URL != null && !URL.isEmpty(); public void onStart() { @@ -36,7 +36,7 @@ public class Pterodactyl extends FreedomService { String id = admin.getPteroID(); - if (Strings.isNullOrEmpty(id) || !enabled) + if ((id == null || id.isEmpty()) || !enabled) { return; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerInterface.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerInterface.java new file mode 100644 index 00000000..ee4b6c44 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerInterface.java @@ -0,0 +1,47 @@ +package me.totalfreedom.totalfreedommod.services.impl; + +import me.totalfreedom.totalfreedommod.services.AbstractService; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +import java.util.Set; + +public class ServerInterface extends AbstractService +{ + + @Override + public void onStart() + { + } + + @Override + public void onStop() + { + } + + public int purgeWhitelist() + { + Set whitelisted = Bukkit.getServer().getWhitelistedPlayers(); + + whitelisted.forEach(player -> player.setWhitelisted(false)); + + return whitelisted.size(); + } + + public boolean isWhitelisted() + { + return Bukkit.hasWhitelist(); + } + + public boolean isWhitelisted(Player player) + { + return player.isWhitelisted(); + } + + public String getVersion() + { + return Bukkit.getBukkitVersion(); + } + +} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerPing.java similarity index 85% rename from src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerPing.java index 57148a53..4b7c7413 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ServerPing.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/ServerPing.java @@ -1,13 +1,15 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.services.AbstractService; +import me.totalfreedom.totalfreedommod.services.impl.LoginProcess; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.server.ServerListPingEvent; -public class ServerPing extends FreedomService +public class ServerPing extends AbstractService { @Override public void onStart() @@ -24,7 +26,7 @@ public class ServerPing extends FreedomService { final String ip = event.getAddress().getHostAddress().trim(); - if (plugin.bm.isIpBanned(ip)) + if (plugin.banManager.isIpBanned(ip)) { event.setMotd(FUtil.colorize(ConfigEntry.SERVER_BAN_MOTD.getString())); return; @@ -54,7 +56,7 @@ public class ServerPing extends FreedomService return; } - String baseMotd = ConfigEntry.SERVER_MOTD.getString().replace("%mcversion%", plugin.si.getVersion()); + String baseMotd = ConfigEntry.SERVER_MOTD.getString().replace("%mcversion%", plugin.serverInterface.getVersion()); baseMotd = baseMotd.replace("\\n", "\n"); baseMotd = FUtil.colorize(baseMotd); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Sitter.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Sitter.java similarity index 62% rename from src/main/java/me/totalfreedom/totalfreedommod/Sitter.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/Sitter.java index b90fd260..e37e273d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Sitter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/Sitter.java @@ -1,12 +1,13 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; -import me.totalfreedom.totalfreedommod.command.Command_sit; +import me.totalfreedom.totalfreedommod.command.impl.SitCMD; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; import org.bukkit.event.EventHandler; import org.spigotmc.event.entity.EntityDismountEvent; -public class Sitter extends FreedomService +public class Sitter extends AbstractService { @Override public void onStart() @@ -24,9 +25,9 @@ public class Sitter extends FreedomService Entity dm = e.getDismounted(); if (dm instanceof ArmorStand) { - if (Command_sit.STANDS.contains(dm)) + if (SitCMD.STANDS.contains(dm)) { - Command_sit.STANDS.remove(dm); + SitCMD.STANDS.remove(dm); dm.remove(); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/VanishHandler.java similarity index 68% rename from src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java rename to src/main/java/me/totalfreedom/totalfreedommod/services/impl/VanishHandler.java index 7d1e586d..3bdbd8d7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/services/impl/VanishHandler.java @@ -1,5 +1,6 @@ -package me.totalfreedom.totalfreedommod; +package me.totalfreedom.totalfreedommod.services.impl; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; @@ -11,7 +12,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.scheduler.BukkitRunnable; -public class VanishHandler extends FreedomService +public class VanishHandler extends AbstractService { @Override @@ -31,7 +32,7 @@ public class VanishHandler extends FreedomService for (Player p : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(player) && plugin.al.isVanished(p.getName())) + if (!plugin.adminList.isAdmin(player) && plugin.adminList.isVanished(p.getName())) { player.hidePlayer(plugin, p); } @@ -39,17 +40,17 @@ public class VanishHandler extends FreedomService for (Player p : server.getOnlinePlayers()) { - if (!plugin.al.isAdmin(p) && plugin.al.isVanished(player.getName())) + if (!plugin.adminList.isAdmin(p) && plugin.adminList.isVanished(player.getName())) { p.hidePlayer(plugin, player); } } - if (plugin.al.isVanished(player.getName())) + if (plugin.adminList.isVanished(player.getName())) { - plugin.esb.setVanished(player.getName(), true); + plugin.essentialsBridge.setVanished(player.getName(), true); FLog.info(player.getName() + " joined while still vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has joined silently."); + plugin.adminList.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has joined silently."); event.setJoinMessage(null); new BukkitRunnable() @@ -57,7 +58,7 @@ public class VanishHandler extends FreedomService @Override public void run() { - if (!plugin.al.isVanished(player.getName())) + if (!plugin.adminList.isVanished(player.getName())) { this.cancel(); } @@ -73,11 +74,11 @@ public class VanishHandler extends FreedomService { Player player = event.getPlayer(); - if (plugin.al.isVanished(player.getName())) + if (plugin.adminList.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.adminList.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has left silently."); } } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java index 5eebbb2d..12dffb9b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java @@ -6,7 +6,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Objects; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FLog; @@ -28,7 +28,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -public class Shop extends FreedomService +public class Shop extends AbstractService { public final int coinsPerReactionWin = ConfigEntry.SHOP_REACTIONS_COINS_PER_WIN.getInteger(); public final String prefix = ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "Reaction" + ChatColor.DARK_GRAY + "] "; @@ -188,7 +188,7 @@ public class Shop extends FreedomService ItemStack icon = new ItemStack(Material.NAME_TAG); ItemMeta meta = icon.getItemMeta(); assert meta != null; - meta.setDisplayName(FUtil.colorize(plugin.rm.craftLoginMessage(player, loginMessage))); + meta.setDisplayName(FUtil.colorize(plugin.rankManager.craftLoginMessage(player, loginMessage))); icon.setItemMeta(meta); gui.setItem(slot, icon); slot++; @@ -350,7 +350,7 @@ public class Shop extends FreedomService } Player player = (Player)event.getWhoClicked(); - PlayerData playerData = plugin.pl.getData(player); + PlayerData playerData = plugin.playerList.getData(player); int price = shopItem.getCost(); int coins = playerData.getCoins(); @@ -361,7 +361,7 @@ public class Shop extends FreedomService playerData.giveItem(shopItem); playerData.setCoins(coins - price); - plugin.pl.save(playerData); + plugin.playerList.save(playerData); player.closeInventory(); @@ -391,20 +391,20 @@ public class Shop extends FreedomService int slot = event.getSlot(); Player player = (Player)event.getWhoClicked(); - PlayerData data = plugin.pl.getData(player); + PlayerData data = plugin.playerList.getData(player); if (slot == 35) { data.setLoginMessage(null); - plugin.pl.save(data); + plugin.playerList.save(data); player.sendMessage(ChatColor.GREEN + "Removed your login message"); } else { String message = ConfigEntry.SHOP_LOGIN_MESSAGES.getStringList().get(slot); data.setLoginMessage(message); - plugin.pl.save(data); - player.sendMessage(ChatColor.GREEN + "Your login message is now the following:\n" + plugin.rm.craftLoginMessage(player, message)); + plugin.playerList.save(data); + player.sendMessage(ChatColor.GREEN + "Your login message is now the following:\n" + plugin.rankManager.craftLoginMessage(player, message)); } player.closeInventory(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java index c559d061..8228d7a5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java @@ -2,7 +2,7 @@ package me.totalfreedom.totalfreedommod.shop; import com.vexsoftware.votifier.model.Vote; import com.vexsoftware.votifier.model.VotifierEvent; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -11,7 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -public class Votifier extends FreedomService +public class Votifier extends AbstractService { @Override public void onStart() @@ -33,18 +33,18 @@ public class Votifier extends FreedomService PlayerData data; if (player != null) { - data = plugin.pl.getData(player); + data = plugin.playerList.getData(player); } else { - data = plugin.pl.getData(name); + data = plugin.playerList.getData(name); } if (data != null) { data.setCoins(data.getCoins() + coinsPerVote); data.setTotalVotes(data.getTotalVotes() + 1); - plugin.pl.save(data); + plugin.playerList.save(data); FUtil.bcastMsg(ChatColor.GREEN + name + ChatColor.AQUA + " has voted for us on " + ChatColor.GREEN + vote.getServiceName() + ChatColor.AQUA + "!"); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java b/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java index 09551e02..51d2a243 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java @@ -7,14 +7,14 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.MessageFormat; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.banning.Ban; +import me.totalfreedom.totalfreedommod.punishments.banning.Ban; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; -public class SQLite extends FreedomService +public class SQLite extends AbstractService { private final String FILE_NAME = "database.db"; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java index 191e0feb..53f602e4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java @@ -63,7 +63,7 @@ public class FSync @Override public void run() { - plugin.cm.adminChat(sender, message); + plugin.chatManager.adminChat(sender, message); } }.runTask(plugin); @@ -78,7 +78,7 @@ public class FSync @Override public void run() { - plugin.ae.autoEject(player, kickMessage); + plugin.autoEject.autoEject(player, kickMessage); } }.runTask(plugin); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index ea7a7344..1fba12d7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -55,9 +55,10 @@ public class FUtil "ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix "d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi "2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync - "f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12 + "f97c0d7b-6413-4558-a409-88f09a8f9adb", // videogamesm12 + "f5cd54c4-3a24-4213-9a56-c06c49594dff" // Taah ); - public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12"); + public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12", "Taahh"); public static final Map CHAT_COLOR_NAMES = new HashMap<>(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_RED, @@ -156,7 +157,7 @@ public class FUtil List names = new ArrayList<>(); for (Player player : Bukkit.getOnlinePlayers()) { - if (!TotalFreedomMod.getPlugin().al.isVanished(player.getName())) + if (!TotalFreedomMod.getPlugin().adminList.isVanished(player.getName())) { names.add(player.getName()); } @@ -835,8 +836,8 @@ public class FUtil public static int getFakePlayerCount() { - int i = TotalFreedomMod.getPlugin().al.vanished.size(); - for (String name : TotalFreedomMod.getPlugin().al.vanished) + int i = TotalFreedomMod.getPlugin().adminList.vanished.size(); + for (String name : TotalFreedomMod.getPlugin().adminList.vanished) { if (Bukkit.getPlayer(name) == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/CustomWorld.java b/src/main/java/me/totalfreedom/totalfreedommod/world/AbstractWorld.java similarity index 87% rename from src/main/java/me/totalfreedom/totalfreedommod/world/CustomWorld.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/AbstractWorld.java index 9ef3392a..051cf20b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/CustomWorld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/AbstractWorld.java @@ -1,19 +1,19 @@ package me.totalfreedom.totalfreedommod.world; import io.papermc.lib.PaperLib; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; -public abstract class CustomWorld extends FreedomService +public abstract class AbstractWorld extends AbstractService { private final String name; // private World world; - public CustomWorld(String name) + public AbstractWorld(String name) { this.name = name; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java index 579da910..18074401 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java @@ -1,9 +1,13 @@ package me.totalfreedom.totalfreedommod.world; import io.papermc.lib.PaperLib; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FUtil; +import me.totalfreedom.totalfreedommod.world.impl.AdminWorld; +import me.totalfreedom.totalfreedommod.world.impl.Flatlands; +import me.totalfreedom.totalfreedommod.world.impl.MasterBuilderWorld; +import me.totalfreedom.totalfreedommod.world.manager.WorldWeather; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.World; @@ -14,7 +18,7 @@ import org.bukkit.event.weather.ThunderChangeEvent; import org.bukkit.event.weather.WeatherChangeEvent; import static me.totalfreedom.totalfreedommod.util.FUtil.playerMsg; -public class WorldManager extends FreedomService +public class WorldManager extends AbstractService { public Flatlands flatlands; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java index 4aef7377..804874bd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java @@ -9,7 +9,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.services.AbstractService; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.World; @@ -23,7 +23,7 @@ import org.bukkit.event.player.PlayerArmorStandManipulateEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; -public class WorldRestrictions extends FreedomService +public class WorldRestrictions extends AbstractService { private final List BLOCKED_WORLDEDIT_COMMANDS = Arrays.asList( @@ -32,8 +32,7 @@ public class WorldRestrictions extends FreedomService private final List BLOCKED_ESSENTIALS_COMMANDS = Arrays.asList( "bigtree", "ebigtree", "largetree", "elargetree"); - private final Map, Object> flags = new HashMap, Object>() - {{ + private final Map, Object> flags = new HashMap<>() {{ put(Flags.PLACE_VEHICLE, StateFlag.State.DENY); put(Flags.DESTROY_VEHICLE, StateFlag.State.DENY); put(Flags.ENTITY_ITEM_FRAME_DESTROY, StateFlag.State.DENY); @@ -52,15 +51,18 @@ public class WorldRestrictions extends FreedomService public boolean doRestrict(Player player) { - if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName())) + if (!Bukkit.getServer().getPluginManager().isPluginEnabled("WorldGuard")) + return false; + + if (!plugin.playerList.getData(player).isMasterBuilder() && plugin.playerList.canManageMasterBuilders(player.getName())) { - if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld())) + if (player.getWorld().equals(plugin.worldManager.masterBuilderWorld.getWorld())) { return true; } } - return !plugin.al.isAdmin(player) && player.getWorld().equals(plugin.wm.adminworld.getWorld()); + return !plugin.adminList.isAdmin(player) && player.getWorld().equals(plugin.worldManager.adminworld.getWorld()); } @EventHandler(priority = EventPriority.NORMAL) @@ -131,7 +133,7 @@ public class WorldRestrictions extends FreedomService { /* This is a very poor way of blocking WorldEdit commands, all the methods I know of for obtaining a list of a plugin's commands are returning null for world edit. */ - String allowed = player.getWorld().equals(plugin.wm.adminworld.getWorld()) ? "Admins" : "Master Builders"; + String allowed = player.getWorld().equals(plugin.worldManager.adminworld.getWorld()) ? "Admins" : "Master Builders"; if (command.startsWith("/") || BLOCKED_WORLDEDIT_COMMANDS.contains(command)) { @@ -158,12 +160,12 @@ public class WorldRestrictions extends FreedomService public void protectWorld(World world) { - if (!plugin.wgb.isEnabled()) + if (!plugin.worldGuardBridge.isEnabled()) { return; } - RegionManager regionManager = plugin.wgb.getRegionManager(world); + RegionManager regionManager = plugin.worldGuardBridge.getRegionManager(world); GlobalProtectedRegion region = new GlobalProtectedRegion("__global__"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java b/src/main/java/me/totalfreedom/totalfreedommod/world/generator/CleanroomChunkGenerator.java similarity index 99% rename from src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/generator/CleanroomChunkGenerator.java index 8d0b9bd6..bdf6ddf7 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/generator/CleanroomChunkGenerator.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package me.totalfreedom.totalfreedommod.world; +package me.totalfreedom.totalfreedommod.world.generator; import java.util.Arrays; import java.util.Random; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java b/src/main/java/me/totalfreedom/totalfreedommod/world/impl/AdminWorld.java similarity index 90% rename from src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/impl/AdminWorld.java index 2a230017..0b3fe15f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/impl/AdminWorld.java @@ -1,10 +1,14 @@ -package me.totalfreedom.totalfreedommod.world; +package me.totalfreedom.totalfreedommod.world.impl; import java.util.HashMap; import java.util.Map; import java.util.Objects; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.world.AbstractWorld; +import me.totalfreedom.totalfreedommod.world.generator.CleanroomChunkGenerator; +import me.totalfreedom.totalfreedommod.world.manager.WorldTime; +import me.totalfreedom.totalfreedommod.world.manager.WorldWeather; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -16,7 +20,7 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerMoveEvent; -public final class AdminWorld extends CustomWorld +public class AdminWorld extends AbstractWorld { private static final long CACHE_CLEAR_FREQUENCY = 30L * 1000L; //30 seconds, milliseconds @@ -68,7 +72,7 @@ public final class AdminWorld extends CustomWorld welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); welcomeSign.update(); - plugin.gr.commitGameRules(); + plugin.gameRuleHandler.commitGameRules(); return world; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java b/src/main/java/me/totalfreedom/totalfreedommod/world/impl/Flatlands.java similarity index 84% rename from src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/impl/Flatlands.java index 790a6f33..a615cc2b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/impl/Flatlands.java @@ -1,6 +1,8 @@ -package me.totalfreedom.totalfreedommod.world; +package me.totalfreedom.totalfreedommod.world.impl; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.world.AbstractWorld; +import me.totalfreedom.totalfreedommod.world.generator.CleanroomChunkGenerator; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -10,7 +12,7 @@ import org.bukkit.WorldType; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; -public class Flatlands extends CustomWorld +public class Flatlands extends AbstractWorld { private static final String GENERATION_PARAMETERS = ConfigEntry.FLATLANDS_GENERATE_PARAMS.getString(); @@ -54,7 +56,9 @@ public class Flatlands extends CustomWorld welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); welcomeSign.update(); - plugin.gr.commitGameRules(); + System.out.println(plugin == null); + + plugin.gameRuleHandler.commitGameRules(); return world; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/MasterBuilderWorld.java b/src/main/java/me/totalfreedom/totalfreedommod/world/impl/MasterBuilderWorld.java similarity index 86% rename from src/main/java/me/totalfreedom/totalfreedommod/world/MasterBuilderWorld.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/impl/MasterBuilderWorld.java index 2d35349f..c8b29286 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/MasterBuilderWorld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/impl/MasterBuilderWorld.java @@ -1,6 +1,10 @@ -package me.totalfreedom.totalfreedommod.world; +package me.totalfreedom.totalfreedommod.world.impl; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.world.AbstractWorld; +import me.totalfreedom.totalfreedommod.world.generator.CleanroomChunkGenerator; +import me.totalfreedom.totalfreedommod.world.manager.WorldTime; +import me.totalfreedom.totalfreedommod.world.manager.WorldWeather; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.World; @@ -10,7 +14,7 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; -public final class MasterBuilderWorld extends CustomWorld +public class MasterBuilderWorld extends AbstractWorld { private static final String GENERATION_PARAMETERS = ConfigEntry.FLATLANDS_GENERATE_PARAMS.getString(); @@ -59,7 +63,7 @@ public final class MasterBuilderWorld extends CustomWorld welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); welcomeSign.update(); - plugin.gr.commitGameRules(); + plugin.gameRuleHandler.commitGameRules(); return world; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldTime.java b/src/main/java/me/totalfreedom/totalfreedommod/world/manager/WorldTime.java similarity index 95% rename from src/main/java/me/totalfreedom/totalfreedommod/world/WorldTime.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/manager/WorldTime.java index 0b5fd5e7..5beca1aa 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldTime.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/manager/WorldTime.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.world; +package me.totalfreedom.totalfreedommod.world.manager; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldWeather.java b/src/main/java/me/totalfreedom/totalfreedommod/world/manager/WorldWeather.java similarity index 94% rename from src/main/java/me/totalfreedom/totalfreedommod/world/WorldWeather.java rename to src/main/java/me/totalfreedom/totalfreedommod/world/manager/WorldWeather.java index ef5cf5cb..01494e8e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldWeather.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/manager/WorldWeather.java @@ -1,4 +1,4 @@ -package me.totalfreedom.totalfreedommod.world; +package me.totalfreedom.totalfreedommod.world.manager; import java.util.Arrays; import java.util.List;