CMDoS because Brigadier
Dieser Commit ist enthalten in:
Ursprung
da5fca4078
Commit
834969959a
@ -152,37 +152,6 @@ class SWCommandBrigadier implements SWCommand.SWCommandInterface {
|
|||||||
SWCommand.dispatcher.register(literalArgumentBuilder);
|
SWCommand.dispatcher.register(literalArgumentBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends Annotation> void add(Class<T> annotation, Method method, IntPredicate parameterTester, boolean firstParameter, Class<?> returnType, BiConsumer<T, Parameter[]> consumer) {
|
|
||||||
T[] anno = SWCommandUtils.getAnnotation(method, annotation);
|
|
||||||
if (anno == null || anno.length == 0) return;
|
|
||||||
|
|
||||||
Parameter[] parameters = method.getParameters();
|
|
||||||
if (!parameterTester.test(parameters.length)) {
|
|
||||||
Bukkit.getLogger().log(Level.WARNING, "The method '" + method + "' is lacking parameters or has too many");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (firstParameter && !CommandSender.class.isAssignableFrom(parameters[0].getType())) {
|
|
||||||
Bukkit.getLogger().log(Level.WARNING, "The method '" + method + "' is lacking the first parameter of type '" + CommandSender.class.getTypeName() + "'");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (returnType != null && method.getReturnType() != returnType) {
|
|
||||||
Bukkit.getLogger().log(Level.WARNING, "The method '" + method + "' is lacking the desired return type '" + returnType.getTypeName() + "'");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Arrays.stream(anno).forEach(t -> consumer.accept(t, parameters));
|
|
||||||
}
|
|
||||||
|
|
||||||
private <T extends Annotation> void addMapper(Class<T> annotation, Method method, IntPredicate parameterTester, boolean firstParameter, Class<?> returnType, BiConsumer<T, TypeMapper<?>> consumer) {
|
|
||||||
add(annotation, method, parameterTester, firstParameter, returnType, (anno, parameters) -> {
|
|
||||||
try {
|
|
||||||
method.setAccessible(true);
|
|
||||||
consumer.accept(anno, (TypeMapper<?>) method.invoke(swCommand));
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new SecurityException(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unregister() {
|
public void unregister() {
|
||||||
SWCommandUtils.knownCommandMap.remove(command.getName());
|
SWCommandUtils.knownCommandMap.remove(command.getName());
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren