From 63b6e7288392e8097ddf7eca9439c1ab74da6942 Mon Sep 17 00:00:00 2001 From: Telesphoreo Date: Tue, 19 May 2026 21:53:54 -0400 Subject: [PATCH] Refactor more --- proxy/src/main/java/dev/plex/Plex.java | 3 +- .../java/dev/plex/command/ProxyCommand.java | 10 --- .../dev/plex/handlers/ListenerHandler.java | 38 ++++---- .../java/dev/plex/listener/ProxyListener.java | 7 +- .../listener/impl/ConnectionListener.java | 6 ++ .../plex/listener/impl/ServerListener.java | 6 ++ .../src/main/java/dev/plex/util/PlexLog.java | 24 +++-- .../java/dev/plex/util/ReflectionsUtil.java | 57 ------------ .../dev/plex/command/impl/AdminChatCMD.java | 2 +- .../dev/plex/command/impl/BlockEditCMD.java | 17 ++-- .../dev/plex/handlers/ListenerHandler.java | 89 ++++++++++++------- .../dev/plex/listener/ServerListenerBase.java | 5 -- .../plex/listener/annotation/Toggleable.java | 10 --- .../plex/listener/impl/AntiNukerListener.java | 6 ++ .../plex/listener/impl/AntiSpamListener.java | 6 ++ .../dev/plex/listener/impl/BanListener.java | 6 ++ .../dev/plex/listener/impl/BlockListener.java | 8 +- .../dev/plex/listener/impl/BookListener.java | 6 ++ .../dev/plex/listener/impl/ChatListener.java | 8 +- .../plex/listener/impl/CommandListener.java | 6 ++ .../dev/plex/listener/impl/DropListener.java | 6 ++ .../plex/listener/impl/FreezeListener.java | 6 ++ .../plex/listener/impl/GameModeListener.java | 6 ++ .../dev/plex/listener/impl/MenuListener.java | 6 ++ .../dev/plex/listener/impl/MobListener.java | 6 ++ .../dev/plex/listener/impl/MuteListener.java | 6 ++ .../plex/listener/impl/PlayerListener.java | 6 ++ .../plex/listener/impl/ServerListener.java | 6 ++ .../dev/plex/listener/impl/TabListener.java | 6 ++ .../plex/listener/impl/TogglesListener.java | 6 ++ .../plex/listener/impl/VanishListener.java | 6 ++ .../dev/plex/listener/impl/WorldListener.java | 6 ++ .../java/dev/plex/util/ReflectionsUtil.java | 71 --------------- 33 files changed, 234 insertions(+), 229 deletions(-) delete mode 100644 proxy/src/main/java/dev/plex/util/ReflectionsUtil.java delete mode 100644 server/src/main/java/dev/plex/listener/annotation/Toggleable.java delete mode 100644 server/src/main/java/dev/plex/util/ReflectionsUtil.java diff --git a/proxy/src/main/java/dev/plex/Plex.java b/proxy/src/main/java/dev/plex/Plex.java index 98c1300..f25c04b 100644 --- a/proxy/src/main/java/dev/plex/Plex.java +++ b/proxy/src/main/java/dev/plex/Plex.java @@ -45,6 +45,7 @@ public class Plex this.server = server; this.logger = logger; this.dataFolder = folder.toFile(); + PlexLog.configure(server, () -> config != null && config.settings().getServer().isDebug()); if (!dataFolder.exists()) { dataFolder.mkdir(); @@ -58,7 +59,7 @@ public class Plex this.config = loadConfig("config.yml"); this.messages = loadConfig("messages.yml"); this.api = new DefaultPlexApi(this, MODULE_API_COMPATIBILITY_VERSION); - new ListenerHandler(); + new ListenerHandler(this); } private YamlConfig loadConfig(String name) diff --git a/proxy/src/main/java/dev/plex/command/ProxyCommand.java b/proxy/src/main/java/dev/plex/command/ProxyCommand.java index ea08884..e9b0228 100644 --- a/proxy/src/main/java/dev/plex/command/ProxyCommand.java +++ b/proxy/src/main/java/dev/plex/command/ProxyCommand.java @@ -18,16 +18,6 @@ public abstract class ProxyCommand implements SimpleCommand private final CommandSpec commandSpec; private final RequiredCommandSource commandSource; - /** - * Creates and registers a proxy command using the current proxy plugin. - * - * @param commandSpec explicit command metadata - */ - protected ProxyCommand(CommandSpec commandSpec) - { - this(Plex.get(), commandSpec); - } - /** * Creates and registers a proxy command. * diff --git a/proxy/src/main/java/dev/plex/handlers/ListenerHandler.java b/proxy/src/main/java/dev/plex/handlers/ListenerHandler.java index dc1d9c0..50e960f 100644 --- a/proxy/src/main/java/dev/plex/handlers/ListenerHandler.java +++ b/proxy/src/main/java/dev/plex/handlers/ListenerHandler.java @@ -1,32 +1,28 @@ package dev.plex.handlers; -import com.google.common.collect.Lists; +import dev.plex.Plex; import dev.plex.listener.ProxyListener; +import dev.plex.listener.impl.ConnectionListener; +import dev.plex.listener.impl.ServerListener; import dev.plex.util.PlexLog; -import dev.plex.util.ReflectionsUtil; -import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.List; -import java.util.Set; public class ListenerHandler { - public ListenerHandler() - { - Set> listenerSet = ReflectionsUtil.getClassesBySubType("dev.plex.listener.impl", ProxyListener.class); - List listeners = Lists.newArrayList(); + private final Plex plugin; + private final List listeners = new ArrayList<>(); - listenerSet.forEach(clazz -> - { - try - { - listeners.add(clazz.getConstructor().newInstance()); - } - catch (InvocationTargetException | InstantiationException | IllegalAccessException | - NoSuchMethodException ex) - { - PlexLog.error("Failed to register " + clazz.getSimpleName() + " as a listener!"); - } - }); - PlexLog.log(String.format("Registered %s listeners from %s classes!", listeners.size(), listenerSet.size())); + public ListenerHandler(Plex plugin) + { + this.plugin = plugin; + registerBuiltInListeners(); + PlexLog.log("Registered " + listeners.size() + " proxy listeners."); + } + + private void registerBuiltInListeners() + { + listeners.add(new ConnectionListener(plugin)); + listeners.add(new ServerListener(plugin)); } } diff --git a/proxy/src/main/java/dev/plex/listener/ProxyListener.java b/proxy/src/main/java/dev/plex/listener/ProxyListener.java index 6b47d1d..460634c 100644 --- a/proxy/src/main/java/dev/plex/listener/ProxyListener.java +++ b/proxy/src/main/java/dev/plex/listener/ProxyListener.java @@ -4,10 +4,11 @@ import dev.plex.Plex; public class ProxyListener { - protected final Plex plugin = Plex.get(); + protected final Plex plugin; - public ProxyListener() + protected ProxyListener(Plex plugin) { - Plex.get().getServer().getEventManager().register(Plex.get(), this); + this.plugin = plugin; + plugin.getServer().getEventManager().register(plugin, this); } } diff --git a/proxy/src/main/java/dev/plex/listener/impl/ConnectionListener.java b/proxy/src/main/java/dev/plex/listener/impl/ConnectionListener.java index 55f3f40..bc9b1ed 100644 --- a/proxy/src/main/java/dev/plex/listener/impl/ConnectionListener.java +++ b/proxy/src/main/java/dev/plex/listener/impl/ConnectionListener.java @@ -4,12 +4,18 @@ import com.velocitypowered.api.event.PostOrder; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.connection.DisconnectEvent; import com.velocitypowered.api.event.player.ServerConnectedEvent; +import dev.plex.Plex; import dev.plex.listener.ProxyListener; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; public class ConnectionListener extends ProxyListener { + public ConnectionListener(Plex plugin) + { + super(plugin); + } + @Subscribe(order = PostOrder.FIRST) public void onPlayerJoin(ServerConnectedEvent event) { diff --git a/proxy/src/main/java/dev/plex/listener/impl/ServerListener.java b/proxy/src/main/java/dev/plex/listener/impl/ServerListener.java index f1ea134..02bc464 100644 --- a/proxy/src/main/java/dev/plex/listener/impl/ServerListener.java +++ b/proxy/src/main/java/dev/plex/listener/impl/ServerListener.java @@ -4,6 +4,7 @@ import com.velocitypowered.api.event.PostOrder; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.proxy.ProxyPingEvent; import com.velocitypowered.api.proxy.server.ServerPing; +import dev.plex.Plex; import dev.plex.listener.ProxyListener; import dev.plex.settings.ServerSettings; import dev.plex.util.RandomUtil; @@ -18,6 +19,11 @@ import net.kyori.adventure.text.minimessage.MiniMessage; public class ServerListener extends ProxyListener { + public ServerListener(Plex plugin) + { + super(plugin); + } + @Subscribe(order = PostOrder.FIRST) public void onPing(ProxyPingEvent event) { diff --git a/proxy/src/main/java/dev/plex/util/PlexLog.java b/proxy/src/main/java/dev/plex/util/PlexLog.java index 7c1f8c2..bddb23e 100644 --- a/proxy/src/main/java/dev/plex/util/PlexLog.java +++ b/proxy/src/main/java/dev/plex/util/PlexLog.java @@ -1,12 +1,22 @@ package dev.plex.util; -import dev.plex.Plex; +import com.velocitypowered.api.proxy.ProxyServer; +import java.util.function.BooleanSupplier; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; public class PlexLog { + private static ProxyServer server; + private static BooleanSupplier debugEnabled = () -> false; + + public static void configure(ProxyServer server, BooleanSupplier debugEnabled) + { + PlexLog.server = server; + PlexLog.debugEnabled = debugEnabled == null ? () -> false : debugEnabled; + } + public static void log(String message, Object... strings) { for (int i = 0; i < strings.length; i++) @@ -16,12 +26,12 @@ public class PlexLog message = message.replace("{" + i + "}", strings[i].toString()); } } - Plex.get().getServer().getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("[Plex] " + message)); + server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("[Plex] " + message)); } public static void log(Component component) { - Plex.get().getServer().getConsoleCommandSource().sendMessage(Component.text("[Plex] ").color(NamedTextColor.YELLOW).append(component).colorIfAbsent(NamedTextColor.GRAY)); + server.getConsoleCommandSource().sendMessage(Component.text("[Plex] ").color(NamedTextColor.YELLOW).append(component).colorIfAbsent(NamedTextColor.GRAY)); } public static void error(String message, Object... strings) @@ -33,7 +43,7 @@ public class PlexLog message = message.replace("{" + i + "}", strings[i].toString()); } } - Plex.get().getServer().getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("[Plex Error] " + message)); + server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("[Plex Error] " + message)); } public static void warn(String message, Object... strings) @@ -45,7 +55,7 @@ public class PlexLog message = message.replace("{" + i + "}", strings[i].toString()); } } - Plex.get().getServer().getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("<#eb7c0e>[Plex Warning] " + message)); + server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("<#eb7c0e>[Plex Warning] " + message)); } public static void debug(String message, Object... strings) @@ -57,9 +67,9 @@ public class PlexLog message = message.replace("{" + i + "}", strings[i].toString()); } } - if (Plex.get().getConfig().settings().getServer().isDebug()) + if (debugEnabled.getAsBoolean()) { - Plex.get().getServer().getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("[Plex Debug] " + message)); + server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("[Plex Debug] " + message)); } } } diff --git a/proxy/src/main/java/dev/plex/util/ReflectionsUtil.java b/proxy/src/main/java/dev/plex/util/ReflectionsUtil.java deleted file mode 100644 index 2e6c948..0000000 --- a/proxy/src/main/java/dev/plex/util/ReflectionsUtil.java +++ /dev/null @@ -1,57 +0,0 @@ -package dev.plex.util; - -import com.google.common.collect.ImmutableSet; -import com.google.common.reflect.ClassPath; -import dev.plex.Plex; -import java.io.IOException; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -public class ReflectionsUtil -{ - @SuppressWarnings("UnstableApiUsage") - public static Set> getClassesFrom(String packageName) - { - Set> classes = new HashSet<>(); - try - { - ClassPath path = ClassPath.from(Plex.class.getClassLoader()); - ImmutableSet infoSet = path.getTopLevelClasses(packageName); - infoSet.forEach(info -> - { - try - { - Class clazz = Class.forName(info.getName()); - classes.add(clazz); - } - catch (ClassNotFoundException ex) - { - PlexLog.error("Unable to find class " + info.getName() + " in " + packageName); - } - }); - } - catch (IOException ex) - { - PlexLog.error("Something went wrong while fetching classes from " + packageName); - throw new RuntimeException(ex); - } - return Collections.unmodifiableSet(classes); - } - - @SuppressWarnings("unchecked") - public static Set> getClassesBySubType(String packageName, Class subType) - { - Set> loadedClasses = getClassesFrom(packageName); - Set> classes = new HashSet<>(); - loadedClasses.forEach(clazz -> - { - if (clazz.getSuperclass() == subType || Arrays.asList(clazz.getInterfaces()).contains(subType)) - { - classes.add((Class) clazz); - } - }); - return Collections.unmodifiableSet(classes); - } -} diff --git a/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java b/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java index 1fbd462..0cf560d 100644 --- a/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java +++ b/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java @@ -26,7 +26,7 @@ public class AdminChatCMD extends ServerCommand super(command("adminchat") .description("Talk privately with other admins") .usage("/ ") - .aliases("o,ac,sc,staffchat") + .aliases("o,sc,staffchat") .permission("plex.adminchat") .build()); } diff --git a/server/src/main/java/dev/plex/command/impl/BlockEditCMD.java b/server/src/main/java/dev/plex/command/impl/BlockEditCMD.java index f169c14..b2a1ade 100644 --- a/server/src/main/java/dev/plex/command/impl/BlockEditCMD.java +++ b/server/src/main/java/dev/plex/command/impl/BlockEditCMD.java @@ -26,7 +26,6 @@ public class BlockEditCMD extends ServerCommand .permission("plex.blockedit") .build()); } - private final BlockListener bl = new BlockListener(); @Override protected void buildCommand(LiteralArgumentBuilder command) @@ -58,7 +57,7 @@ public class BlockEditCMD extends ServerCommand context.send(sender, context.messageComponent("listOfPlayersBlocked")); int count = 0; - for (String player : bl.blockedPlayers.stream().toList()) + for (String player : BlockListener.blockedPlayers.stream().toList()) { context.send(sender, context.messageComponent("blockeditListEntry", player)); ++count; @@ -73,11 +72,11 @@ public class BlockEditCMD extends ServerCommand { PlexUtils.broadcast(context.messageComponent("unblockingEdits", sender.getName(), context.messageString("blockeditAllPlayers"))); int count = 0; - for (String player : bl.blockedPlayers.stream().toList()) + for (String player : BlockListener.blockedPlayers.stream().toList()) { - if (bl.blockedPlayers.contains(player)) + if (BlockListener.blockedPlayers.contains(player)) { - bl.blockedPlayers.remove(player); + BlockListener.blockedPlayers.remove(player); ++count; } } @@ -91,7 +90,7 @@ public class BlockEditCMD extends ServerCommand { if (!context.silentCheckPermission(player, "plex.blockedit")) { - bl.blockedPlayers.add(player.getName()); + BlockListener.blockedPlayers.add(player.getName()); ++count; } } @@ -100,7 +99,7 @@ public class BlockEditCMD extends ServerCommand } final Player player = context.getNonNullPlayer(args[0]); - if (!bl.blockedPlayers.contains(player.getName())) + if (!BlockListener.blockedPlayers.contains(player.getName())) { if (context.silentCheckPermission(player, "plex.blockedit")) { @@ -108,14 +107,14 @@ public class BlockEditCMD extends ServerCommand return null; } PlexUtils.broadcast(context.messageComponent("blockingEdits", sender.getName(), player.getName())); - bl.blockedPlayers.add(player.getName()); + BlockListener.blockedPlayers.add(player.getName()); context.send(player, context.messageComponent("editsModified", context.messageString("blockeditBlockedState"))); context.send(sender, context.messageComponent("editsBlocked", player.getName())); } else { PlexUtils.broadcast(context.messageComponent("unblockingEdits", sender.getName(), player.getName())); - bl.blockedPlayers.remove(player.getName()); + BlockListener.blockedPlayers.remove(player.getName()); context.send(player, context.messageComponent("editsModified", context.messageString("blockeditUnblockedState"))); context.send(sender, context.messageComponent("editsUnblocked", player.getName())); } diff --git a/server/src/main/java/dev/plex/handlers/ListenerHandler.java b/server/src/main/java/dev/plex/handlers/ListenerHandler.java index 0f4ebb4..56c27af 100644 --- a/server/src/main/java/dev/plex/handlers/ListenerHandler.java +++ b/server/src/main/java/dev/plex/handlers/ListenerHandler.java @@ -1,49 +1,76 @@ package dev.plex.handlers; -import com.google.common.collect.Lists; import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; -import dev.plex.listener.annotation.Toggleable; +import dev.plex.listener.impl.AntiNukerListener; +import dev.plex.listener.impl.AntiSpamListener; +import dev.plex.listener.impl.BanListener; +import dev.plex.listener.impl.BlockListener; +import dev.plex.listener.impl.BookListener; +import dev.plex.listener.impl.ChatListener; +import dev.plex.listener.impl.CommandListener; +import dev.plex.listener.impl.DropListener; +import dev.plex.listener.impl.FreezeListener; +import dev.plex.listener.impl.GameModeListener; +import dev.plex.listener.impl.MenuListener; +import dev.plex.listener.impl.MobListener; +import dev.plex.listener.impl.MuteListener; +import dev.plex.listener.impl.PlayerListener; +import dev.plex.listener.impl.ServerListener; +import dev.plex.listener.impl.TabListener; +import dev.plex.listener.impl.TogglesListener; +import dev.plex.listener.impl.VanishListener; +import dev.plex.listener.impl.WorldListener; import dev.plex.util.PlexLog; -import dev.plex.util.ReflectionsUtil; - -import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.List; -import java.util.Set; +import java.util.function.Supplier; public class ListenerHandler { private final Plex plugin; + private final List listeners = new ArrayList<>(); public ListenerHandler(Plex plugin) { this.plugin = plugin; - Set> listenerSet = ReflectionsUtil.getClassesBySubType("dev.plex.listener.impl", ServerListenerBase.class); - List listeners = Lists.newArrayList(); + registerBuiltInListeners(); + PlexLog.log("Registered " + listeners.size() + " listeners."); + } - listenerSet.forEach(clazz -> + private void registerBuiltInListeners() + { + register(() -> new AntiNukerListener(plugin)); + register(() -> new AntiSpamListener(plugin)); + register(() -> new BanListener(plugin)); + register(() -> new BlockListener(plugin)); + register(() -> new BookListener(plugin)); + registerIfEnabled("chat.enabled", () -> new ChatListener(plugin)); + register(() -> new CommandListener(plugin)); + register(() -> new DropListener(plugin)); + register(() -> new FreezeListener(plugin)); + register(() -> new GameModeListener(plugin)); + register(() -> new MenuListener(plugin)); + register(() -> new MobListener(plugin)); + register(() -> new MuteListener(plugin)); + register(() -> new PlayerListener(plugin)); + register(() -> new ServerListener(plugin)); + register(() -> new TabListener(plugin)); + register(() -> new TogglesListener(plugin)); + register(() -> new VanishListener(plugin)); + register(() -> new WorldListener(plugin)); + } + + private void register(Supplier listener) + { + listeners.add(listener.get()); + } + + private void registerIfEnabled(String configPath, Supplier listener) + { + if (plugin.config.get(configPath) != null && plugin.config.getBoolean(configPath)) { - try - { - if (clazz.isAnnotationPresent(Toggleable.class)) - { - Toggleable annotation = clazz.getDeclaredAnnotation(Toggleable.class); - if (plugin.config.get(annotation.value()) != null && plugin.config.getBoolean(annotation.value())) - { - listeners.add(clazz.getConstructor().newInstance()); - } - } - else - { - listeners.add(clazz.getConstructor().newInstance()); - } - } - catch (InvocationTargetException | InstantiationException | IllegalAccessException | - NoSuchMethodException ex) - { - PlexLog.error("Failed to register " + clazz.getSimpleName() + " as a listener!"); - } - }); - PlexLog.log(String.format("Registered %s listeners from %s classes!", listeners.size(), listenerSet.size())); + register(listener); + } } } diff --git a/server/src/main/java/dev/plex/listener/ServerListenerBase.java b/server/src/main/java/dev/plex/listener/ServerListenerBase.java index f0f7fcc..b9f923d 100644 --- a/server/src/main/java/dev/plex/listener/ServerListenerBase.java +++ b/server/src/main/java/dev/plex/listener/ServerListenerBase.java @@ -7,11 +7,6 @@ public abstract class ServerListenerBase implements Listener { protected final Plex plugin; - public ServerListenerBase() - { - this(Plex.get()); - } - protected ServerListenerBase(Plex plugin) { this.plugin = plugin; diff --git a/server/src/main/java/dev/plex/listener/annotation/Toggleable.java b/server/src/main/java/dev/plex/listener/annotation/Toggleable.java deleted file mode 100644 index 16e7829..0000000 --- a/server/src/main/java/dev/plex/listener/annotation/Toggleable.java +++ /dev/null @@ -1,10 +0,0 @@ -package dev.plex.listener.annotation; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -@Retention(RetentionPolicy.RUNTIME) -public @interface Toggleable -{ - String value(); -} diff --git a/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java b/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java index 7a958ff..ed48105 100644 --- a/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java +++ b/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.services.impl.TimingService; import dev.plex.util.PlexUtils; @@ -13,6 +14,11 @@ import org.bukkit.event.block.BlockPlaceEvent; public class AntiNukerListener extends ServerListenerBase { + public AntiNukerListener(Plex plugin) + { + super(plugin); + } + @EventHandler(priority = EventPriority.HIGH) public void onBlockPlace(BlockPlaceEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java b/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java index e7399b8..c014eeb 100644 --- a/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java +++ b/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.services.impl.TimingService; import dev.plex.util.PlexUtils; @@ -13,6 +14,11 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent; public class AntiSpamListener extends ServerListenerBase { + public AntiSpamListener(Plex plugin) + { + super(plugin); + } + @EventHandler public void onChat(AsyncChatEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/BanListener.java b/server/src/main/java/dev/plex/listener/impl/BanListener.java index 5b07aef..2d8ba6a 100644 --- a/server/src/main/java/dev/plex/listener/impl/BanListener.java +++ b/server/src/main/java/dev/plex/listener/impl/BanListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.player.PlexPlayer; import dev.plex.punishment.Punishment; @@ -11,6 +12,11 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent; public class BanListener extends ServerListenerBase { + public BanListener(Plex plugin) + { + super(plugin); + } + @EventHandler public void onPreLogin(AsyncPlayerPreLoginEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/BlockListener.java b/server/src/main/java/dev/plex/listener/impl/BlockListener.java index 9201eb4..bb48487 100644 --- a/server/src/main/java/dev/plex/listener/impl/BlockListener.java +++ b/server/src/main/java/dev/plex/listener/impl/BlockListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.util.PlexUtils; @@ -19,10 +20,15 @@ import org.bukkit.event.block.BlockPlaceEvent; public class BlockListener extends ServerListenerBase { + public BlockListener(Plex plugin) + { + super(plugin); + } + private static final List blockedBlocks = new ArrayList<>(); private static final List SIGNS = Arrays.stream(Material.values()).filter((mat) -> mat.name().endsWith("_SIGN")).toList(); private static List cachedBlockedBlocksConfig = null; - public List blockedPlayers = new ArrayList<>(); + public static final List blockedPlayers = new ArrayList<>(); @EventHandler(priority = EventPriority.LOW) public void onBlockPlace(BlockPlaceEvent event) diff --git a/server/src/main/java/dev/plex/listener/impl/BookListener.java b/server/src/main/java/dev/plex/listener/impl/BookListener.java index 27d031d..83c721c 100644 --- a/server/src/main/java/dev/plex/listener/impl/BookListener.java +++ b/server/src/main/java/dev/plex/listener/impl/BookListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.util.PlexUtils; import dev.plex.util.minimessage.SafeMiniMessage; @@ -14,6 +15,11 @@ import java.util.List; public class BookListener extends ServerListenerBase { + public BookListener(Plex plugin) + { + super(plugin); + } + @EventHandler(priority = EventPriority.LOW) public void onBookEdit(PlayerEditBookEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/ChatListener.java b/server/src/main/java/dev/plex/listener/impl/ChatListener.java index 4ad556a..aadad7f 100644 --- a/server/src/main/java/dev/plex/listener/impl/ChatListener.java +++ b/server/src/main/java/dev/plex/listener/impl/ChatListener.java @@ -1,8 +1,8 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.hook.VaultHook; import dev.plex.listener.ServerListenerBase; -import dev.plex.listener.annotation.Toggleable; import dev.plex.meta.PlayerMeta; import dev.plex.player.PlexPlayer; import dev.plex.util.PlexUtils; @@ -24,9 +24,13 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.jetbrains.annotations.NotNull; -@Toggleable("chat.enabled") public class ChatListener extends ServerListenerBase { + public ChatListener(Plex plugin) + { + super(plugin); + } + public static final TextReplacementConfig URL_REPLACEMENT_CONFIG = TextReplacementConfig .builder() .match("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]") diff --git a/server/src/main/java/dev/plex/listener/impl/CommandListener.java b/server/src/main/java/dev/plex/listener/impl/CommandListener.java index 0abb9e3..3a6b54a 100644 --- a/server/src/main/java/dev/plex/listener/impl/CommandListener.java +++ b/server/src/main/java/dev/plex/listener/impl/CommandListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.player.PlexPlayer; import dev.plex.util.PlexUtils; @@ -11,6 +12,11 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent; public class CommandListener extends ServerListenerBase { + public CommandListener(Plex plugin) + { + super(plugin); + } + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/DropListener.java b/server/src/main/java/dev/plex/listener/impl/DropListener.java index a49b3e0..3ae0733 100644 --- a/server/src/main/java/dev/plex/listener/impl/DropListener.java +++ b/server/src/main/java/dev/plex/listener/impl/DropListener.java @@ -1,11 +1,17 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerDropItemEvent; public class DropListener extends ServerListenerBase { + public DropListener(Plex plugin) + { + super(plugin); + } + @EventHandler public void onPlayerDropItem(PlayerDropItemEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/FreezeListener.java b/server/src/main/java/dev/plex/listener/impl/FreezeListener.java index 3b46cf1..e62d632 100644 --- a/server/src/main/java/dev/plex/listener/impl/FreezeListener.java +++ b/server/src/main/java/dev/plex/listener/impl/FreezeListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.player.PlexPlayer; @@ -9,6 +10,11 @@ import org.bukkit.event.player.PlayerTeleportEvent; public class FreezeListener extends ServerListenerBase { + public FreezeListener(Plex plugin) + { + super(plugin); + } + @EventHandler public void onPlayerMove(PlayerMoveEvent e) { diff --git a/server/src/main/java/dev/plex/listener/impl/GameModeListener.java b/server/src/main/java/dev/plex/listener/impl/GameModeListener.java index f946aba..5c85af0 100644 --- a/server/src/main/java/dev/plex/listener/impl/GameModeListener.java +++ b/server/src/main/java/dev/plex/listener/impl/GameModeListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.event.GameModeUpdateEvent; import dev.plex.listener.ServerListenerBase; import dev.plex.util.PlexUtils; @@ -9,6 +10,11 @@ import org.bukkit.event.EventHandler; public class GameModeListener extends ServerListenerBase { + public GameModeListener(Plex plugin) + { + super(plugin); + } + @EventHandler public void onGameModeUpdate(GameModeUpdateEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/MenuListener.java b/server/src/main/java/dev/plex/listener/impl/MenuListener.java index f6b2ac2..6b9181d 100644 --- a/server/src/main/java/dev/plex/listener/impl/MenuListener.java +++ b/server/src/main/java/dev/plex/listener/impl/MenuListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.menu.AbstractMenu; import dev.plex.menu.pagination.PageableMenu; @@ -15,6 +16,11 @@ import org.bukkit.inventory.meta.ItemMeta; */ public class MenuListener extends ServerListenerBase { + public MenuListener(Plex plugin) + { + super(plugin); + } + @EventHandler(priority = EventPriority.LOWEST) public void onClick(InventoryClickEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/MobListener.java b/server/src/main/java/dev/plex/listener/impl/MobListener.java index 793cbed..e8838ac 100644 --- a/server/src/main/java/dev/plex/listener/impl/MobListener.java +++ b/server/src/main/java/dev/plex/listener/impl/MobListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.util.BlockUtils; import dev.plex.util.PlexUtils; @@ -30,6 +31,11 @@ import java.util.List; public class MobListener extends ServerListenerBase { + public MobListener(Plex plugin) + { + super(plugin); + } + private static final List SPAWN_EGGS = Arrays.stream(Material.values()).filter((mat) -> mat.name().endsWith("_SPAWN_EGG")).toList(); private static EntityType spawnEggToEntityType(Material mat) diff --git a/server/src/main/java/dev/plex/listener/impl/MuteListener.java b/server/src/main/java/dev/plex/listener/impl/MuteListener.java index a865590..207c92b 100644 --- a/server/src/main/java/dev/plex/listener/impl/MuteListener.java +++ b/server/src/main/java/dev/plex/listener/impl/MuteListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.util.PlexLog; import dev.plex.util.PlexUtils; @@ -15,6 +16,11 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent; public class MuteListener extends ServerListenerBase { + public MuteListener(Plex plugin) + { + super(plugin); + } + List commands = plugin.config.getStringList("block_on_mute"); @EventHandler(priority = EventPriority.HIGHEST) diff --git a/server/src/main/java/dev/plex/listener/impl/PlayerListener.java b/server/src/main/java/dev/plex/listener/impl/PlayerListener.java index be51093..5625303 100644 --- a/server/src/main/java/dev/plex/listener/impl/PlayerListener.java +++ b/server/src/main/java/dev/plex/listener/impl/PlayerListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.meta.PlayerMeta; @@ -19,6 +20,11 @@ import org.bukkit.event.player.PlayerQuitEvent; public class PlayerListener extends ServerListenerBase { + public PlayerListener(Plex plugin) + { + super(plugin); + } + // setting up a player's data @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerSetup(PlayerJoinEvent event) diff --git a/server/src/main/java/dev/plex/listener/impl/ServerListener.java b/server/src/main/java/dev/plex/listener/impl/ServerListener.java index 7e510d9..f6340b3 100644 --- a/server/src/main/java/dev/plex/listener/impl/ServerListener.java +++ b/server/src/main/java/dev/plex/listener/impl/ServerListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import com.destroystokyo.paper.event.server.PaperServerListPingEvent; import com.destroystokyo.paper.event.server.PaperServerListPingEvent.ListedPlayerInfo; import dev.plex.listener.ServerListenerBase; @@ -16,6 +17,11 @@ import org.bukkit.event.EventHandler; public class ServerListener extends ServerListenerBase { + public ServerListener(Plex plugin) + { + super(plugin); + } + @EventHandler public void onServerPing(PaperServerListPingEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/TabListener.java b/server/src/main/java/dev/plex/listener/impl/TabListener.java index 1a57019..457b8be 100644 --- a/server/src/main/java/dev/plex/listener/impl/TabListener.java +++ b/server/src/main/java/dev/plex/listener/impl/TabListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.hook.VaultHook; import dev.plex.listener.ServerListenerBase; @@ -14,6 +15,11 @@ import org.bukkit.event.player.PlayerJoinEvent; public class TabListener extends ServerListenerBase { + public TabListener(Plex plugin) + { + super(plugin); + } + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerJoin(PlayerJoinEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/TogglesListener.java b/server/src/main/java/dev/plex/listener/impl/TogglesListener.java index bb1f1ab..65dc206 100644 --- a/server/src/main/java/dev/plex/listener/impl/TogglesListener.java +++ b/server/src/main/java/dev/plex/listener/impl/TogglesListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import dev.plex.util.PlexUtils; import io.papermc.paper.event.player.AsyncChatEvent; @@ -25,6 +26,11 @@ import org.bukkit.projectiles.ProjectileSource; public class TogglesListener extends ServerListenerBase { + public TogglesListener(Plex plugin) + { + super(plugin); + } + List commands = plugin.config.getStringList("block_on_mute"); @EventHandler diff --git a/server/src/main/java/dev/plex/listener/impl/VanishListener.java b/server/src/main/java/dev/plex/listener/impl/VanishListener.java index 1eb5136..e5ef0eb 100644 --- a/server/src/main/java/dev/plex/listener/impl/VanishListener.java +++ b/server/src/main/java/dev/plex/listener/impl/VanishListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import de.myzelyam.api.vanish.PlayerShowEvent; import dev.plex.listener.ServerListenerBase; @@ -11,6 +12,11 @@ import org.bukkit.event.EventPriority; public class VanishListener extends ServerListenerBase { + public VanishListener(Plex plugin) + { + super(plugin); + } + @EventHandler(priority = EventPriority.MONITOR) public void onPlayerUnvanish(PlayerShowEvent event) { diff --git a/server/src/main/java/dev/plex/listener/impl/WorldListener.java b/server/src/main/java/dev/plex/listener/impl/WorldListener.java index 3e3d13d..17b06b4 100644 --- a/server/src/main/java/dev/plex/listener/impl/WorldListener.java +++ b/server/src/main/java/dev/plex/listener/impl/WorldListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.Plex; import dev.plex.listener.ServerListenerBase; import java.util.Arrays; @@ -27,6 +28,11 @@ import org.bukkit.event.player.PlayerTeleportEvent; public class WorldListener extends ServerListenerBase { + public WorldListener(Plex plugin) + { + super(plugin); + } + private final List EDIT_COMMANDS = Arrays.asList("bigtree", "ebigtree", "largetree", "elargetree", "break", "ebreak", "antioch", "nuke", "editsign", "tree", "etree"); @EventHandler(priority = EventPriority.LOWEST) diff --git a/server/src/main/java/dev/plex/util/ReflectionsUtil.java b/server/src/main/java/dev/plex/util/ReflectionsUtil.java deleted file mode 100644 index 8f0583f..0000000 --- a/server/src/main/java/dev/plex/util/ReflectionsUtil.java +++ /dev/null @@ -1,71 +0,0 @@ -package dev.plex.util; - -import com.google.common.collect.ImmutableSet; -import com.google.common.reflect.ClassPath; -import com.google.common.reflect.TypeToken; -import dev.plex.Plex; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -public class ReflectionsUtil -{ - public static Set> getClassesFrom(String packageName) - { - Set> classes = new HashSet<>(); - try - { - ClassPath path = ClassPath.from(Plex.class.getClassLoader()); - ImmutableSet infoSet = path.getTopLevelClasses(packageName); - infoSet.forEach(info -> - { - try - { - Class clazz = Class.forName(info.getName()); - classes.add(clazz); - } - catch (ClassNotFoundException ex) - { - PlexLog.error("Unable to find class " + info.getName() + " in " + packageName); - } - }); - } - catch (IOException ex) - { - PlexLog.error("Something went wrong while fetching classes from " + packageName); - throw new RuntimeException(ex); - } - return Collections.unmodifiableSet(classes); - } - - @SuppressWarnings("unchecked") - public static Set> getClassesBySubType(String packageName, Class subType) - { - Set> loadedClasses = getClassesFrom(packageName); - Set> classes = new HashSet<>(); - loadedClasses.forEach(clazz -> - { - if (clazz.getSuperclass() == subType || Arrays.asList(clazz.getInterfaces()).contains(subType)) - { - classes.add((Class) clazz); - } - }); - return Collections.unmodifiableSet(classes); - } - - public static Class getGenericField(Field field) - { - Type type = field.getGenericType(); - if (type instanceof ParameterizedType parameterizedType) - { - return TypeToken.of(parameterizedType.getActualTypeArguments()[0]).getRawType(); - } - return field.getType(); - } -}