diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/CreateArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/CreateArg.java index eb2218510..dcce97ac5 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/CreateArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/CreateArg.java @@ -8,8 +8,9 @@ import java.text.Normalizer; -public enum CreateArg { - ; +public final class CreateArg { + + private CreateArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DeleteArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DeleteArg.java index 378d5eadd..aa647e051 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DeleteArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DeleteArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum DeleteArg { - ; +public final class DeleteArg { + + private DeleteArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DisableArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DisableArg.java index 5699af862..fac9a481d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DisableArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/DisableArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum DisableArg { - ; +public final class DisableArg { + + private DisableArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/EnableArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/EnableArg.java index 17186969a..e231aa95e 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/EnableArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/EnableArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum EnableArg { - ; +public final class EnableArg { + + private EnableArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/FreezeArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/FreezeArg.java index d78951bd1..60a3e4184 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/FreezeArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/FreezeArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum FreezeArg { - ; +public final class FreezeArg { + + private FreezeArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.arena.freeze")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/HelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/HelpArg.java index 29c1ea0bf..3d05df170 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/HelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/HelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HelpArg { - ; +public final class HelpArg { + + private HelpArg() {} public static void run(Player player, String label) { if (player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/InfoArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/InfoArg.java index bc0d49011..8e1a320d5 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/InfoArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/InfoArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum InfoArg { - ; +public final class InfoArg { + + private InfoArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/IconArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/IconArg.java index a54372548..a3178fa85 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/IconArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/IconArg.java @@ -17,8 +17,9 @@ import java.util.ArrayList; import java.util.List; -public enum IconArg { - ; +public final class IconArg { + + private IconArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PartyFfaCenterArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PartyFfaCenterArg.java index 19274aebc..bbbb793b5 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PartyFfaCenterArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PartyFfaCenterArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum PartyFfaCenterArg { - ; +public final class PartyFfaCenterArg { + + private PartyFfaCenterArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PortalProtArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PortalProtArg.java index 442c1bd45..e407f09ef 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PortalProtArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/PortalProtArg.java @@ -10,8 +10,9 @@ import java.util.ArrayList; import java.util.List; -public enum PortalProtArg { - ; +public final class PortalProtArg { + + private PortalProtArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/SideBuildLimitArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/SideBuildLimitArg.java index 6d2c5b940..ad17b7fa0 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/SideBuildLimitArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/Set/SideBuildLimitArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum SideBuildLimitArg { - ; +public final class SideBuildLimitArg { + + private SideBuildLimitArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetArg.java index 70a3d1e09..e2db0998e 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetArg.java @@ -11,8 +11,9 @@ import java.util.Collections; import java.util.List; -public enum SetArg { - ; +public final class SetArg { + + private SetArg() {} public static void run(Player player, String label, String[] args) { if (args.length > 1) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetupArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetupArg.java index 7940eb6ab..14b53d389 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetupArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/SetupArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum SetupArg { - ; +public final class SetupArg { + + private SetupArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/StopArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/StopArg.java index c9a1913cc..8b1b405c1 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/StopArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/StopArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum StopArg { - ; +public final class StopArg { + + private StopArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.arena.stop")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/TeleportArg.java b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/TeleportArg.java index fbb14311c..09fb9636e 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/TeleportArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/arena/arguments/TeleportArg.java @@ -10,8 +10,9 @@ import java.util.ArrayList; import java.util.List; -public enum TeleportArg { - ; +public final class TeleportArg { + + private TeleportArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/BracketsArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/BracketsArg.java index e86ad0641..dbd3c6740 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/BracketsArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/BracketsArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum BracketsArg { - ; +public final class BracketsArg { + + private BracketsArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/JuggernautArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/JuggernautArg.java index fbb0ec2b5..d910b5292 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/JuggernautArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/JuggernautArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum JuggernautArg { - ; +public final class JuggernautArg { + + private JuggernautArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/LMSArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/LMSArg.java index 67e3dbb1b..484e9a444 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/LMSArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/LMSArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum LMSArg { - ; +public final class LMSArg { + + private LMSArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/OITCArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/OITCArg.java index 2b137d937..b2afea938 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/OITCArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/OITCArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum OITCArg { - ; +public final class OITCArg { + + private OITCArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SpleggArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SpleggArg.java index 08702e011..9336af999 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SpleggArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SpleggArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum SpleggArg { - ; +public final class SpleggArg { + + private SpleggArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SumoArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SumoArg.java index 8a3df0756..9fc36708e 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SumoArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/SumoArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum SumoArg { - ; +public final class SumoArg { + + private SumoArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/TNTTagArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/TNTTagArg.java index d708a24a1..34209818b 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/TNTTagArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/Events/TNTTagArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum TNTTagArg { - ; +public final class TNTTagArg { + + private TNTTagArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HelpArg.java index 16cd506fa..f504d4240 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HelpArg { - ; +public final class HelpArg { + + private HelpArg() {} public static void run(Player player, String label) { if (player.hasPermission("zpp.setup") && player.hasPermission("zpp.event.stop")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HostArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HostArg.java index 60383d442..c18a023c2 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HostArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/HostArg.java @@ -10,8 +10,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HostArg { - ; +public final class HostArg { + + private HostArg() {} public static void run(Player player, String label, String[] args) { if (args.length != 1) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/JoinArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/JoinArg.java index 74ec700d7..bb458d048 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/JoinArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/JoinArg.java @@ -10,8 +10,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum JoinArg { - ; +public final class JoinArg { + + private JoinArg() {} public static void run(Player player, String label, String[] args) { if (args.length != 1) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/SpawnPointArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/SpawnPointArg.java index eef8e4b68..69c3ea83d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/SpawnPointArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/SpawnPointArg.java @@ -6,8 +6,9 @@ import org.bukkit.Location; import org.bukkit.entity.Player; -public enum SpawnPointArg { - ; +public final class SpawnPointArg { + + private SpawnPointArg() {} public static void spawnPointCommand(Player player, String label1, EventData eventData, String[] args) { if (args.length == 3) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/StopArg.java b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/StopArg.java index b31c66c7c..7c451bbce 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/event/arguments/StopArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/event/arguments/StopArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum StopArg { - ; +public final class StopArg { + + private StopArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.event.stop.collecting") && !player.hasPermission("zpp.event.stop.live")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/HelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/HelpArg.java index d8ed76ee7..b9541c4b9 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/HelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/HelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HelpArg { - ; +public final class HelpArg { + + private HelpArg() {} public static void run(Player player, String label) { for (String line : LanguageManager.getList("FFA.COMMAND.HELP")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/KitArg.java b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/KitArg.java index d5f7197b7..b5d6d719f 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/KitArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/KitArg.java @@ -6,8 +6,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum KitArg { - ; +public final class KitArg { + + private KitArg() {} public static void run(Player player) { FFA ffa = FFAManager.getInstance().getFFAByPlayer(player); diff --git a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/LeaveArg.java b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/LeaveArg.java index b66aa1431..db18ffd94 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/LeaveArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/LeaveArg.java @@ -6,8 +6,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum LeaveArg { - ; +public final class LeaveArg { + + private LeaveArg() {} public static void run(Player player) { // First check if player is in an FFA as a participant diff --git a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/ListArg.java b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/ListArg.java index d5f4f7af1..32dc43ce6 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/ListArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/ListArg.java @@ -9,8 +9,9 @@ import java.util.ArrayList; import java.util.List; -public enum ListArg { - ; +public final class ListArg { + + private ListArg() {} public static void run(Player player) { List ffas = new ArrayList<>(); diff --git a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/SpectateArg.java b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/SpectateArg.java index abda51fe9..6ba57a86d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/SpectateArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ffa/arguments/SpectateArg.java @@ -14,8 +14,9 @@ import java.util.ArrayList; import java.util.List; -public enum SpectateArg { - ; +public final class SpectateArg { + + private SpectateArg() {} public static void run(Player player, String label, String[] args) { if (args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/CreateArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/CreateArg.java index 933625811..790d5b04c 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/CreateArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/CreateArg.java @@ -9,8 +9,9 @@ import java.text.Normalizer; -public enum CreateArg { - ; +public final class CreateArg { + + private CreateArg() {} private static final int MAX_LADDERS = ConfigManager.getInt("SETUP.MAX-LADDERS"); diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/DeleteArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/DeleteArg.java index ae984aa71..ce1feb130 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/DeleteArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/DeleteArg.java @@ -19,8 +19,9 @@ import java.util.List; import java.util.Map; -public enum DeleteArg { - ; +public final class DeleteArg { + + private DeleteArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/EffectArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/EffectArg.java index 2ff05f7fe..5b4ff9bb9 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/EffectArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/EffectArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum EffectArg { - ; +public final class EffectArg { + + private EffectArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/FreezeArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/FreezeArg.java index 2c6a065d8..faf514d77 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/FreezeArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/FreezeArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum FreezeArg { - ; +public final class FreezeArg { + + private FreezeArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.ladder.freeze")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/HelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/HelpArg.java index 73d20ead9..a94cee3f0 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/HelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/HelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HelpArg { - ; +public final class HelpArg { + + private HelpArg() {} public static void run(Player player, String label) { if (player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/IconArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/IconArg.java index 93f32f39b..d66c39ff3 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/IconArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/IconArg.java @@ -18,8 +18,9 @@ import java.util.ArrayList; import java.util.List; -public enum IconArg { - ; +public final class IconArg { + + private IconArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InfoArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InfoArg.java index aad281dd0..974c43087 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InfoArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InfoArg.java @@ -9,8 +9,9 @@ import java.util.ArrayList; import java.util.List; -public enum InfoArg { - ; +public final class InfoArg { + + private InfoArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InventoryArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InventoryArg.java index 9753231e1..dc31a61d8 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InventoryArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/InventoryArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum InventoryArg { - ; +public final class InventoryArg { + + private InventoryArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/SetArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/SetArg.java index 34dd9071a..a11aae65b 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/SetArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/SetArg.java @@ -7,8 +7,9 @@ import java.util.Collections; import java.util.List; -public enum SetArg { - ; +public final class SetArg { + + private SetArg() {} public static void run(Player player, String label, String[] args) { if (args.length > 1) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/StopArg.java b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/StopArg.java index 9d1161548..27035ca5c 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/StopArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/ladder/arguments/StopArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum StopArg { - ; +public final class StopArg { + + private StopArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.ladder.stop")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyAcceptArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyAcceptArg.java index 07ccaf99d..484891769 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyAcceptArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyAcceptArg.java @@ -10,8 +10,9 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; -public enum PartyAcceptArg { - ; +public final class PartyAcceptArg { + + private PartyAcceptArg() {} public static void AcceptCommand(Player player, String label, String[] args) { if (args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyDisbandArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyDisbandArg.java index b7a815aee..0828c5ac8 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyDisbandArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyDisbandArg.java @@ -6,8 +6,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum PartyDisbandArg { - ; +public final class PartyDisbandArg { + + private PartyDisbandArg() {} public static void DisbandCommand(Player player, String label, String[] args) { if (args.length != 1) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyHelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyHelpArg.java index 6d82e398e..71b46dd74 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyHelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyHelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum PartyHelpArg { - ; +public final class PartyHelpArg { + + private PartyHelpArg() {} public static void HelpCommand(Player player, String label) { for (String line : LanguageManager.getList("COMMAND.PARTY.ARGUMENTS.HELP")) diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInfoArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInfoArg.java index 6b25644fb..fb2b7fc7d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInfoArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInfoArg.java @@ -7,8 +7,9 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; -public enum PartyInfoArg { - ; +public final class PartyInfoArg { + + private PartyInfoArg() {} public static void InfoCommand(Player player, String label, String[] args) { if (args.length != 1 && args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInviteArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInviteArg.java index 9b8dc9cf8..871573072 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInviteArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyInviteArg.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum PartyInviteArg { - ; +public final class PartyInviteArg { + + private PartyInviteArg() {} public static void InviteCommand(Player player, String label, String[] args) { if (args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyJoinArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyJoinArg.java index 4615a8f81..78519710d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyJoinArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyJoinArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum PartyJoinArg { - ; +public final class PartyJoinArg { + + private PartyJoinArg() {} public static void JoinCommand(Player player, String label, String[] args) { if (args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyKickArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyKickArg.java index 8d8f8fc39..7aed7ed11 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyKickArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyKickArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum PartyKickArg { - ; +public final class PartyKickArg { + + private PartyKickArg() {} public static void KickCommand(Player player, String label, String[] args) { if (args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaderArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaderArg.java index 798cdbea0..10bff7a93 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaderArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaderArg.java @@ -11,8 +11,9 @@ import java.util.ArrayList; import java.util.List; -public enum PartyLeaderArg { - ; +public final class PartyLeaderArg { + + private PartyLeaderArg() {} public static void LeaderCommand(Player player, String label, String[] args) { if (args.length != 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaveArg.java b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaveArg.java index d2924093c..909865db4 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaveArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/party/arguments/PartyLeaveArg.java @@ -6,8 +6,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum PartyLeaveArg { - ; +public final class PartyLeaveArg { + + private PartyLeaveArg() {} public static void LeaveCommand(Player player, String label, String[] args) { if (args.length != 1) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ArenasArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ArenasArg.java index 3bbcd5fa5..22dbc5b20 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ArenasArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ArenasArg.java @@ -7,8 +7,9 @@ import org.bukkit.GameMode; import org.bukkit.entity.Player; -public enum ArenasArg { - ; +public final class ArenasArg { + + private ArenasArg() {} public static void run(Player player) { if (!player.hasPermission("zpp.practice.arenas")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/EloArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/EloArg.java index 97b9a6484..f3793cb4f 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/EloArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/EloArg.java @@ -16,8 +16,9 @@ import java.util.ArrayList; import java.util.List; -public enum EloArg { - ; +public final class EloArg { + + private EloArg() {} public static void run(Player player, String label, String[] args) { if (args.length < 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/Exp.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/Exp.java index 9e50ad323..4c4831bad 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/Exp.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/Exp.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.List; -public enum Exp { - ; +public final class Exp { + + private Exp() {} public static void run(Player player, String label, String[] args) { if (args.length < 2) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/GoldenHeadArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/GoldenHeadArg.java index c7829e725..4b28ca62f 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/GoldenHeadArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/GoldenHeadArg.java @@ -8,8 +8,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -public enum GoldenHeadArg { - ; +public final class GoldenHeadArg { + + private GoldenHeadArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HelpArg.java index beea7cea0..182ee77df 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HelpArg { - ; +public final class HelpArg { + + private HelpArg() {} public static void run(Player player, String label) { if (player.hasPermission("zpp.admin")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HologramArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HologramArg.java index 0fea8825a..71dbe2bf5 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HologramArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/HologramArg.java @@ -24,8 +24,9 @@ import java.util.ArrayList; import java.util.List; -public enum HologramArg { - ; +public final class HologramArg { + + private HologramArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/InfoArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/InfoArg.java index 21f79a086..76511b547 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/InfoArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/InfoArg.java @@ -14,8 +14,9 @@ import java.util.ArrayList; import java.util.List; -public enum InfoArg { - ; +public final class InfoArg { + + private InfoArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.practice.info")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/LobbyArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/LobbyArg.java index b8d541f35..8b5a57a29 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/LobbyArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/LobbyArg.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum LobbyArg { - ; +public final class LobbyArg { + + private LobbyArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.practice.lobby")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/NametagArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/NametagArg.java index c877fdb5d..411a1d1d9 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/NametagArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/NametagArg.java @@ -14,8 +14,9 @@ import java.util.ArrayList; import java.util.List; -public enum NametagArg { - ; +public final class NametagArg { + + private NametagArg() {} private static String joinArgs(String[] args, int start) { StringBuilder builder = new StringBuilder(); diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RankedArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RankedArg.java index 7129b3bf3..d93432344 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RankedArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RankedArg.java @@ -14,8 +14,9 @@ import java.util.ArrayList; import java.util.List; -public enum RankedArg { - ; +public final class RankedArg { + + private RankedArg() {} public static void run(Player player, String label, String[] args) { if (args.length == 3 && args[1].equalsIgnoreCase("reset")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ReloadArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ReloadArg.java index 8710b393a..21cbdb604 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ReloadArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ReloadArg.java @@ -5,8 +5,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum ReloadArg { - ; +public final class ReloadArg { + + private ReloadArg() {} private static String message(String path, String fallback) { String value = LanguageManager.getString(path); diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RenameArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RenameArg.java index f11847207..48713407d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RenameArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/RenameArg.java @@ -11,8 +11,9 @@ import java.util.Arrays; import java.util.List; -public enum RenameArg { - ; +public final class RenameArg { + + private RenameArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.practice.rename")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ResetArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ResetArg.java index 91acaa9bb..b5bddb53a 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ResetArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/ResetArg.java @@ -15,8 +15,9 @@ import java.util.ArrayList; import java.util.List; -public enum ResetArg { - ; +public final class ResetArg { + + private ResetArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.practice.reset")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/TeleportArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/TeleportArg.java index 6257a4856..f288118de 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/TeleportArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/TeleportArg.java @@ -10,8 +10,9 @@ import java.util.ArrayList; import java.util.List; -public enum TeleportArg { - ; +public final class TeleportArg { + + private TeleportArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.setup")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/UnrankedArg.java b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/UnrankedArg.java index e541d2e47..b5d227e67 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/UnrankedArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/practice/arguments/UnrankedArg.java @@ -14,8 +14,9 @@ import java.util.ArrayList; import java.util.List; -public enum UnrankedArg { - ; +public final class UnrankedArg { + + private UnrankedArg() {} public static void run(Player player, String label, String[] args) { if (args.length == 3 && args[1].equalsIgnoreCase("reset")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ChatArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ChatArg.java index 791f512b7..fd1c73c2b 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ChatArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ChatArg.java @@ -8,8 +8,9 @@ import dev.nandi0813.practice.util.playerutil.PlayerUtil; import org.bukkit.entity.Player; -public enum ChatArg { - ; +public final class ChatArg { + + private ChatArg() {} public static void run(Player player, String[] args) { if (!player.hasPermission("zpp.staffmode.chat")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/EnableArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/EnableArg.java index e89930f6b..92b54594d 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/EnableArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/EnableArg.java @@ -8,8 +8,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum EnableArg { - ; +public final class EnableArg { + + private EnableArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.staff")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/FollowArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/FollowArg.java index 8f4ee8e41..586f11b2f 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/FollowArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/FollowArg.java @@ -3,8 +3,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum FollowArg { - ; +public final class FollowArg { + + private FollowArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.staffmode.follow")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ForceEndArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ForceEndArg.java index aea0f9ec7..c3ccf775e 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ForceEndArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/ForceEndArg.java @@ -17,8 +17,9 @@ import java.util.ArrayList; import java.util.List; -public enum ForceEndArg { - ; +public final class ForceEndArg { + private ForceEndArg() { + } public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.staffmode.forceend")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/HelpArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/HelpArg.java index 0dfa3c3b3..4c061109b 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/HelpArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/HelpArg.java @@ -4,8 +4,9 @@ import dev.nandi0813.practice.util.Common; import org.bukkit.entity.Player; -public enum HelpArg { - ; +public final class HelpArg { + + private HelpArg() {} public static void run(Player player, String label) { if (!player.hasPermission("zpp.staffmode")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/StopArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/StopArg.java index 69a65dac0..6b7a5bb4b 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/StopArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/StopArg.java @@ -5,6 +5,7 @@ import dev.nandi0813.practice.manager.fight.event.interfaces.Event; import dev.nandi0813.practice.manager.fight.match.Match; import dev.nandi0813.practice.manager.fight.match.MatchManager; +import dev.nandi0813.practice.manager.fight.match.runnable.round.RoundEndRunnable; import dev.nandi0813.practice.manager.profile.Profile; import dev.nandi0813.practice.manager.profile.ProfileManager; import dev.nandi0813.practice.manager.profile.enums.ProfileStatus; @@ -18,8 +19,9 @@ import java.util.ArrayList; import java.util.List; -public enum StopArg { - ; +public final class StopArg { + private StopArg() { + } public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.staffmode.stop")) { diff --git a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/VanishArg.java b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/VanishArg.java index 585a975bd..ba3605daf 100644 --- a/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/VanishArg.java +++ b/core/src/main/java/dev/nandi0813/practice/command/staff/arguments/VanishArg.java @@ -9,8 +9,9 @@ import dev.nandi0813.practice.util.entityhider.PlayerHider; import org.bukkit.entity.Player; -public enum VanishArg { - ; +public final class VanishArg { + + private VanishArg() {} public static void run(Player player, String label, String[] args) { if (!player.hasPermission("zpp.staffmode")) { diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/FFAListener.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/FFAListener.java index 7d5157647..8f1fccd17 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/FFAListener.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/FFAListener.java @@ -217,14 +217,7 @@ public void onBlockBreak(BlockBreakEvent e) { Block block = e.getBlock(); - // Blocks placed during the fight — allow breaking (tracking done by BuildListener) - if (BlockUtil.hasMetadata(block, PLACED_IN_FIGHT)) { - Object mv = BlockUtil.getMetadata(block, PLACED_IN_FIGHT, Object.class); - if (ListenerUtil.checkMetaData(mv)) { - e.setCancelled(true); - } - return; - } + if (ListenerUtil.handlePlacedInFightBlock(block, e)) return; // For natural arena blocks or destroyable blocks, check build limits if (e.getBlock().getLocation().getY() >= ListenerUtil.getCalculatedBuildLimit(ffa.getArena())) { diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/game/FFA.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/game/FFA.java index 2f740d2ae..4e7d93520 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/game/FFA.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/ffa/game/FFA.java @@ -22,6 +22,7 @@ import dev.nandi0813.practice.manager.spectator.SpectatorManager; import dev.nandi0813.practice.util.Common; import dev.nandi0813.practice.util.Cuboid; +import dev.nandi0813.practice.util.LastAttackerTracker; import dev.nandi0813.practice.util.entityhider.PlayerHider; import dev.nandi0813.practice.util.fightmapchange.FightChangeOptimized; import dev.nandi0813.practice.util.interfaces.Spectatable; @@ -55,11 +56,7 @@ public class FFA implements Spectatable, dev.nandi0813.api.Interface.FFA { private boolean open; /** Tracks the last player that dealt damage to another player, for void-kill attribution. */ - private final Map lastAttackerMap = new HashMap<>(); - /** Timestamp (ms) of the last attacker hit, keyed by victim UUID. */ - private final Map lastAttackerTime = new HashMap<>(); - /** How long (ms) a last-attacker is considered valid for void attribution. */ - private static final long LAST_ATTACKER_EXPIRY_MS = 4_000L; + private final LastAttackerTracker lastAttackerTracker = new LastAttackerTracker(); public FFA(FFAArena arena) { this.arena = arena; @@ -278,30 +275,15 @@ private void applySelectedOrDefaultKit(Player player) { } private void playDeathEffect(Player killer, Player victim) { - if (killer == null || victim == null) { - return; - } - - try { - Profile killerProfile = fightPlayers.containsKey(killer) - ? fightPlayers.get(killer).getProfile() - : ProfileManager.getInstance().getProfile(killer); + if (killer == null || victim == null) return; - if (killerProfile == null || killerProfile.getCosmeticsData() == null) { - return; - } - - var deathEffect = killerProfile.getCosmeticsData().getDeathEffect(); - if (deathEffect == null) { - return; - } + Profile killerProfile = fightPlayers.containsKey(killer) + ? fightPlayers.get(killer).getProfile() + : ProfileManager.getInstance().getProfile(killer); - List viewers = new ArrayList<>(players.keySet()); - viewers.addAll(spectators); - deathEffect.play(victim.getLocation(), viewers); - } catch (Exception ignored) { - // Cosmetic effects should never break FFA kill handling. - } + List viewers = new ArrayList<>(players.keySet()); + viewers.addAll(spectators); + Common.playDeathEffect(killerProfile, victim.getLocation(), viewers); } private void applyHealthResetOnKill(Player killer) { @@ -319,10 +301,7 @@ private void applyHealthResetOnKill(Player killer) { * Called from damage listeners so void deaths can be attributed correctly. */ public void recordAttack(Player victim, Player attacker) { - if (victim == attacker) return; - - lastAttackerMap.put(victim.getUniqueId(), attacker.getUniqueId()); - lastAttackerTime.put(victim.getUniqueId(), System.currentTimeMillis()); + lastAttackerTracker.recordAttack(victim, attacker); } /** @@ -330,14 +309,7 @@ public void recordAttack(Player victim, Player attacker) { * or {@code null} if there is none. */ public @org.jetbrains.annotations.Nullable Player getLastAttacker(Player victim) { - Long time = lastAttackerTime.get(victim.getUniqueId()); - if (time == null || System.currentTimeMillis() - time > LAST_ATTACKER_EXPIRY_MS) return null; - UUID attackerUuid = lastAttackerMap.get(victim.getUniqueId()); - if (attackerUuid == null) return null; - for (Player p : players.keySet()) { - if (attackerUuid.equals(p.getUniqueId())) return p; - } - return null; + return lastAttackerTracker.getLastAttacker(victim, players.keySet()); } public void teleportPlayer(Player player) { @@ -345,14 +317,7 @@ public void teleportPlayer(Player player) { } public void sendMessage(String message, boolean spectator) { - for (Player player : players.keySet()) { - Common.sendMMMessage(player, message); - } - if (spectator) { - for (Player spectatorPlayer : spectators) { - Common.sendMMMessage(spectatorPlayer, message); - } - } + Common.sendMessage(players.keySet(), spectators, message, spectator); } private void teleportStuckSpectatorsAfterRollback() { diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/listener/BuildListener.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/listener/BuildListener.java index 1f9fe5973..6a0b16ce3 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/listener/BuildListener.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/listener/BuildListener.java @@ -70,9 +70,6 @@ */ public class BuildListener implements Listener { - // ========================================================================= - // HELPERS — shared by all subclasses - // ========================================================================= private final Map setFuseTick = new HashMap<>(); @@ -251,9 +248,7 @@ private static void filterAndTrackExplosionBlocks(List blockList, Spectat } } - // ========================================================================= // PLAYER-DRIVEN BLOCK EVENTS (merged from BuildBlockListener) - // ========================================================================= @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent e) { @@ -392,9 +387,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { spectatable.getFightChange().trackFirePosition(target); } - // ========================================================================= // EXPLOSIONS - // ========================================================================= /** * Tracks every block stacked directly above {@code base} that requires solid @@ -484,9 +477,6 @@ public void onEntityExplode(EntityExplodeEvent e) { handleExplosion(e, e.blockList(), spectatable); } - // ========================================================================= - // TNT ENTITY SPAWN (fallback — used as-is on 1.8.8; still fires on modern) - // ========================================================================= /** * Tracks a newly spawned {@link TNTPrimed} entity for rollback and applies @@ -577,9 +567,7 @@ protected boolean isTntBlockAlreadyTracked() { return true; } - // ========================================================================= // PISTONS - // ========================================================================= @EventHandler public void onBlockPistonExtend(BlockPistonExtendEvent e) { @@ -609,9 +597,6 @@ public void onBlockPistonRetract(BlockPistonRetractEvent e) { } } - // ========================================================================= - // BLOCK FORM (cobblestone / obsidian generators, ice, etc.) - // ========================================================================= /** * Tracks blocks that turn to dirt when another block forms on top (e.g., grass @@ -648,9 +633,7 @@ public void onBlockForm(BlockFormEvent e) { } } - // ========================================================================= // LIQUID SOURCE — bucket placement - // ========================================================================= /** * Captures the block that will become the liquid source BEFORE the bucket is emptied. @@ -676,9 +659,7 @@ public void onBucketEmpty(PlayerBucketEmptyEvent e) { BlockUtil.setMetadata(liquidSourceBlock, PLACED_IN_FIGHT, spectatable); } - // ========================================================================= // LIQUID FLOW - // ========================================================================= /** * Tracks blocks that turn to dirt when lava flows on top (e.g., grass @@ -755,9 +736,6 @@ public void onBlockFromTo(BlockFromToEvent e) { } } - // ========================================================================= - // BLOCK SPREAD (fire, mushrooms, etc.) - // ========================================================================= @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockSpread(BlockSpreadEvent e) { @@ -794,9 +772,6 @@ public void onBlockSpread(BlockSpreadEvent e) { }); } - // ========================================================================= - // BLOCK FADE (grass → dirt, ice melt, etc.) - // ========================================================================= /** * Tracks blocks that fade to another type (e.g. grass/mycelium turning to dirt when @@ -816,9 +791,6 @@ public void onBlockFade(BlockFadeEvent e) { new ChangedBlock(block, block.getType())); } - // ========================================================================= - // BLOCK BURN (fire destroying blocks) - // ========================================================================= /** * Tracks blocks destroyed by fire so they are restored during rollback. @@ -904,9 +876,7 @@ private void trackAdjacentFire(Block center, Spectatable spectatable) { } } - // ========================================================================= // FALLING BLOCKS (sand, gravel, concrete powder, anvils, etc.) - // ========================================================================= /** * Tracks falling blocks for rollback. Runs at LOWEST so the block in the world diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/match/Match.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/match/Match.java index eb9d29697..20228125a 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/match/Match.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/match/Match.java @@ -33,6 +33,7 @@ import dev.nandi0813.practice.manager.spectator.SpectatorManager; import dev.nandi0813.practice.util.Common; import dev.nandi0813.practice.util.Cuboid; +import dev.nandi0813.practice.util.LastAttackerTracker; import dev.nandi0813.practice.util.PermanentConfig; import dev.nandi0813.practice.util.StringUtil; import dev.nandi0813.practice.util.entityhider.PlayerHider; @@ -83,13 +84,9 @@ public abstract class Match extends BukkitRunnable implements Spectatable, dev.n private final FightChangeOptimized fightChange; /** Tracks the last player that dealt damage to another player, for void-kill attribution. */ - private final Map lastAttackerMap = new HashMap<>(); - /** Timestamp (ms) of the last attacker hit, keyed by victim UUID. */ - private final Map lastAttackerTime = new HashMap<>(); + private final LastAttackerTracker lastAttackerTracker = new LastAttackerTracker(); /** Tracks whether a player's last registered death in this match was void-related. */ private final Map lastDeathWasVoid = new HashMap<>(); - /** How long (ms) a last-attacker is considered valid for void attribution. */ - private static final long LAST_ATTACKER_EXPIRY_MS = 4_000L; /** True while the arena is being rolled back between rounds — players are frozen. */ @Getter @@ -158,15 +155,7 @@ public void startMatch() { } public void sendMessage(String message, boolean spectator) { - for (Player player : this.players) { - Common.sendMMMessage(player, message); - } - - if (spectator) { - for (Player specPlayer : this.spectators) { - Common.sendMMMessage(specPlayer, message); - } - } + Common.sendMessage(players, spectators, message, spectator); } public void entityVanish(Player player) { @@ -203,8 +192,7 @@ public void entityVanish(Player player) { * Called from damage listeners so void deaths can be attributed correctly. */ public void recordAttack(Player victim, Player attacker) { - lastAttackerMap.put(victim.getUniqueId(), attacker.getUniqueId()); - lastAttackerTime.put(victim.getUniqueId(), System.currentTimeMillis()); + lastAttackerTracker.recordAttack(victim, attacker); } /** @@ -212,14 +200,7 @@ public void recordAttack(Player victim, Player attacker) { * or {@code null} if there is none. */ public @org.jetbrains.annotations.Nullable Player getLastAttacker(Player victim) { - Long time = lastAttackerTime.get(victim.getUniqueId()); - if (time == null || System.currentTimeMillis() - time > LAST_ATTACKER_EXPIRY_MS) return null; - UUID attackerUuid = lastAttackerMap.get(victim.getUniqueId()); - if (attackerUuid == null) return null; - for (Player p : players) { - if (attackerUuid.equals(p.getUniqueId())) return p; - } - return null; + return lastAttackerTracker.getLastAttacker(victim, players); } public boolean wasLastDeathVoid(Player player) { @@ -294,28 +275,13 @@ public void killPlayer(Player player, Player killer, String deathMessage) { } private void playDeathEffect(Player killer, Player victim) { - if (killer == null || victim == null) { - return; - } - - try { - Profile killerProfile = matchPlayers.containsKey(killer) - ? matchPlayers.get(killer).getProfile() - : ProfileManager.getInstance().getProfile(killer); - - if (killerProfile == null || killerProfile.getCosmeticsData() == null) { - return; - } + if (killer == null || victim == null) return; - var deathEffect = killerProfile.getCosmeticsData().getDeathEffect(); - if (deathEffect == null) { - return; - } + Profile killerProfile = matchPlayers.containsKey(killer) + ? matchPlayers.get(killer).getProfile() + : ProfileManager.getInstance().getProfile(killer); - deathEffect.play(victim.getLocation(), getPeople()); - } catch (Exception ignored) { - // Cosmetic effects should never break combat flow. - } + Common.playDeathEffect(killerProfile, victim.getLocation(), getPeople()); } protected abstract void killPlayer(Player player, String deathMessage); diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/match/listener/LadderTypeListener.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/match/listener/LadderTypeListener.java index c043be5bf..106036234 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/match/listener/LadderTypeListener.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/match/listener/LadderTypeListener.java @@ -62,7 +62,6 @@ public class LadderTypeListener implements Listener { private static final int SKYWARS_KILLER_EXP_LEVEL_REWARD = 5; private static final int SKYWARS_ENCHANT_LAPIS_AMOUNT = 3; - // ========== HELPER METHODS ========== /** * Gets the match for a player if they are in MATCH status. @@ -151,7 +150,7 @@ private static Match resolveProjectileMatch(Projectile projectile) { return null; } - // ========== EVENT HANDLERS ========== + // EVENT HANDLERS protected static void arrowDisplayHearth(Player shooter, Player target, double finalDamage, EntityDamageByEntityEvent event) { if (!PermanentConfig.DISPLAY_ARROW_HIT) return; @@ -339,14 +338,7 @@ public void onBlockBreak(BlockBreakEvent e) { Block block = e.getBlock(); - // Blocks placed during the fight — allow breaking (tracking done by BuildListener) - if (BlockUtil.hasMetadata(block, PLACED_IN_FIGHT)) { - Object mv = BlockUtil.getMetadata(block, PLACED_IN_FIGHT, Object.class); - if (ListenerUtil.checkMetaData(mv)) { - e.setCancelled(true); - } - return; - } + if (ListenerUtil.handlePlacedInFightBlock(block, e)) return; // For natural arena blocks or destroyable blocks, check build limits if (!isWithinBuildLimits(block, match, player)) { diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/match/util/MatchUtil.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/match/util/MatchUtil.java index dcf5077fb..d2f703407 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/match/util/MatchUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/match/util/MatchUtil.java @@ -1,11 +1,16 @@ package dev.nandi0813.practice.manager.fight.match.util; import dev.nandi0813.practice.manager.backend.ConfigManager; +import dev.nandi0813.practice.manager.fight.match.Match; +import dev.nandi0813.practice.manager.fight.match.MatchManager; import dev.nandi0813.practice.manager.fight.match.type.partyffa.PartyFFA; import dev.nandi0813.practice.manager.fight.util.Stats.Statistic; import dev.nandi0813.practice.manager.ladder.abstraction.Ladder; import dev.nandi0813.practice.manager.ladder.enums.LadderType; import dev.nandi0813.practice.manager.ladder.type.SkyWars; +import dev.nandi0813.practice.manager.profile.Profile; +import dev.nandi0813.practice.manager.profile.ProfileManager; +import dev.nandi0813.practice.manager.profile.enums.ProfileStatus; import dev.nandi0813.practice.util.Cuboid; import dev.nandi0813.practice.util.NumberUtil; import dev.nandi0813.practice.util.playerutil.PlayerUtil; @@ -14,15 +19,25 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; import java.util.*; -public enum MatchUtil { - ; +public final class MatchUtil { + private MatchUtil() { + } public static String getMatchID() { return "match-" + System.currentTimeMillis() + NumberUtil.getRandomNumber(100, 999); } + @Nullable + public static Match getMatchIfInMatch(Player player) { + Profile profile = ProfileManager.getInstance().getProfile(player); + if (profile == null || profile.getStatus() != ProfileStatus.MATCH) + return null; + return MatchManager.getInstance().getLiveMatchByPlayer(player); + } + public static boolean isLadderBedRelated(Ladder ladder) { LadderType ladderType = ladder.getType(); return ladderType.equals(LadderType.BEDWARS) diff --git a/core/src/main/java/dev/nandi0813/practice/manager/fight/util/ListenerUtil.java b/core/src/main/java/dev/nandi0813/practice/manager/fight/util/ListenerUtil.java index b3d1ffe2e..8393f0df3 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/fight/util/ListenerUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/fight/util/ListenerUtil.java @@ -4,10 +4,30 @@ import dev.nandi0813.practice.manager.arena.arenas.interfaces.BasicArena; import dev.nandi0813.practice.manager.fight.match.Match; import dev.nandi0813.practice.manager.fight.match.enums.RoundStatus; +import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.bukkit.event.block.BlockBreakEvent; -public enum ListenerUtil { - ; +import static dev.nandi0813.practice.util.PermanentConfig.PLACED_IN_FIGHT; + +public final class ListenerUtil { + private ListenerUtil() { + } + + /** + * If the block was placed during the fight, cancels the event when the + * metadata owner is null (stale/ orphaned data) and returns true. + * Returns false if the block is not a fight-placed block (caller should + * continue with normal block-break validation). + */ + public static boolean handlePlacedInFightBlock(Block block, BlockBreakEvent e) { + if (!BlockUtil.hasMetadata(block, PLACED_IN_FIGHT)) return false; + Object mv = BlockUtil.getMetadata(block, PLACED_IN_FIGHT, Object.class); + if (checkMetaData(mv)) { + e.setCancelled(true); + } + return true; + } public static boolean cancelEvent(Match match, Player player) { if (match.getCurrentStat(player).isSet()) diff --git a/core/src/main/java/dev/nandi0813/practice/manager/leaderboard/hologram/Hologram.java b/core/src/main/java/dev/nandi0813/practice/manager/leaderboard/hologram/Hologram.java index 817e7d1a7..aecf478fa 100644 --- a/core/src/main/java/dev/nandi0813/practice/manager/leaderboard/hologram/Hologram.java +++ b/core/src/main/java/dev/nandi0813/practice/manager/leaderboard/hologram/Hologram.java @@ -67,7 +67,6 @@ public abstract class Hologram { private final AtomicBoolean isUpdating = new AtomicBoolean(false); private HologramState currentState = HologramState.UNINITIALIZED; - // ==================== CONSTRUCTORS ==================== protected Hologram(String name, Location baseLocation, HologramType hologramType) { this.name = name; @@ -90,14 +89,14 @@ protected Hologram(String name, HologramType hologramType) { } } - // ==================== ABSTRACT METHODS ==================== + // ABSTRACT METHODS public abstract void getAbstractData(YamlConfiguration config); public abstract void setAbstractData(YamlConfiguration config); public abstract boolean isReadyToEnable(); public abstract Leaderboard getNextLeaderboard(); - // ==================== DATA PERSISTENCE ==================== + // DATA PERSISTENCE public void getData() { enabled = config.getBoolean("holograms." + name + ".enabled", false); @@ -144,7 +143,7 @@ public void moveTo(@NotNull Location location) { this.baseLocation = location.clone().subtract(0, 2, 0); } - // ==================== CORE MANAGEMENT ==================== + // CORE MANAGEMENT /** * Despawns all hologram lines and clears state. @@ -237,7 +236,7 @@ else if (textLines.size() < lines.size()) { } } - // ==================== UPDATE LOGIC ==================== + // UPDATE LOGIC /** * Main update method - handles leaderboard changes and content updates. @@ -292,7 +291,7 @@ private void handleEmptyLeaderboard() { } } - // ==================== TEXT BUILDING ==================== + // TEXT BUILDING private List buildTextLines(@NotNull Leaderboard leaderboard) { List configLines = getConfigLines(leaderboard); @@ -386,7 +385,7 @@ private String formatPlayerEntry(OfflinePlayer player, Map getLines(Player player) { List sidebar = new ArrayList<>(); Profile profile = ProfileManager.getInstance().getProfile(player); - if (profile.getStatus().equals(ProfileStatus.LOBBY) || - profile.getStatus().equals(ProfileStatus.EDITOR) || - profile.getStatus().equals(ProfileStatus.STAFF_MODE) || - profile.getStatus().equals(ProfileStatus.CUSTOM_EDITOR)) { - Party party = PartyManager.getInstance().getParty(player); - - if (party == null) { - for (String line : config.getStringList("LOBBY.NORMAL")) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().match("%onlinePlayers%").replacement(String.valueOf(Bukkit.getOnlinePlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().match("%inFightPlayers%").replacement(String.valueOf(MatchManager.getInstance().getPlayerInMatchSize())).build()) - .replaceText(TextReplacementConfig.builder().match("%inQueuePlayer%").replacement(String.valueOf(QueueManager.getInstance().getQueues().size())).build()) - .replaceText(TextReplacementConfig.builder().match("%division%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentFullName() : Component.empty()).build()) - .replaceText(TextReplacementConfig.builder().match("%division_short%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentShortName() : Component.empty()).build()); - sidebar.add(component); - } - } else { - for (String line : config.getStringList("LOBBY.PARTY")) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().match("%onlinePlayers%").replacement(String.valueOf(Bukkit.getOnlinePlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().match("%inFightPlayers%").replacement(String.valueOf(MatchManager.getInstance().getPlayerInMatchSize())).build()) - .replaceText(TextReplacementConfig.builder().match("%inQueuePlayer%").replacement(String.valueOf(QueueManager.getInstance().getQueues().size())).build()) - .replaceText(TextReplacementConfig.builder().match("%partyLeader%").replacement(displayName(party.getLeader())).build()) - .replaceText(TextReplacementConfig.builder().match("%maxMember%").replacement(String.valueOf(party.getMaxPlayerLimit())).build()) - .replaceText(TextReplacementConfig.builder().match("%members%").replacement(String.valueOf(party.getMembers().size())).build()) - .replaceText(TextReplacementConfig.builder().match("%division%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentFullName() : Component.empty()).build()) - .replaceText(TextReplacementConfig.builder().match("%division_short%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentShortName() : Component.empty()).build()); - sidebar.add(component); - } + switch (profile.getStatus()) { + case LOBBY, EDITOR, STAFF_MODE, CUSTOM_EDITOR -> buildLobbyLines(player, config, profile, sidebar); + case QUEUE -> buildQueueLines(player, config, profile, sidebar); + case MATCH -> buildMatchLines(player, config, sidebar); + case FFA -> buildFFALines(player, config, sidebar); + case EVENT -> buildEventLines(player, config, sidebar); + case SPECTATE -> buildSpectateLines(player, config, sidebar); + } + + buildFooterLines(player, config, profile, sidebar); + return sidebar; + } + + private void buildLobbyLines(Player player, YamlConfiguration config, Profile profile, List sidebar) { + Party party = PartyManager.getInstance().getParty(player); + + if (party == null) { + for (String line : config.getStringList("LOBBY.NORMAL")) { + Component component = PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().match("%onlinePlayers%").replacement(String.valueOf(Bukkit.getOnlinePlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().match("%inFightPlayers%").replacement(String.valueOf(MatchManager.getInstance().getPlayerInMatchSize())).build()) + .replaceText(TextReplacementConfig.builder().match("%inQueuePlayer%").replacement(String.valueOf(QueueManager.getInstance().getQueues().size())).build()) + .replaceText(TextReplacementConfig.builder().match("%division%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentFullName() : Component.empty()).build()) + .replaceText(TextReplacementConfig.builder().match("%division_short%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentShortName() : Component.empty()).build()); + sidebar.add(component); + } + } else { + for (String line : config.getStringList("LOBBY.PARTY")) { + Component component = PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().match("%onlinePlayers%").replacement(String.valueOf(Bukkit.getOnlinePlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().match("%inFightPlayers%").replacement(String.valueOf(MatchManager.getInstance().getPlayerInMatchSize())).build()) + .replaceText(TextReplacementConfig.builder().match("%inQueuePlayer%").replacement(String.valueOf(QueueManager.getInstance().getQueues().size())).build()) + .replaceText(TextReplacementConfig.builder().match("%partyLeader%").replacement(displayName(party.getLeader())).build()) + .replaceText(TextReplacementConfig.builder().match("%maxMember%").replacement(String.valueOf(party.getMaxPlayerLimit())).build()) + .replaceText(TextReplacementConfig.builder().match("%members%").replacement(String.valueOf(party.getMembers().size())).build()) + .replaceText(TextReplacementConfig.builder().match("%division%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentFullName() : Component.empty()).build()) + .replaceText(TextReplacementConfig.builder().match("%division_short%").replacement(profile.getStats().getDivision() != null ? profile.getStats().getDivision().getComponentShortName() : Component.empty()).build()); + sidebar.add(component); } - } else if (profile.getStatus().equals(ProfileStatus.QUEUE)) { + } + } + + private void buildQueueLines(Player player, YamlConfiguration config, Profile profile, List sidebar) { Queue queue = QueueManager.getInstance().getQueue(player); Event event = EventManager.getInstance().getEventByPlayer(player); CustomKitQueueManager.HostedCustomKitQueue hostedCustomKitQueue = CustomKitQueueManager.getInstance().getHostedQueue(player); @@ -214,477 +226,459 @@ public List getLines(Player player) { } } } - } else if (profile.getStatus().equals(ProfileStatus.MATCH)) { - Match match = MatchManager.getInstance().getLiveMatchByPlayer(player); - - if (match != null) { - Ladder ladder = match.getLadder(); - Round round; - LadderType ladderType = ladder.getType(); - - String path = "MATCH.LADDER." + ladder.getName().toUpperCase() + "." + match.getType().name(); - List configLines = config.getStringList(path); - boolean useLadderSpecificConfig = config.isList(path) && !configLines.isEmpty(); - - if (useLadderSpecificConfig) { - switch (match.getType()) { - case DUEL: - Duel duel = (Duel) match; - round = duel.getCurrentRound(); - - Player enemy = duel.getOppositePlayer(player); - - for (String line : config.getStringList(path)) { - Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), duel); - - switch (ladderType) { - case BOXING: - int playerHits = match.getCurrentStat(player) != null ? match.getCurrentStat(player).getHit() : 0; - int enemyHits = match.getCurrentStat(enemy) != null ? match.getCurrentStat(enemy).getHit() : 0; - int overAllHits = playerHits - enemyHits; - - component = component - .replaceText(TextReplacementConfig.builder().matchLiteral("%overAllHits%").replacement(ZonePractice.getMiniMessage().deserialize((overAllHits < 0 ? "" : "")).append(Component.text(overAllHits))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%hits%").replacement(String.valueOf(playerHits)).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyHits%").replacement(String.valueOf(enemyHits)).build()); - break; - case BEDWARS: - case FIREBALL_FIGHT: - case MLG_RUSH: - component = component - .replaceText(TextReplacementConfig.builder().matchLiteral("%playerBedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(player)) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyBedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(enemy)) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()); - break; - } - - sidebar.add(component); - } - break; - case PARTY_FFA: - PartyFFA partyFFA = (PartyFFA) match; - - for (String line : config.getStringList(path)) { - Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), partyFFA); - - if (ladderType == LadderType.BOXING) { - for (int i = 1; i <= 3; i++) { - Player topPlayer = MatchUtil.getBoxingTopPlayer(partyFFA, i); - Component playerName = topPlayer != null - ? displayName(topPlayer) - : ZonePractice.getMiniMessage().deserialize("N/A"); - Component playerHits = topPlayer != null ? Component.text(match.getCurrentStat(topPlayer).getHit()) : ZonePractice.getMiniMessage().deserialize("N/A"); - - component = component - .replaceText(TextReplacementConfig.builder().matchLiteral("%player" + i + "boxing%").replacement(playerName).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%player" + i + "boxingHits%").replacement(playerHits).build()); - } - } - - sidebar.add(component); - } - break; - case PARTY_SPLIT: - PartySplit partySplit = (PartySplit) match; - round = partySplit.getCurrentRound(); - - for (String line : config.getStringList(path)) { - Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), partySplit); - - component = switch (ladderType) { - case BOXING -> component - .replaceText(TextReplacementConfig.builder().matchLiteral("%team1boxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM1)))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%team2boxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM2)))).build()); - case BEDWARS, FIREBALL_FIGHT, MLG_RUSH -> component - .replaceText(TextReplacementConfig.builder().matchLiteral("%team1BedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM1) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%team2BedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM2) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()); - default -> component; - }; - - sidebar.add(component); - } - break; - case PARTY_VS_PARTY: - PartyVsParty partyVsParty = (PartyVsParty) match; - round = partyVsParty.getCurrentRound(); - - TeamEnum team = partyVsParty.getTeam(player); - TeamEnum enemyTeam = TeamUtil.getOppositeTeam(team); - - for (String line : config.getStringList(path)) { - Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), partyVsParty); - - component = switch (ladderType) { - case BOXING -> component - .replaceText(TextReplacementConfig.builder().matchLiteral("%partyTeamBoxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(team)))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyTeamBoxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(enemyTeam)))).build()); - case BEDWARS, FIREBALL_FIGHT, MLG_RUSH -> component - .replaceText(TextReplacementConfig.builder().matchLiteral("%partyTeamBedStatus%").replacement(Objects.requireNonNull(round != null && round.getBedStatus().get(team) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyTeamBedStatus%").replacement(Objects.requireNonNull(round != null && round.getBedStatus().get(enemyTeam) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))).build()); - default -> component; - }; - - sidebar.add(component); - } - break; - } - } else { - for (String line : config.getStringList("MATCH." + match.getType().name())) { - sidebar.add(AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), match)); - } - } + } + + private void buildMatchLines(Player player, YamlConfiguration config, List sidebar) { + Match match = MatchManager.getInstance().getLiveMatchByPlayer(player); + if (match == null) return; + + Ladder ladder = match.getLadder(); + LadderType ladderType = ladder.getType(); + + String path = "MATCH.LADDER." + ladder.getName().toUpperCase() + "." + match.getType().name(); + List configLines = config.getStringList(path); + boolean useLadderSpecificConfig = config.isList(path) && !configLines.isEmpty(); + + if (useLadderSpecificConfig) { + switch (match.getType()) { + case DUEL -> buildDuelMatchLines(player, config, sidebar, match, ladderType); + case PARTY_FFA -> buildPartyFFAMatchLines(player, config, sidebar, match, ladderType); + case PARTY_SPLIT -> buildPartySplitMatchLines(player, config, sidebar, match, ladderType); + case PARTY_VS_PARTY -> buildPartyVsPartyMatchLines(player, config, sidebar, match, ladderType); } - } else if (profile.getStatus().equals(ProfileStatus.FFA)) { - FFA ffa = FFAManager.getInstance().getFFAByPlayer(player); - if (ffa != null) { - if (ffa.getBuildRollback() != null) { - for (String line : config.getStringList("FFA.GAME.BUILD")) { - Component component = AdapterUtil.replaceFFAPlaceholders(player, PAPIUtil.runThroughFormat(player, line), ffa); - sidebar.add(component); - } - } else { - for (String line : config.getStringList("FFA.GAME.NON-BUILD")) { - Component component = AdapterUtil.replaceFFAPlaceholders(player, PAPIUtil.runThroughFormat(player, line), ffa); - sidebar.add(component); - } + } else { + for (String line : config.getStringList("MATCH." + match.getType().name())) { + sidebar.add(AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), match)); + } + } + } + + private void buildDuelMatchLines(Player player, YamlConfiguration config, List sidebar, Match match, LadderType ladderType) { + Duel duel = (Duel) match; + Round round = duel.getCurrentRound(); + Player enemy = duel.getOppositePlayer(player); + + for (String line : config.getStringList("MATCH.LADDER." + match.getLadder().getName().toUpperCase() + "." + match.getType().name())) { + Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), duel); + + switch (ladderType) { + case BOXING: + int playerHits = match.getCurrentStat(player) != null ? match.getCurrentStat(player).getHit() : 0; + int enemyHits = match.getCurrentStat(enemy) != null ? match.getCurrentStat(enemy).getHit() : 0; + int overAllHits = playerHits - enemyHits; + + component = component + .replaceText(TextReplacementConfig.builder().matchLiteral("%overAllHits%").replacement(ZonePractice.getMiniMessage().deserialize((overAllHits < 0 ? "" : "")).append(Component.text(overAllHits))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%hits%").replacement(String.valueOf(playerHits)).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyHits%").replacement(String.valueOf(enemyHits)).build()); + break; + case BEDWARS: + case FIREBALL_FIGHT: + case MLG_RUSH: + component = component + .replaceText(TextReplacementConfig.builder().matchLiteral("%playerBedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(player)) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyBedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(enemy)) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()); + break; + } + + sidebar.add(component); + } + } + + private void buildPartyFFAMatchLines(Player player, YamlConfiguration config, List sidebar, Match match, LadderType ladderType) { + PartyFFA partyFFA = (PartyFFA) match; + + for (String line : config.getStringList("MATCH.LADDER." + match.getLadder().getName().toUpperCase() + "." + match.getType().name())) { + Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), partyFFA); + + if (ladderType == LadderType.BOXING) { + for (int i = 1; i <= 3; i++) { + Player topPlayer = MatchUtil.getBoxingTopPlayer(partyFFA, i); + Component playerName = topPlayer != null + ? displayName(topPlayer) + : ZonePractice.getMiniMessage().deserialize("N/A"); + Component playerHits = topPlayer != null ? Component.text(match.getCurrentStat(topPlayer).getHit()) : ZonePractice.getMiniMessage().deserialize("N/A"); + + component = component + .replaceText(TextReplacementConfig.builder().matchLiteral("%player" + i + "boxing%").replacement(playerName).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%player" + i + "boxingHits%").replacement(playerHits).build()); } } - } else if (profile.getStatus().equals(ProfileStatus.EVENT)) { - Event event = EventManager.getInstance().getEventByPlayer(player); - if (event != null) { - String path = "EVENT." + event.getType().name().toUpperCase(); - switch (event.getType()) { - case LMS: - LMS lms = (LMS) event; + sidebar.add(component); + } + } + + private void buildPartySplitMatchLines(Player player, YamlConfiguration config, List sidebar, Match match, LadderType ladderType) { + PartySplit partySplit = (PartySplit) match; + Round round = partySplit.getCurrentRound(); - for (String line : config.getStringList(path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(lms.getStartPlayerCount())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(lms.getPlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%duration%").replacement(lms.getDurationRunnable().getFormattedTime()).build()); + for (String line : config.getStringList("MATCH.LADDER." + match.getLadder().getName().toUpperCase() + "." + match.getType().name())) { + Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), partySplit); - sidebar.add(component); - } - break; - case OITC: - OITC oitc = (OITC) event; - Player highestPointPlayer = oitc.getHighestPointPlayer(); - Component topPlayerName = highestPointPlayer != null ? displayName(highestPointPlayer) : ZonePractice.getMiniMessage().deserialize("N/A"); - String topPlayerScore = highestPointPlayer != null ? String.valueOf(oitc.getPlayerPoints().get(highestPointPlayer)) : "0"; - - for (String line : config.getStringList(path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%topPlayer%").replacement(topPlayerName).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%topScore%").replacement(topPlayerScore).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(oitc.getPlayerPoints().size())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%lives%").replacement(String.valueOf(oitc.getPlayerLives().get(player))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(oitc.getPlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%duration%").replacement(oitc.getDurationRunnable().getFormattedTime()).build()); - - sidebar.add(component); - } + component = switch (ladderType) { + case BOXING -> component + .replaceText(TextReplacementConfig.builder().matchLiteral("%team1boxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM1)))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%team2boxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM2)))).build()); + case BEDWARS, FIREBALL_FIGHT, MLG_RUSH -> component + .replaceText(TextReplacementConfig.builder().matchLiteral("%team1BedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM1) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%team2BedStatus%").replacement(ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM2) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))))).build()); + default -> component; + }; - break; - case TNTTAG: - TNTTag tntTag = (TNTTag) event; + sidebar.add(component); + } + } - for (String line : config.getStringList(path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%explosionTime%").replacement(tntTag.getDurationRunnable() != null ? String.valueOf(tntTag.getDurationRunnable().getSeconds()) : "0").build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(tntTag.getPlayers().size())).build()); + private void buildPartyVsPartyMatchLines(Player player, YamlConfiguration config, List sidebar, Match match, LadderType ladderType) { + PartyVsParty partyVsParty = (PartyVsParty) match; + Round round = partyVsParty.getCurrentRound(); + TeamEnum team = partyVsParty.getTeam(player); + TeamEnum enemyTeam = TeamUtil.getOppositeTeam(team); + + for (String line : config.getStringList("MATCH.LADDER." + match.getLadder().getName().toUpperCase() + "." + match.getType().name())) { + Component component = AdapterUtil.replaceMatchPlaceholders(player, PAPIUtil.runThroughFormat(player, line), partyVsParty); + + component = switch (ladderType) { + case BOXING -> component + .replaceText(TextReplacementConfig.builder().matchLiteral("%partyTeamBoxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(team)))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyTeamBoxingHits%").replacement(String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(enemyTeam)))).build()); + case BEDWARS, FIREBALL_FIGHT, MLG_RUSH -> component + .replaceText(TextReplacementConfig.builder().matchLiteral("%partyTeamBedStatus%").replacement(Objects.requireNonNull(round != null && round.getBedStatus().get(team) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%enemyTeamBedStatus%").replacement(Objects.requireNonNull(round != null && round.getBedStatus().get(enemyTeam) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED"))).build()); + default -> component; + }; + + sidebar.add(component); + } + } - sidebar.add(component); - } - break; - case BRACKETS: - case SUMO: - DuelEvent duelEvent = (DuelEvent) event; - - DuelFight bracketFight = duelEvent.getFight(player); - if (bracketFight != null) { - for (String line : config.getStringList(path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%enemy%").replacement(displayName(bracketFight.getOtherPlayer(player))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(duelEvent.getStartPlayerCount())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(duelEvent.getPlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%timeLeft%").replacement(duelEvent.getDurationRunnable() != null ? duelEvent.getDurationRunnable().getFormattedTime() : "0").build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%round%").replacement(String.valueOf(duelEvent.getRound())).build()); - - sidebar.add(component); - } - } else { - for (String line : config.getStringList("SPECTATE." + path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(duelEvent.getStartPlayerCount())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(duelEvent.getPlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%timeLeft%").replacement(duelEvent.getDurationRunnable() != null ? duelEvent.getDurationRunnable().getFormattedTime() : "0").build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%round%").replacement(String.valueOf(duelEvent.getRound())).build()); - - sidebar.add(component); - } - } - break; - case SPLEGG: - Splegg splegg = (Splegg) event; - - for (String line : config.getStringList(path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(splegg.getStartPlayerCount())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(splegg.getPlayers().size())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%timeLeft%").replacement(splegg.getDurationRunnable() != null ? splegg.getDurationRunnable().getFormattedTime() : "0").build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%firedEggs%").replacement(String.valueOf(splegg.getShotEggs().get(player))).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%brokenBlocks%").replacement(String.valueOf(splegg.getShotBlocks().get(player))).build()); - - sidebar.add(component); - } - break; - case JUGGERNAUT: - Juggernaut juggernaut = (Juggernaut) event; + private void buildFFALines(Player player, YamlConfiguration config, List sidebar) { + FFA ffa = FFAManager.getInstance().getFFAByPlayer(player); + if (ffa == null) return; - for (String line : config.getStringList(path)) { - Component component = PAPIUtil.runThroughFormat(player, line) - .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(juggernaut.getStartPlayerCount())).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(juggernaut.getPlayers().size() - 1)).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%duration%").replacement(juggernaut.getDurationRunnable().getFormattedTime()).build()); + if (ffa.getBuildRollback() != null) { + for (String line : config.getStringList("FFA.GAME.BUILD")) { + sidebar.add(AdapterUtil.replaceFFAPlaceholders(player, PAPIUtil.runThroughFormat(player, line), ffa)); + } + } else { + for (String line : config.getStringList("FFA.GAME.NON-BUILD")) { + sidebar.add(AdapterUtil.replaceFFAPlaceholders(player, PAPIUtil.runThroughFormat(player, line), ffa)); + } + } + } - sidebar.add(component); - } - break; + private void buildEventLines(Player player, YamlConfiguration config, List sidebar) { + Event event = EventManager.getInstance().getEventByPlayer(player); + if (event == null) return; + + String path = "EVENT." + event.getType().name().toUpperCase(); + switch (event.getType()) { + case LMS -> { + LMS lms = (LMS) event; + for (String line : config.getStringList(path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(lms.getStartPlayerCount())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(lms.getPlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%duration%").replacement(lms.getDurationRunnable().getFormattedTime()).build())); } } - } else if (profile.getStatus().equals(ProfileStatus.SPECTATE)) { - Spectatable spectatable = SpectatorManager.getInstance().getSpectators().get(player); - - if (spectatable instanceof Match match) { - LadderType ladderType = match.getLadder().getType(); - Round round; - - String path = "SPECTATE.MATCH.LADDER." + match.getLadder().getName().toUpperCase() + "." + match.getType().name(); - // Check if ladder-specific config exists AND is non-empty, otherwise use generic match type config - List configLines = config.getStringList(path); - boolean useLadderSpecificConfig = config.isList(path) && !configLines.isEmpty(); - - if (useLadderSpecificConfig) { - switch (match.getType()) { - case DUEL: - Duel duel = (Duel) match; - round = duel.getCurrentRound(); - - for (String line : config.getStringList(path)) { - switch (ladderType) { - case BOXING: - Statistic player1stats = match.getCurrentStat(duel.getPlayer1()); - Statistic player2stats = match.getCurrentStat(duel.getPlayer2()); - line = line - .replace("%player1hits%", String.valueOf(player1stats != null ? player1stats.getHit() : 0)) - .replace("%player2hits%", String.valueOf(player2stats != null ? player2stats.getHit() : 0)); - break; - case BEDWARS: - case FIREBALL_FIGHT: - case MLG_RUSH: - line = line - .replace("%player1BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(duel.getPlayer1())) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))) - .replace("%player2BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(duel.getPlayer2())) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))); - break; - } - - sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), duel)); - } - break; - case PARTY_FFA: - PartyFFA partyFFA = (PartyFFA) match; - - for (String line : config.getStringList(path)) { - if (Objects.requireNonNull(ladderType) == LadderType.BOXING) { - Player player1 = MatchUtil.getBoxingTopPlayer(partyFFA, 1); - if (player1 != null) { - line = line - .replace("%player1boxing%", ZonePractice.getMiniMessage().serialize(displayName(player1))) - .replace("%player1boxingHits%", String.valueOf(match.getCurrentStat(player1).getHit())); - } else { - line = line - .replace("%player1boxing%", "N/A") - .replace("%player1boxingHits%", "N/A"); - } - - Player player2 = MatchUtil.getBoxingTopPlayer(partyFFA, 2); - if (player2 != null) { - line = line - .replace("%player2boxing%", ZonePractice.getMiniMessage().serialize(displayName(player2))) - .replace("%player2boxingHits%", String.valueOf(match.getCurrentStat(player2).getHit())); - } else { - line = line - .replace("%player2boxing%", "N/A") - .replace("%player2boxingHits%", "N/A"); - } - - Player player3 = MatchUtil.getBoxingTopPlayer(partyFFA, 3); - if (player3 != null) { - line = line - .replace("%player3boxing%", ZonePractice.getMiniMessage().serialize(displayName(player3))) - .replace("%player3boxingHits%", String.valueOf(match.getCurrentStat(player3).getHit())); - } else { - line = line - .replace("%player3boxing%", "N/A") - .replace("%player3boxingHits%", "N/A"); - } - } - - sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), partyFFA)); - } - break; - case PARTY_SPLIT: - PartySplit partySplit = (PartySplit) match; - round = partySplit.getCurrentRound(); - - for (String line : config.getStringList(path)) { - switch (ladderType) { - case BOXING: - line = line - .replace("%team1boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM1)))) - .replace("%team2boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM2)))); - break; - case BEDWARS: - case FIREBALL_FIGHT: - case MLG_RUSH: - line = line - .replace("%team1BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM1) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))) - .replace("%team2BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM2) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))); - break; - } - - sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), partySplit)); - } - break; - case PARTY_VS_PARTY: - PartyVsParty partyVsParty = (PartyVsParty) match; - round = partyVsParty.getCurrentRound(); - - for (String line : config.getStringList(path)) { - switch (ladderType) { - case BOXING: - line = line - .replace("%team1boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(TeamEnum.TEAM1)))) - .replace("%team2boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(TeamEnum.TEAM2)))); - break; - case BEDWARS: - case FIREBALL_FIGHT: - case MLG_RUSH: - line = line - .replace("%team1BedStatus%", (Objects.requireNonNull(round.getBedStatus().get(TeamEnum.TEAM1) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))) - .replace("%team2BedStatus%", (Objects.requireNonNull(round.getBedStatus().get(TeamEnum.TEAM2) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))); - break; - } - - sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), partyVsParty)); - } - break; - } - } else { - for (String line : config.getStringList("SPECTATE.MATCH." + match.getType().name())) { - sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), match)); - } + case OITC -> { + OITC oitc = (OITC) event; + Player highestPointPlayer = oitc.getHighestPointPlayer(); + Component topPlayerName = highestPointPlayer != null ? displayName(highestPointPlayer) : ZonePractice.getMiniMessage().deserialize("N/A"); + String topPlayerScore = highestPointPlayer != null ? String.valueOf(oitc.getPlayerPoints().get(highestPointPlayer)) : "0"; + + for (String line : config.getStringList(path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%topPlayer%").replacement(topPlayerName).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%topScore%").replacement(topPlayerScore).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(oitc.getPlayerPoints().size())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%lives%").replacement(String.valueOf(oitc.getPlayerLives().get(player))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(oitc.getPlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%duration%").replacement(oitc.getDurationRunnable().getFormattedTime()).build())); + } + } + case TNTTAG -> { + TNTTag tntTag = (TNTTag) event; + for (String line : config.getStringList(path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%explosionTime%").replacement(tntTag.getDurationRunnable() != null ? String.valueOf(tntTag.getDurationRunnable().getSeconds()) : "0").build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(tntTag.getPlayers().size())).build())); } - } else if (spectatable instanceof FFA ffa) { - if (ffa.getBuildRollback() != null) { - for (String line : config.getStringList("FFA.SPECTATE.BUILD")) { - sidebar.add(AdapterUtil.replaceFFASpecPlaceholders(PAPIUtil.runThroughFormat(player, line), ffa)); + } + case BRACKETS, SUMO -> { + DuelEvent duelEvent = (DuelEvent) event; + DuelFight bracketFight = duelEvent.getFight(player); + if (bracketFight != null) { + for (String line : config.getStringList(path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%enemy%").replacement(displayName(bracketFight.getOtherPlayer(player))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(duelEvent.getStartPlayerCount())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(duelEvent.getPlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%timeLeft%").replacement(duelEvent.getDurationRunnable() != null ? duelEvent.getDurationRunnable().getFormattedTime() : "0").build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%round%").replacement(String.valueOf(duelEvent.getRound())).build())); } } else { - for (String line : config.getStringList("FFA.SPECTATE.NON-BUILD")) { - sidebar.add(AdapterUtil.replaceFFASpecPlaceholders(PAPIUtil.runThroughFormat(player, line), ffa)); + for (String line : config.getStringList("SPECTATE." + path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(duelEvent.getStartPlayerCount())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(duelEvent.getPlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%timeLeft%").replacement(duelEvent.getDurationRunnable() != null ? duelEvent.getDurationRunnable().getFormattedTime() : "0").build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%round%").replacement(String.valueOf(duelEvent.getRound())).build())); } } - } else if (spectatable instanceof Event event) { - String path = "SPECTATE.EVENT." + event.getType().name().toUpperCase(); - switch (event.getType()) { - case LMS: - LMS lms = (LMS) event; - - for (String line : config.getStringList(path)) { - line = line - .replace("%players%", String.valueOf(lms.getStartPlayerCount())) - .replace("%alivePlayers%", String.valueOf(lms.getPlayers().size())) - .replace("%duration%", lms.getDurationRunnable().getFormattedTime()); - - sidebar.add(PAPIUtil.runThroughFormat(player, line)); - } - break; - case OITC: - OITC oitc = (OITC) event; - Player highestPointPlayer = oitc.getHighestPointPlayer(); - String topPlayerName = highestPointPlayer != null - ? ZonePractice.getMiniMessage().serialize(displayName(highestPointPlayer)) - : "N/A"; - String topPlayerScore = highestPointPlayer != null - ? String.valueOf(oitc.getPlayerPoints().get(highestPointPlayer)) - : "0"; - - for (String line : config.getStringList(path)) { - line = line - .replace("%topPlayer%", topPlayerName) - .replace("%topScore%", topPlayerScore) - .replace("%players%", String.valueOf(oitc.getPlayerPoints().size())) - .replace("%alivePlayers%", String.valueOf(oitc.getPlayers().size())) - .replace("%duration%", oitc.getDurationRunnable().getFormattedTime()); - - sidebar.add(PAPIUtil.runThroughFormat(player, line)); - } + } + case SPLEGG -> { + Splegg splegg = (Splegg) event; + for (String line : config.getStringList(path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(splegg.getStartPlayerCount())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(splegg.getPlayers().size())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%timeLeft%").replacement(splegg.getDurationRunnable() != null ? splegg.getDurationRunnable().getFormattedTime() : "0").build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%firedEggs%").replacement(String.valueOf(splegg.getShotEggs().get(player))).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%brokenBlocks%").replacement(String.valueOf(splegg.getShotBlocks().get(player))).build())); + } + } + case JUGGERNAUT -> { + Juggernaut juggernaut = (Juggernaut) event; + for (String line : config.getStringList(path)) { + sidebar.add(PAPIUtil.runThroughFormat(player, line) + .replaceText(TextReplacementConfig.builder().matchLiteral("%players%").replacement(String.valueOf(juggernaut.getStartPlayerCount())).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%alivePlayers%").replacement(String.valueOf(juggernaut.getPlayers().size() - 1)).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%duration%").replacement(juggernaut.getDurationRunnable().getFormattedTime()).build())); + } + } + } + } - break; - case TNTTAG: - TNTTag tntTag = (TNTTag) event; + private void buildSpectateLines(Player player, YamlConfiguration config, List sidebar) { + Spectatable spectatable = SpectatorManager.getInstance().getSpectators().get(player); + if (spectatable == null) return; - for (String line : config.getStringList(path)) { - line = line - .replace("%explosionTime%", (tntTag.getDurationRunnable() != null ? String.valueOf(tntTag.getDurationRunnable().getSeconds()) : "0")) - .replace("%alivePlayers%", String.valueOf(tntTag.getPlayers().size())); + if (spectatable instanceof Match match) { + buildSpectateMatchLines(player, config, sidebar, match); + } else if (spectatable instanceof FFA ffa) { + if (ffa.getBuildRollback() != null) { + for (String line : config.getStringList("FFA.SPECTATE.BUILD")) { + sidebar.add(AdapterUtil.replaceFFASpecPlaceholders(PAPIUtil.runThroughFormat(player, line), ffa)); + } + } else { + for (String line : config.getStringList("FFA.SPECTATE.NON-BUILD")) { + sidebar.add(AdapterUtil.replaceFFASpecPlaceholders(PAPIUtil.runThroughFormat(player, line), ffa)); + } + } + } else if (spectatable instanceof Event event) { + buildSpectateEventLines(player, config, sidebar, event); + } + } - sidebar.add(PAPIUtil.runThroughFormat(player, line)); + private void buildSpectateMatchLines(Player player, YamlConfiguration config, List sidebar, Match match) { + Round round; + String path = "SPECTATE.MATCH.LADDER." + match.getLadder().getName().toUpperCase() + "." + match.getType().name(); + List configLines = config.getStringList(path); + boolean useLadderSpecificConfig = config.isList(path) && !configLines.isEmpty(); + + if (useLadderSpecificConfig) { + switch (match.getType()) { + case DUEL -> { + Duel duel = (Duel) match; + round = duel.getCurrentRound(); + LadderType ladderType = match.getLadder().getType(); + + for (String line : config.getStringList(path)) { + switch (ladderType) { + case BOXING: + Statistic player1stats = match.getCurrentStat(duel.getPlayer1()); + Statistic player2stats = match.getCurrentStat(duel.getPlayer2()); + line = line + .replace("%player1hits%", String.valueOf(player1stats != null ? player1stats.getHit() : 0)) + .replace("%player2hits%", String.valueOf(player2stats != null ? player2stats.getHit() : 0)); + break; + case BEDWARS: + case FIREBALL_FIGHT: + case MLG_RUSH: + line = line + .replace("%player1BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(duel.getPlayer1())) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))) + .replace("%player2BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(duel.getTeam(duel.getPlayer2())) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))); + break; } - break; - case BRACKETS: - case SUMO: - DuelEvent duelEvent = (DuelEvent) event; - - for (String line : config.getStringList(path)) { - line = line - .replace("%players%", String.valueOf(duelEvent.getStartPlayerCount())) - .replace("%alivePlayers%", String.valueOf(duelEvent.getPlayers().size())) - .replace("%timeLeft%", (duelEvent.getDurationRunnable() != null ? duelEvent.getDurationRunnable().getFormattedTime() : "0")) - .replace("%round%", String.valueOf(duelEvent.getRound())); - - sidebar.add(PAPIUtil.runThroughFormat(player, line)); - } - break; - case SPLEGG: - Splegg splegg = (Splegg) event; + sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), duel)); + } + } + case PARTY_FFA -> { + PartyFFA partyFFA = (PartyFFA) match; + LadderType ladderType = match.getLadder().getType(); + + for (String line : config.getStringList(path)) { + if (ladderType == LadderType.BOXING) { + Player player1 = MatchUtil.getBoxingTopPlayer(partyFFA, 1); + if (player1 != null) { + line = line + .replace("%player1boxing%", ZonePractice.getMiniMessage().serialize(displayName(player1))) + .replace("%player1boxingHits%", String.valueOf(match.getCurrentStat(player1).getHit())); + } else { + line = line + .replace("%player1boxing%", "N/A") + .replace("%player1boxingHits%", "N/A"); + } - for (String line : config.getStringList(path)) { - line = line - .replace("%players%", String.valueOf(splegg.getStartPlayerCount())) - .replace("%alivePlayers%", String.valueOf(splegg.getPlayers().size())) - .replace("%timeLeft%", (splegg.getDurationRunnable() != null ? splegg.getDurationRunnable().getFormattedTime() : "0")); + Player player2 = MatchUtil.getBoxingTopPlayer(partyFFA, 2); + if (player2 != null) { + line = line + .replace("%player2boxing%", ZonePractice.getMiniMessage().serialize(displayName(player2))) + .replace("%player2boxingHits%", String.valueOf(match.getCurrentStat(player2).getHit())); + } else { + line = line + .replace("%player2boxing%", "N/A") + .replace("%player2boxingHits%", "N/A"); + } - sidebar.add(PAPIUtil.runThroughFormat(player, line)); + Player player3 = MatchUtil.getBoxingTopPlayer(partyFFA, 3); + if (player3 != null) { + line = line + .replace("%player3boxing%", ZonePractice.getMiniMessage().serialize(displayName(player3))) + .replace("%player3boxingHits%", String.valueOf(match.getCurrentStat(player3).getHit())); + } else { + line = line + .replace("%player3boxing%", "N/A") + .replace("%player3boxingHits%", "N/A"); + } } - break; - case JUGGERNAUT: - Juggernaut juggernaut = (Juggernaut) event; - - for (String line : config.getStringList(path)) { - line = line - .replace("%players%", String.valueOf(juggernaut.getStartPlayerCount())) - .replace("%alivePlayers%", String.valueOf(juggernaut.getPlayers().size() - 1)) - .replace("%duration%", juggernaut.getDurationRunnable().getFormattedTime()); - - sidebar.add(PAPIUtil.runThroughFormat(player, line)); + sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), partyFFA)); + } + } + case PARTY_SPLIT -> { + PartySplit partySplit = (PartySplit) match; + round = partySplit.getCurrentRound(); + LadderType ladderType = match.getLadder().getType(); + + for (String line : config.getStringList(path)) { + switch (ladderType) { + case BOXING: + line = line + .replace("%team1boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM1)))) + .replace("%team2boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partySplit.getTeamPlayers(TeamEnum.TEAM2)))); + break; + case BEDWARS: + case FIREBALL_FIGHT: + case MLG_RUSH: + line = line + .replace("%team1BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM1) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))) + .replace("%team2BedStatus%", (Objects.requireNonNull(round != null && round.getBedStatus().get(TeamEnum.TEAM2) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))); + break; + } + sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), partySplit)); + } + } + case PARTY_VS_PARTY -> { + PartyVsParty partyVsParty = (PartyVsParty) match; + round = partyVsParty.getCurrentRound(); + LadderType ladderType = match.getLadder().getType(); + + for (String line : config.getStringList(path)) { + switch (ladderType) { + case BOXING: + line = line + .replace("%team1boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(TeamEnum.TEAM1)))) + .replace("%team2boxingHits%", String.valueOf(Boxing.getTeamBoxingStrokes(match, partyVsParty.getTeamPlayers(TeamEnum.TEAM2)))); + break; + case BEDWARS: + case FIREBALL_FIGHT: + case MLG_RUSH: + line = line + .replace("%team1BedStatus%", (Objects.requireNonNull(round.getBedStatus().get(TeamEnum.TEAM1) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))) + .replace("%team2BedStatus%", (Objects.requireNonNull(round.getBedStatus().get(TeamEnum.TEAM2) ? config.getString("MATCH.BED-STATUS.NOT-DESTROYED") : config.getString("MATCH.BED-STATUS.DESTROYED")))); + break; } - break; + sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), partyVsParty)); + } } } + } else { + for (String line : config.getStringList("SPECTATE.MATCH." + match.getType().name())) { + sidebar.add(AdapterUtil.replaceMatchSpectatePlaceholders(PAPIUtil.runThroughFormat(player, line), match)); + } } + } + private void buildSpectateEventLines(Player player, YamlConfiguration config, List sidebar, Event event) { + String path = "SPECTATE.EVENT." + event.getType().name().toUpperCase(); + switch (event.getType()) { + case LMS -> { + LMS lms = (LMS) event; + for (String line : config.getStringList(path)) { + line = line + .replace("%players%", String.valueOf(lms.getStartPlayerCount())) + .replace("%alivePlayers%", String.valueOf(lms.getPlayers().size())) + .replace("%duration%", lms.getDurationRunnable().getFormattedTime()); + sidebar.add(PAPIUtil.runThroughFormat(player, line)); + } + } + case OITC -> { + OITC oitc = (OITC) event; + Player highestPointPlayer = oitc.getHighestPointPlayer(); + String topPlayerName = highestPointPlayer != null + ? ZonePractice.getMiniMessage().serialize(displayName(highestPointPlayer)) + : "N/A"; + String topPlayerScore = highestPointPlayer != null + ? String.valueOf(oitc.getPlayerPoints().get(highestPointPlayer)) + : "0"; + + for (String line : config.getStringList(path)) { + line = line + .replace("%topPlayer%", topPlayerName) + .replace("%topScore%", topPlayerScore) + .replace("%players%", String.valueOf(oitc.getPlayerPoints().size())) + .replace("%alivePlayers%", String.valueOf(oitc.getPlayers().size())) + .replace("%duration%", oitc.getDurationRunnable().getFormattedTime()); + sidebar.add(PAPIUtil.runThroughFormat(player, line)); + } + } + case TNTTAG -> { + TNTTag tntTag = (TNTTag) event; + for (String line : config.getStringList(path)) { + line = line + .replace("%explosionTime%", (tntTag.getDurationRunnable() != null ? String.valueOf(tntTag.getDurationRunnable().getSeconds()) : "0")) + .replace("%alivePlayers%", String.valueOf(tntTag.getPlayers().size())); + sidebar.add(PAPIUtil.runThroughFormat(player, line)); + } + } + case BRACKETS, SUMO -> { + DuelEvent duelEvent = (DuelEvent) event; + for (String line : config.getStringList(path)) { + line = line + .replace("%players%", String.valueOf(duelEvent.getStartPlayerCount())) + .replace("%alivePlayers%", String.valueOf(duelEvent.getPlayers().size())) + .replace("%timeLeft%", (duelEvent.getDurationRunnable() != null ? duelEvent.getDurationRunnable().getFormattedTime() : "0")) + .replace("%round%", String.valueOf(duelEvent.getRound())); + sidebar.add(PAPIUtil.runThroughFormat(player, line)); + } + } + case SPLEGG -> { + Splegg splegg = (Splegg) event; + for (String line : config.getStringList(path)) { + line = line + .replace("%players%", String.valueOf(splegg.getStartPlayerCount())) + .replace("%alivePlayers%", String.valueOf(splegg.getPlayers().size())) + .replace("%timeLeft%", (splegg.getDurationRunnable() != null ? splegg.getDurationRunnable().getFormattedTime() : "0")); + sidebar.add(PAPIUtil.runThroughFormat(player, line)); + } + } + case JUGGERNAUT -> { + Juggernaut juggernaut = (Juggernaut) event; + for (String line : config.getStringList(path)) { + line = line + .replace("%players%", String.valueOf(juggernaut.getStartPlayerCount())) + .replace("%alivePlayers%", String.valueOf(juggernaut.getPlayers().size() - 1)) + .replace("%duration%", juggernaut.getDurationRunnable().getFormattedTime()); + sidebar.add(PAPIUtil.runThroughFormat(player, line)); + } + } + } + } + + private void buildFooterLines(Player player, YamlConfiguration config, Profile profile, List sidebar) { Group group = profile.getGroup(); if (group != null && group.getSidebarExtensionRaw() != null && !group.getSidebarExtensionRaw().isEmpty()) { for (String rawLine : group.getSidebarExtensionRaw()) { @@ -705,8 +699,6 @@ public List getLines(Player player) { sidebar.add(PAPIUtil.runThroughFormat(player, line)); } } - - return sidebar; } } diff --git a/core/src/main/java/dev/nandi0813/practice/util/ArmorUtil.java b/core/src/main/java/dev/nandi0813/practice/util/ArmorUtil.java index d461d888d..af2ec6038 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/ArmorUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/ArmorUtil.java @@ -2,8 +2,9 @@ import org.bukkit.inventory.ItemStack; -public enum ArmorUtil { - ; +public final class ArmorUtil { + + private ArmorUtil() {} public static boolean isHelmet(ItemStack item) { return item.getType().name().endsWith("_HELMET") || item.getType().name().equalsIgnoreCase("CARVED_PUMPKIN"); diff --git a/core/src/main/java/dev/nandi0813/practice/util/ChatFormatUtil.java b/core/src/main/java/dev/nandi0813/practice/util/ChatFormatUtil.java index d21986f64..41151561a 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/ChatFormatUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/ChatFormatUtil.java @@ -12,8 +12,9 @@ import java.util.ArrayList; import java.util.List; -public enum ChatFormatUtil { - ; +public final class ChatFormatUtil { + + private ChatFormatUtil() {} private static String normalizeStaticSpacing(String formattedWithoutMessage) { if (formattedWithoutMessage == null || formattedWithoutMessage.isEmpty()) { diff --git a/core/src/main/java/dev/nandi0813/practice/util/Common.java b/core/src/main/java/dev/nandi0813/practice/util/Common.java index 068f78e71..4844294b2 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/Common.java +++ b/core/src/main/java/dev/nandi0813/practice/util/Common.java @@ -4,6 +4,7 @@ import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; import me.clip.placeholderapi.PlaceholderAPI; +import dev.nandi0813.practice.manager.profile.Profile; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; @@ -16,12 +17,14 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Locale; import java.util.Map; -public enum Common { - ; +public final class Common { + + private Common() {} public static void send(CommandSender sender, Component component) { if (sender == null) return; @@ -44,6 +47,26 @@ public static void sendConsoleMMMessage(String string) { send(ZonePractice.getInstance().getServer().getConsoleSender(), ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(string))); } + public static void playDeathEffect(Profile killerProfile, org.bukkit.Location location, java.util.List viewers) { + try { + if (killerProfile == null || killerProfile.getCosmeticsData() == null) return; + var deathEffect = killerProfile.getCosmeticsData().getDeathEffect(); + if (deathEffect == null) return; + deathEffect.play(location, viewers); + } catch (Exception ignored) {} + } + + public static void sendMessage(Collection players, Collection spectators, String message, boolean includeSpectators) { + for (Player player : players) { + sendMMMessage(player, message); + } + if (includeSpectators) { + for (Player spectator : spectators) { + sendMMMessage(spectator, message); + } + } + } + public static Component deserializeMiniMessage(String line) { if (line == null || line.isEmpty()) return Component.empty(); return ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(line)); diff --git a/core/src/main/java/dev/nandi0813/practice/util/InventoryUtil.java b/core/src/main/java/dev/nandi0813/practice/util/InventoryUtil.java index 7911ea82c..ac38e4ff2 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/InventoryUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/InventoryUtil.java @@ -5,8 +5,9 @@ import org.bukkit.Bukkit; import org.bukkit.inventory.Inventory; -public enum InventoryUtil { - ; +public final class InventoryUtil { + + private InventoryUtil() {} public static Inventory createInventory(String title, int row) { Component component = ZonePractice.getMiniMessage().deserialize(StringUtil.legacyToMiniMessage(title)); diff --git a/core/src/main/java/dev/nandi0813/practice/util/ItemSerializationUtil.java b/core/src/main/java/dev/nandi0813/practice/util/ItemSerializationUtil.java index 99e931921..7b5d34b4f 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/ItemSerializationUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/ItemSerializationUtil.java @@ -9,8 +9,9 @@ import java.io.ByteArrayOutputStream; import java.util.Base64; -public enum ItemSerializationUtil { - ; +public final class ItemSerializationUtil { + + private ItemSerializationUtil() {} @Nullable public static String itemStackArrayToBase64(ItemStack[] items) { diff --git a/core/src/main/java/dev/nandi0813/practice/util/LastAttackerTracker.java b/core/src/main/java/dev/nandi0813/practice/util/LastAttackerTracker.java new file mode 100644 index 000000000..6d0d3c3e2 --- /dev/null +++ b/core/src/main/java/dev/nandi0813/practice/util/LastAttackerTracker.java @@ -0,0 +1,30 @@ +package dev.nandi0813.practice.util; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class LastAttackerTracker { + + private final Map lastAttackerMap = new HashMap<>(); + private final Map lastAttackerTime = new HashMap<>(); + private static final long LAST_ATTACKER_EXPIRY_MS = 4_000L; + + public void recordAttack(Player victim, Player attacker) { + if (victim == null || attacker == null || victim.equals(attacker)) return; + lastAttackerMap.put(victim.getUniqueId(), attacker.getUniqueId()); + lastAttackerTime.put(victim.getUniqueId(), System.currentTimeMillis()); + } + + public @Nullable Player getLastAttacker(Player victim, Collection candidates) { + Long time = lastAttackerTime.get(victim.getUniqueId()); + if (time == null || System.currentTimeMillis() - time > LAST_ATTACKER_EXPIRY_MS) return null; + UUID attackerUuid = lastAttackerMap.get(victim.getUniqueId()); + if (attackerUuid == null) return null; + for (Player p : candidates) { + if (attackerUuid.equals(p.getUniqueId())) return p; + } + return null; + } +} diff --git a/core/src/main/java/dev/nandi0813/practice/util/NameFormatUtil.java b/core/src/main/java/dev/nandi0813/practice/util/NameFormatUtil.java index 6dff51fe0..571633a73 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/NameFormatUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/NameFormatUtil.java @@ -12,8 +12,9 @@ import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.entity.Player; -public enum NameFormatUtil { - ; +public final class NameFormatUtil { + + private NameFormatUtil() {} private static final PlainTextComponentSerializer PLAIN_TEXT_SERIALIZER = PlainTextComponentSerializer.plainText(); diff --git a/core/src/main/java/dev/nandi0813/practice/util/NumberUtil.java b/core/src/main/java/dev/nandi0813/practice/util/NumberUtil.java index f4201e05b..a8a9c1329 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/NumberUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/NumberUtil.java @@ -2,8 +2,9 @@ import java.text.DecimalFormat; -public enum NumberUtil { - ; +public final class NumberUtil { + + private NumberUtil() {} public static double roundDouble(double value) { DecimalFormat df = new DecimalFormat("0.00"); diff --git a/core/src/main/java/dev/nandi0813/practice/util/PAPIUtil.java b/core/src/main/java/dev/nandi0813/practice/util/PAPIUtil.java index 21eba173a..94193a4ce 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/PAPIUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/PAPIUtil.java @@ -5,8 +5,9 @@ import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; -public enum PAPIUtil { - ; +public final class PAPIUtil { + + private PAPIUtil() {} public static Component runThroughFormat(Player player, String line) { if (line == null || line.isEmpty()) { diff --git a/core/src/main/java/dev/nandi0813/practice/util/PageUtil.java b/core/src/main/java/dev/nandi0813/practice/util/PageUtil.java index a62dd4ae7..009dec4fe 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/PageUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/PageUtil.java @@ -5,8 +5,9 @@ import java.util.ArrayList; import java.util.List; -public enum PageUtil { - ; +public final class PageUtil { + + private PageUtil() {} public static List getPageItems(List items, int page, int spaces) { int upperBound = page * spaces; diff --git a/core/src/main/java/dev/nandi0813/practice/util/PermanentConfig.java b/core/src/main/java/dev/nandi0813/practice/util/PermanentConfig.java index cff582620..40ad5d141 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/PermanentConfig.java +++ b/core/src/main/java/dev/nandi0813/practice/util/PermanentConfig.java @@ -2,8 +2,9 @@ import dev.nandi0813.practice.manager.backend.ConfigManager; -public enum PermanentConfig { - ; +public final class PermanentConfig { + + private PermanentConfig() {} public static final boolean ARENA_FAST_COPY_ENABLED = ConfigManager.getBoolean("ARENA.FAST-COPY.ENABLED"); public static final boolean ARENA_COPY_FAWE_ENABLED = ConfigManager.getBoolean("ARENA.FAST-COPY.USE-FAWE"); diff --git a/core/src/main/java/dev/nandi0813/practice/util/SaveResource.java b/core/src/main/java/dev/nandi0813/practice/util/SaveResource.java index 0e7939c72..5d5e1bda1 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/SaveResource.java +++ b/core/src/main/java/dev/nandi0813/practice/util/SaveResource.java @@ -7,11 +7,15 @@ import dev.dejvokep.boostedyaml.settings.loader.LoaderSettings; import dev.dejvokep.boostedyaml.settings.updater.UpdaterSettings; import dev.nandi0813.practice.ZonePractice; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.*; public class SaveResource { @@ -54,6 +58,8 @@ public class SaveResource { }; public void saveResources(ZonePractice practice) { + Map backup = backupCustomKeys(practice); + for (String fileName : ROOT_FILES) { InputStream resource = practice.getResource(fileName); if (resource == null) { @@ -63,6 +69,8 @@ public void saveResources(ZonePractice practice) { saveResource(new File(practice.getDataFolder(), fileName), resource); } + restoreCustomKeys(practice, backup); + File ladderFolder = new File(practice.getDataFolder(), "ladders"); if (!ladderFolder.exists()) { for (String fileName : LADDER_FILES) { @@ -71,6 +79,80 @@ public void saveResources(ZonePractice practice) { } } + private Map backupCustomKeys(ZonePractice practice) { + File file = new File(practice.getDataFolder(), "config.yml"); + if (!file.exists()) return Collections.emptyMap(); + + YamlConfiguration disk; + try { + disk = new YamlConfiguration(); + disk.load(file); + } catch (IOException | InvalidConfigurationException e) { + return Collections.emptyMap(); + } + + YamlConfiguration bundled; + try (InputStream in = practice.getResource("config.yml")) { + if (in == null) return Collections.emptyMap(); + bundled = new YamlConfiguration(); + bundled.load(new InputStreamReader(in)); + } catch (IOException | InvalidConfigurationException e) { + return Collections.emptyMap(); + } + + Map backup = new HashMap<>(); + for (String key : disk.getKeys(true)) { + if (!bundled.isSet(key)) { + backup.put(key, disk.get(key)); + } + } + return backup; + } + + private void restoreCustomKeys(ZonePractice practice, Map backup) { + if (backup.isEmpty()) return; + + File file = new File(practice.getDataFolder(), "config.yml"); + if (!file.exists()) return; + + YamlConfiguration config = new YamlConfiguration(); + try { + config.load(file); + } catch (IOException | InvalidConfigurationException e) { + return; + } + + boolean changed = false; + for (Map.Entry entry : backup.entrySet()) { + if (config.isSet(entry.getKey())) continue; + config.set(entry.getKey(), fixTimeStrings(entry.getValue())); + changed = true; + } + + if (!changed) return; + + try { + config.save(file); + } catch (IOException e) { + Common.sendConsoleMMMessage("Couldn't restore custom config keys."); + } + } + + private Object fixTimeStrings(Object value) { + if (!(value instanceof List)) return value; + + List list = (List) value; + List fixed = new ArrayList<>(list.size()); + for (Object el : list) { + if (el instanceof String && ((String) el).matches("\\d{1,2}:\\d{2}")) { + fixed.add(((String) el) + " "); + } else { + fixed.add(el); + } + } + return fixed; + } + private void saveResource(@NotNull File document, @NotNull InputStream defaults) { try { YamlDocument.create(document, defaults, diff --git a/core/src/main/java/dev/nandi0813/practice/util/SoftDependUtil.java b/core/src/main/java/dev/nandi0813/practice/util/SoftDependUtil.java index e8dc04f30..47450ca43 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/SoftDependUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/SoftDependUtil.java @@ -2,8 +2,9 @@ import org.bukkit.Bukkit; -public enum SoftDependUtil { - ; +public final class SoftDependUtil { + + private SoftDependUtil() {} public static boolean isPAPI_ENABLED = false; public static boolean isFAWE_ENABLED = false; diff --git a/core/src/main/java/dev/nandi0813/practice/util/StartUpUtil.java b/core/src/main/java/dev/nandi0813/practice/util/StartUpUtil.java index 48d6b56ce..5fdcc54a8 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/StartUpUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/StartUpUtil.java @@ -2,8 +2,9 @@ import dev.nandi0813.practice.ZonePractice; -public enum StartUpUtil { - ; +public final class StartUpUtil { + + private StartUpUtil() {} public static void loadStartUpProgressMap() { for (StartUpTypes startUpType : StartUpTypes.values()) diff --git a/core/src/main/java/dev/nandi0813/practice/util/StatisticUtil.java b/core/src/main/java/dev/nandi0813/practice/util/StatisticUtil.java index 0747605b3..638c74243 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/StatisticUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/StatisticUtil.java @@ -1,7 +1,8 @@ package dev.nandi0813.practice.util; -public enum StatisticUtil { - ; +public final class StatisticUtil { + + private StatisticUtil() {} public static String getProgressBar(final double progress) { int numberOfColoredBars = (int) Math.floor(progress / 10.0); diff --git a/core/src/main/java/dev/nandi0813/practice/util/StringUtil.java b/core/src/main/java/dev/nandi0813/practice/util/StringUtil.java index 25cca739e..56dda087a 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/StringUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/StringUtil.java @@ -10,8 +10,9 @@ import java.util.List; import java.util.Map; -public enum StringUtil { - ; +public final class StringUtil { + + private StringUtil() {} public static String CC(String string) { if (string == null) { diff --git a/core/src/main/java/dev/nandi0813/practice/util/TPSUtil.java b/core/src/main/java/dev/nandi0813/practice/util/TPSUtil.java index 7b261cf16..f3952eb83 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/TPSUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/TPSUtil.java @@ -7,8 +7,9 @@ import java.math.BigDecimal; import java.math.RoundingMode; -public enum TPSUtil { - ; +public final class TPSUtil { + + private TPSUtil() {} private static Object minecraftServer; private static Field recentTps; diff --git a/core/src/main/java/dev/nandi0813/practice/util/UpdateChecker.java b/core/src/main/java/dev/nandi0813/practice/util/UpdateChecker.java index a5c333598..391e1edf5 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/UpdateChecker.java +++ b/core/src/main/java/dev/nandi0813/practice/util/UpdateChecker.java @@ -24,8 +24,9 @@ *

The check runs asynchronously so it never blocks the main thread. * Results are cached for the lifetime of the server session. */ -public enum UpdateChecker { - ; +public final class UpdateChecker { + + private UpdateChecker() {} /** Permission required to receive the update notification on join. */ public static final String NOTIFY_PERMISSION = "zpp.update.notify"; diff --git a/core/src/main/java/dev/nandi0813/practice/util/VersionChecker.java b/core/src/main/java/dev/nandi0813/practice/util/VersionChecker.java index c00149632..4258ee344 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/VersionChecker.java +++ b/core/src/main/java/dev/nandi0813/practice/util/VersionChecker.java @@ -11,8 +11,9 @@ * Utility for detecting the running Bukkit/MC version. * Replaces the previous empty-enum pattern with a normal utility class. */ -public enum VersionChecker { - ; +public final class VersionChecker { + + private VersionChecker() {} private static volatile BukkitVersion bukkitVersion; diff --git a/core/src/main/java/dev/nandi0813/practice/util/cooldown/PlayerCooldown.java b/core/src/main/java/dev/nandi0813/practice/util/cooldown/PlayerCooldown.java index 23bc4723a..fcc16e1ff 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/cooldown/PlayerCooldown.java +++ b/core/src/main/java/dev/nandi0813/practice/util/cooldown/PlayerCooldown.java @@ -8,8 +8,9 @@ import java.util.HashMap; import java.util.Map; -public enum PlayerCooldown { - ; +public final class PlayerCooldown { + + private PlayerCooldown() {} @Getter private static final Map> cooldowns = new HashMap<>(); diff --git a/core/src/main/java/dev/nandi0813/practice/util/playerutil/PlayerUtil.java b/core/src/main/java/dev/nandi0813/practice/util/playerutil/PlayerUtil.java index 721e20bb1..dba08f36b 100644 --- a/core/src/main/java/dev/nandi0813/practice/util/playerutil/PlayerUtil.java +++ b/core/src/main/java/dev/nandi0813/practice/util/playerutil/PlayerUtil.java @@ -16,8 +16,9 @@ import java.lang.reflect.Method; import java.util.*; -public enum PlayerUtil { - ; +public final class PlayerUtil { + + private PlayerUtil() {} private static final double DEFAULT_FIGHT_MAX_HEALTH = 20.0D;