SteamWar/SpigotCore
Archiviert
13
0

CommandFramework #107

Geschlossen
YoyoNow möchte 27 Commits von CommandFramework nach master mergen
Nur Änderungen aus Commit 96630e13d2 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -79,16 +79,17 @@ public abstract class SWCommand {
addMapper(ClassMapper.class, method, i -> i == 0, false, TypeMapper.class, (anno, typeMapper) -> {
(anno.local() ? localTypeMapper : SWCommandUtils.MAPPER_FUNCTIONS).putIfAbsent(anno.value().getTypeName(), typeMapper);
});
add(Register.class, method, i -> i > 0, true, null, (anno, parameters) -> {
add(Register.class, method, i -> i != 2, true, null, (anno, parameters) -> {
if (!anno.help()) return;
if (parameters.length != 2) {
Bukkit.getLogger().log(Level.WARNING, "The method '" + method.toString() + "' is lacking parameters or has too many");
}
List<String> errors = new ArrayList<>();
if (!parameters[parameters.length - 1].isVarArgs()) {
Bukkit.getLogger().log(Level.WARNING, "The method '" + method.toString() + "' is lacking the varArgs parameters as last Argument");
errors.add("The method '" + method.toString() + "' is lacking the varArgs parameters as last Argument");
}
if (parameters[parameters.length - 1].getType().getComponentType() != String.class) {
Bukkit.getLogger().log(Level.WARNING, "The method '" + method.toString() + "' is lacking the varArgs parameters of type '" + String.class.getTypeName() + "' as last Argument");
errors.add("The method '" + method.toString() + "' is lacking the varArgs parameters of type '" + String.class.getTypeName() + "' as last Argument");
}
if (!errors.isEmpty()) {
errors.forEach(s -> Bukkit.getLogger().log(Level.WARNING, s));
return;
}
commandHelpList.add(new SubCommand(this, method, anno.description(), anno.value(), new HashMap<>()));
@ -130,8 +131,8 @@ public abstract class SWCommand {
if (compare != 0) {
return compare;
} else {
return Integer.compare(o1.method.getDeclaringClass() == SWCommand.class ? 0 : 1,
o2.method.getDeclaringClass() == SWCommand.class ? 0 : 1);
return Integer.compare(o1.method.getDeclaringClass() == SWCommand.class ? 1 : 0,
o2.method.getDeclaringClass() == SWCommand.class ? 1 : 0);
}
});
}
@ -142,16 +143,18 @@ public abstract class SWCommand {
if (anno == null || anno.length == 0) return;
Parameter[] parameters = method.getParameters();
List<String> errors = new ArrayList<>();
if (!parameterTester.test(parameters.length)) {
Bukkit.getLogger().log(Level.WARNING, "The method '" + method.toString() + "' is lacking parameters or has too many");
return;
errors.add("The method '" + method.toString() + "' is lacking parameters or has too many");
}
if (firstParameter && !CommandSender.class.isAssignableFrom(parameters[0].getType())) {
Bukkit.getLogger().log(Level.WARNING, "The method '" + method.toString() + "' is lacking the first parameter of type '" + CommandSender.class.getTypeName() + "'");
return;
errors.add("The method '" + method.toString() + "' is lacking the first parameter of type '" + CommandSender.class.getTypeName() + "'");
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Nope nope nope. Lass dir beim Erstellen des Commands ein Message-Objekt übergeben.

Nope nope nope. Lass dir beim Erstellen des Commands ein Message-Objekt übergeben.
Veraltet
Review

Doch, Doch, Doch, weil ich will kein Sache übergeben bekommen! Ich will es auch optional halten usw usw!

Doch, Doch, Doch, weil ich will kein Sache übergeben bekommen! Ich will es auch optional halten usw usw!
Veraltet
Review

Dann nutze einen Setter.

Dann nutze einen Setter.
Veraltet
Review

Ist nicht einfach so da, ich will das ich nichts dafür aufrufen oder sonst machen muss! So wie das Register und Mapper und so.

Ist nicht einfach so da, ich will das ich nichts dafür aufrufen oder sonst machen muss! So wie das Register und Mapper und so.
Veraltet
Review

Der Einsatz von Reflections zu diesem Grund ist einfach nur unangemessen. Ein Objekt MESSAGE zur Verfügung zu stellen, ist genauso. Warum nicht einfach message als protected Parameter im SWCommand haben, dann kann das auch einfach problemlos gesetzt werden....

Der Einsatz von Reflections zu diesem Grund ist einfach nur unangemessen. Ein Objekt MESSAGE zur Verfügung zu stellen, ist genauso. Warum nicht einfach message als protected Parameter im SWCommand haben, dann kann das auch einfach problemlos gesetzt werden....
Veraltet
Review

Lixfel dieses System kann man so noch einfach aus dem SpigotCore kopieren und woanders verwenden, wenn ich das verdrahte nicht mehr!

Lixfel dieses System kann man so noch einfach aus dem SpigotCore kopieren und woanders verwenden, wenn ich das verdrahte nicht mehr!
Veraltet
Review

Wohin hast du denn vor, dieses System eins zu eins zu kopieren?

Wohin hast du denn vor, dieses System eins zu eins zu kopieren?
Veraltet
Review

Zeanon verwendet es in einem seiner Projekte.

Zeanon verwendet es in einem seiner Projekte.
Veraltet
Review

Njoa, Also das Message-System ist exakt eine Klasse mehr. Ich glaube, es ist komplexer, Support für mit und ohne Message-System vorzuhalten, als einfach das Message-System mit dranzuhängen.

Njoa, Also das Message-System ist exakt eine Klasse mehr. Ich glaube, es ist komplexer, Support für mit und ohne Message-System vorzuhalten, als einfach das Message-System mit dranzuhängen.
}
if (returnType != null && method.getReturnType() != returnType) {
Bukkit.getLogger().log(Level.WARNING, "The method '" + method.toString() + "' is lacking the desired return type '" + returnType.getTypeName() + "'");
errors.add("The method '" + method.toString() + "' is lacking the desired return type '" + returnType.getTypeName() + "'");
}
if (!errors.isEmpty()) {
errors.forEach(s -> Bukkit.getLogger().log(Level.WARNING, s));
return;
}
Arrays.stream(anno).forEach(t -> consumer.accept(t, parameters));