From 8a58782d995b8621ff3b862f2b0b8eac7a19603c Mon Sep 17 00:00:00 2001 From: Paul Reilly Date: Thu, 30 Mar 2023 15:26:35 -0500 Subject: [PATCH] LuckPerms Integration (2/2) --- .../totalfreedommod/FrontDoor.java | 2 +- .../totalfreedommod/LoginProcess.java | 5 +- .../totalfreedommod/TotalFreedomMod.java | 8 - .../totalfreedommod/admin/AdminList.java | 135 ++++++------- .../blocking/command/CommandBlockerRank.java | 4 +- .../bridge/BukkitTelnetBridge.java | 27 ++- .../bridge/EssentialsBridge.java | 8 +- .../command/CommandPermissions.java | 3 - .../totalfreedommod/command/Command_deop.java | 10 +- .../command/Command_deopall.java | 2 +- .../command/Command_myadmin.java | 44 ++--- .../command/Command_myinfo.java | 5 +- .../command/Command_nether.java | 4 +- .../command/Command_nickclean.java | 63 +++--- .../command/Command_nickfilter.java | 120 ------------ .../command/Command_nickgradient.java | 16 +- .../command/Command_nicknyan.java | 70 ------- .../command/Command_nickrainbow.java | 3 +- .../command/Command_notes.java | 17 +- .../totalfreedommod/command/Command_op.java | 43 ++-- .../command/Command_opall.java | 21 +- .../totalfreedommod/command/Command_opme.java | 1 - .../totalfreedommod/command/Command_ops.java | 60 ------ .../command/Command_orbit.java | 6 +- .../command/Command_permissions.java | 51 ----- .../command/Command_plotworld.java | 6 +- .../command/Command_plugincontrol.java | 28 ++- .../command/Command_potion.java | 60 ++---- .../command/Command_potionspy.java | 66 +++---- .../command/Command_purgeall.java | 3 +- .../totalfreedommod/command/Command_rank.java | 6 +- .../command/Command_rawsay.java | 3 +- .../command/Command_report.java | 39 ++-- .../totalfreedommod/command/Command_ride.java | 12 +- .../command/Command_rideablepearl.java | 6 +- .../totalfreedommod/command/Command_ro.java | 29 ++- .../totalfreedommod/command/Command_rock.java | 3 +- .../totalfreedommod/command/Command_say.java | 4 +- .../command/Command_scare.java | 3 +- .../totalfreedommod/command/Command_seed.java | 9 +- .../command/Command_serverstats.java | 3 +- .../command/Command_setcompass.java | 6 +- .../command/Command_setlimit.java | 7 +- .../command/Command_setplayerlimit.java | 13 +- .../command/Command_setspawnworld.java | 3 +- .../totalfreedommod/command/Command_shop.java | 3 +- .../command/Command_smite.java | 12 +- .../command/Command_spawnmob.java | 12 +- .../command/Command_spectate.java | 4 +- .../command/Command_spectator.java | 4 +- .../command/Command_stackingpotato.java | 7 +- .../totalfreedommod/command/Command_stop.java | 12 +- .../command/Command_stopsound.java | 12 +- .../command/Command_survival.java | 5 +- .../totalfreedommod/command/Command_tag.java | 28 +-- .../command/Command_tagnyan.java | 63 ------ .../command/Command_tempban.java | 26 +-- .../command/Command_toggle.java | 19 +- .../command/Command_toggleclownfish.java | 3 +- .../command/Command_togglediscord.java | 3 +- .../command/Command_togglepickup.java | 4 +- .../command/Command_tossmob.java | 12 +- .../command/Command_totalfreedommod.java | 4 +- .../command/Command_tprandom.java | 10 +- .../command/Command_trail.java | 9 +- .../command/Command_unban.java | 3 +- .../command/Command_unbanip.java | 1 + .../command/Command_unbanname.java | 8 +- .../command/Command_vanish.java | 13 +- .../command/Command_whitelist.java | 38 ++-- .../command/FreedomCommand.java | 9 +- .../totalfreedommod/config/ConfigEntry.java | 8 +- .../httpd/module/Module_help.java | 35 ++-- .../permissions/PermissionConfig.java | 185 ------------------ .../permissions/PermissionEntry.java | 41 ---- .../permissions/PermissionManager.java | 120 ------------ .../totalfreedommod/player/FPlayer.java | 20 +- .../totalfreedommod/player/PlayerData.java | 59 +++--- .../totalfreedommod/player/PlayerList.java | 18 +- .../rank/DisplayableGroup.java | 5 + .../totalfreedommod/rank/RankManager.java | 25 +-- .../totalfreedommod/util/FUtil.java | 4 +- .../discord/TFD4JCommonsImpl.java | 6 +- .../discord/listener/AdminChatListener.java | 32 ++- .../discord/listener/MinecraftListener.java | 2 +- .../listener/PrivateMessageListener.java | 2 +- .../totalfreedom/discord/util/TFM_Bridge.java | 43 ++-- 87 files changed, 528 insertions(+), 1438 deletions(-) delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java delete mode 100644 commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java index 93e9bf66..f967d164 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java @@ -614,7 +614,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.pl.getPlayer(player).setTag(FUtil.miniMessage("[" + ChatColor.BLUE + "Total" + ChatColor.GOLD + "Freedom" + ChatColor.WHITE + "]")); } break; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 473fc5f2..09f07bb9 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -15,6 +15,7 @@ import me.totalfreedom.totalfreedommod.util.FConverter; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FSync; import me.totalfreedom.totalfreedommod.util.FUtil; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -245,10 +246,10 @@ public class LoginProcess extends FreedomService if (!plugin.al.isAdmin(player)) { - String tag = playerData.getTag(); + Component tag = playerData.getTag(); if (tag != null) { - fPlayer.setTag(FUtil.colorize(tag)); + fPlayer.setTag(tag); } int noteCount = playerData.getNotes().size(); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index 60e14504..f9071f98 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -15,8 +15,6 @@ import me.totalfreedom.totalfreedommod.config.MainConfig; import me.totalfreedom.totalfreedommod.freeze.Freezer; import me.totalfreedom.totalfreedommod.fun.*; import me.totalfreedom.totalfreedommod.httpd.HTTPDaemon; -import me.totalfreedom.totalfreedommod.permissions.PermissionConfig; -import me.totalfreedom.totalfreedommod.permissions.PermissionManager; import me.totalfreedom.totalfreedommod.player.PlayerList; import me.totalfreedom.totalfreedommod.punishments.PunishmentList; import me.totalfreedom.totalfreedommod.rank.RankManager; @@ -49,7 +47,6 @@ public class TotalFreedomMod extends JavaPlugin private static TotalFreedomMod plugin; // public MainConfig config; - public PermissionConfig permissions; // // Service Handler public FreedomServiceHandler fsh; @@ -78,7 +75,6 @@ public class TotalFreedomMod extends JavaPlugin public PunishmentList pul; public BanManager bm; public IndefiniteBanList im; - public PermissionManager pem; public GameRuleHandler gr; public CommandSpy cs; public Cager ca; @@ -171,9 +167,6 @@ public class TotalFreedomMod extends JavaPlugin BackupManager backups = new BackupManager(); backups.createAllBackups(); - permissions = new PermissionConfig(); - permissions.load(); - mv = new MovementValidator(); sp = new ServerPing(); @@ -305,7 +298,6 @@ public class TotalFreedomMod extends JavaPlugin pul = new PunishmentList(); bm = new BanManager(); im = new IndefiniteBanList(); - pem = new PermissionManager(); gr = new GameRuleHandler(); ew = new EntityWiper(); vh = new VanishHandler(); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java index b546a49d..10bf705e 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java @@ -2,20 +2,20 @@ package me.totalfreedom.totalfreedommod.admin; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; +import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; +import net.kyori.adventure.text.Component; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import java.util.concurrent.TimeUnit; -import me.totalfreedom.totalfreedommod.FreedomService; -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.GroupProvider; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FLog; -import me.totalfreedom.totalfreedommod.util.FUtil; -import net.kyori.adventure.text.Component; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; public class AdminList extends FreedomService { @@ -48,19 +48,9 @@ public class AdminList extends FreedomService ResultSet adminSet = plugin.sql.getAdminList(); while (adminSet.next()) { - try - { - Admin admin = new Admin(adminSet); - allAdmins.add(admin); - } - catch (Throwable ex) - { - FLog.warning("An error occurred whilst reading the admin entry at row #" + adminSet.getRow()); - FLog.warning(ex); - } + tryAddAdmin(adminSet); } - } - catch (SQLException e) + } catch (SQLException e) { FLog.severe("Failed to load admin list: " + e.getMessage()); } @@ -69,22 +59,24 @@ public class AdminList extends FreedomService FLog.info("Loaded " + allAdmins.size() + " admins (" + uuidTable.size() + " active, " + ipTable.size() + " IPs)"); } + private void tryAddAdmin(ResultSet adminSet) throws SQLException + { + try + { + Admin admin = new Admin(adminSet); + allAdmins.add(admin); + } catch (Throwable ex) + { + FLog.warning("An error occurred whilst reading the admin entry at row #" + adminSet.getRow()); + FLog.warning(ex); + } + } + public void messageAllAdmins(Component message) { server.getOnlinePlayers().stream().filter(this::isAdmin).forEach(player -> player.sendMessage(message)); } - public void messageAllAdmins(String message) - { - for (Player player : server.getOnlinePlayers()) - { - if (isAdmin(player)) - { - player.sendMessage(message); - } - } - } - public void potionSpyMessage(String message) { for (Player player : server.getOnlinePlayers()) @@ -109,12 +101,18 @@ public class AdminList extends FreedomService return true; } - Admin admin = getAdmin((Player)sender); + Admin admin = getAdmin((Player) sender); return admin != null && admin.isActive(); } + // Cast to OfflinePlayer public boolean isAdmin(Player player) + { + return isAdmin((OfflinePlayer) player); + } + + public boolean isAdmin(OfflinePlayer player) { if (player == null) { @@ -141,25 +139,17 @@ public class AdminList extends FreedomService public Admin getAdmin(CommandSender sender) { - if (sender instanceof Player) + if (sender instanceof Player player) { - return getAdmin((Player)sender); + return getAdmin(player); } return getEntryByName(sender.getName()); } - public Admin getAdmin(Player player) + public Admin getAdmin(OfflinePlayer player) { - final String ip = FUtil.getIp(player); - final Admin entry = getEntryByUuid(player.getUniqueId()); - - if (entry != null && !entry.getIps().contains(ip)) - { - entry.addIp(ip); - } - - return entry; + return getEntryByUuid(player.getUniqueId()); } public Admin getEntryByUuid(UUID uuid) @@ -177,6 +167,12 @@ public class AdminList extends FreedomService return ipTable.get(ip); } + // To cast against OfflinePlayer + public Admin getAdmin(Player player) + { + return getAdmin((OfflinePlayer) player); + } + public void updateLastLogin(Player player) { final Admin admin = getAdmin(player); @@ -189,12 +185,12 @@ public class AdminList extends FreedomService save(admin); } - public boolean addAdmin(Admin admin) + public void addAdmin(Admin admin) { if (!admin.isValid()) { FLog.warning("Could not add admin: " + admin.getName() + ". Admin is missing details!"); - return false; + return; } // Store admin, update views @@ -203,18 +199,13 @@ public class AdminList extends FreedomService // Save admin plugin.sql.addAdmin(admin); - - return true; } public boolean removeAdmin(Admin admin) { - if (admin.getRank().isAtLeast(Rank.ADMIN)) + if (admin.getRank().isAtLeast(GroupProvider.ADMIN.getGroup()) && (plugin.btb != null)) { - if (plugin.btb != null) - { - plugin.btb.killTelnetSessions(admin.getName()); - } + plugin.btb.killTelnetSessions(admin.getName()); } // Remove admin, update views @@ -275,13 +266,13 @@ public class AdminList extends FreedomService ResultSet currentSave = plugin.sql.getAdminByUuid(admin.getUuid()); for (Map.Entry entry : admin.toSQLStorable().entrySet()) { - Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); if (storedValue != null && !storedValue.equals(entry.getValue()) || storedValue == null && entry.getValue() != null || entry.getValue() == null) + Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); + if (storedValue != null && !storedValue.equals(entry.getValue()) || storedValue == null && entry.getValue() != null || entry.getValue() == null) { plugin.sql.setAdminValue(admin, entry.getKey(), entry.getValue()); } } - } - catch (SQLException e) + } catch (SQLException e) { FLog.severe("Failed to save admin: " + e.getMessage()); } @@ -292,20 +283,20 @@ public class AdminList extends FreedomService allAdmins.stream() .filter(admin -> admin.isActive() && !admin.getRank().isAtLeast(GroupProvider.SENIOR_ADMIN.getGroup())) .forEach(admin -> - { - final Date lastLogin = admin.getLastLogin(); - final long lastLoginHours = TimeUnit.HOURS.convert(new Date().getTime() - lastLogin.getTime(), TimeUnit.MILLISECONDS); - if (lastLoginHours < ConfigEntry.ADMINLIST_CLEAN_THESHOLD_HOURS.getInteger()) - { - return; - } - if (verbose) - { - FUtil.adminAction("TotalFreedomMod", "Deactivating admin " + admin.getName() + ", inactive for " + lastLoginHours + " hours", true); - } - admin.setActive(false); - save(admin); - }); + { + final Date lastLogin = admin.getLastLogin(); + final long lastLoginHours = TimeUnit.HOURS.convert(new Date().getTime() - lastLogin.getTime(), TimeUnit.MILLISECONDS); + if (lastLoginHours < ConfigEntry.ADMINLIST_CLEAN_THESHOLD_HOURS.getInteger()) + { + return; + } + if (verbose) + { + FUtil.adminAction("TotalFreedomMod", "Deactivating admin " + admin.getName() + ", inactive for " + lastLoginHours + " hours", true); + } + admin.setActive(false); + save(admin); + }); updateTables(); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java index c533b96e..aeecce69 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java @@ -2,7 +2,7 @@ package me.totalfreedom.totalfreedommod.blocking.command; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import org.bukkit.command.CommandSender; public enum CommandBlockerRank @@ -25,7 +25,7 @@ public enum CommandBlockerRank Admin admin = TotalFreedomMod.getPlugin().al.getAdmin(sender); if (admin != null) { - if (admin.getRank() == Rank.SENIOR_ADMIN) + if (admin.getRank() == GroupProvider.SENIOR_ADMIN.getGroup()) { return SENIOR_ADMIN; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java index 95aa5a7b..82c0712e 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java @@ -1,8 +1,5 @@ package me.totalfreedom.totalfreedommod.bridge; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; import me.totalfreedom.bukkittelnet.BukkitTelnet; import me.totalfreedom.bukkittelnet.api.TelnetCommandEvent; import me.totalfreedom.bukkittelnet.api.TelnetPreLoginEvent; @@ -10,13 +7,18 @@ import me.totalfreedom.bukkittelnet.api.TelnetRequestDataTagsEvent; import me.totalfreedom.bukkittelnet.session.ClientSession; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.plugin.Plugin; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Deprecated public class BukkitTelnetBridge extends FreedomService { @@ -44,7 +46,7 @@ public class BukkitTelnetBridge extends FreedomService final Admin admin = plugin.al.getEntryByIp(ip); - if (admin == null || !admin.isActive() || !admin.getRank().hasConsoleVariant()) + if (admin == null || !admin.isActive()) { return; } @@ -80,8 +82,8 @@ public class BukkitTelnetBridge extends FreedomService boolean active = admin.isActive(); isAdmin = active; - isSeniorAdmin = active && admin.getRank() == Rank.SENIOR_ADMIN; - isTelnetAdmin = active && (isSeniorAdmin || admin.getRank() == Rank.ADMIN); + isSeniorAdmin = active && admin.getRank().equals(GroupProvider.SENIOR_ADMIN.getGroup()); + isTelnetAdmin = active && (isSeniorAdmin || admin.getRank().equals(GroupProvider.ADMIN.getGroup())); } playerTags.put("tfm.admin.isAdmin", isAdmin); @@ -106,10 +108,9 @@ public class BukkitTelnetBridge extends FreedomService final Plugin bukkitTelnet = server.getPluginManager().getPlugin("BukkitTelnet"); if (bukkitTelnet instanceof BukkitTelnet) { - bukkitTelnetPlugin = (BukkitTelnet)bukkitTelnet; + bukkitTelnetPlugin = (BukkitTelnet) bukkitTelnet; } - } - catch (Exception ex) + } catch (Exception ex) { FLog.severe(ex); } @@ -159,8 +160,7 @@ public class BukkitTelnetBridge extends FreedomService { telnet.appender.removeSession(session); session.syncTerminateSession(); - } - catch (Exception ex) + } catch (Exception ex) { FLog.severe("Error removing single telnet session: " + ex.getMessage()); } @@ -168,8 +168,7 @@ public class BukkitTelnetBridge extends FreedomService FLog.info(sessionsToRemove.size() + " telnet session(s) removed."); } - } - catch (Exception ex) + } catch (Exception ex) { FLog.severe("Error removing telnet sessions: " + ex.getMessage()); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java index fc25b54f..8175ce50 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/bridge/EssentialsBridge.java @@ -4,7 +4,7 @@ import com.earth2me.essentials.Essentials; import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.player.FPlayer; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.DisplayableGroup; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.entity.HumanEntity; @@ -156,9 +156,9 @@ public class EssentialsBridge extends FreedomService if (inventoryHolder instanceof HumanEntity) { Player invOwner = (Player)inventoryHolder; - Rank recieverRank = plugin.rm.getRank(player); - Rank playerRank = plugin.rm.getRank(invOwner); - if (playerRank.ordinal() >= recieverRank.ordinal() || !invOwner.isOnline()) + DisplayableGroup recieverRank = plugin.rm.getRank(player); + DisplayableGroup playerRank = plugin.rm.getRank(invOwner); + if (playerRank.getWeight() >= recieverRank.getWeight() || !invOwner.isOnline()) { event.setCancelled(true); refreshPlayer = player; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java index 44d61c63..e4a17030 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/CommandPermissions.java @@ -3,9 +3,6 @@ package me.totalfreedom.totalfreedommod.command; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import me.totalfreedom.totalfreedommod.rank.GroupProvider; -import me.totalfreedom.totalfreedommod.rank.Rank; - @Retention(RetentionPolicy.RUNTIME) public @interface CommandPermissions { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java index ed2b4698..28b36565 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deop.java @@ -29,24 +29,22 @@ public class Command_deop extends FreedomCommand Player player = Bukkit.getServer().getPlayer(args[0]); - if (player == null) + if (player == null || plugin.al.isVanished(player.getUniqueId())) { msg(sender, PLAYER_NOT_FOUND); return true; } - if (plugin.al.isVanished(player.getUniqueId())) + User user = GroupProvider.getUser(player); + if (user.getPrimaryGroup().equalsIgnoreCase(GroupProvider.NON_OP.getGroup().getLuckPermsGroup().getName())) { - msgNew("You cannot de-op , as they are vanished.", Placeholder.unparsed("player", player.getName())); + msgNew(sender, " is already de-opped!", Placeholder.unparsed("", player.getName())); return true; } - - User user = GroupProvider.getUser(player); user.setPrimaryGroup(GroupProvider.NON_OP.getGroup().getLuckPermsGroup().getName()); msg(player, YOU_ARE_NOT_OP); plugin.rm.updateDisplay(player); - if (!silent) { FUtil.adminAction(sender.getName(), "De-opping " + player.getName(), false); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java index 6ea84e31..63815719 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_deopall.java @@ -7,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(permission = "", source = SourceType.BOTH, blockHostConsole = true) +@CommandPermissions(permission = "deop.all", source = SourceType.BOTH, blockHostConsole = true) @CommandParameters(description = "Deop everyone on the server.", usage = "/") public class Command_deopall extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java index 9314239b..ee99af3e 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java @@ -3,7 +3,7 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.util.FConverter; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.format.TextColor; @@ -20,7 +20,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "myadmin", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Manage your admin entry.", usage = "/ [-o ] | convertacformat | setacformat | clearacformat> | syncroles>") public class Command_myadmin extends FreedomCommand { @@ -39,7 +39,7 @@ public class Command_myadmin extends FreedomCommand // -o switch if (args[0].equals("-o")) { - checkPermission(Rank.SENIOR_ADMIN); + checkPermission("tfm.myadmin.other"); init = playerSender; targetPlayer = getPlayer(args[1]); if (targetPlayer == null) @@ -67,7 +67,7 @@ public class Command_myadmin extends FreedomCommand switch (args[0]) { - case "clearips": + case "clearips" -> { if (args.length != 1) { @@ -94,8 +94,7 @@ public class Command_myadmin extends FreedomCommand msgNew(targetPlayer, " is now your only IP address.", Placeholder.unparsed("ip", String.valueOf(target.getIps().get(0)))); return true; } - - case "clearip": + case "clearip" -> { if (args.length != 2) { @@ -107,8 +106,7 @@ public class Command_myadmin extends FreedomCommand if (init == null) { msgNew("That IP is not registered to you."); - } - else + } else { msgNew("That IP does not belong to that player."); } @@ -120,8 +118,7 @@ public class Command_myadmin extends FreedomCommand if (init == null) { msgNew("You cannot remove your current IP."); - } - else + } else { msgNew("You cannot remove that admin's current IP."); } @@ -140,14 +137,12 @@ public class Command_myadmin extends FreedomCommand msgNew("Current IPs: ", Placeholder.unparsed("ip", StringUtils.join(target.getIps(), ", "))); return true; } - - case "convertacformat": + case "convertacformat" -> { if (!FConverter.needsConversion(target.getAcFormat())) { msgNew("That format does not need to be converted."); - } - else + } else { msgNew("Converting format..."); target.setAcFormat(FConverter.convertAdminChatFormat(target.getAcFormat())); @@ -158,9 +153,7 @@ public class Command_myadmin extends FreedomCommand return true; } - - case "setacformat": - case "setscformat": + case "setacformat", "setscformat" -> { String format = StringUtils.join(args, " ", 1, args.length); if (FConverter.needsConversion(format)) @@ -175,14 +168,12 @@ public class Command_myadmin extends FreedomCommand msgNew("Set admin chat format to \"\"", Placeholder.unparsed("format", format)); msgNew("Example:"); msgNew(format, Placeholder.unparsed("name", "ExampleAdmin"), - Placeholder.unparsed("rank", Rank.ADMIN.getAbbr()), - TagResolver.resolver("rankcolor", Tag.styling(lol -> lol.color(TextColor.color(Rank.ADMIN.getColor().getColor().getRGB())))), + Placeholder.unparsed("rank", GroupProvider.ADMIN.getGroup().getAbbr()), + TagResolver.resolver("rankcolor", Tag.styling(styler -> styler.color(TextColor.color(GroupProvider.ADMIN.getGroup().getColor().getColor().getRGB())))), Placeholder.unparsed("message", "The quick brown fox jumped over the lazy dog.")); return true; } - - case "clearacformat": - case "clearscformat": + case "clearacformat", "clearscformat" -> { target.setAcFormat(null); plugin.al.save(target); @@ -190,8 +181,7 @@ public class Command_myadmin extends FreedomCommand msgNew("Cleared admin chat format."); return true; } - - case "syncroles": + case "syncroles" -> { if (plugin.dc != null && plugin.dc.isEnabled()) { @@ -210,8 +200,7 @@ public class Command_myadmin extends FreedomCommand if (synced) { msgNew("Successfully synced your roles."); - } - else + } else { msgNew("Failed to sync your roles, please check the console."); } @@ -219,8 +208,7 @@ public class Command_myadmin extends FreedomCommand return true; } - - default: + default -> { return false; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java index 7a653488..b40f4d1a 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myinfo.java @@ -1,18 +1,17 @@ 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(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "myinfo", 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()); + msgNew(sender, plugin.pl.getData(playerSender).toString()); return true; } } \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java index c0ab6e1e..0fc4ff13 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nether.java @@ -1,15 +1,13 @@ 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(rank = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "nether", 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) { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java index 2f61f057..1b06d97a 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickclean.java @@ -1,13 +1,6 @@ package me.totalfreedom.totalfreedommod.command; -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.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -16,29 +9,40 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +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(permission = "nickclean", 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() - {{ - put("&0", Color.BLACK); - put("&1", Color.BLUE); - put("&2", Color.GREEN); - put("&3", Color.TEAL); - put("&4", Color.MAROON); - put("&5", Color.FUCHSIA); - put("&6", Color.OLIVE); - put("&7", Color.SILVER); - put("&8", Color.GRAY); - put("&9", Color.NAVY); - put("&a", Color.LIME); - put("&b", Color.AQUA); - put("&c", Color.RED); - put("&d", Color.PURPLE); - put("&e", Color.YELLOW); - put("&f", Color.WHITE); - }}; + private static final Map colorCodes = populateHashMap(); + + private static Map populateHashMap() + { + Map colorCodes = new HashMap<>(); + colorCodes.put("&0", Color.BLACK); + colorCodes.put("&1", Color.BLUE); + colorCodes.put("&2", Color.GREEN); + colorCodes.put("&3", Color.TEAL); + colorCodes.put("&4", Color.MAROON); + colorCodes.put("&5", Color.FUCHSIA); + colorCodes.put("&6", Color.OLIVE); + colorCodes.put("&7", Color.SILVER); + colorCodes.put("&8", Color.GRAY); + colorCodes.put("&9", Color.NAVY); + colorCodes.put("&a", Color.LIME); + colorCodes.put("&b", Color.AQUA); + colorCodes.put("&c", Color.RED); + colorCodes.put("&d", Color.PURPLE); + colorCodes.put("&e", Color.YELLOW); + colorCodes.put("&f", Color.WHITE); + return colorCodes; + } @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) @@ -86,7 +90,7 @@ public class Command_nickclean extends FreedomCommand { hexColorSub = split.substring(0, 12); split = String.valueOf(split.charAt(12)); - String hexColorString = "#" + hexColorSub.replaceAll("§", ""); + String hexColorString = "#" + hexColorSub.replace("§", ""); java.awt.Color hexColor = java.awt.Color.decode(hexColorString); // Get a range of nearby colors that are alike to the color blocked. @@ -126,8 +130,7 @@ 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); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java deleted file mode 100644 index aeb2e444..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickfilter.java +++ /dev/null @@ -1,120 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(rank = 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 !.", - usage = "/ !", - aliases = "nf") -public class Command_nickfilter extends FreedomCommand -{ - - private static Player getPlayerByDisplayName(String needle) - { - needle = needle.toLowerCase().trim(); - - for (Player player : Bukkit.getOnlinePlayers()) - { - if (player.getDisplayName().toLowerCase().trim().contains(needle)) - { - return player; - } - } - - return null; - } - - private static Player getPlayerByDisplayNameAlt(String needle) - { - needle = needle.toLowerCase().trim(); - - Integer minEditDistance = null; - Player minEditMatch = null; - - for (Player player : Bukkit.getOnlinePlayers()) - { - String haystack = player.getDisplayName().toLowerCase().trim(); - int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase()); - if (minEditDistance == null || minEditDistance > editDistance) - { - minEditDistance = editDistance; - minEditMatch = player; - } - } - - return minEditMatch; - } - - @Override - 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) - { - Player player = null; - - Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg); - if (matcher.find()) - { - String displayName = matcher.group(1); - - player = getPlayerByDisplayName(displayName); - - if (player == null || plugin.al.isVanished(player.getUniqueId()) && !plugin.al.isAdmin(sender)) - { - player = getPlayerByDisplayNameAlt(displayName); - - if (player == null || !plugin.al.isVanished(player.getUniqueId()) && !plugin.al.isAdmin(sender)) - { - msg("Can't find player by nickname: " + displayName); - return true; - } - } - } - - if (player == null) - { - outputCommand.add(arg); - } - else - { - nickMatched = true; - outputCommand.add(player.getName()); - } - } - } - - if (!nickMatched) - { - msg("No nicknames replaced in command."); - return true; - } - - String newCommand = StringUtils.join(outputCommand, " "); - - if (plugin.cb.isCommandBlocked(newCommand, sender)) - { - // CommandBlocker handles messages and broadcasts - return true; - } - - msg("Sending command: \"" + newCommand + "\"."); - server.dispatchCommand(sender, newCommand); - - return true; - } -} \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java index e39d3ba1..833dc13b 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickgradient.java @@ -1,7 +1,6 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.api.Interpolator; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang3.StringUtils; import org.bukkit.Bukkit; @@ -11,7 +10,9 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +import java.util.List; + +@CommandPermissions(permission = "nickgradient", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/ ", aliases = "nickgr") public class Command_nickgradient extends FreedomCommand { @@ -59,8 +60,7 @@ public class Command_nickgradient extends FreedomCommand { awt1 = FUtil.getRandomAWTColor(); from = " (From: " + FUtil.getHexStringOfAWTColor(awt1) + ")"; - } - else + } else { awt1 = java.awt.Color.decode(args[0]); } @@ -69,13 +69,11 @@ public class Command_nickgradient extends FreedomCommand { 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; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java deleted file mode 100644 index 77e6e68b..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nicknyan.java +++ /dev/null @@ -1,70 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import java.util.Arrays; - -@CommandPermissions(rank = 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 -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!server.getPluginManager().isPluginEnabled("Essentials")) - { - msgNew("Essentials is not enabled on this server."); - return true; - } - - if (args.length != 1) - { - return false; - } - - if (args[0].equalsIgnoreCase("off")) - { - plugin.esb.setNickname(sender.getName(), null); - msgNew("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 + "]+$")) - { - msgNew("That nickname contains invalid characters."); - return true; - } - else if (nickPlain.length() < 3 || nickPlain.length() > 30) - { - msgNew("Your nickname must be between 3 and 30 characters long."); - return true; - } - - - if (server.getOnlinePlayers().stream().anyMatch(player -> player != playerSender - && (player.getName().equalsIgnoreCase(nickPlain) - || ChatColor.stripColor(plugin.esb.getNickname(player.getName())).trim().equalsIgnoreCase(nickPlain)))) - { - msgNew("That nickname is already in use."); - return true; - } - - final StringBuilder newNick = new StringBuilder(); - Arrays.stream(nickPlain.chars().toArray()).forEach(character -> newNick.append(FUtil.randomChatColor()) - .append(Character.toString(character))); - - newNick.append(ChatColor.WHITE); - - plugin.esb.setNickname(sender.getName(), newNick.toString()); - - msgNew("Your nickname is now: ", Placeholder.component("new", FUtil.colorizeAsComponent(newNick.toString()))); - return true; - } -} \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java index 8071d14f..ade5ffe9 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_nickrainbow.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Bukkit; @@ -9,7 +8,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "nickrainbow", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/ ") public class Command_nickrainbow extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java index b4a858c2..ed0431c5 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java @@ -1,10 +1,6 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.apache.commons.lang.ArrayUtils; @@ -13,6 +9,10 @@ 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(permission = "notes", source = SourceType.BOTH) @CommandParameters(description = "Manage notes for a player", usage = "/ | remove | clear>") public class Command_notes extends FreedomCommand @@ -39,8 +39,7 @@ public class Command_notes extends FreedomCommand } playerData = plugin.pl.getData(entry.getName()); - } - else + } else { playerData = plugin.pl.getData(player); } @@ -125,12 +124,10 @@ public class Command_notes extends FreedomCommand 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(); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java index 9bb0d5f6..f30bcfb9 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_op.java @@ -1,15 +1,15 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.util.FUtil; -import org.apache.commons.lang.StringUtils; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.luckperms.api.model.user.User; +import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH, cooldown = 5) +@CommandPermissions(permission = "op", source = SourceType.BOTH, cooldown = 5) @CommandParameters(description = "OP a player", usage = "/ ") public class Command_op extends FreedomCommand { @@ -28,32 +28,27 @@ public class Command_op extends FreedomCommand silent = args[1].equalsIgnoreCase("-s"); } - final String targetName = args[0].toLowerCase(); + Player player = Bukkit.getServer().getPlayer(args[0]); - List matchedPlayerNames = new ArrayList<>(); - for (final Player player : server.getOnlinePlayers()) + if (player == null || plugin.al.isVanished(player.getUniqueId())) { - if ((player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName) - || player.getName().contains(targetName) || player.getDisplayName().contains(targetName)) && - !player.isOp() && !plugin.al.isVanished(player.getUniqueId())) - { - matchedPlayerNames.add(player.getName()); - player.setOp(true); - msg(player, YOU_ARE_OP); - plugin.rm.updateDisplay(player); - } + msg(sender, PLAYER_NOT_FOUND); + return true; } - if (!matchedPlayerNames.isEmpty()) + User user = GroupProvider.getUser(player); + if (user.getPrimaryGroup().equalsIgnoreCase(GroupProvider.OP.getGroup().getLuckPermsGroup().getName())) { - if (!silent) - { - FUtil.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false); - } + msgNew(sender, " is already OP!", Placeholder.unparsed("", player.getName())); + return true; } - else + user.setPrimaryGroup(GroupProvider.OP.getGroup().getLuckPermsGroup().getName()); + msg(player, YOU_ARE_OP); + plugin.rm.updateDisplay(player); + + if (!silent) { - msgNew("Either the player is already opped, or the player could not be found."); + FUtil.adminAction(sender.getName(), "Opping " + player.getName(), false); } return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java index e670c591..d3d7e764 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opall.java @@ -1,32 +1,27 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.util.FUtil; +import net.luckperms.api.model.user.User; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH, cooldown = 30) +@CommandPermissions(permission = "op.all", source = SourceType.BOTH, cooldown = 30) @CommandParameters(description = "OP everyone on the server.", usage = "/") public class Command_opall extends FreedomCommand { @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - FUtil.adminAction(sender.getName(), "Opping all players on the server", false); + FUtil.adminAction(sender.getName(), "Opping all players on the server", true); server.getOnlinePlayers().forEach(player -> { - if (!player.isOp()) - { - player.setOp(true); - msg(player, YOU_ARE_OP); - plugin.rm.updateDisplay(player); - } - else - { - player.recalculatePermissions(); - } + User user = GroupProvider.getUser(player); + user.setPrimaryGroup(GroupProvider.OP.getGroup().getLuckPermsGroup().getName()); + msg(player, YOU_ARE_OP); + plugin.rm.updateDisplay(player); }); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java index b3062ac5..6bde87e0 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_opme.java @@ -1,7 +1,6 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.rank.GroupProvider; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.luckperms.api.model.user.User; import org.bukkit.command.Command; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java deleted file mode 100644 index cae5f993..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ops.java +++ /dev/null @@ -1,60 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.Objects; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.OfflinePlayer; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "Manage operators", usage = "/ ") -public class Command_ops 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("count")) - { - int totalOps = server.getOperators().size(); - long onlineOps = server.getOnlinePlayers().stream().filter(player -> player.isOp()).count(); - - msgNew("Online OPs: ", Placeholder.unparsed("online", String.valueOf(onlineOps))); - msgNew("Offline OPs: ", Placeholder.unparsed("offline", String.valueOf(totalOps - onlineOps))); - msgNew("Total OPs: ", Placeholder.unparsed("total", String.valueOf(totalOps))); - return true; - } - - if (args[0].equalsIgnoreCase("purge")) - { - if (!plugin.al.isAdmin(sender)) - { - noPerms(); - return true; - } - - FUtil.adminAction(sender.getName(), "Purging all operators", true); - - server.getOperators().forEach(operator -> - { - operator.setOp(false); - - if (operator.isOnline()) - { - msg(Objects.requireNonNull(operator.getPlayer()), YOU_ARE_NOT_OP); - } - }); - - return true; - } - return false; - } -} \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java index ab887d44..cd63bfe1 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java @@ -3,7 +3,6 @@ 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 net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.GameMode; @@ -12,7 +11,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "orbit", source = SourceType.BOTH) @CommandParameters(description = "POW!!! Right in the kisser! One of these days Alice, straight to the Moon - Sends the specified player into orbit.", usage = "/ [< | stop>]") public class Command_orbit extends FreedomCommand @@ -50,8 +49,7 @@ public class Command_orbit extends FreedomCommand try { strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("" + ex.getMessage()); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java deleted file mode 100644 index 22a77a52..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_permissions.java +++ /dev/null @@ -1,51 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.List; -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; - -@CommandPermissions(rank = Rank.NON_OP, source = SourceType.BOTH) -@CommandParameters(description = "Check your permissions", usage = "/ [prefix | reload]") -public class Command_permissions extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length > 0 && args[0].equalsIgnoreCase("reload") && plugin.al.isAdmin(sender)) - { - plugin.permissions.load(); - plugin.pem.loadPermissionNodes(); - plugin.pem.updatePlayers(); - msg("Reloaded permissions"); - } - else - { - String prefix = ""; - if (args.length > 0) - { - prefix = args[0]; - } - checkPlayer(); - List permissions = new ArrayList<>(); - for (PermissionAttachmentInfo attachmentInfo : playerSender.getEffectivePermissions()) - { - if (attachmentInfo.getValue()) - { - String permission = attachmentInfo.getPermission(); - if (!prefix.isEmpty() && !permission.startsWith(prefix)) - { - continue; - } - permissions.add(permission); - } - } - msg(String.join(", ", permissions)); - } - - return true; - } -} \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java index dce1af3c..246930f4 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java @@ -1,13 +1,12 @@ package me.totalfreedom.totalfreedommod.command; import io.papermc.lib.PaperLib; -import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.NON_OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "plotworld", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Go to the PlotWorld.", usage = "/", aliases = "pw") public class Command_plotworld extends FreedomCommand { @@ -18,8 +17,7 @@ public class Command_plotworld extends FreedomCommand if (plotworld != null) { PaperLib.teleportAsync(playerSender, plotworld.getSpawnLocation()); - } - else + } else { msg("\"plotworld\" doesn't exist."); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java index 08775f97..43d685fb 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plugincontrol.java @@ -1,20 +1,21 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.*; -import me.totalfreedom.totalfreedommod.rank.Rank; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@CommandPermissions(permission = "plugincontrol", 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 { @@ -26,8 +27,8 @@ public class Command_plugincontrol extends FreedomCommand final PluginManager pm = server.getPluginManager(); /* This is the way it is because there was too much "if the arguments aren't enough then return false" in the - * original code in addition to the stupid amount of "if something isn't right then do some boilerplate stuff - * then return true". Codacy complained, so I aggressively optimized this to keep it quiet. */ + * original code in addition to the stupid amount of "if something isn't right then do some boilerplate stuff + * then return true". Codacy complained, so I aggressively optimized this to keep it quiet. */ switch (args.length) { case 1 -> @@ -68,8 +69,7 @@ public class Command_plugincontrol extends FreedomCommand if (pl.isEnabled()) { msgNew(" is now enabled.", Placeholder.unparsed("plugin", pl.getName())); - } - else + } else { msgNew("An error occurred whilst attempting to enable ", Placeholder.unparsed("plugin", pl.getName())); } @@ -81,8 +81,7 @@ public class Command_plugincontrol extends FreedomCommand { msgNew(" is already disabled.", Placeholder.unparsed("plugin", pl.getName())); return true; - } - else if (UNTOUCHABLE_PLUGINS.contains(pl.getName())) + } else if (UNTOUCHABLE_PLUGINS.contains(pl.getName())) { msgNew(" can't be disabled.", Placeholder.unparsed("plugin", pl.getName())); return true; @@ -104,7 +103,8 @@ public class Command_plugincontrol extends FreedomCommand pm.disablePlugin(pl); pm.enablePlugin(pl); - msgNew(" has been reloaded.", Placeholder.unparsed("plugin", pl.getName()));; + msgNew(" has been reloaded.", Placeholder.unparsed("plugin", pl.getName())); + ; return true; } default -> @@ -112,8 +112,7 @@ public class Command_plugincontrol extends FreedomCommand // Do nothing. This is here to please Codacy. } } - } - else + } else { msgNew("Plugin not found!"); return true; @@ -138,8 +137,7 @@ public class Command_plugincontrol extends FreedomCommand if (args.length == 1) { return Arrays.asList("enable", "disable", "reload", "list"); - } - else if (args.length == 2 && !args[0].equalsIgnoreCase("list")) + } else if (args.length == 2 && !args[0].equalsIgnoreCase("list")) { return Arrays.stream(server.getPluginManager().getPlugins()).map(Plugin::getName) .filter(pl -> !UNTOUCHABLE_PLUGINS.contains(pl)).toList(); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java index d2c15831..ad9adaf5 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -1,10 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.Arrays; -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.command.Command; @@ -13,7 +8,12 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH) +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@CommandPermissions(permission = "potion", source = SourceType.BOTH) @CommandParameters( description = "Manipulate your potion effects. Duration is measured in server ticks (~20 ticks per second).", usage = "/ [target name]>", @@ -25,14 +25,13 @@ public class Command_potion extends FreedomCommand { switch (args.length) { - case 1: + case 1 -> { if (args[0].equalsIgnoreCase("list")) { msg("Potion effect types: " + FUtil.listToString(Arrays.stream(PotionEffectType.values()) .map(PotionEffectType::getName).toList()), ChatColor.AQUA); - } - else if (args[0].equalsIgnoreCase("clearall")) + } else if (args[0].equalsIgnoreCase("clearall")) { if (!(plugin.al.isAdmin(sender) || senderIsConsole)) { @@ -46,29 +45,18 @@ public class Command_potion extends FreedomCommand } return true; } - - case 2: + 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 (!plugin.al.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) - { - msg("You must specify a target player when using this command from the console."); - return true; - } + msg(ChatColor.RED + "Only admins can clear potion effects from other players."); + return true; } + target = getPlayer(args[1], true); if (target == null) { @@ -84,11 +72,8 @@ 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: + case 4, 5 -> { if (args[0].equalsIgnoreCase("add")) { @@ -109,8 +94,7 @@ public class Command_potion extends FreedomCommand msg(PLAYER_NOT_FOUND); return true; } - } - else + } else { if (senderIsConsole) { @@ -130,8 +114,7 @@ public class Command_potion extends FreedomCommand try { duration = Math.min(Integer.parseInt(args[2]), 100000); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msg("Invalid duration: " + args[2], ChatColor.RED); return true; @@ -141,8 +124,7 @@ public class Command_potion extends FreedomCommand try { amplifier = Math.min(Integer.parseInt(args[3]), 100000); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msg("Invalid potion amplifier: " + args[3], ChatColor.RED); return true; @@ -155,9 +137,8 @@ public class Command_potion extends FreedomCommand + ", Amplifier: " + new_effect.getAmplifier() + (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); } - break; } - default: + default -> { return false; } @@ -187,8 +168,7 @@ public class Command_potion extends FreedomCommand { return FUtil.getPlayerList(); } - } - else if (args[0].equalsIgnoreCase("add")) + } else if (args[0].equalsIgnoreCase("add")) { return Arrays.stream(PotionEffectType.values()).map(PotionEffectType::getName).toList(); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java index ca9ab20f..f6f5d759 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potionspy.java @@ -1,11 +1,6 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.math.NumberUtils; import org.bukkit.Bukkit; @@ -15,7 +10,12 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.entity.ThrownPotion; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@CommandPermissions(permission = "potionspy", 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 { @@ -29,8 +29,7 @@ public class Command_potionspy extends FreedomCommand { 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."; @@ -39,17 +38,10 @@ public class Command_potionspy extends FreedomCommand String bottomText = "&8&m--------------------&r &e%s / %s &8&m--------------------&r"; switch (args[0].toLowerCase()) { - case "enable": - case "on": - setPotionSpyState(admin, true); - break; - - case "disable": - case "off": - setPotionSpyState(admin, false); - break; - - case "history": + case "enable", "on" -> setPotionSpyState(admin, true); + case "disable", "off" -> setPotionSpyState(admin, false); + case "history" -> + { if (args.length == 3) { Player player = Bukkit.getPlayer(args[1]); @@ -62,7 +54,7 @@ public class Command_potionspy extends FreedomCommand List> thrownPotions = new ArrayList<>(plugin.mo.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()) { @@ -95,30 +87,27 @@ public class Command_potionspy extends FreedomCommand { 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. 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) { msg(sender, noPlayerRecord); - } - else + } else { msg(sender, "No potions have been thrown yet."); } @@ -136,7 +125,7 @@ public class Command_potionspy extends FreedomCommand for (Map.Entry potionEntry : thrownPotions) { ThrownPotion potion = potionEntry.getKey(); - Player player = (Player)potion.getShooter(); + Player player = (Player) potion.getShooter(); boolean trollPotions = plugin.mo.isTrollPotion(potion); if (player != null) @@ -154,22 +143,22 @@ public class Command_potionspy extends FreedomCommand { 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; - default: + } + default -> + { return false; + } } } return true; @@ -197,22 +186,19 @@ public class Command_potionspy extends FreedomCommand if (seconds < 60) { return seconds + "s"; - } - else + } else { long minutes = Math.round(seconds / 60.0); if (minutes < 60) { return minutes + "m"; - } - else + } else { long hours = Math.round(minutes / 60.0); if (hours < 24) { return hours + "h"; - } - else + } else { return Math.round(hours / 24.0) + "d"; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java index 9db65663..f73fe9fb 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_purgeall.java @@ -1,7 +1,6 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; import org.bukkit.World; @@ -11,7 +10,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "purgeall", source = SourceType.BOTH) @CommandParameters(description = "Purge current mutes, command blocks, orbits, freezes, potion effects, cages, and entities.", usage = "/") public class Command_purgeall extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java index 785c57e6..b5fc7b4a 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rank.java @@ -1,13 +1,13 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.rank.Displayable; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.DisplayableGroup; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.NON_OP, source = SourceType.BOTH) +@CommandPermissions(permission = "rank", source = SourceType.BOTH) @CommandParameters(description = "Show the rank of the sender or a specified user.", usage = "/ [player]") public class Command_rank extends FreedomCommand { @@ -51,7 +51,7 @@ public class Command_rank extends FreedomCommand public String message(Player player) { Displayable display = plugin.rm.getDisplay(player); - Rank rank = plugin.rm.getRank(player); + DisplayableGroup rank = plugin.rm.getRank(player); StringBuilder sb = new StringBuilder(); sb.append(ChatColor.AQUA) diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java index a95a1d7c..48867633 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rawsay.java @@ -1,13 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -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; -@CommandPermissions(rank = Rank.SENIOR_ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "rawsay", source = SourceType.BOTH) @CommandParameters(description = "Broadcasts the given message. Supports colors.", usage = "/ ") public class Command_rawsay extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java index aae42267..6eff57d2 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_report.java @@ -1,15 +1,14 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; +import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true) +@CommandPermissions(permission = "report", source = SourceType.ONLY_IN_GAME, blockHostConsole = true) @CommandParameters(description = "Report a player for all admins to see.", usage = "/ ") public class Command_report extends FreedomCommand { @@ -22,41 +21,31 @@ public class Command_report extends FreedomCommand return false; } - Player player = getPlayer(args[0], true); - OfflinePlayer offlinePlayer = getOfflinePlayer(args[0]); + OfflinePlayer player = Bukkit.getOfflinePlayer(args[0]); - if (player == null && offlinePlayer == null) + if (sender instanceof Player && (player.equals(playerSender))) { - msg(PLAYER_NOT_FOUND); + msgNew("Please, don't try to report yourself."); return true; } - else if (player != null) + + if (plugin.al.isAdmin(player)) { - if (sender instanceof Player) - { - if (player.equals(playerSender)) - { - msgNew("Please, don't try to report yourself."); - return true; - } - } - - if (plugin.al.isAdmin(player)) - { - msgNew("You can't report admins with this command."); - return true; - } - + msgNew("You can't report admins with this command."); + return true; } String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); - plugin.cm.reportAction(playerSender, (player == null) ? offlinePlayer.getName() : player.getName(), report); + plugin.cm.reportAction(playerSender, player.getName(), report); boolean logged = false; if (plugin.dc != null && plugin.dc.isEnabled()) { - logged = (player == null) ? plugin.dc.sendReportOffline(playerSender, offlinePlayer, report) : plugin.dc.sendReport(playerSender, player, report); + Player online = Bukkit.getPlayer(player.getUniqueId()); + logged = (online != null) + ? plugin.dc.sendReport(playerSender, online, report) + : plugin.dc.sendReportOffline(playerSender, player, report); } msgNew("Thank you, your report has been successfully logged."); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java index d7bf6bd0..46f55f63 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java @@ -1,20 +1,19 @@ package me.totalfreedom.totalfreedommod.command; import io.papermc.lib.PaperLib; -import java.util.HashMap; -import java.util.Map; 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 net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +import java.util.HashMap; +import java.util.Map; + +@CommandPermissions(permission = "ride", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Ride on the top of the specified player.", usage = "/ >") public class Command_ride extends FreedomCommand { @@ -94,8 +93,7 @@ public class Command_ride extends FreedomCommand playerDataSender.setRideMode(mode); plugin.pl.save(playerDataSender); msgNew("Ride mode is now set to .", Placeholder.unparsed("mode", mode.name().toLowerCase())); - } - catch (IllegalArgumentException ex) + } catch (IllegalArgumentException ex) { msgNew("Invalid mode."); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java index ed4b078c..f974959a 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rideablepearl.java @@ -1,13 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.api.ShopItem; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "rideablepearl", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Obtain a rideable ender pearl", usage = "/") public class Command_rideablepearl extends FreedomCommand { @@ -25,8 +24,7 @@ public class Command_rideablepearl extends FreedomCommand { playerSender.getInventory().addItem(plugin.sh.getRideablePearl()); msg("You have been given a Rideable Ender Pearl", ChatColor.GREEN); - } - else + } else { msg("You do not own a Rideable Ender Pearl! Purchase one from the shop.", ChatColor.RED); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java index 28b7c428..2be0fef5 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java @@ -1,8 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; import net.coreprotect.CoreProtectAPI; @@ -18,7 +15,10 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +import java.util.ArrayList; +import java.util.List; + +@CommandPermissions(permission = "ro", 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 { @@ -57,8 +57,7 @@ public class Command_ro extends FreedomCommand block.setType(Material.AIR); affected++; - } - else if (block.getType().equals(material)) + } else if (block.getType().equals(material)) { if (cpAPI != null) { @@ -89,13 +88,11 @@ public class Command_ro extends FreedomCommand { 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 + } else { for (String materialName : StringUtils.split(args[0], ",")) { @@ -117,8 +114,7 @@ public class Command_ro extends FreedomCommand 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; @@ -134,8 +130,7 @@ public class Command_ro extends FreedomCommand msg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - } - else + } else { targetPlayer = null; } @@ -149,8 +144,7 @@ public class Command_ro extends FreedomCommand try { adminWorld = plugin.wm.adminworld.getWorld(); - } - catch (Exception ignored) + } catch (Exception ignored) { } @@ -171,8 +165,7 @@ public class Command_ro extends FreedomCommand affected += removeBlocks(player.getLocation(), material, radius, sender.getName()); } } - } - else + } else { if (targetPlayer.getWorld() != adminWorld) { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java index d98253d9..6d78624c 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_rock.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -10,7 +9,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "rock", source = SourceType.BOTH) @CommandParameters(description = "You have thrown a rock, but you have also summoned a meteor!", usage = "/") public class Command_rock extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java index bf15ca3d..c11db548 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_say.java @@ -1,15 +1,13 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "say", source = SourceType.BOTH) @CommandParameters(description = "Broadcasts the given message as the server, includes sender name.", usage = "/ ") public class Command_say extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java index e855db68..fe31b0ad 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_scare.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Particle; import org.bukkit.Sound; @@ -8,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.SENIOR_ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "scare", 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 { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java index d1fa2052..83f52f15 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; @@ -14,7 +13,7 @@ import org.bukkit.generator.WorldInfo; import java.util.List; -@CommandPermissions(rank = Rank.NON_OP, source = SourceType.BOTH) +@CommandPermissions(permission = "seed", source = SourceType.BOTH) @CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]") public class Command_seed extends FreedomCommand { @@ -31,15 +30,13 @@ public class Command_seed extends FreedomCommand 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) { world = playerSender.getWorld(); - } - else + } else { world = server.getWorlds().get(0); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java index 5b4f2d88..a7c0172e 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_serverstats.java @@ -1,13 +1,12 @@ 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(rank = Rank.OP, source = SourceType.BOTH) +@CommandPermissions(permission = "stats", 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 { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java index c5bb81e7..9e092c3d 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setcompass.java @@ -1,13 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "compass", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Set your compass to the specified position.", usage = "/ ") public class Command_setcompass extends FreedomCommand { @@ -25,8 +24,7 @@ public class Command_setcompass extends FreedomCommand 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/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java index 28f5f5c0..58f9f9f8 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlimit.java @@ -1,14 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "worldedit.limit", 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 { @@ -27,8 +25,7 @@ public class Command_setlimit extends FreedomCommand try { amount = Math.max(-1, Math.min(plugin.web.getMaxLimit(), Integer.parseInt(args[0]))); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("Invalid number: ", Placeholder.unparsed("number", args[0])); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java index 416ec39b..89f63db7 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setplayerlimit.java @@ -1,15 +1,13 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "worldedit.limit.other", 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 { @@ -37,19 +35,16 @@ public class Command_setplayerlimit extends FreedomCommand try { amount = Math.max(-1, Math.min(plugin.web.getMaxLimit(), Integer.parseInt(args[1]))); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("Invalid number: ", Placeholder.unparsed("amount", args[1])); return true; } - } - else + } else { amount = plugin.web.getDefaultLimit(); } - } - else + } else { return false; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java index 5215a5d3..9921cc62 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setspawnworld.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Location; @@ -8,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "setspawnworld", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Set the spawn point of the world you are in.", usage = "/") public class Command_setspawnworld extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java index 6de96847..7188eefa 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java @@ -1,12 +1,11 @@ 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(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "shop", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Open the shop GUI", usage = "/", aliases = "sh") public class Command_shop extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java index 6fed39a8..7aed7271 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java @@ -2,7 +2,6 @@ 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; @@ -14,7 +13,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "smite", source = SourceType.BOTH) @CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-ci | -q]") public class Command_smite extends FreedomCommand { @@ -30,8 +29,7 @@ public class Command_smite extends FreedomCommand 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."); } @@ -94,8 +92,7 @@ public class Command_smite extends FreedomCommand { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else if (args[args.length - 1].equalsIgnoreCase("-ci")) + } else if (args[args.length - 1].equalsIgnoreCase("-ci")) { if (args[args.length - 1].equalsIgnoreCase("-ci")) { @@ -106,8 +103,7 @@ public class Command_smite extends FreedomCommand { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } - } - else + } else { reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java index b3f0f809..46bad22f 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spawnmob.java @@ -1,10 +1,6 @@ package me.totalfreedom.totalfreedommod.command; -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; import org.bukkit.Location; @@ -14,7 +10,10 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +import java.util.Arrays; +import java.util.List; + +@CommandPermissions(permission = "spawnmob", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Spawns the specified entity.", usage = "/ [amount]", aliases = "spawnentity") public class Command_spawnmob extends FreedomCommand { @@ -64,8 +63,7 @@ public class Command_spawnmob extends FreedomCommand try { amount = Integer.parseInt(args[1]); - } - catch (NumberFormatException nfex) + } catch (NumberFormatException nfex) { msg("Invalid amount: " + args[1], ChatColor.RED); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java index 871fe6e3..fccea416 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectate.java @@ -1,14 +1,12 @@ package me.totalfreedom.totalfreedommod.command; import io.papermc.lib.PaperLib; -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "spectate", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Quickly spectate someone.", usage = "/ ", aliases = "spec") public class Command_spectate extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java index 77f2746b..a15109b7 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_spectator.java @@ -1,14 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; -import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.GameMode; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "spectate", 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 { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java index 0024de00..72eecaaf 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stackingpotato.java @@ -1,14 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.api.ShopItem; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "stackingpotato", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Obtain a stacking potato", usage = "/") public class Command_stackingpotato extends FreedomCommand { @@ -25,8 +23,7 @@ public class Command_stackingpotato extends FreedomCommand { playerSender.getInventory().addItem(plugin.sh.getStackingPotato()); msgNew("You have been given the .", Placeholder.unparsed("item", ShopItem.STACKING_POTATO.getName())); - } - else + } else { msgNew("You don't own the ! Purchase it from the shop.", Placeholder.unparsed("item", ShopItem.STACKING_POTATO.getName())); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java index 1e2565d8..1be16656 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stop.java @@ -1,18 +1,17 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.HashMap; -import java.util.Map; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +import java.util.HashMap; +import java.util.Map; + +@CommandPermissions(permission = "stop", source = SourceType.BOTH) @CommandParameters(description = "Kicks everyone and stops the server.", usage = "/ [reason]") public class Command_stop extends FreedomCommand { @@ -27,8 +26,7 @@ public class Command_stop extends FreedomCommand { shutdown(reason); return true; - } - else if (STOP_CONFIRM.containsKey(sender)) + } else if (STOP_CONFIRM.containsKey(sender)) { shutdown(STOP_CONFIRM.get(sender)); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java index 245ed0d8..85df5c7b 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_stopsound.java @@ -1,18 +1,16 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@CommandPermissions(permission = "stopsound", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Stops all sounds or a specified sound.", usage = "/ [sound]") public class Command_stopsound extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java index 964c16a9..77082540 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_survival.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.GameMode; @@ -8,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH) +@CommandPermissions(permission = "survival", 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 { @@ -29,7 +28,7 @@ public class Command_survival extends FreedomCommand return true; } - checkPermission(Rank.ADMIN); + checkPermission("tfm.survival.other"); if (args[0].equals("-a")) { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java index f52db123..9c639fa3 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java @@ -3,7 +3,6 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.config.ConfigEntry; 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 net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; @@ -15,7 +14,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH) +@CommandPermissions(permission = "tag", source = SourceType.BOTH) @CommandParameters(description = "Allows you to set your own prefix.", usage = "/ [-ns] | list | off | clear | clearall>") public class Command_tag extends FreedomCommand { @@ -89,8 +88,7 @@ public class Command_tag extends FreedomCommand if (senderIsConsole) { msg("\"/tag off\" can't be used from the console. Use \"/tag clear \" or \"/tag clearall\" instead."); - } - else + } else { plugin.pl.getPlayer(playerSender).setTag(null); @@ -109,8 +107,7 @@ public class Command_tag extends FreedomCommand return false; } } - } - else if (args.length >= 2) + } else if (args.length >= 2) { switch (args[0].toLowerCase()) { @@ -154,8 +151,7 @@ public class Command_tag extends FreedomCommand if (FUtil.containsChatColor(inputTag)) { tag = FUtil.colorizeAsComponent(inputTag.replace("&k", "")); - } - else + } else { tag = FUtil.miniMessage(inputTag); } @@ -166,26 +162,22 @@ public class Command_tag extends FreedomCommand { msgNew("That tag is too long (Max is characters).", Placeholder.unparsed("max", String.valueOf(tagLimit))); return true; - } - else if (!plugin.al.isAdmin(sender) && ConfigEntry.FORBIDDEN_WORDS.getStringList().stream().anyMatch(word -> steamrolled.toLowerCase().contains(word))) + } else if (!plugin.al.isAdmin(sender) && ConfigEntry.FORBIDDEN_WORDS.getStringList().stream().anyMatch(word -> steamrolled.toLowerCase().contains(word))) { msgNew("That tag contains a forbidden word."); return true; - } - else + } else { - String flattened = FUtil.miniMessage(tag); - - plugin.pl.getPlayer(playerSender).setTag(flattened); + plugin.pl.getPlayer(playerSender).setTag(tag); if (save) { - save(playerSender, flattened); + save(playerSender, tag); } msgNew("Tag set to '' ", Placeholder.component("tag", tag.hoverEvent(HoverEvent.showText(Component.translatable("chat.copy"))) - .clickEvent(ClickEvent.copyToClipboard(flattened))), + .clickEvent(ClickEvent.copyToClipboard(FUtil.miniMessage(tag)))), Placeholder.unparsed("saved", save ? "(Saved)" : "")); } return true; @@ -200,7 +192,7 @@ public class Command_tag extends FreedomCommand return false; } - public void save(Player player, String tag) + public void save(Player player, Component tag) { PlayerData playerData = plugin.pl.getData(player); playerData.setTag(tag); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java deleted file mode 100644 index 3be325e6..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java +++ /dev/null @@ -1,63 +0,0 @@ -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; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(rank = 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 -{ - - @Override - 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()) - { - tag.append(FUtil.randomChatColor()).append(c); - } - - String tagStr = tag.toString(); - - int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20); - - final String rawTag = ChatColor.stripColor(tagStr).toLowerCase(); - - 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)) - { - msg("That tag contains a forbidden word."); - return true; - } - } - } - - final FPlayer data = plugin.pl.getPlayer(playerSender); - data.setTag(tagStr); - - msg("Set tag to " + tag); - return true; - } -} \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java index 55a8ffac..aac022a0 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java @@ -1,15 +1,10 @@ package me.totalfreedom.totalfreedommod.command; -import java.text.SimpleDateFormat; -import java.util.Date; -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; 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; @@ -20,7 +15,11 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Objects; + +@CommandPermissions(permission = "tempban", source = SourceType.BOTH) @CommandParameters(description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]", aliases = "tban,noob") public class Command_tempban extends FreedomCommand { @@ -69,15 +68,13 @@ public class Command_tempban extends FreedomCommand { 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); @@ -94,8 +91,7 @@ public class Command_tempban extends FreedomCommand try { expires = FUtil.parseDateOffset(args[1]); - } - catch (NumberFormatException error) + } catch (NumberFormatException error) { msg("Invalid duration: " + args[1], ChatColor.RED); return true; @@ -116,8 +112,7 @@ public class Command_tempban extends FreedomCommand if (player != null) { ban = Ban.forPlayer(player, sender, expires, reason); - } - else + } else { ban = Ban.forPlayerName(username, sender, expires, reason); } @@ -144,8 +139,7 @@ public class Command_tempban extends FreedomCommand } FUtil.adminAction(sender.getName(), message.toString(), true); - } - else + } else { msg("Quietly temporarily banned " + username + "."); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java index 1677e81b..02767f3a 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java @@ -1,19 +1,19 @@ package me.totalfreedom.totalfreedommod.command; -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.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@CommandPermissions(permission = "toggle", source = SourceType.BOTH) @CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") public class Command_toggle extends FreedomCommand { @@ -64,8 +64,7 @@ public class Command_toggle extends FreedomCommand try { ConfigEntry.NUKE_MONITOR_RANGE.setDouble(Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1])))); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("The input provided is not a valid integer."); return true; @@ -77,8 +76,7 @@ public class Command_toggle extends FreedomCommand try { ConfigEntry.NUKE_MONITOR_COUNT_BREAK.setInteger(Math.max(1, Math.min(500, Integer.parseInt(args[2])))); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("The input provided is not a valid integer."); return true; @@ -100,8 +98,7 @@ public class Command_toggle extends FreedomCommand try { ConfigEntry.EXPLOSIVE_RADIUS.setDouble(Math.max(1.0, Math.min(30.0, Double.parseDouble(args[1])))); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("The input provided is not a valid integer."); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java index d1ed7d27..1cdbaa6a 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggleclownfish.java @@ -1,13 +1,12 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; -import me.totalfreedom.totalfreedommod.rank.Rank; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "clownfish.toggle", 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 { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java index 151bbca6..b7dfae02 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglediscord.java @@ -1,13 +1,12 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "discord.toggle", 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 { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java index 1f293baa..e4d760f6 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_togglepickup.java @@ -1,12 +1,10 @@ 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(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "pickup.toggle", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Toggle item pickup.", usage = "/") public class Command_togglepickup extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java index e7c94f81..3e9abd58 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tossmob.java @@ -1,9 +1,7 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.Objects; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -14,7 +12,9 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +import java.util.Objects; + +@CommandPermissions(permission = "tossmob", 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 @@ -76,8 +76,7 @@ public class Command_tossmob extends FreedomCommand try { speed = Double.parseDouble(args[1]); - } - catch (NumberFormatException ex) + } catch (NumberFormatException ex) { msgNew("Invalid speed: ", Placeholder.unparsed("speed", args[1])); return true; @@ -87,8 +86,7 @@ public class Command_tossmob extends FreedomCommand if (speed < 1.0) { speed = 1.0; - } - else if (speed > 5.0) + } else if (speed > 5.0) { speed = 5.0; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java index b903fcad..c15cba5d 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_totalfreedommod.java @@ -2,10 +2,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -13,7 +11,7 @@ import org.bukkit.entity.Player; /* * See https://github.com/TotalFreedom/License - This file may not be edited or removed. */ -@CommandPermissions(rank = Rank.NON_OP, source = SourceType.BOTH) +@CommandPermissions(source = SourceType.BOTH) @CommandParameters(description = "Shows information about TotalFreedomMod or reloads it", usage = "/ [reload]", aliases = "tfm") public class Command_totalfreedommod extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java index 0f8c997a..34b41a48 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tprandom.java @@ -1,23 +1,23 @@ package me.totalfreedom.totalfreedommod.command; import io.papermc.lib.PaperLib; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "tprandom", 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 { @Override 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 maximumDistance = ConfigEntry.RANDOM_TELEPORT_MAX_DISTANCE.getInteger(); + int x = FUtil.randomInteger(-(maximumDistance), maximumDistance); + int z = FUtil.randomInteger(-(maximumDistance), maximumDistance); int y = playerSender.getWorld().getHighestBlockYAt(x, z) + 1; Location location = new Location(playerSender.getLocation().getWorld(), x, y, z); PaperLib.teleportAsync(playerSender, location); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java index b2dd23c9..0c3ad310 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_trail.java @@ -1,14 +1,12 @@ package me.totalfreedom.totalfreedommod.command; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.api.ShopItem; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME) +@CommandPermissions(permission = "trail", source = SourceType.ONLY_IN_GAME) @CommandParameters(description = "Trails rainbow wool behind you as you walk/fly.", usage = "/") public class Command_trail extends FreedomCommand { @@ -24,7 +22,7 @@ public class Command_trail extends FreedomCommand if (!plugin.pl.getData(playerSender).hasItem(ShopItem.RAINBOW_TRAIL)) { - msgNew("You didn't purchase the ability to have a ! Purchase it from the shop.",Placeholder.unparsed("item", ShopItem.RAINBOW_TRAIL.getName())); + msgNew("You didn't purchase the ability to have a ! Purchase it from the shop.", Placeholder.unparsed("item", ShopItem.RAINBOW_TRAIL.getName())); return true; } @@ -32,8 +30,7 @@ public class Command_trail extends FreedomCommand { plugin.tr.remove(playerSender); msgNew("Trail disabled."); - } - else + } else { plugin.tr.add(playerSender); msgNew("Trail enabled. Run this command again to disable it."); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java index 6edbef12..62c523a4 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java @@ -2,14 +2,13 @@ package me.totalfreedom.totalfreedommod.command; import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +@CommandPermissions(permission = "unban", source = SourceType.BOTH) @CommandParameters(description = "Unbans the specified player.", usage = "/ [-r]") public class Command_unban extends FreedomCommand { diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java index 55fe9be2..16dc3bef 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanip.java @@ -7,6 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +// TODO: Merge with /unban. @CommandPermissions(permission = "unbanip", source = SourceType.BOTH) @CommandParameters(description = "Unbans the specified IP.", usage = "/ [-q]") public class Command_unbanip extends FreedomCommand diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java index e0439f6d..1f52f295 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unbanname.java @@ -1,15 +1,14 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.banning.Ban; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH) +// TODO: Merge with /unban. +@CommandPermissions(permission = "unban.name", source = SourceType.BOTH) @CommandParameters(description = "Unbans the specified name.", usage = "/ [-q]") public class Command_unbanname extends FreedomCommand { @@ -32,8 +31,7 @@ public class Command_unbanname extends FreedomCommand { msgNew("The name is not banned.", Placeholder.unparsed("name", name)); return true; - } - else if (ban.hasIps()) + } else if (ban.hasIps()) { msgNew("This ban is not a name-only ban."); return true; diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java index e7de3fee..5643f724 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java @@ -22,15 +22,8 @@ public class Command_vanish extends FreedomCommand { Displayable display = plugin.rm.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")) - { - silent = true; - } - } + Component tag = display.getColoredTag(); + boolean silent = args.length > 0 && (args[0].equalsIgnoreCase("-s") || args[0].equalsIgnoreCase("-silent")); if (plugin.al.isVanished(playerSender.getUniqueId())) { @@ -53,7 +46,7 @@ public class Command_vanish extends FreedomCommand PlayerData playerData = plugin.pl.getData(playerSender); if (playerData.getTag() != null) { - tag = FUtil.colorize(playerData.getTag()); + tag = playerData.getTag(); } plugin.pl.getData(playerSender).setTag(tag); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java index d93b1e91..d09de5ef 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whitelist.java @@ -1,8 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.*; - -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.OfflinePlayer; @@ -10,7 +7,9 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH) +import java.util.*; + +@CommandPermissions(permission = "whitelist", source = SourceType.BOTH) @CommandParameters(description = "Manage the whitelist.", usage = "/ | remove | addall | purge>") public class Command_whitelist extends FreedomCommand { @@ -25,13 +24,22 @@ public class Command_whitelist extends FreedomCommand // list if (args[0].equalsIgnoreCase("list")) { - if (server.getWhitelistedPlayers().isEmpty()) + List whitelist = server.getWhitelistedPlayers() + .stream() + .filter(Objects::nonNull) + .map(player -> player.getName() == null + ? player.getUniqueId().toString() + : player.getName()) + .toList(); + + if (whitelist.isEmpty()) { msgNew("There are no whitelisted players."); return true; } - msgNew("Whitelisted players: ", Placeholder.unparsed("players", FUtil.listToString(server.getWhitelistedPlayers().stream().map(player -> - player.getName() != null ? player.getName() : player.getUniqueId().toString()).toList()))); + + msgNew("Whitelisted players: ", Placeholder.unparsed("players", FUtil.listToString(whitelist))); + return true; } @@ -47,8 +55,7 @@ public class Command_whitelist extends FreedomCommand if (player.isOnline()) { onlineWPs++; - } - else + } else { offlineWPs++; } @@ -62,7 +69,7 @@ public class Command_whitelist extends FreedomCommand } // Commands below are restricted to admins - checkPermission(Rank.ADMIN); + checkPermission("tfm.whitelist.admin"); // on if (args[0].equalsIgnoreCase("on")) @@ -123,8 +130,7 @@ public class Command_whitelist extends FreedomCommand { FUtil.adminAction(sender.getName(), "Removing " + player.getName() + " from the whitelist", false); player.setWhitelisted(false); - } - else + } else { msgNew("That player is not whitelisted"); } @@ -151,7 +157,7 @@ public class Command_whitelist extends FreedomCommand // Telnet only checkConsole(); - checkPermission(Rank.ADMIN); + checkPermission("tfm.whitelist.purge"); // purge if (args[0].equalsIgnoreCase("purge")) @@ -178,14 +184,12 @@ public class Command_whitelist extends FreedomCommand } } return arguments; - } - else if (args.length == 2 && plugin.al.isAdmin(sender)) + } else if (args.length == 2 && plugin.al.isAdmin(sender)) { if (args[0].equals("add")) { return FUtil.getPlayerList(); - } - else if (args[0].equals("remove")) + } else if (args[0].equals("remove")) { return server.getWhitelistedPlayers().stream().map(OfflinePlayer::getName).filter(Objects::nonNull).toList(); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java index 294b2a18..d3309580 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/FreedomCommand.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.command; +import com.earth2me.essentials.commands.PlayerNotFoundException; import com.google.common.collect.Lists; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.admin.Admin; @@ -19,6 +20,7 @@ import org.bukkit.command.*; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.util.StringUtil; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -255,14 +257,15 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter return player; } - @Nullable - protected OfflinePlayer getOfflinePlayer(String name) + @NotNull + @Contract("null -> fail") + protected OfflinePlayer getOfflinePlayer(String name) throws PlayerNotFoundException { return Arrays.stream(Bukkit.getOfflinePlayers()) .filter(player -> player.getName() != null) .filter(player -> player.getName().equalsIgnoreCase(name)) .findFirst() - .orElse(null); + .orElseThrow(PlayerNotFoundException::new); } protected Admin getAdmin(CommandSender sender) diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 3d000623..44420d89 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -1,8 +1,9 @@ package me.totalfreedom.totalfreedommod.config; -import java.util.List; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import java.util.List; + public enum ConfigEntry { @@ -164,7 +165,8 @@ public enum ConfigEntry AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), TOGGLE_CHAT(Boolean.class, "toggle_chat"), DEVELOPER_MODE(Boolean.class, "developer_mode"), - ANTISPAM_MINUTES(Integer.class, "antispam_minutes"); + ANTISPAM_MINUTES(Integer.class, "antispam_minutes"), + RANDOM_TELEPORT_MAX_DISTANCE(Integer.class, "random_teleport_max_distance"); // private final Class type; private final String configName; @@ -229,7 +231,7 @@ public enum ConfigEntry @SuppressWarnings("unchecked") public List getStringList() { - return (List)getList(); + return (List) getList(); } private MainConfig getConfig() diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java index 9bf2d267..c41e6b62 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_help.java @@ -6,12 +6,13 @@ import java.util.*; import me.totalfreedom.totalfreedommod.command.FreedomCommand; import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.DisplayableGroup; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandMap; import org.bukkit.command.PluginIdentifiableCommand; +import org.bukkit.permissions.Permission; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -111,21 +112,28 @@ public class Module_help extends HTTPDModule } else { - Map> freedomCommands = new HashMap<>(); + Map> freedomCommands = new HashMap<>(); // Filters out non-TFM commands commands.stream().filter((cmd) -> cmd instanceof FreedomCommand.FCommand).forEach((tfmCmd) -> { - Rank rank = Objects.requireNonNull(FreedomCommand.getFrom(tfmCmd)).getRank(); - if (!freedomCommands.containsKey(rank)) - freedomCommands.put(rank, new ArrayList<>()); - freedomCommands.get(rank).add(FreedomCommand.getFrom(tfmCmd)); + String permission = Objects.requireNonNull(FreedomCommand.getFrom(tfmCmd)).getPermission(); + if (!freedomCommands.containsKey(permission)) + freedomCommands.put(permission, new ArrayList<>()); + freedomCommands.get(permission).add(FreedomCommand.getFrom(tfmCmd)); }); + List permissions = Bukkit.getPluginManager() + .getPermissions() + .stream() + .map(Permission::getName) + .filter(permission -> permission.startsWith("tfm.")) + .toList(); + // Finally dumps them to HTML - Arrays.stream(Rank.values()).filter(freedomCommands::containsKey) - .sorted(comparator::compare).forEach((rank -> { - responseBody.append("\r\n").append(heading(rank.getName(), 3)).append("
    \r\n"); - freedomCommands.get(rank).stream().sorted(comparator::compare).forEach((command) -> responseBody.append(buildDescription(command))); + permissions.stream().filter(freedomCommands::containsKey) + .sorted(comparator::compare).forEach((permission -> { + responseBody.append("
\r\n").append(heading(permission, 3)).append("
    \r\n"); + freedomCommands.get(permission).stream().sorted(comparator::compare).forEach((command) -> responseBody.append(buildDescription(command))); })); } @@ -160,12 +168,9 @@ public class Module_help extends HTTPDModule return a.getName().compareTo(b.getName()); } - public int compare(Rank a, Rank b) + public int compare(String perm1, String perm2) { - Integer levelA = a.getLevel(); - Integer levelB = b.getLevel(); - - return levelB.compareTo(levelA); + return perm1.compareTo(perm2); } } } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java deleted file mode 100644 index c49faa66..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionConfig.java +++ /dev/null @@ -1,185 +0,0 @@ -package me.totalfreedom.totalfreedommod.permissions; - -import java.io.File; -import java.io.IOException; -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.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 static final String PERMISSIONS_FILENAME = "permissions.yml"; - // - private final EnumMap entries; - public YamlConfiguration configuration; - - public PermissionConfig() - { - entries = new EnumMap<>(PermissionEntry.class); - - PermissionDefaults tempDefaults; - try - { - try - { - try (InputStream defaultConfig = getDefaultConfig()) - { - tempDefaults = new PermissionDefaults(defaultConfig); - for (PermissionEntry entry : PermissionEntry.values()) - { - entries.put(entry, tempDefaults.get(entry.getConfigName())); - } - } - } - catch (IOException ex) - { - FLog.severe(ex); - } - - copyDefaultConfig(getConfigFile()); - - load(); - } - catch (Exception ex) - { - FLog.severe(ex); - } - } - - @Override - public void onStart() - { - } - - @Override - public void onStop() - { - } - - public void load() - { - try - { - YamlConfiguration config = new YamlConfiguration(); - - config.load(getConfigFile()); - - configuration = config; - - for (PermissionEntry entry : PermissionEntry.values()) - { - String path = entry.getConfigName(); - if (config.contains(path)) - { - Object value = config.get(path); - if (value != null) - { - entries.put(entry, value); - } - } - else - { - FLog.warning("Missing permission entry " + entry.getConfigName() + ". Using default value."); - } - } - } - catch (IOException | InvalidConfigurationException ex) - { - FLog.severe(ex); - } - } - - private File getConfigFile() - { - return new File(plugin.getDataFolder(), PERMISSIONS_FILENAME); - } - - public List getList(PermissionEntry entry) - { - try - { - return get(entry, List.class); - } - catch (IllegalArgumentException ex) - { - FLog.severe(ex); - } - return null; - } - - public T get(PermissionEntry entry, Class type) throws IllegalArgumentException - { - Object value = entries.get(entry); - try - { - return type.cast(value); - } - catch (ClassCastException ex) - { - throw new IllegalArgumentException(entry.name() + " is not of type " + type.getSimpleName()); - } - } - - public void set(PermissionEntry entry, T value) - { - entries.put(entry, value); - } - - private void copyDefaultConfig(File targetFile) - { - if (targetFile.exists()) - { - return; - } - - FLog.info("Installing default permission file template: " + targetFile.getPath()); - - try - { - try (InputStream defaultConfig = getDefaultConfig()) - { - FileUtils.copyInputStreamToFile(defaultConfig, targetFile); - } - } - catch (IOException ex) - { - FLog.severe(ex); - } - } - - private InputStream getDefaultConfig() - { - return plugin.getResource(PERMISSIONS_FILENAME); - } - - public static class PermissionDefaults - { - private YamlConfiguration defaults = null; - - private PermissionDefaults(InputStream defaultConfig) - { - try - { - defaults = new YamlConfiguration(); - final InputStreamReader isr = new InputStreamReader(defaultConfig); - defaults.load(isr); - isr.close(); - } - catch (IOException | InvalidConfigurationException ex) - { - FLog.severe(ex); - } - } - - public Object get(String path) - { - return defaults.get(path); - } - } -} diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java deleted file mode 100644 index 08b16351..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java +++ /dev/null @@ -1,41 +0,0 @@ -package me.totalfreedom.totalfreedommod.permissions; - -import java.util.List; -import me.totalfreedom.totalfreedommod.TotalFreedomMod; - -public enum PermissionEntry -{ - REMOVE("remove"), - OPERATORS("operators"), - MASTER_BUILDERS("master_builders"), - ADMINS("admins"), - SENIOR_ADMINS("senior_admins"); - - private final String configName; - - PermissionEntry(String configName) - { - this.configName = configName; - } - - public String getConfigName() - { - return configName; - } - - public List getList() - { - return getConfig().getList(this); - } - - @SuppressWarnings("unchecked") - public List getEntry() - { - return (List)getList(); - } - - private PermissionConfig getConfig() - { - return TotalFreedomMod.getPlugin().permissions; - } -} diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java deleted file mode 100644 index 31a32655..00000000 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionManager.java +++ /dev/null @@ -1,120 +0,0 @@ -package me.totalfreedom.totalfreedommod.permissions; - -import com.google.common.collect.Maps; -import java.util.List; -import java.util.Map; -import me.totalfreedom.totalfreedommod.FreedomService; -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 Map> permissions = Maps.newHashMap(); - - public Map attachments = Maps.newHashMap(); - - @Override - public void onStart() - { - loadPermissionNodes(); - } - - @Override - public void onStop() - { - } - - public void loadPermissionNodes() - { - FLog.info("Loading permission nodes..."); - - permissions.clear(); - - List operatorPermissions; - List masterBuilderPermissions; - List adminPermissions; - List senioradminPermissions; - - operatorPermissions = PermissionEntry.OPERATORS.getEntry(); - permissions.put(Rank.OP, operatorPermissions); - - masterBuilderPermissions = PermissionEntry.MASTER_BUILDERS.getEntry(); - masterBuilderPermissions.addAll(operatorPermissions); - permissions.put(Title.MASTER_BUILDER, masterBuilderPermissions); - - adminPermissions = PermissionEntry.ADMINS.getEntry(); - adminPermissions.addAll(masterBuilderPermissions); - permissions.put(Rank.ADMIN, adminPermissions); - - senioradminPermissions = PermissionEntry.SENIOR_ADMINS.getEntry(); - senioradminPermissions.addAll(adminPermissions); - permissions.put(Rank.SENIOR_ADMIN, senioradminPermissions); - - int count = PermissionEntry.OPERATORS.getEntry().size() + PermissionEntry.MASTER_BUILDERS.getEntry().size() + PermissionEntry.ADMINS.getEntry().size() + PermissionEntry.SENIOR_ADMINS.getEntry().size(); - - FLog.info("Loaded " + count + " permission nodes"); - } - - public void setPermissions(Player player) - { - PermissionAttachment attachment = attachments.get(player); - - if (attachment != null) - { - player.removeAttachment(attachment); - } - - attachment = player.addAttachment(plugin); - - for (PermissionAttachmentInfo attachmentInfo : player.getEffectivePermissions()) - { - for (String rootNode : PermissionEntry.REMOVE.getEntry()) - { - String permission = attachmentInfo.getPermission(); - if (permission.startsWith(rootNode)) - { - attachment.setPermission(attachmentInfo.getPermission(), false); - } - } - } - List nodes = permissions.get(plugin.rm.getRank(player)); - if (nodes != null) - { - for (String node : nodes) - { - attachment.setPermission(node, true); - } - } - - if (plugin.pl.getData(player).isMasterBuilder() && !plugin.al.isAdmin(player)) - { - if (nodes != null) - { - for (String node : permissions.get(Title.MASTER_BUILDER)) - { - attachment.setPermission(node, true); - } - } - } - - attachments.put(player, attachment); - - player.recalculatePermissions(); - } - - public void updatePlayers() - { - for (Player player : server.getOnlinePlayers()) - { - setPermissions(player); - } - } -} \ No newline at end of file diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index 315eb3a3..e0ff9cdd 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -5,6 +5,7 @@ import me.totalfreedom.totalfreedommod.caging.CageData; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.freeze.FreezeData; import me.totalfreedom.totalfreedommod.util.FUtil; +import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Arrow; @@ -50,7 +51,7 @@ public class FPlayer private boolean lockedUp = false; private boolean inAdminchat = false; private boolean allCommandsBlocked = false; - private String tag = null; + private Component tag = Component.empty(); private int warningCount = 0; @@ -256,6 +257,11 @@ public class FPlayer return unmuteTask != null; } + public void setMuted(boolean muted) + { + setMuted(muted, 5); + } + public void setMuted(boolean muted, int minutes) { FUtil.cancel(unmuteTask); @@ -281,8 +287,7 @@ public class FPlayer { FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getPlayer().getName(), false); setMuted(false); - } - else + } else { FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getName(), false); } @@ -290,11 +295,6 @@ public class FPlayer }.runTaskLater(plugin, minutes * (60L * 20L)); } - public void setMuted(boolean muted) - { - setMuted(muted, 5); - } - public BukkitTask getLockupScheduleID() { return this.lockupScheduleTask; @@ -335,12 +335,12 @@ public class FPlayer this.allCommandsBlocked = commandsBlocked; } - public String getTag() + public Component getTag() { return this.tag; } - public void setTag(String tag) + public void setTag(Component tag) { this.tag = tag; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java index 59b2a610..f595357c 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java @@ -1,24 +1,26 @@ package me.totalfreedom.totalfreedommod.player; import com.google.common.collect.Lists; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.*; - import me.totalfreedom.totalfreedommod.api.ShopItem; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; + public class PlayerData { - private UUID uuid; private final List ips = Lists.newArrayList(); private final List notes = Lists.newArrayList(); - private String tag = null; + private UUID uuid; + private Component tag = Component.empty(); private String discordID = null; private Boolean masterBuilder = false; @@ -48,7 +50,7 @@ public class PlayerData ips.addAll(FUtil.stringToList(resultSet.getString("ips"))); notes.clear(); notes.addAll(FUtil.stringToList(resultSet.getString("notes"))); - tag = resultSet.getString("tag"); + tag = LegacyComponentSerializer.legacyAmpersand().deserialize(resultSet.getString("tag")); discordID = resultSet.getString("discord_id"); masterBuilder = resultSet.getBoolean("master_builder"); rideMode = RideMode.valueOf(resultSet.getString("ride_mode").toUpperCase()); @@ -59,8 +61,7 @@ public class PlayerData displayDiscord = resultSet.getBoolean("display_discord"); loginMessage = resultSet.getString("login_message"); inspect = resultSet.getBoolean("inspect"); - } - catch (SQLException e) + } catch (SQLException e) { FLog.severe("Failed to load player: " + e.getMessage()); } @@ -81,7 +82,7 @@ public class PlayerData "- Coins: " + coins + "\n" + "- Total Votes: " + totalVotes + "\n" + "- Display Discord: " + displayDiscord + "\n" + - "- Tag: " + FUtil.colorize(tag) + ChatColor.GRAY + "\n" + + "- Tag: " + tag.toString() + ChatColor.GRAY + "\n" + "- Ride Mode: " + rideMode.name() + "\n" + "- Login Message: " + loginMessage; } @@ -141,8 +142,7 @@ public class PlayerData try { notes.remove(id); - } - catch (IndexOutOfBoundsException e) + } catch (IndexOutOfBoundsException e) { return false; } @@ -186,22 +186,21 @@ public class PlayerData public Map toSQLStorable() { - return new HashMap() - {{ - put("uuid", uuid.toString()); - put("ips", FUtil.listToString(ips)); - put("notes", FUtil.listToString(notes)); - put("tag", tag); - put("discord_id", discordID); - put("master_builder", masterBuilder); - put("ride_mode", rideMode.name()); - put("coins", coins); - put("items", FUtil.listToString(items)); - put("total_votes", totalVotes); - put("display_discord", displayDiscord); - put("login_message", loginMessage); - put("inspect", inspect); - }}; + Map objectMap = new HashMap<>(); + objectMap.put("uuid", uuid.toString()); + objectMap.put("ips", FUtil.listToString(ips)); + objectMap.put("notes", FUtil.listToString(notes)); + objectMap.put("tag", tag.toString()); + objectMap.put("discord_id", discordID); + objectMap.put("master_builder", masterBuilder); + objectMap.put("ride_mode", rideMode.name()); + objectMap.put("coins", coins); + objectMap.put("items", FUtil.listToString(items)); + objectMap.put("total_votes", totalVotes); + objectMap.put("display_discord", displayDiscord); + objectMap.put("login_message", loginMessage); + objectMap.put("inspect", inspect); + return objectMap; } public boolean doesDisplayDiscord() @@ -219,12 +218,12 @@ public class PlayerData return Bukkit.getOfflinePlayer(uuid).getName(); } - public String getTag() + public Component getTag() { return tag; } - public void setTag(String tag) + public void setTag(Component tag) { this.tag = tag; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java index b04960c2..d0487111 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java @@ -1,19 +1,19 @@ package me.totalfreedom.totalfreedommod.player; import com.google.common.collect.Maps; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.*; - import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; + public class PlayerList extends FreedomService { @@ -56,8 +56,7 @@ public class PlayerList extends FreedomService PlayerData playerData = load(resultSet); dataMap.put(playerData.getUuid(), playerData); } - } - catch (SQLException e) + } catch (SQLException e) { FLog.severe("Failed to parse master builders: " + e.getMessage()); } @@ -101,7 +100,7 @@ public class PlayerList extends FreedomService public boolean isTelnetMasterBuilder(PlayerData playerData) { Admin admin = plugin.al.getEntryByUuid(playerData.getUuid()); - return admin != null && admin.getRank().isAtLeast(Rank.ADMIN) && playerData.isMasterBuilder(); + return admin != null && admin.getRank().isAtLeast(GroupProvider.ADMIN.getGroup()) && playerData.isMasterBuilder(); } // May not return null @@ -159,8 +158,7 @@ public class PlayerList extends FreedomService plugin.sql.setPlayerValue(player, entry.getKey(), entry.getValue()); } } - } - catch (SQLException e) + } catch (SQLException e) { FLog.severe("Failed to save player: " + e.getMessage()); } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/DisplayableGroup.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/DisplayableGroup.java index dccb2693..8bcb4e7c 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/DisplayableGroup.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/DisplayableGroup.java @@ -86,6 +86,11 @@ public class DisplayableGroup implements Displayable <= getLuckPermsGroup().getWeight().orElse(0); } + public int getWeight() + { + return weight; + } + public Group getLuckPermsGroup() { return this.group; } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java index 0a728d68..36c65958 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java @@ -6,10 +6,7 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FUtil; -import net.luckperms.api.model.data.DataType; -import net.luckperms.api.model.group.Group; -import net.luckperms.api.node.types.PrefixNode; -import net.luckperms.api.node.types.WeightNode; +import net.kyori.adventure.text.Component; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -21,10 +18,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; -import java.util.*; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import java.util.Objects; public class RankManager extends FreedomService { @@ -148,13 +142,13 @@ public class RankManager extends FreedomService : GroupProvider.NON_OP.getGroup(); } - public String getTag(Player player, String defaultTag) + public Component getTag(Player player, Component defaultTag) { - String tag = defaultTag; + Component tag = defaultTag; PlayerData playerData = plugin.pl.getData(player); - String t = playerData.getTag(); - if (t != null && !t.isEmpty()) + Component t = playerData.getTag(); + if (t != null && !(t.equals(Component.empty()))) { tag = t; } @@ -180,10 +174,9 @@ public class RankManager extends FreedomService fPlayer.setTag(null); player.setPlayerListName(null); } - // FIXME: Adjust Rank to use MiniMessage instead of the legacy stuff - fPlayer.setTag(getTag(player, FUtil.miniMessage(FUtil.colorizeAsComponent(display.getColoredTag())))); + + fPlayer.setTag(getTag(player, display.getColoredTag())); updatePlayerTeam(player); - plugin.pem.setPermissions(player); } @EventHandler(priority = EventPriority.MONITOR) @@ -218,7 +211,7 @@ public class RankManager extends FreedomService if (target.getTag() != null) { - plugin.pl.getData(player).setTag(FUtil.colorize(target.getTag())); + plugin.pl.getData(player).setTag(target.getTag()); } } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 214a8859..12c40e64 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -167,9 +167,9 @@ public class FUtil public static String listToString(List list) { - if (list.size() == 0) + if (list.isEmpty()) { - return null; + return ""; // Don't return null here, that's stupid. Return an empty string. } return String.join(", ", list); diff --git a/discord/src/main/java/me/totalfreedom/discord/TFD4JCommonsImpl.java b/discord/src/main/java/me/totalfreedom/discord/TFD4JCommonsImpl.java index 203bb047..00a76d60 100644 --- a/discord/src/main/java/me/totalfreedom/discord/TFD4JCommonsImpl.java +++ b/discord/src/main/java/me/totalfreedom/discord/TFD4JCommonsImpl.java @@ -16,7 +16,7 @@ import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.api.TFD4JCommons; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.util.FLog; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.WordUtils; @@ -173,11 +173,11 @@ public class TFD4JCommonsImpl implements TFD4JCommons return true; } - if (admin.getRank().equals(Rank.ADMIN)) + if (admin.getRank().equals(GroupProvider.ADMIN.getGroup())) { syncRolesAdminAssignment(member, adminRole, senioradminRole); return true; - } else if (admin.getRank().equals(Rank.SENIOR_ADMIN)) + } else if (admin.getRank().equals(GroupProvider.SENIOR_ADMIN.getGroup())) { syncRolesSeniorAssignment(member, adminRole, senioradminRole); return true; diff --git a/discord/src/main/java/me/totalfreedom/discord/listener/AdminChatListener.java b/discord/src/main/java/me/totalfreedom/discord/listener/AdminChatListener.java index 17d969f1..7310301a 100644 --- a/discord/src/main/java/me/totalfreedom/discord/listener/AdminChatListener.java +++ b/discord/src/main/java/me/totalfreedom/discord/listener/AdminChatListener.java @@ -12,7 +12,7 @@ import me.totalfreedom.discord.util.SnowflakeEntry; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Displayable; -import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.GroupProvider; import me.totalfreedom.totalfreedommod.rank.Title; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -126,38 +126,32 @@ public class AdminChatListener { Guild server = tfd4j.getBot().getGuildById().block(); // Server Owner - assert server != null; + if (server == null) throw new IllegalStateException(); + return member.getRoles().map(role -> { if (role.getId().equals(SnowflakeEntry.OWNER_ROLE_ID.getSnowflake())) { return Title.OWNER; - } - else if (role.getId().equals(SnowflakeEntry.DEVELOPER_ROLE_ID.getSnowflake())) + } else if (role.getId().equals(SnowflakeEntry.DEVELOPER_ROLE_ID.getSnowflake())) { return Title.DEVELOPER; - } - else if (role.getId().equals(SnowflakeEntry.EXECUTIVE_ROLE_ID.getSnowflake())) + } else if (role.getId().equals(SnowflakeEntry.EXECUTIVE_ROLE_ID.getSnowflake())) { return Title.EXECUTIVE; - } - else if (role.getId().equals(SnowflakeEntry.ASSISTANT_EXECUTIVE_ROLE_ID.getSnowflake())) + } else if (role.getId().equals(SnowflakeEntry.ASSISTANT_EXECUTIVE_ROLE_ID.getSnowflake())) { return Title.ASSTEXEC; - } - else if (role.getId().equals(SnowflakeEntry.SENIOR_ADMIN_ROLE_ID.getSnowflake())) + } else if (role.getId().equals(SnowflakeEntry.SENIOR_ADMIN_ROLE_ID.getSnowflake())) { - return Rank.SENIOR_ADMIN; - } - else if (role.getId().equals(SnowflakeEntry.ADMIN_ROLE_ID.getSnowflake())) + return GroupProvider.SENIOR_ADMIN.getGroup(); + } else if (role.getId().equals(SnowflakeEntry.ADMIN_ROLE_ID.getSnowflake())) { - return Rank.ADMIN; - } - else if (role.getId().equals(SnowflakeEntry.MASTERBUILDER_ROLE_ID.getSnowflake())) + return GroupProvider.ADMIN.getGroup(); + } else if (role.getId().equals(SnowflakeEntry.MASTERBUILDER_ROLE_ID.getSnowflake())) { - return Title.MASTER_BUILDER; - } - else + return GroupProvider.MASTER_BUILDER.getGroup(); + } else { return null; } diff --git a/discord/src/main/java/me/totalfreedom/discord/listener/MinecraftListener.java b/discord/src/main/java/me/totalfreedom/discord/listener/MinecraftListener.java index 6c29ab9b..62f3d045 100644 --- a/discord/src/main/java/me/totalfreedom/discord/listener/MinecraftListener.java +++ b/discord/src/main/java/me/totalfreedom/discord/listener/MinecraftListener.java @@ -53,7 +53,7 @@ public class MinecraftListener { Boolean b = m.getMessage() .getChannel() - .map(c -> c instanceof TextChannel) + .map(TextChannel.class::isInstance) .block(); return b != null && b; }).subscribe(this::doMessageBodyDetails); diff --git a/discord/src/main/java/me/totalfreedom/discord/listener/PrivateMessageListener.java b/discord/src/main/java/me/totalfreedom/discord/listener/PrivateMessageListener.java index c84839e9..7717c6b1 100644 --- a/discord/src/main/java/me/totalfreedom/discord/listener/PrivateMessageListener.java +++ b/discord/src/main/java/me/totalfreedom/discord/listener/PrivateMessageListener.java @@ -24,7 +24,7 @@ public class PrivateMessageListener .on(MessageCreateEvent.class) .filter(event -> event.getMessage().getAuthor().orElse(null) != null) .filter(event -> !event.getMessage().getAuthor().orElseThrow().getId().equals(tfd4j.getBot().getClient().getSelfId())) - .filter(event -> event.getMessage().getContent().strip().matches("[0-9][0-9][0-9][0-9][0-9]")) + .filter(event -> event.getMessage().getContent().strip().matches("\\d{5}")) .subscribe(event -> { String code = event.getMessage().getContent().strip(); diff --git a/discord/src/main/java/me/totalfreedom/discord/util/TFM_Bridge.java b/discord/src/main/java/me/totalfreedom/discord/util/TFM_Bridge.java index 67a94c2e..2a53e83d 100644 --- a/discord/src/main/java/me/totalfreedom/discord/util/TFM_Bridge.java +++ b/discord/src/main/java/me/totalfreedom/discord/util/TFM_Bridge.java @@ -1,18 +1,12 @@ package me.totalfreedom.discord.util; -import discord4j.common.util.Snowflake; import discord4j.core.object.entity.Guild; import discord4j.core.object.entity.Member; -import discord4j.core.object.entity.Role; import me.totalfreedom.discord.Bot; import me.totalfreedom.totalfreedommod.TotalFreedomMod; -import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.GroupProvider; -import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Title; -import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.Bukkit; public class TFM_Bridge @@ -37,33 +31,26 @@ public class TFM_Bridge { if (role.getId().equals(SnowflakeEntry.OWNER_ROLE_ID.getSnowflake())) { - return Title.OWNER.getColoredTag(); - } - else if (role.getId().equals(SnowflakeEntry.DEVELOPER_ROLE_ID.getSnowflake())) + return FUtil.miniMessage(Title.OWNER.getColoredTag()); + } else if (role.getId().equals(SnowflakeEntry.DEVELOPER_ROLE_ID.getSnowflake())) { - return Title.DEVELOPER.getColoredTag(); - } - else if (role.getId().equals(SnowflakeEntry.EXECUTIVE_ROLE_ID.getSnowflake())) + return FUtil.miniMessage(Title.DEVELOPER.getColoredTag()); + } else if (role.getId().equals(SnowflakeEntry.EXECUTIVE_ROLE_ID.getSnowflake())) { - return Title.EXECUTIVE.getColoredTag(); - } - else if (role.getId().equals(SnowflakeEntry.ASSISTANT_EXECUTIVE_ROLE_ID.getSnowflake())) + return FUtil.miniMessage(Title.EXECUTIVE.getColoredTag()); + } else if (role.getId().equals(SnowflakeEntry.ASSISTANT_EXECUTIVE_ROLE_ID.getSnowflake())) { - return Title.ASSTEXEC.getColoredTag(); - } - else if (role.getId().equals(SnowflakeEntry.SENIOR_ADMIN_ROLE_ID.getSnowflake())) + return FUtil.miniMessage(Title.ASSTEXEC.getColoredTag()); + } else if (role.getId().equals(SnowflakeEntry.SENIOR_ADMIN_ROLE_ID.getSnowflake())) { - return GroupProvider.SENIOR_ADMIN.getGroup().getColoredTag().toString(); - } - else if (role.getId().equals(SnowflakeEntry.ADMIN_ROLE_ID.getSnowflake())) + return FUtil.miniMessage(GroupProvider.SENIOR_ADMIN.getGroup().getColoredTag()); + } else if (role.getId().equals(SnowflakeEntry.ADMIN_ROLE_ID.getSnowflake())) { - return GroupProvider.ADMIN.getGroup().getColoredTag().toString(); - } - else if (role.getId().equals(SnowflakeEntry.MASTERBUILDER_ROLE_ID.getSnowflake())) + return FUtil.miniMessage(GroupProvider.ADMIN.getGroup().getColoredTag()); + } else if (role.getId().equals(SnowflakeEntry.MASTERBUILDER_ROLE_ID.getSnowflake())) { - return GroupProvider.MASTER_BUILDER.getGroup().getColoredTag().toString()); - } - else + return FUtil.miniMessage(GroupProvider.MASTER_BUILDER.getGroup().getColoredTag()); + } else { return ""; }