SteamWar/SpigotCore
Archiviert
13
0

Simplify SWCommand.register

Dieser Commit ist enthalten in:
jojo 2020-12-30 22:57:56 +01:00
Ursprung 8b36a64f94
Commit a60fa5923c

Datei anzeigen

@ -63,34 +63,6 @@ public class SWCommand<T extends CommandSender> {
this.lastArgRepeatable = lastArgRepeatable;
}
protected void register(String name, String... aliases) {
commandMap.register("steamwar", new Command(name, "", "/" + name, Arrays.asList(aliases)) {
@Override
public boolean execute(CommandSender sender, String alias, String[] args) {
if (!isInstance(sender)) return false;
instance.execute((T) sender, args);
return true;
}
@Override
public List<String> tabComplete(CommandSender sender, String alias, String[] args) {
if (!isInstance(sender)) new ArrayList<>();
return SWCommand.this.tabComplete((T) sender, args);
}
private boolean isInstance(CommandSender sender) {
try {
if (Class.forName(getClass().getGenericInterfaces()[0].getTypeName()).isInstance(sender)) {
return true;
}
} catch (ClassNotFoundException e) {
// Ignored
}
return false;
}
});
}
public boolean execute(T sender, String[] args) {
if (args.length != arguments.length) return false;
Object[] objects = new Object[args.length];
@ -141,4 +113,32 @@ public class SWCommand<T extends CommandSender> {
return strings;
}
public static <T extends CommandSender> void register(List<SWCommand<T>> commandList, String name, String... aliases) {
commandMap.register("steamwar", new Command(name, "", "/" + name, Arrays.asList(aliases)) {
@Override
public boolean execute(CommandSender sender, String alias, String[] args) {
if (!isInstance(sender)) return false;
SWCommand.execute(commandList, (T) sender, args);
return true;
}
@Override
public List<String> tabComplete(CommandSender sender, String alias, String[] args) {
if (!isInstance(sender)) new ArrayList<>();
return SWCommand.tabComplete(commandList, (T) sender, args);
}
private boolean isInstance(CommandSender sender) {
try {
if (Class.forName(getClass().getGenericInterfaces()[0].getTypeName()).isInstance(sender)) {
return true;
}
} catch (ClassNotFoundException e) {
// Ignored
}
return false;
}
});
}
}