mirror of
https://github.com/plexusorg/Plex.git
synced 2026-06-03 21:16:55 +00:00
Refactor more
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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<Class<? extends ProxyListener>> listenerSet = ReflectionsUtil.getClassesBySubType("dev.plex.listener.impl", ProxyListener.class);
|
||||
List<ProxyListener> listeners = Lists.newArrayList();
|
||||
private final Plex plugin;
|
||||
private final List<ProxyListener> 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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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("<yellow>[Plex] <gray>" + message));
|
||||
server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("<yellow>[Plex] <gray>" + 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("<red>[Plex Error] <gold>" + message));
|
||||
server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("<red>[Plex Error] <gold>" + 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] <gold>" + message));
|
||||
server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("<#eb7c0e>[Plex Warning] <gold>" + 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("<dark_purple>[Plex Debug] <gold>" + message));
|
||||
server.getConsoleCommandSource().sendMessage(MiniMessage.miniMessage().deserialize("<dark_purple>[Plex Debug] <gold>" + message));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Class<?>> getClassesFrom(String packageName)
|
||||
{
|
||||
Set<Class<?>> classes = new HashSet<>();
|
||||
try
|
||||
{
|
||||
ClassPath path = ClassPath.from(Plex.class.getClassLoader());
|
||||
ImmutableSet<ClassPath.ClassInfo> 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 <T> Set<Class<? extends T>> getClassesBySubType(String packageName, Class<T> subType)
|
||||
{
|
||||
Set<Class<?>> loadedClasses = getClassesFrom(packageName);
|
||||
Set<Class<? extends T>> classes = new HashSet<>();
|
||||
loadedClasses.forEach(clazz ->
|
||||
{
|
||||
if (clazz.getSuperclass() == subType || Arrays.asList(clazz.getInterfaces()).contains(subType))
|
||||
{
|
||||
classes.add((Class<? extends T>) clazz);
|
||||
}
|
||||
});
|
||||
return Collections.unmodifiableSet(classes);
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ public class AdminChatCMD extends ServerCommand
|
||||
super(command("adminchat")
|
||||
.description("Talk privately with other admins")
|
||||
.usage("/<command> <message>")
|
||||
.aliases("o,ac,sc,staffchat")
|
||||
.aliases("o,sc,staffchat")
|
||||
.permission("plex.adminchat")
|
||||
.build());
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ public class BlockEditCMD extends ServerCommand
|
||||
.permission("plex.blockedit")
|
||||
.build());
|
||||
}
|
||||
private final BlockListener bl = new BlockListener();
|
||||
|
||||
@Override
|
||||
protected void buildCommand(LiteralArgumentBuilder<CommandSourceStack> 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()));
|
||||
}
|
||||
|
||||
@@ -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<ServerListenerBase> listeners = new ArrayList<>();
|
||||
|
||||
public ListenerHandler(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
Set<Class<? extends ServerListenerBase>> listenerSet = ReflectionsUtil.getClassesBySubType("dev.plex.listener.impl", ServerListenerBase.class);
|
||||
List<ServerListenerBase> 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<ServerListenerBase> listener)
|
||||
{
|
||||
listeners.add(listener.get());
|
||||
}
|
||||
|
||||
private void registerIfEnabled(String configPath, Supplier<ServerListenerBase> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<Material> blockedBlocks = new ArrayList<>();
|
||||
private static final List<Material> SIGNS = Arrays.stream(Material.values()).filter((mat) -> mat.name().endsWith("_SIGN")).toList();
|
||||
private static List<String> cachedBlockedBlocksConfig = null;
|
||||
public List<String> blockedPlayers = new ArrayList<>();
|
||||
public static final List<String> blockedPlayers = new ArrayList<>();
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void onBlockPlace(BlockPlaceEvent event)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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+&@#/%=~_|]")
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<Material> SPAWN_EGGS = Arrays.stream(Material.values()).filter((mat) -> mat.name().endsWith("_SPAWN_EGG")).toList();
|
||||
|
||||
private static EntityType spawnEggToEntityType(Material mat)
|
||||
|
||||
@@ -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<String> commands = plugin.config.getStringList("block_on_mute");
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<String> commands = plugin.config.getStringList("block_on_mute");
|
||||
|
||||
@EventHandler
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<String> EDIT_COMMANDS = Arrays.asList("bigtree", "ebigtree", "largetree", "elargetree", "break", "ebreak", "antioch", "nuke", "editsign", "tree", "etree");
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
|
||||
@@ -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<Class<?>> getClassesFrom(String packageName)
|
||||
{
|
||||
Set<Class<?>> classes = new HashSet<>();
|
||||
try
|
||||
{
|
||||
ClassPath path = ClassPath.from(Plex.class.getClassLoader());
|
||||
ImmutableSet<ClassPath.ClassInfo> 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 <T> Set<Class<? extends T>> getClassesBySubType(String packageName, Class<T> subType)
|
||||
{
|
||||
Set<Class<?>> loadedClasses = getClassesFrom(packageName);
|
||||
Set<Class<? extends T>> classes = new HashSet<>();
|
||||
loadedClasses.forEach(clazz ->
|
||||
{
|
||||
if (clazz.getSuperclass() == subType || Arrays.asList(clazz.getInterfaces()).contains(subType))
|
||||
{
|
||||
classes.add((Class<? extends T>) 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user