mirror of
https://github.com/plexusorg/Plex.git
synced 2025-07-03 08:26:42 +00:00
Use Google's reflection library to register commands
This commit is contained in:
@ -3,55 +3,39 @@ package dev.plex.handlers;
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.impl.*;
|
||||
import dev.plex.command.annotation.System;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
// TODO: Switch to Reflections API
|
||||
public class CommandHandler extends PlexBase
|
||||
{
|
||||
public CommandHandler()
|
||||
{
|
||||
Set<Class<? extends PlexCommand>> commandSet = PlexUtils.getClassesBySubType("dev.plex.command.impl", PlexCommand.class);
|
||||
List<PlexCommand> commands = Lists.newArrayList();
|
||||
if (plugin.getSystem().equalsIgnoreCase("ranks"))
|
||||
|
||||
commandSet.forEach(clazz ->
|
||||
{
|
||||
commands.add(new AdminCMD());
|
||||
commands.add(new DeopAllCMD());
|
||||
commands.add(new DeopCMD());
|
||||
commands.add(new ListCMD());
|
||||
commands.add(new OpAllCMD());
|
||||
commands.add(new OpCMD());
|
||||
commands.add(new RankCMD());
|
||||
}
|
||||
if (plugin.config.getBoolean("debug"))
|
||||
{
|
||||
commands.add(new DebugCMD());
|
||||
}
|
||||
commands.add(new AdminChatCMD());
|
||||
commands.add(new AdminworldCMD());
|
||||
commands.add(new AdventureCMD());
|
||||
commands.add(new BanCMD());
|
||||
commands.add(new CommandSpyCMD());
|
||||
commands.add(new CreativeCMD());
|
||||
commands.add(new FlatlandsCMD());
|
||||
commands.add(new FreezeCMD());
|
||||
commands.add(new KickCMD());
|
||||
commands.add(new LocalSpawnCMD());
|
||||
commands.add(new LockupCMD());
|
||||
commands.add(new MasterbuilderworldCMD());
|
||||
commands.add(new MuteCMD());
|
||||
commands.add(new NameHistoryCMD());
|
||||
commands.add(new PlexCMD());
|
||||
commands.add(new PunishmentsCMD());
|
||||
commands.add(new RawSayCMD());
|
||||
commands.add(new SpectatorCMD());
|
||||
commands.add(new SurvivalCMD());
|
||||
commands.add(new TagCMD());
|
||||
commands.add(new TempbanCMD());
|
||||
commands.add(new UnbanCMD());
|
||||
commands.add(new UnfreezeCMD());
|
||||
commands.add(new UnmuteCMD());
|
||||
commands.add(new WorldCMD());
|
||||
PlexLog.log(String.format("Registered %s commands!", commands.size()));
|
||||
try
|
||||
{
|
||||
System annotation = clazz.getDeclaredAnnotation(System.class);
|
||||
if (annotation != null && annotation.value().equalsIgnoreCase(plugin.getSystem()))
|
||||
{
|
||||
commands.add(clazz.getConstructor().newInstance());
|
||||
return;
|
||||
}
|
||||
|
||||
commands.add(clazz.getConstructor().newInstance());
|
||||
}
|
||||
catch (InvocationTargetException | InstantiationException | IllegalAccessException | NoSuchMethodException ex)
|
||||
{
|
||||
PlexLog.log("Failed to register " + clazz.getSimpleName() + " as a command!");
|
||||
}
|
||||
});
|
||||
|
||||
PlexLog.log(String.format("Registered %s commands from %s classes!", commands.size(), commandSet.size()));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user