From 09074f1a2ed542aa45724fc1cb06e769c2e04814 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 27 Oct 2020 22:48:39 +0100 Subject: [PATCH] Moving player data and some cleanup --- .../buttonproc/ButtonProcessor.java | 79 ++++++++----------- .../buttonproc/ConfigProcessor.java | 14 +--- .../java/buttondevteam/lib/TBMCChatEvent.java | 1 - .../buttondevteam/lib/TBMCChatEventBase.java | 2 +- .../lib/TBMCChatPreprocessEvent.java | 6 +- .../lib/architecture/ButtonPlugin.java | 3 +- .../buttondevteam/lib/chat/Command2MC.java | 2 +- .../buttondevteam/lib/player/TBMCPlayer.java | 2 +- 8 files changed, 42 insertions(+), 67 deletions(-) diff --git a/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ButtonProcessor.java b/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ButtonProcessor.java index 50e1939..eba729c 100755 --- a/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ButtonProcessor.java +++ b/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ButtonProcessor.java @@ -21,35 +21,29 @@ import java.util.stream.Collectors; @SupportedAnnotationTypes("buttondevteam.*") public class ButtonProcessor extends AbstractProcessor { @Override - public boolean process(Set annotations, RoundEnvironment roundEnv) { + public boolean process(Set annotations, RoundEnvironment roundEnv) { if (configProcessor == null) configProcessor = new ConfigProcessor(processingEnv); - for (TypeElement te : annotations) { - Set classes = roundEnv.getElementsAnnotatedWith(te); - for (Element targetcl : classes) { - System.out.println("Processing " + targetcl); - List annotationMirrors = processingEnv.getElementUtils() - .getAllAnnotationMirrors(targetcl); - //System.out.println("Annotations: " + annotationMirrors); - Function hasAnnotation = ann -> annotationMirrors.stream() - .anyMatch(am -> am.getAnnotationType().toString().contains(ann)); - if (hasAnnotation.apply("ChromaGamerEnforcer") && !hasAnnotation.apply("UserClass") - && !targetcl.getModifiers().contains(Modifier.ABSTRACT)) - processingEnv.getMessager().printMessage(Kind.ERROR, - "No UserClass annotation found for " + targetcl.getSimpleName(), targetcl); - if (hasAnnotation.apply("TBMCPlayerEnforcer") && !hasAnnotation.apply("PlayerClass") - && !targetcl.getModifiers().contains(Modifier.ABSTRACT)) - processingEnv.getMessager().printMessage(Kind.ERROR, - "No PlayerClass annotation found for " + targetcl.getSimpleName(), targetcl); - for (AnnotationMirror annotation : annotationMirrors) { - String type = annotation.getAnnotationType().toString(); - //System.out.println("Type: " + type); - } - processSubcommands(targetcl, annotationMirrors); - if (hasAnnotation.apply("HasConfig")) - configProcessor.process(targetcl); - } - } + for (TypeElement te : annotations) { + Set classes = roundEnv.getElementsAnnotatedWith(te); + for (Element targetcl : classes) { + List annotationMirrors = processingEnv.getElementUtils() + .getAllAnnotationMirrors(targetcl); + Function hasAnnotation = ann -> annotationMirrors.stream() + .anyMatch(am -> am.getAnnotationType().toString().contains(ann)); + if (hasAnnotation.apply("ChromaGamerEnforcer") && !hasAnnotation.apply("UserClass") + && !targetcl.getModifiers().contains(Modifier.ABSTRACT)) + processingEnv.getMessager().printMessage(Kind.ERROR, + "No UserClass annotation found for " + targetcl.getSimpleName(), targetcl); + if (hasAnnotation.apply("TBMCPlayerEnforcer") && !hasAnnotation.apply("PlayerClass") + && !targetcl.getModifiers().contains(Modifier.ABSTRACT)) + processingEnv.getMessager().printMessage(Kind.ERROR, + "No PlayerClass annotation found for " + targetcl.getSimpleName(), targetcl); + processSubcommands(targetcl, annotationMirrors); + if (hasAnnotation.apply("HasConfig")) + configProcessor.process(targetcl); + } + } try { if (found) { FileObject fo = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", "commands.yml"); @@ -59,38 +53,33 @@ public class ButtonProcessor extends AbstractProcessor { } catch (IOException e) { e.printStackTrace(); } - return true; // claim the annotations - } + return true; // claim the annotations + } - private YamlConfiguration yc = new YamlConfiguration(); + private final YamlConfiguration yc = new YamlConfiguration(); private boolean found = false; private ConfigProcessor configProcessor; - private void processSubcommands(Element targetcl, List annotationMirrors) { - if (!(targetcl instanceof ExecutableElement)) + private void processSubcommands(Element method, List annotationMirrors) { + if (!(method instanceof ExecutableElement)) return; - //System.out.println("Annotations: "+annotationMirrors); if (annotationMirrors.stream().noneMatch(an -> an.getAnnotationType().toString().endsWith("Subcommand"))) return; - //System.out.print("Processing method: " + targetcl.getEnclosingElement()+" "+targetcl); - ConfigurationSection cs = yc.createSection(targetcl.getEnclosingElement().toString() - + "." + targetcl.getSimpleName().toString()); //Need to do the 2 config sections at once so it doesn't overwrite the class section - System.out.println(targetcl); - cs.set("method", targetcl.toString()); - cs.set("params", ((ExecutableElement) targetcl).getParameters().stream().skip(1).map(p -> { - //String tn=p.asType().toString(); - //return tn.substring(tn.lastIndexOf('.')+1)+" "+p.getSimpleName(); + ConfigurationSection cs = yc.createSection(method.getEnclosingElement().toString() + + "." + method.getSimpleName().toString()); //Need to do the 2 config sections at once so it doesn't overwrite the class section + System.out.println("Found subcommand: " + method); + cs.set("method", method.toString()); + cs.set("params", ((ExecutableElement) method).getParameters().stream().skip(1).map(p -> { boolean optional = p.getAnnotationMirrors().stream().anyMatch(am -> am.getAnnotationType().toString().endsWith("OptionalArg")); if (optional) return "[" + p.getSimpleName() + "]"; return "<" + p.getSimpleName() + ">"; }).collect(Collectors.joining(" "))); - //System.out.println(); found = true; } @Override - public SourceVersion getSupportedSourceVersion() { - return SourceVersion.latestSupported(); - } + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latestSupported(); + } } diff --git a/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ConfigProcessor.java b/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ConfigProcessor.java index bddf284..b6d2dd2 100644 --- a/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ConfigProcessor.java +++ b/ButtonProcessor/src/main/java/buttondevteam/buttonproc/ConfigProcessor.java @@ -48,10 +48,6 @@ public class ConfigProcessor { e.printStackTrace(); } for (Element e : targetcl.getEnclosedElements()) { - /*System.out.println("Element: "+e); - System.out.println("Type: "+e.getClass()+" - "+e.getKind()); - if(e instanceof ExecutableElement) - System.out.println("METHOD!");*/ TypeMirror tm; if (e instanceof ExecutableElement) tm = ((ExecutableElement) e).getReturnType(); @@ -63,25 +59,19 @@ public class ConfigProcessor { DeclaredType dt = (DeclaredType) tm; if (!dt.asElement().getSimpleName().toString().contains("ConfigData")) continue; //Ahhha! There was a return here! (MinecraftChatModule getListener()) - System.out.println("Config: " + e.getSimpleName()); String doc = procEnv.getElementUtils().getDocComment(e); if (doc == null) continue; - System.out.println("DOC: " + doc); + System.out.println("Adding docs for config: " + e.getSimpleName()); yc.set(path + "." + e.getSimpleName(), doc.trim()); - /*System.out.println("Set " + path + "." + e.getSimpleName() + " to " + doc.trim()); - System.out.println("Check: " + yc.getString(path + "." + e.getSimpleName())); - System.out.println("Wut2: " + yc.getString("components.MemberComponent.memberGroup"));*/ } String javadoc = procEnv.getElementUtils().getDocComment(targetcl); if (javadoc != null) { - System.out.println("JAVADOC"); - System.out.println(javadoc.trim()); + System.out.println("Adding docs for class: " + targetcl.getSimpleName()); yc.set(path + ".generalDescriptionInsteadOfAConfig", javadoc.trim()); } try { yc.save(file); - //System.out.println("Wut: " + yc.getString("components.MemberComponent.memberGroup")); } catch (IOException e) { e.printStackTrace(); } diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEvent.java b/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEvent.java index ee37c30..4476442 100755 --- a/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEvent.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEvent.java @@ -30,7 +30,6 @@ public class TBMCChatEvent extends TBMCChatEventBase { private boolean isIgnoreSenderPermissions() { return cm.getPermCheck() != cm.getSender(); } - // TODO: Message object with data? /** * This will allow the sender of the message if {@link #isIgnoreSenderPermissions()} is true. diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEventBase.java b/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEventBase.java index 1ac02b6..77b5364 100755 --- a/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEventBase.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatEventBase.java @@ -54,6 +54,6 @@ public abstract class TBMCChatEventBase extends Event implements Cancellable { */ @Nullable public String getGroupID(CommandSender sender) { - return channel.getGroupID(sender); //TODO: Performance-wise it'd be much better to use serialization for player data - it's only converted once + return channel.getGroupID(sender); } } diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java b/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java index 9a512ee..6601530 100755 --- a/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java @@ -30,13 +30,9 @@ public class TBMCChatPreprocessEvent extends Event implements Cancellable { super(true); this.sender = sender; this.channel = channel; - this.message = message; // TODO: Message object with data? + this.message = message; } - /* - * public TBMCPlayer getPlayer() { return TBMCPlayer.getPlayer(sender); // TODO: Get Chroma user } - */ - @Override public HandlerList getHandlers() { return handlers; diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java b/Chroma-Core/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java index 5b50d8b..4f0a96a 100644 --- a/Chroma-Core/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java @@ -133,7 +133,8 @@ public abstract class ButtonPlugin extends JavaPlugin { @Override public FileConfiguration getConfig() { if (yaml == null) - justReload(); //TODO: If it fails to load, it'll probably throw an NPE + justReload(); + if (yaml == null) return new YamlConfiguration(); //Return a temporary instance return yaml; } diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java b/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java index 068673b..bc32c2e 100644 --- a/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java @@ -217,7 +217,7 @@ public class Command2MC extends Command2 implemen int x = path.indexOf(' '); var mainPath = path.substring(0, x == -1 ? path.length() : x); Command bukkitCommand; - { //TODO: Commands conflicting with Essentials have to be registered in plugin.yml + { //Commands conflicting with Essentials have to be registered in plugin.yml var oldcmd = cmdmap.getCommand(command.getPlugin().getName() + ":" + mainPath); //The label with the fallback prefix is always registered if (oldcmd == null) { bukkitCommand = new BukkitCommand(mainPath); diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/player/TBMCPlayer.java b/Chroma-Core/src/main/java/buttondevteam/lib/player/TBMCPlayer.java index 6c298b3..5bcc329 100755 --- a/Chroma-Core/src/main/java/buttondevteam/lib/player/TBMCPlayer.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/player/TBMCPlayer.java @@ -1,6 +1,6 @@ package buttondevteam.lib.player; -@PlayerClass(pluginname = "ButtonCore") //TODO: Migrate +@PlayerClass(pluginname = "Chroma-Core") public final class TBMCPlayer extends TBMCPlayerBase { }