From 03936909c93b32bdedfda97bcccf3cca082939cc Mon Sep 17 00:00:00 2001 From: ChanceSD <5256215+ChanceSD@users.noreply.github.com> Date: Sat, 4 May 2024 05:22:40 +0100 Subject: [PATCH] Further changes --- pvpmanager/pom.xml | 18 +- .../me/chancesd/pvpmanager/PvPManager.java | 6 +- .../chancesd/pvpmanager/command/Newbie.java | 4 +- .../me/chancesd/pvpmanager/command/PM.java | 72 +- .../me/chancesd/pvpmanager/command/PvP.java | 8 +- .../pvpmanager/command/PvPGlobal.java | 10 +- .../chancesd/pvpmanager/command/PvPInfo.java | 2 +- .../pvpmanager/command/PvPStatus.java | 3 +- .../me/chancesd/pvpmanager/command/Tag.java | 8 +- .../me/chancesd/pvpmanager/command/Untag.java | 3 +- .../chancesd/pvpmanager/command/Worlds.java | 2 +- .../pvpmanager/event/PlayerTagEvent.java | 4 + .../pvpmanager/event/PlayerUntagEvent.java | 17 +- .../chancesd/pvpmanager/integration/Hook.java | 9 +- .../integration/hook/EssentialsHook.java | 2 +- .../integration/hook/GriefPreventionHook.java | 4 +- .../integration/hook/PlaceHolderAPI.java | 8 +- .../integration/hook/SimpleClansHook.java | 4 +- .../pvpmanager/integration/hook/TABHook.java | 61 ++ .../integration/hook/TownyHook.java | 2 +- .../hook/worldguard/WorldGuardModernHook.java | 8 +- .../integration/{ => type}/AFKDependency.java | 4 +- .../integration/type/Dependency.java | 4 +- .../{ => type}/ForceToggleDependency.java | 3 +- .../{ => type}/GroupDependency.java | 4 +- .../type/WorldGuardDependency.java | 1 - .../library/metrics/CustomMetrics.java | 80 +- .../listener/BlockedActionsListener.java | 116 +++ .../listener/DebugEntityListener.java | 24 +- .../pvpmanager/listener/EntityListener.java | 32 +- .../listener/EntityListener1_9.java | 31 +- .../pvpmanager/listener/PlayerListener.java | 167 +--- .../listener/PlayerListener1_11.java | 14 +- .../pvpmanager/manager/ConfigManager.java | 32 +- .../pvpmanager/manager/DependencyManager.java | 69 +- .../pvpmanager/manager/DisplayManager.java | 10 +- .../pvpmanager/manager/PlayerManager.java | 41 +- .../pvpmanager/manager/UpdateManager.java | 19 +- .../pvpmanager/player/BasePlayer.java | 6 + .../pvpmanager/player/CombatPlayer.java | 109 ++- .../chancesd/pvpmanager/player/EcoPlayer.java | 24 +- .../pvpmanager/player/UntagReason.java | 14 + .../player/nametag/BukkitNameTag.java | 97 +-- .../pvpmanager/player/nametag/NameTag.java | 10 +- .../pvpmanager/player/nametag/TABNameTag.java | 112 +++ .../me/chancesd/pvpmanager/setting/Conf.java | 400 +++++++++ .../pvpmanager/setting/ItemCooldown.java | 29 + .../me/chancesd/pvpmanager/setting/Lang.java | 13 +- .../pvpmanager/setting/Permissions.java | 7 + .../chancesd/pvpmanager/setting/Settings.java | 818 ------------------ .../pvpmanager/setting/conf/ConfSection.java | 38 + .../pvpmanager/setting/lang/Replacement.java | 3 + .../chancesd/pvpmanager/storage/Database.java | 33 +- .../chancesd/pvpmanager/tasks/NewbieTask.java | 4 +- .../pvpmanager/tasks/StorageSaveTask.java | 2 +- .../me/chancesd/pvpmanager/tasks/TagTask.java | 41 +- .../pvpmanager/utils/CombatUtils.java | 32 +- pvpmanager/src/main/resources/config.yml | 388 +++++---- .../src/main/resources/plugin-hooks.yml | 20 + pvpmanager/src/main/resources/plugin.yml | 1 - .../chancesd/pvpmanager/InstanceCreator.java | 9 +- .../{PluginTest.java => PluginSetup.java} | 9 +- .../listener/BlockedActionsListenerTest.java | 70 ++ .../listener/EntityListenerTest.java | 24 +- .../listener/PlayerListenerTest.java | 40 +- .../pvpmanager/manager/DependencyTest.java | 5 +- 66 files changed, 1634 insertions(+), 1630 deletions(-) create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/TABHook.java rename pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/{ => type}/AFKDependency.java (68%) rename pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/{ => type}/ForceToggleDependency.java (82%) rename pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/{ => type}/GroupDependency.java (74%) create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/BlockedActionsListener.java create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/player/UntagReason.java create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/player/nametag/TABNameTag.java create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Conf.java create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/ItemCooldown.java delete mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Settings.java create mode 100644 pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/conf/ConfSection.java create mode 100644 pvpmanager/src/main/resources/plugin-hooks.yml rename pvpmanager/src/test/java/me/chancesd/pvpmanager/{PluginTest.java => PluginSetup.java} (92%) create mode 100644 pvpmanager/src/test/java/me/chancesd/pvpmanager/listener/BlockedActionsListenerTest.java diff --git a/pvpmanager/pom.xml b/pvpmanager/pom.xml index 3a22c5cc..13eeed87 100644 --- a/pvpmanager/pom.xml +++ b/pvpmanager/pom.xml @@ -16,7 +16,7 @@ https://github.com/ChanceSD/PvPManager - 78 + 79 1 @@ -58,6 +58,12 @@ https://repo.md-5.net/content/groups/public/ + + + krypton + https://repo.kryptonmc.org/releases + + codemc-repo https://repo.codemc.org/repository/maven-public @@ -194,6 +200,14 @@ + + + me.neznamy + tab-api + 4.0.2 + provided + + com.github.TownyAdvanced @@ -223,7 +237,7 @@ 1.16.8.1.1 provided - + com.github.TechFortress diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java index 834f32fb..7acd1e47 100644 --- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java +++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java @@ -15,6 +15,7 @@ import me.chancesd.pvpmanager.command.Tag; import me.chancesd.pvpmanager.command.Untag; import me.chancesd.pvpmanager.library.metrics.CustomMetrics; +import me.chancesd.pvpmanager.listener.BlockedActionsListener; import me.chancesd.pvpmanager.listener.EntityListener; import me.chancesd.pvpmanager.listener.EntityListener1_9; import me.chancesd.pvpmanager.listener.PlayerListener; @@ -97,6 +98,7 @@ private void startListeners() { registerListener(new PlayerListener1_11(playerHandler)); } registerListener(new PlayerListener(playerHandler)); + registerListener(new BlockedActionsListener(playerHandler)); dependencyManager.startListeners(this); } @@ -111,7 +113,7 @@ private void registerCommands() { registerCommand(getCommand("pvptag"), new Tag(playerHandler)); registerCommand(getCommand("untag"), new Untag(playerHandler)); registerCommand(getCommand("announce"), new Announce()); - registerCommand(getCommand("pvpglobal"), new PvPGlobal()); + registerCommand(getCommand("pvpglobal"), new PvPGlobal(playerHandler)); } private void startMetrics() { @@ -132,7 +134,7 @@ public ConfigManager getConfigM() { return configM; } - public PlayerManager getPlayerHandler() { + public PlayerManager getPlayerManager() { return playerHandler; } diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java index 066b6495..cd3f75ea 100644 --- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java +++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java @@ -17,7 +17,7 @@ import me.chancesd.pvpmanager.player.CombatPlayer; import me.chancesd.pvpmanager.setting.Lang; import me.chancesd.pvpmanager.setting.Permissions; -import me.chancesd.pvpmanager.setting.Settings; +import me.chancesd.pvpmanager.setting.Conf; import me.chancesd.pvpmanager.utils.ChatUtils; import me.chancesd.pvpmanager.utils.CombatUtils; @@ -41,7 +41,7 @@ public final boolean onCommand(final CommandSender sender, final Command command return true; } else if (args.length >= 1) { final String subcommand = args[0]; - if (Settings.isNewbieDisableAllowed() && subcommand.equalsIgnoreCase("disable") && sender instanceof final Player player) { + if (Conf.NEWBIE_ALLOW_DISABLE.asBool() && subcommand.equalsIgnoreCase("disable") && sender instanceof final Player player) { final CombatPlayer combatPlayer = ph.get(player); if (combatPlayer.isNewbie()) { combatPlayer.setNewbie(false); diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java index 2874029b..0bd6435e 100644 --- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java +++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java @@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -31,7 +32,7 @@ import me.chancesd.pvpmanager.setting.Locale; import me.chancesd.pvpmanager.setting.Lang; import me.chancesd.pvpmanager.setting.Permissions; -import me.chancesd.pvpmanager.setting.Settings; +import me.chancesd.pvpmanager.setting.Conf; import me.chancesd.pvpmanager.storage.DatabaseConfigBuilder.DatabaseType; import me.chancesd.pvpmanager.storage.fields.UserDataFields; import me.chancesd.pvpmanager.utils.ChatUtils; @@ -60,8 +61,8 @@ public PM(final PvPManager plugin) { @Override public final boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { - if (args.length == 0 && sender.hasPermission("pvpmanager.menu")) { - Settings.helpMenu(sender); + if (args.length == 0 && Permissions.COMMAND_MENU.hasPerm(sender)) { + helpMenu(sender); return true; } if (args.length == 1) { @@ -81,7 +82,7 @@ public final boolean onCommand(final CommandSender sender, final Command cmd, fi } else if (args[0].equalsIgnoreCase(CONVERT) && Permissions.ADMIN.hasPerm(sender)) { convert(sender, args); return true; - } else if (args[0].equalsIgnoreCase(DEBUG) && sender.hasPermission("pvpmanager.debug")) { + } else if (args[0].equalsIgnoreCase(DEBUG) && Permissions.COMMAND_DEBUG.hasPerm(sender)) { debug(sender, args); return true; } else if (args[0].equalsIgnoreCase(LOCALE) && Permissions.ADMIN.hasPerm(sender)) { @@ -172,31 +173,31 @@ private void convert(final CommandSender sender, final String[] args) { private void debug(final CommandSender sender, final String[] args) { CombatPlayer p = null; if (args.length == 2 && sender instanceof final Player player) { - p = plugin.getPlayerHandler().get(player); + p = plugin.getPlayerManager().get(player); } if (args.length == 2 && args[1].equalsIgnoreCase("toggle")) { - Settings.setDEBUG(!Settings.isDebug()); - Log.info("Debug mode: " + Settings.isDebug()); - sender.sendMessage("Debug mode: " + Settings.isDebug()); + Conf.setDebug(!Conf.DEBUG_MODE.asBool()); + Log.info("Debug mode: " + Conf.DEBUG_MODE.asBool()); + sender.sendMessage("Debug mode: " + Conf.DEBUG_MODE.asBool()); } else if (args.length == 2 && args[1].equalsIgnoreCase("damagedebug")) { if (damageListener == null) { sender.sendMessage("§4Warning §f- Some plugin features are disabled while in this mode"); sender.sendMessage("Enabling a damage listener for debugging, check the console for details on every entity hit"); sender.sendMessage("§cRun this command again §fafter you are done to disable debugging or reload the plugin"); - Settings.setDEBUG(true); - damageListener = new DebugEntityListener(plugin.getPlayerHandler()); + Conf.setDebug(true); + damageListener = new DebugEntityListener(plugin.getPlayerManager()); HandlerList.unregisterAll(plugin.getEntityListener()); Bukkit.getServer().getPluginManager().registerEvents(damageListener, plugin); } else { HandlerList.unregisterAll(damageListener); Bukkit.getServer().getPluginManager().registerEvents(plugin.getEntityListener(), plugin); damageListener = null; - Settings.setDEBUG(false); + Conf.setDebug(false); sender.sendMessage("Debug damage listener disabled"); } } else if (args[1].equalsIgnoreCase("tagall")) { - for (final CombatPlayer player : plugin.getPlayerHandler().getPlayers().values()) { - player.setTagged(true, player); + for (final CombatPlayer player : plugin.getPlayerManager().getPlayers().values()) { + player.tag(true, player); } sender.sendMessage("Tagged all players"); } else if (args.length == 3) { @@ -204,24 +205,24 @@ private void debug(final CommandSender sender, final String[] args) { sender.sendMessage("§4Player not online!"); return; } - p = plugin.getPlayerHandler().get(Bukkit.getPlayer(args[2])); + p = plugin.getPlayerManager().get(Bukkit.getPlayer(args[2])); } if (p == null) return; if (args[1].equalsIgnoreCase("tag")) { - p.setTagged(true, p); + p.tag(true, p); } else if (args[1].equalsIgnoreCase("attack")) { plugin.getServer().getPluginManager() .callEvent(new EntityDamageByEntityEvent(p.getPlayer(), p.getPlayer(), DamageCause.ENTITY_ATTACK, DamageSource.builder(DamageType.PLAYER_ATTACK).build(), 5.0)); sender.sendMessage("Attacked player with 5 damage"); } else if (args[1].equalsIgnoreCase("players")) { - for (final CombatPlayer player : plugin.getPlayerHandler().getPlayers().values()) { + for (final CombatPlayer player : plugin.getPlayerManager().getPlayers().values()) { if (!Bukkit.getOnlinePlayers().contains(player.getPlayer())) { Log.info("UUID: " + player.getUUID() + " - Name: " + player.getName() + " - Metadata: " + player.getPlayer().hasMetadata("NPC")); } } - Log.info("Players: " + plugin.getPlayerHandler().getPlayers().size() + "/" + Bukkit.getOnlinePlayers().size()); + Log.info("Players: " + plugin.getPlayerManager().getPlayers().size() + "/" + Bukkit.getOnlinePlayers().size()); } } @@ -244,7 +245,7 @@ private void locale(final CommandSender sender, final String[] args) { return; } - Settings.setLocale(locale.name()); + Conf.LOCALE.set(locale.name()); changeConfigSetting("General.Locale", locale.name()); Lang.setup(plugin); sender.sendMessage(Lang.PREFIXMSG + " §aLanguage changed to " + Lang.getLocale() + " - Filename: " + Lang.getLocale().fileName()); @@ -257,7 +258,7 @@ private void changeConfigSetting(final String path, final String value) { } private void reload(final CommandSender sender) { - if (!sender.hasPermission("pvpmanager.reload")) { + if (!Permissions.COMMAND_RELOAD.hasPerm(sender)) { sender.sendMessage(Lang.ERROR_PERMISSION.msg()); return; } @@ -268,21 +269,21 @@ private void reload(final CommandSender sender) { private void reload(final boolean silent) { Log.setSilent(silent); - Settings.setReloading(true); - Settings.setUpdate(false); + plugin.setReloading(true); + plugin.getUpdateManager().setUpdateAvailable(false); plugin.onDisable(); ScheduleUtils.cancelAllTasks(); HandlerList.unregisterAll(plugin); plugin.onEnable(); - Settings.setReloading(false); + plugin.setReloading(false); if (silent) Log.setSilent(false); } private void update(final CommandSender sender) { - if (Settings.isUpdateCheck()) { + if (Conf.CHECK_UPDATES.asBool()) { final UpdateManager updateManager = plugin.getUpdateManager(); - if (Settings.isUpdate()) { + if (updateManager.hasUpdateAvailable()) { if (updateManager.getUpdater().downloadFile()) { sender.sendMessage("§2Update Successful. On next restart you will have §e" + updateManager.getNewVersion()); } else { @@ -310,4 +311,27 @@ public List onTabComplete(final CommandSender sender, final Command comm return Collections.emptyList(); } + public static void helpMenu(final CommandSender player) { + player.sendMessage(ChatColor.GOLD + "-------------- PvPManager Help Page --------------"); + player.sendMessage(ChatColor.GOLD + "/pvp [player]" + helpSeparator() + ChatColor.WHITE + "Set PvP enabled or disabled"); + player.sendMessage(ChatColor.GOLD + "/pvpinfo [player]" + helpSeparator() + ChatColor.WHITE + "Check your or other player info"); + player.sendMessage(ChatColor.GOLD + "/pvplist [offline]" + helpSeparator() + ChatColor.WHITE + "List all online or offline players"); + player.sendMessage(ChatColor.GOLD + "/pvpo " + helpSeparator() + ChatColor.WHITE + "Override all PvP protections"); + player.sendMessage(ChatColor.GOLD + "/pvpstatus [player]" + helpSeparator() + ChatColor.WHITE + "Check your or other player PvP status"); + player.sendMessage(ChatColor.GOLD + "/pvpglobal " + helpSeparator() + ChatColor.WHITE + "Toggle PvP for the whole server"); + player.sendMessage(ChatColor.GOLD + "/pvptag