From 673f03a6893dba064fbb532167da3b46f5bd7e8f Mon Sep 17 00:00:00 2001 From: SBDeveloper Date: Mon, 9 Jan 2023 21:16:07 +0100 Subject: [PATCH 1/3] Rewritten detector API --- pom.xml | 23 ++++++++ .../showcontrol/ShowControlPlugin.java | 10 +--- .../api/InvalidTriggerException.java | 7 +++ .../sbdeveloper/showcontrol/api/ShowAPI.java | 57 +++++++++++++++++++ .../api/{ShowCue.java => ShowCuePoint.java} | 12 ++-- .../api/TooFewArgumentsException.java | 7 +++ .../showcontrol/api/TriggerType.java | 29 ---------- .../api/triggers/AnimaTrigger.java | 20 ------- .../api/triggers/CommandTrigger.java | 20 ------- .../Trigger.java} | 31 ++++------ .../api/triggers/TriggerIdentifier.java | 14 +++++ .../api/triggers/impl/AnimaTrigger.java | 17 ++++++ .../api/triggers/impl/CommandTrigger.java | 17 ++++++ .../triggers/{ => impl}/FireworkTrigger.java | 11 ++-- .../triggers/impl/FlameThrowerTrigger.java | 16 ++++++ .../api/triggers/{ => impl}/LaserTrigger.java | 15 +++-- .../triggers/{ => impl}/ParticleTrigger.java | 11 ++-- .../api/triggers/{ => impl}/SpotTrigger.java | 13 +++-- .../showcontrol/commands/ShowCMD.java | 19 +++++-- .../showcontrol/data/DataConversion.java | 46 --------------- .../showcontrol/data/DataSaving.java | 26 ++++++--- .../sbdeveloper/showcontrol/data/Shows.java | 27 ++++----- .../showcontrol/gui/ShowCueGUI.java | 4 +- .../showcontrol/utils/MainUtil.java | 31 +--------- src/main/resources/plugin.yml | 2 +- 25 files changed, 253 insertions(+), 232 deletions(-) create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/InvalidTriggerException.java create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java rename src/main/java/nl/sbdeveloper/showcontrol/api/{ShowCue.java => ShowCuePoint.java} (78%) create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/TooFewArgumentsException.java delete mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/TriggerType.java delete mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/triggers/AnimaTrigger.java delete mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/triggers/CommandTrigger.java rename src/main/java/nl/sbdeveloper/showcontrol/api/{TriggerTask.java => triggers/Trigger.java} (60%) create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java rename src/main/java/nl/sbdeveloper/showcontrol/api/triggers/{ => impl}/FireworkTrigger.java (87%) create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java rename src/main/java/nl/sbdeveloper/showcontrol/api/triggers/{ => impl}/LaserTrigger.java (70%) rename src/main/java/nl/sbdeveloper/showcontrol/api/triggers/{ => impl}/ParticleTrigger.java (79%) rename src/main/java/nl/sbdeveloper/showcontrol/api/triggers/{ => impl}/SpotTrigger.java (75%) delete mode 100644 src/main/java/nl/sbdeveloper/showcontrol/data/DataConversion.java diff --git a/pom.xml b/pom.xml index df1e547..f8e7705 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,13 @@ 3.10.1 17 + + + org.projectlombok + lombok + 1.18.24 + + -parameters @@ -69,6 +76,10 @@ co.aikar.locales nl.sbdeveloper.showcontrol.libs.locales + + org.reflections + nl.sbdeveloper.showcontrol.libs.reflections + @@ -132,5 +143,17 @@ 2.3.1 compile + + org.projectlombok + lombok + 1.18.24 + provided + + + org.reflections + reflections + 0.10.2 + compile + diff --git a/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java b/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java index d6b5b09..faaa2e3 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java @@ -1,18 +1,14 @@ package nl.sbdeveloper.showcontrol; import co.aikar.commands.PaperCommandManager; -import nl.sbdeveloper.showcontrol.api.TriggerType; +import nl.sbdeveloper.showcontrol.api.ShowAPI; import nl.sbdeveloper.showcontrol.commands.ShowCMD; -import nl.sbdeveloper.showcontrol.data.DataConversion; import nl.sbdeveloper.showcontrol.data.DataSaving; import nl.sbdeveloper.showcontrol.data.Shows; import nl.sbdeveloper.showcontrol.utils.Inventory; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; -import java.util.Arrays; -import java.util.stream.Collectors; - public final class ShowControlPlugin extends JavaPlugin { private static ShowControlPlugin instance; @@ -20,15 +16,13 @@ public final class ShowControlPlugin extends JavaPlugin { public void onEnable() { instance = this; - DataConversion.handle(); - final PaperCommandManager commandManager = new PaperCommandManager(this); commandManager.enableUnstableAPI("help"); commandManager.registerCommand(new ShowCMD()); commandManager.getCommandCompletions().registerCompletion("showname", c -> Shows.getShowsMap().keySet()); - commandManager.getCommandCompletions().registerStaticCompletion("showtype", Arrays.stream(TriggerType.values()).map(Enum::name).collect(Collectors.toList())); + commandManager.getCommandCompletions().registerCompletion("showtype", c -> ShowAPI.getTriggers().keySet()); Inventory.init(); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/InvalidTriggerException.java b/src/main/java/nl/sbdeveloper/showcontrol/api/InvalidTriggerException.java new file mode 100644 index 0000000..da8c819 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/InvalidTriggerException.java @@ -0,0 +1,7 @@ +package nl.sbdeveloper.showcontrol.api; + +import lombok.experimental.StandardException; + +@StandardException +public class InvalidTriggerException extends Exception { +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java b/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java new file mode 100644 index 0000000..f6cdbfe --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java @@ -0,0 +1,57 @@ +package nl.sbdeveloper.showcontrol.api; + +import lombok.Getter; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; +import org.bukkit.Bukkit; +import org.reflections.Reflections; +import org.reflections.scanners.MethodAnnotationsScanner; +import org.reflections.scanners.Scanners; +import org.reflections.scanners.SubTypesScanner; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.*; + +public class ShowAPI { + @Getter + private static final Map> triggers = new HashMap<>(); + + public static void index(Class clazz, String... packages) { + Bukkit.getLogger().info("Indexing triggers for starting point " + clazz.getSimpleName() + "..."); + + FilterBuilder filterBuilder = new FilterBuilder(); + for (String p : packages) filterBuilder.includePackage(p); + + ConfigurationBuilder config = new ConfigurationBuilder() + .setScanners(Scanners.SubTypes.filterResultsBy(new FilterBuilder().includePattern(Trigger.class.getName())), Scanners.TypesAnnotated) + .setUrls(ClasspathHelper.forClass(clazz)) + .filterInputsBy(filterBuilder); + + Reflections reflections = new Reflections(config); + + Set> trig = reflections.getTypesAnnotatedWith(TriggerIdentifier.class); + for (Class trigger : trig) { + Bukkit.getLogger().info("Found trigger " + trigger.getSimpleName() + "."); + + TriggerIdentifier identifier = trigger.getAnnotation(TriggerIdentifier.class); + triggers.put(identifier.value(), (Class) trigger); + } + } + + public static T getTrigger(String data) throws ReflectiveOperationException, InvalidTriggerException, TooFewArgumentsException { + String[] dataSplitter = data.split(" "); + String[] dataSplitterNew = Arrays.copyOfRange(dataSplitter, 1, dataSplitter.length); + + String triggerType = dataSplitter[0]; + + if (!triggers.containsKey(triggerType)) throw new InvalidTriggerException("Provided trigger " + triggerType + " does not exists!"); + + Constructor ctor = (Constructor) triggers.get(triggerType).getConstructor(String[].class); + if (dataSplitter.length < triggers.get(triggerType).getAnnotation(TriggerIdentifier.class).minArgs() + 1) throw new TooFewArgumentsException("Provided triggerdata " + data + " has too few arguments!"); + return ctor.newInstance(dataSplitterNew); + } +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/ShowCue.java b/src/main/java/nl/sbdeveloper/showcontrol/api/ShowCuePoint.java similarity index 78% rename from src/main/java/nl/sbdeveloper/showcontrol/api/ShowCue.java rename to src/main/java/nl/sbdeveloper/showcontrol/api/ShowCuePoint.java index 54084a5..5e790d3 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/ShowCue.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/ShowCuePoint.java @@ -1,14 +1,16 @@ package nl.sbdeveloper.showcontrol.api; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; + import java.util.UUID; /** * A cue point of a show */ -public class ShowCue { +public class ShowCuePoint { private final UUID cueID; private final Long time; - private final TriggerTask data; + private final Trigger data; /** * Create a new cue point @@ -16,7 +18,7 @@ public class ShowCue { * @param time The starttime (milli) * @param data The data */ - public ShowCue(Long time, TriggerTask data) { + public ShowCuePoint(Long time, Trigger data) { this(UUID.randomUUID(), time, data); } @@ -27,7 +29,7 @@ public class ShowCue { * @param time The starttime (milli) * @param data The data */ - public ShowCue(UUID uuid, Long time, TriggerTask data) { + public ShowCuePoint(UUID uuid, Long time, Trigger data) { this.cueID = uuid; this.time = time; this.data = data; @@ -56,7 +58,7 @@ public class ShowCue { * * @return The data */ - public TriggerTask getTask() { + public Trigger getTask() { return data; } } \ No newline at end of file diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/TooFewArgumentsException.java b/src/main/java/nl/sbdeveloper/showcontrol/api/TooFewArgumentsException.java new file mode 100644 index 0000000..4482507 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/TooFewArgumentsException.java @@ -0,0 +1,7 @@ +package nl.sbdeveloper.showcontrol.api; + +import lombok.experimental.StandardException; + +@StandardException +public class TooFewArgumentsException extends Exception { +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/TriggerType.java b/src/main/java/nl/sbdeveloper/showcontrol/api/TriggerType.java deleted file mode 100644 index 8593766..0000000 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/TriggerType.java +++ /dev/null @@ -1,29 +0,0 @@ -package nl.sbdeveloper.showcontrol.api; - -import nl.sbdeveloper.showcontrol.api.triggers.*; - -public enum TriggerType { - COMMAND(CommandTrigger.class, 2), - FIREWORK(FireworkTrigger.class, 6), - FAKE_FIREWORK(FakeFireworkTrigger.class, 7), - SPOT(SpotTrigger.class, 6), - LASER(LaserTrigger.class, 6), - ANIMA(AnimaTrigger.class, 2), - PARTICLE(ParticleTrigger.class, 7); - - private final Class trigger; - private final int minArgs; - - TriggerType(Class trigger, int minArgs) { - this.trigger = trigger; - this.minArgs = minArgs; - } - - public Class getTrigger() { - return trigger; - } - - public int getMinArgs() { - return minArgs; - } -} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/AnimaTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/AnimaTrigger.java deleted file mode 100644 index 6da09aa..0000000 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/AnimaTrigger.java +++ /dev/null @@ -1,20 +0,0 @@ -package nl.sbdeveloper.showcontrol.api.triggers; - -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; -import org.bukkit.Bukkit; - -public class AnimaTrigger extends TriggerTask { - private final String name; - - public AnimaTrigger(String[] data) { - super(TriggerType.ANIMA, data); - - this.name = getDataString(); - } - - @Override - public void trigger() { - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + name); - } -} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/CommandTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/CommandTrigger.java deleted file mode 100644 index bfe9317..0000000 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/CommandTrigger.java +++ /dev/null @@ -1,20 +0,0 @@ -package nl.sbdeveloper.showcontrol.api.triggers; - -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; -import org.bukkit.Bukkit; - -public class CommandTrigger extends TriggerTask { - private final String command; - - public CommandTrigger(String[] data) { - super(TriggerType.COMMAND, data); - - this.command = getDataString(); - } - - @Override - public void trigger() { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), command); - } -} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/TriggerTask.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/Trigger.java similarity index 60% rename from src/main/java/nl/sbdeveloper/showcontrol/api/TriggerTask.java rename to src/main/java/nl/sbdeveloper/showcontrol/api/triggers/Trigger.java index 69e155b..693c082 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/TriggerTask.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/Trigger.java @@ -1,17 +1,13 @@ -package nl.sbdeveloper.showcontrol.api; +package nl.sbdeveloper.showcontrol.api.triggers; -public abstract class TriggerTask { - private final TriggerType type; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public abstract class Trigger { private final String[] dataString; - /** - * Create a new trigger - */ - public TriggerTask(TriggerType type, String[] dataString) { - this.type = type; - this.dataString = dataString; - } - /** * This method gets fired when the cue gets triggered */ @@ -23,15 +19,6 @@ public abstract class TriggerTask { */ public void remove() {} - /** - * Get the trigger type - * - * @return The trigger type - */ - public TriggerType getType() { - return type; - } - /** * Get the datastring from this cue * @@ -44,4 +31,8 @@ public abstract class TriggerTask { } return builder.toString().trim(); } + + public String getTriggerId() { + return getClass().getAnnotation(TriggerIdentifier.class).value(); + } } \ No newline at end of file diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java new file mode 100644 index 0000000..5550d0e --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java @@ -0,0 +1,14 @@ +package nl.sbdeveloper.showcontrol.api.triggers; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface TriggerIdentifier { + String value(); + int minArgs() default 0; + String argDesc() default ""; +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java new file mode 100644 index 0000000..9b05106 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java @@ -0,0 +1,17 @@ +package nl.sbdeveloper.showcontrol.api.triggers.impl; + +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; +import org.bukkit.Bukkit; + +@TriggerIdentifier(value = "animatronic", minArgs = 1, argDesc = "") +public class AnimaTrigger extends Trigger { + public AnimaTrigger(String[] data) { + super(data); + } + + @Override + public void trigger() { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + getDataString()); + } +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java new file mode 100644 index 0000000..89da389 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java @@ -0,0 +1,17 @@ +package nl.sbdeveloper.showcontrol.api.triggers.impl; + +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; +import org.bukkit.Bukkit; + +@TriggerIdentifier(value = "command", minArgs = 1, argDesc = "") +public class CommandTrigger extends Trigger { + public CommandTrigger(String[] data) { + super(data); + } + + @Override + public void trigger() { + Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), getDataString()); + } +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/FireworkTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java similarity index 87% rename from src/main/java/nl/sbdeveloper/showcontrol/api/triggers/FireworkTrigger.java rename to src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java index 1973059..0c69fca 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/FireworkTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java @@ -1,7 +1,7 @@ -package nl.sbdeveloper.showcontrol.api.triggers; +package nl.sbdeveloper.showcontrol.api.triggers.impl; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import nl.sbdeveloper.showcontrol.elements.Fireworks; import nl.sbdeveloper.showcontrol.utils.Color; import org.bukkit.Bukkit; @@ -9,12 +9,13 @@ import org.bukkit.FireworkEffect; import org.bukkit.Location; import org.bukkit.World; -public class FireworkTrigger extends TriggerTask { +@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = " ") +public class FireworkTrigger extends Trigger { private Fireworks.Firework fw; private Location spawnLoc; public FireworkTrigger(String[] data) { - super(TriggerType.FIREWORK, data); + super(data); World w = Bukkit.getWorld(data[0]); if (w == null) { diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java new file mode 100644 index 0000000..179acb8 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java @@ -0,0 +1,16 @@ +package nl.sbdeveloper.showcontrol.api.triggers.impl; + +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; + +@TriggerIdentifier(value = "flamethrower", minArgs = 5, argDesc = " ") +public class FlameThrowerTrigger extends Trigger { + public FlameThrowerTrigger(String[] dataString) { + super(dataString); + } + + @Override + public void trigger() { + + } +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/LaserTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java similarity index 70% rename from src/main/java/nl/sbdeveloper/showcontrol/api/triggers/LaserTrigger.java rename to src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java index 3013b05..d07183c 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/LaserTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java @@ -1,19 +1,19 @@ -package nl.sbdeveloper.showcontrol.api.triggers; +package nl.sbdeveloper.showcontrol.api.triggers.impl; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import nl.sbdeveloper.showcontrol.elements.Lasers; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; -public class LaserTrigger extends TriggerTask { +@TriggerIdentifier(value = "laser", minArgs = 5, argDesc = " ") +public class LaserTrigger extends Trigger { private final String name; private Location newLocation; - //TODO Fix laser for 1.17 public LaserTrigger(String[] data) { - super(TriggerType.LASER, data); + super(data); this.name = data[0]; @@ -44,8 +44,7 @@ public class LaserTrigger extends TriggerTask { @Override public void trigger() { - Bukkit.broadcastMessage("[ShowAPI] De trigger " + name + " is genegeerd, omdat de LASER is disabled."); -// ShowAPI.Lasers.move(name, newLocation); + Lasers.move(name, newLocation); } @Override diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/ParticleTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java similarity index 79% rename from src/main/java/nl/sbdeveloper/showcontrol/api/triggers/ParticleTrigger.java rename to src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java index 1387f12..e692bbe 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/ParticleTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java @@ -1,19 +1,20 @@ -package nl.sbdeveloper.showcontrol.api.triggers; +package nl.sbdeveloper.showcontrol.api.triggers.impl; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Particle; import org.bukkit.World; -public class ParticleTrigger extends TriggerTask { +@TriggerIdentifier(value = "particle", minArgs = 6, argDesc = " ") +public class ParticleTrigger extends Trigger { private Particle type; private Location spawnLoc; private int count; public ParticleTrigger(String[] data) { - super(TriggerType.PARTICLE, data); + super(data); World w = Bukkit.getWorld(data[0]); if (w == null) { diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/SpotTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java similarity index 75% rename from src/main/java/nl/sbdeveloper/showcontrol/api/triggers/SpotTrigger.java rename to src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java index 14d7883..d516af7 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/SpotTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java @@ -1,18 +1,19 @@ -package nl.sbdeveloper.showcontrol.api.triggers; +package nl.sbdeveloper.showcontrol.api.triggers.impl; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; +import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import nl.sbdeveloper.showcontrol.elements.Spots; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; -public class SpotTrigger extends TriggerTask { +@TriggerIdentifier(value = "spot", minArgs = 5, argDesc = " ") +public class SpotTrigger extends Trigger { private final String name; private Location newLocation; public SpotTrigger(String[] data) { - super(TriggerType.SPOT, data); + super(data); this.name = data[0]; @@ -43,7 +44,7 @@ public class SpotTrigger extends TriggerTask { @Override public void trigger() { -// ShowAPI.Spots.move(name, newLocation); + Spots.move(name, newLocation); Bukkit.broadcastMessage("[ShowAPI] De trigger " + name + " is genegeerd, omdat de SPOT is disabled."); } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java b/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java index e211b82..baaa3fb 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java @@ -2,10 +2,12 @@ package nl.sbdeveloper.showcontrol.commands; import co.aikar.commands.BaseCommand; import co.aikar.commands.annotation.*; -import nl.sbdeveloper.showcontrol.api.TriggerTask; +import nl.sbdeveloper.showcontrol.api.InvalidTriggerException; +import nl.sbdeveloper.showcontrol.api.ShowAPI; +import nl.sbdeveloper.showcontrol.api.TooFewArgumentsException; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.data.Shows; import nl.sbdeveloper.showcontrol.gui.ShowCueGUI; -import nl.sbdeveloper.showcontrol.utils.MainUtil; import nl.sbdeveloper.showcontrol.utils.TimeUtil; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -67,8 +69,17 @@ public class ShowCMD extends BaseCommand { return; } - TriggerTask data = MainUtil.parseData(args); - if (data == null) { + Trigger data; + try { + data = ShowAPI.getTrigger(args); + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + sender.sendMessage(ChatColor.RED + "Er is iets fout gegaan! Vraag de server eigenaar voor meer informatie."); + return; + } catch (InvalidTriggerException e) { + sender.sendMessage(ChatColor.RED + "De meegegeven trigger bestaat niet."); + return; + } catch (TooFewArgumentsException e) { sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger."); return; } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/data/DataConversion.java b/src/main/java/nl/sbdeveloper/showcontrol/data/DataConversion.java deleted file mode 100644 index 050ca8e..0000000 --- a/src/main/java/nl/sbdeveloper/showcontrol/data/DataConversion.java +++ /dev/null @@ -1,46 +0,0 @@ -package nl.sbdeveloper.showcontrol.data; - -import nl.sbdeveloper.showcontrol.ShowControlPlugin; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.utils.MainUtil; -import nl.sbdeveloper.showcontrol.utils.YamlFile; - -import java.io.File; - -public class DataConversion { - public static void handle() { - if (isOldSystem()) convert(); - } - - private static boolean isOldSystem() { - File dataFolder = ShowControlPlugin.getInstance().getDataFolder(); - File dataFile = new File(dataFolder, "data.yml"); - return dataFile.exists(); - } - - private static void convert() { - File dataFolder = new File(ShowControlPlugin.getInstance().getDataFolder(), "data"); - if(!dataFolder.exists()) { - dataFolder.mkdirs(); - } - - YamlFile dataFile = new YamlFile("data"); - for (String name : dataFile.getFile().getConfigurationSection("Shows").getKeys(false)) { - //STEP 1: Convert to new system. - YamlFile showFile = new YamlFile("data/" + name); - for (String id : dataFile.getFile().getConfigurationSection("Shows." + name).getKeys(false)) { - TriggerTask data = MainUtil.parseData(dataFile.getFile().getString("Shows." + name + "." + id + ".Type") + " " + dataFile.getFile().getString("Shows." + name + "." + id + ".Data")); - long time = dataFile.getFile().getLong("Shows." + name + "." + id + ".Time"); - - showFile.getFile().set(id + ".Time", time); - showFile.getFile().set(id + ".Type", data.getType().name()); - showFile.getFile().set(id + ".Data", data.getDataString()); - } - showFile.saveFile(); - } - - //STEP 2: Remove old storage. - File data = new File(ShowControlPlugin.getInstance().getDataFolder(), "data.yml"); - data.delete(); - } -} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java b/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java index 2cadede..11db140 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java @@ -1,9 +1,11 @@ package nl.sbdeveloper.showcontrol.data; import nl.sbdeveloper.showcontrol.ShowControlPlugin; -import nl.sbdeveloper.showcontrol.api.ShowCue; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.utils.MainUtil; +import nl.sbdeveloper.showcontrol.api.InvalidTriggerException; +import nl.sbdeveloper.showcontrol.api.ShowAPI; +import nl.sbdeveloper.showcontrol.api.ShowCuePoint; +import nl.sbdeveloper.showcontrol.api.TooFewArgumentsException; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.utils.YamlFile; import java.io.File; @@ -23,24 +25,30 @@ public class DataSaving { YamlFile showConfig = new YamlFile("data/" + showID); files.put(showID, showConfig); - List cues = new ArrayList<>(); + List cues = new ArrayList<>(); for (String id : showConfig.getFile().getKeys(false)) { UUID cueID = UUID.fromString(id); - TriggerTask data = MainUtil.parseData(showConfig.getFile().getString(id + ".Type") + " " + showConfig.getFile().getString(id + ".Data")); + Trigger data; + try { + data = ShowAPI.getTrigger(showConfig.getFile().getString(id + ".Type") + " " + showConfig.getFile().getString(id + ".Data")); + } catch (ReflectiveOperationException | InvalidTriggerException | TooFewArgumentsException e) { + e.printStackTrace(); + return; + } long time = showConfig.getFile().getLong(id + ".Time"); - cues.add(new ShowCue(cueID, time, data)); + cues.add(new ShowCuePoint(cueID, time, data)); } Shows.getShowsMap().put(showID, cues); } } public static void save() { - for (Map.Entry> entry : Shows.getShowsMap().entrySet()) { + for (Map.Entry> entry : Shows.getShowsMap().entrySet()) { YamlFile file = files.containsKey(entry.getKey()) ? files.get(entry.getKey()) : new YamlFile("data/" + entry.getKey()); - for (ShowCue cue : entry.getValue()) { + for (ShowCuePoint cue : entry.getValue()) { file.getFile().set(cue.getCueID().toString() + ".Time", cue.getTime()); - file.getFile().set(cue.getCueID().toString() + ".Type", cue.getTask().getType().name()); + file.getFile().set(cue.getCueID().toString() + ".Type", cue.getTask().getTriggerId()); file.getFile().set(cue.getCueID().toString() + ".Data", cue.getTask().getDataString()); } file.saveFile(); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java b/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java index 2d21ebf..dd8c8bf 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java @@ -1,8 +1,9 @@ package nl.sbdeveloper.showcontrol.data; +import lombok.Getter; import nl.sbdeveloper.showcontrol.ShowControlPlugin; -import nl.sbdeveloper.showcontrol.api.ShowCue; -import nl.sbdeveloper.showcontrol.api.TriggerTask; +import nl.sbdeveloper.showcontrol.api.ShowCuePoint; +import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.utils.YamlFile; import org.bukkit.Bukkit; @@ -10,18 +11,19 @@ import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class Shows { - private static final HashMap> showsMap = new HashMap<>(); + @Getter + private static final HashMap> showsMap = new HashMap<>(); private static final HashMap showTimers = new HashMap<>(); public static void create(String name) { showsMap.put(name, new ArrayList<>()); DataSaving.save(); -// Bukkit.getScheduler().runTaskAsynchronously(ShowAPIPlugin.getInstance(), DataSaving::save); } public static void delete(String name) { @@ -35,19 +37,18 @@ public class Shows { return showsMap.containsKey(name); } - public static List getPoints(String name) { + public static List getPoints(String name) { if (!exists(name)) return new ArrayList<>(); return showsMap.get(name); } - public static void addPoint(String name, Long time, TriggerTask data) { + public static void addPoint(String name, Long time, Trigger data) { if (!exists(name)) return; - getPoints(name).add(new ShowCue(time, data)); + getPoints(name).add(new ShowCuePoint(time, data)); DataSaving.save(); -// Bukkit.getScheduler().runTaskAsynchronously(ShowAPIPlugin.getInstance(), DataSaving::save); } - public static void removePoint(String name, ShowCue point) { + public static void removePoint(String name, ShowCuePoint point) { if (!exists(name)) return; point.getTask().remove(); @@ -62,9 +63,7 @@ public class Shows { public static void startShow(String name) { if (!exists(name)) return; ScheduledExecutorService showTimer = Executors.newSingleThreadScheduledExecutor(); - Bukkit.getLogger().info("Scheduled show " + name); - for (ShowCue point : getPoints(name)) { - Bukkit.getLogger().info("Point " + point.getTask().getDataString() + " on " + point.getTime()); + for (ShowCuePoint point : getPoints(name)) { showTimer.schedule(() -> Bukkit.getScheduler().runTask(ShowControlPlugin.getInstance(), () -> point.getTask().trigger()), point.getTime(), TimeUnit.MILLISECONDS); } showTimers.put(name, showTimer); @@ -76,8 +75,4 @@ public class Shows { ScheduledExecutorService showTimer = showTimers.get(name); showTimer.shutdownNow(); } - - public static HashMap> getShowsMap() { - return showsMap; - } } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/gui/ShowCueGUI.java b/src/main/java/nl/sbdeveloper/showcontrol/gui/ShowCueGUI.java index 9d661b7..5d3569a 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/gui/ShowCueGUI.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/gui/ShowCueGUI.java @@ -4,7 +4,7 @@ import fr.minuskube.inv.ClickableItem; import fr.minuskube.inv.content.InventoryContents; import fr.minuskube.inv.content.Pagination; import fr.minuskube.inv.content.SlotIterator; -import nl.sbdeveloper.showcontrol.api.ShowCue; +import nl.sbdeveloper.showcontrol.api.ShowCuePoint; import nl.sbdeveloper.showcontrol.data.Shows; import nl.sbdeveloper.showcontrol.utils.Inventory; import nl.sbdeveloper.showcontrol.utils.ItemBuilder; @@ -33,7 +33,7 @@ public class ShowCueGUI extends Inventory { Pagination pagination = contents.pagination(); List items = new ArrayList<>(); - Shows.getPoints(showName).stream().sorted(Comparator.comparing(ShowCue::getTime)) + Shows.getPoints(showName).stream().sorted(Comparator.comparing(ShowCuePoint::getTime)) .forEach(cue -> items.add(ClickableItem.of(MainUtil.pointToItem(cue), e -> { Shows.removePoint(showName, cue); open(player, pagination.getPage()); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/utils/MainUtil.java b/src/main/java/nl/sbdeveloper/showcontrol/utils/MainUtil.java index 9867375..b7856f9 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/utils/MainUtil.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/utils/MainUtil.java @@ -1,17 +1,12 @@ package nl.sbdeveloper.showcontrol.utils; -import nl.sbdeveloper.showcontrol.api.ShowCue; -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; +import nl.sbdeveloper.showcontrol.api.ShowCuePoint; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.util.ChatPaginator; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class MainUtil { @@ -19,12 +14,12 @@ public class MainUtil { return ChatColor.translateAlternateColorCodes('&', in); } - public static ItemStack pointToItem(ShowCue point) { + public static ItemStack pointToItem(ShowCuePoint point) { ItemBuilder builder = new ItemBuilder(Material.NOTE_BLOCK); builder.setName(ChatColor.ITALIC + "TimeCode: " + TimeUtil.makeReadable(point.getTime())); List lores = new ArrayList<>(); - lores.add(ChatColor.GREEN + "Type: " + ChatColor.AQUA + capitalize(point.getTask().getType().name())); + lores.add(ChatColor.GREEN + "Type: " + ChatColor.AQUA + capitalize(point.getTask().getTriggerId())); lores.add(ChatColor.GREEN + "Data:"); for (String str : ChatPaginator.paginate(point.getTask().getDataString(), 20).getLines()) { lores.add(ChatColor.AQUA + ChatColor.stripColor(str)); @@ -36,26 +31,6 @@ public class MainUtil { return builder.toItemStack(); } - public static TriggerTask parseData(String data) { - String[] dataSplitter = data.split(" "); - String[] dataSplitterNew = Arrays.copyOfRange(dataSplitter, 1, dataSplitter.length); - - TriggerType type; - try { - type = TriggerType.valueOf(dataSplitter[0].toUpperCase()); - } catch (IllegalArgumentException ex) { - return null; - } - - try { - Constructor ctor = type.getTrigger().getConstructor(String[].class); - if (dataSplitter.length < type.getMinArgs()) return null; - return ctor.newInstance(dataSplitterNew); - } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { - return null; - } - } - public static String capitalize(String str) { return str.substring(0, 1).toUpperCase() + str.substring(1); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5544498..365dcb5 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,5 +3,5 @@ version: ${project.version} main: nl.sbdeveloper.showcontrol.ShowControlPlugin api-version: 1.13 authors: [SBDeveloper] -description: Make perfect shows with this API! +description: Create shows easily using this plugin! website: https://sbdevelopment.tech \ No newline at end of file From 0d615f6954c8bd4a11baccad5025139efe37934c Mon Sep 17 00:00:00 2001 From: SBDeveloper Date: Mon, 9 Jan 2023 21:29:05 +0100 Subject: [PATCH 2/3] Improved API further --- .../showcontrol/ShowControlPlugin.java | 31 ++++++++++---- .../api/InvalidArgumentException.java | 7 ++++ .../sbdeveloper/showcontrol/api/ShowAPI.java | 8 ++-- .../api/triggers/TriggerIdentifier.java | 3 ++ .../api/triggers/impl/AnimaTrigger.java | 3 +- .../api/triggers/impl/CommandTrigger.java | 3 +- .../api/triggers/impl/FireworkTrigger.java | 20 ++++----- .../triggers/impl/FlameThrowerTrigger.java | 5 ++- .../api/triggers/impl/LaserTrigger.java | 11 +++-- .../api/triggers/impl/ParticleTrigger.java | 20 ++++----- .../api/triggers/impl/SpotTrigger.java | 11 +++-- .../showcontrol/commands/ShowCMD.java | 41 ++++++++----------- .../{DataSaving.java => DataStorage.java} | 2 +- .../sbdeveloper/showcontrol/data/Shows.java | 7 ++-- 14 files changed, 91 insertions(+), 81 deletions(-) create mode 100644 src/main/java/nl/sbdeveloper/showcontrol/api/InvalidArgumentException.java rename src/main/java/nl/sbdeveloper/showcontrol/data/{DataSaving.java => DataStorage.java} (99%) diff --git a/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java b/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java index faaa2e3..74a28d7 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/ShowControlPlugin.java @@ -3,7 +3,7 @@ package nl.sbdeveloper.showcontrol; import co.aikar.commands.PaperCommandManager; import nl.sbdeveloper.showcontrol.api.ShowAPI; import nl.sbdeveloper.showcontrol.commands.ShowCMD; -import nl.sbdeveloper.showcontrol.data.DataSaving; +import nl.sbdeveloper.showcontrol.data.DataStorage; import nl.sbdeveloper.showcontrol.data.Shows; import nl.sbdeveloper.showcontrol.utils.Inventory; import org.bukkit.Bukkit; @@ -16,26 +16,41 @@ public final class ShowControlPlugin extends JavaPlugin { public void onEnable() { instance = this; + getLogger().info("-------------------------------"); + getLogger().info("ShowControl v" + getDescription().getVersion()); + getLogger().info("Made by SBDeveloper"); + getLogger().info(" "); + + getLogger().info("Loading commands..."); final PaperCommandManager commandManager = new PaperCommandManager(this); commandManager.enableUnstableAPI("help"); - commandManager.registerCommand(new ShowCMD()); - commandManager.getCommandCompletions().registerCompletion("showname", c -> Shows.getShowsMap().keySet()); commandManager.getCommandCompletions().registerCompletion("showtype", c -> ShowAPI.getTriggers().keySet()); + getLogger().info("Loading GUI manageer..."); Inventory.init(); - Bukkit.getScheduler().runTaskLater(this, DataSaving::load, 1L); //Load 1 tick later, because of multi world + getLogger().info("Loading default triggers..."); + ShowAPI.index(ShowControlPlugin.class, "nl.sbdeveloper.showcontrol.api.triggers.impl"); + + Bukkit.getScheduler().runTaskLater(this, () -> { + getLogger().info("Loading data..."); + DataStorage.load(); + }, 1L); //Load 1 tick later, because of multi world + + getLogger().info("Plugin enabled!"); + getLogger().info("-------------------------------"); } @Override public void onDisable() { - instance = null; - - DataSaving.save(); - + getLogger().info("Saving data..."); + DataStorage.save(); Shows.getShowsMap().values().forEach(show -> show.forEach(showCue -> showCue.getTask().remove())); + + getLogger().info("Plugin disabled!"); + instance = null; } public static ShowControlPlugin getInstance() { diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/InvalidArgumentException.java b/src/main/java/nl/sbdeveloper/showcontrol/api/InvalidArgumentException.java new file mode 100644 index 0000000..549ab01 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/InvalidArgumentException.java @@ -0,0 +1,7 @@ +package nl.sbdeveloper.showcontrol.api; + +import lombok.experimental.StandardException; + +@StandardException +public class InvalidArgumentException extends Exception { +} diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java b/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java index f6cdbfe..94d3204 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java @@ -5,16 +5,16 @@ import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import org.bukkit.Bukkit; import org.reflections.Reflections; -import org.reflections.scanners.MethodAnnotationsScanner; import org.reflections.scanners.Scanners; -import org.reflections.scanners.SubTypesScanner; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.reflections.util.FilterBuilder; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; public class ShowAPI { @Getter diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java index 5550d0e..9c29cc2 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java @@ -1,5 +1,7 @@ package nl.sbdeveloper.showcontrol.api.triggers; +import org.bukkit.Material; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -11,4 +13,5 @@ public @interface TriggerIdentifier { String value(); int minArgs() default 0; String argDesc() default ""; + Material item() default Material.NOTE_BLOCK; } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java index 9b05106..30d62a9 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java @@ -3,8 +3,9 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import org.bukkit.Bukkit; +import org.bukkit.Material; -@TriggerIdentifier(value = "animatronic", minArgs = 1, argDesc = "") +@TriggerIdentifier(value = "animatronic", minArgs = 1, argDesc = "", item = Material.ARMOR_STAND) public class AnimaTrigger extends Trigger { public AnimaTrigger(String[] data) { super(data); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java index 89da389..c404768 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java @@ -3,8 +3,9 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import org.bukkit.Bukkit; +import org.bukkit.Material; -@TriggerIdentifier(value = "command", minArgs = 1, argDesc = "") +@TriggerIdentifier(value = "command", minArgs = 1, argDesc = "", item = Material.COMMAND_BLOCK) public class CommandTrigger extends Trigger { public CommandTrigger(String[] data) { super(data); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java index 0c69fca..b1b2069 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FireworkTrigger.java @@ -1,26 +1,23 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; +import nl.sbdeveloper.showcontrol.api.InvalidArgumentException; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import nl.sbdeveloper.showcontrol.elements.Fireworks; import nl.sbdeveloper.showcontrol.utils.Color; -import org.bukkit.Bukkit; -import org.bukkit.FireworkEffect; -import org.bukkit.Location; -import org.bukkit.World; +import org.bukkit.*; -@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = " ") +@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = " ", item = Material.FIREWORK_ROCKET) public class FireworkTrigger extends Trigger { - private Fireworks.Firework fw; - private Location spawnLoc; + private final Fireworks.Firework fw; + private final Location spawnLoc; - public FireworkTrigger(String[] data) { + public FireworkTrigger(String[] data) throws InvalidArgumentException { super(data); World w = Bukkit.getWorld(data[0]); if (w == null) { - Bukkit.getLogger().info("De wereld is null!"); - return; + throw new InvalidArgumentException("Provided World in FireworkTrigger is null!"); } int x; @@ -31,8 +28,7 @@ public class FireworkTrigger extends Trigger { y = Integer.parseInt(data[2]); z = Integer.parseInt(data[3]); } catch (NumberFormatException ex) { - Bukkit.getLogger().info("De positie is incorrect!"); - return; + throw new InvalidArgumentException("Provided position in FireworkTrigger is invalid!"); } this.spawnLoc = new Location(w, x, y, z); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java index 179acb8..0f04df7 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.java @@ -2,8 +2,9 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; +import org.bukkit.Material; -@TriggerIdentifier(value = "flamethrower", minArgs = 5, argDesc = " ") +@TriggerIdentifier(value = "flamethrower", minArgs = 5, argDesc = " ", item = Material.FIRE) public class FlameThrowerTrigger extends Trigger { public FlameThrowerTrigger(String[] dataString) { super(dataString); @@ -11,6 +12,6 @@ public class FlameThrowerTrigger extends Trigger { @Override public void trigger() { - + //TODO Implement } } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java index d07183c..931e0da 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/LaserTrigger.java @@ -1,5 +1,6 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; +import nl.sbdeveloper.showcontrol.api.InvalidArgumentException; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import nl.sbdeveloper.showcontrol.elements.Lasers; @@ -10,17 +11,16 @@ import org.bukkit.World; @TriggerIdentifier(value = "laser", minArgs = 5, argDesc = " ") public class LaserTrigger extends Trigger { private final String name; - private Location newLocation; + private final Location newLocation; - public LaserTrigger(String[] data) { + public LaserTrigger(String[] data) throws InvalidArgumentException { super(data); this.name = data[0]; World w = Bukkit.getWorld(data[1]); if (w == null) { - Bukkit.getLogger().info("De wereld is null!"); - return; + throw new InvalidArgumentException("Provided World in LaserTrigger is null!"); } int x; @@ -31,8 +31,7 @@ public class LaserTrigger extends Trigger { y = Integer.parseInt(data[3]); z = Integer.parseInt(data[4]); } catch (NumberFormatException ex) { - Bukkit.getLogger().info("De positie is null!"); - return; + throw new InvalidArgumentException("Provided position in LaserTrigger is invalid!"); } this.newLocation = new Location(w, x, y, z); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java index e692bbe..e5e8671 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java @@ -1,5 +1,6 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; +import nl.sbdeveloper.showcontrol.api.InvalidArgumentException; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import org.bukkit.Bukkit; @@ -9,17 +10,16 @@ import org.bukkit.World; @TriggerIdentifier(value = "particle", minArgs = 6, argDesc = " ") public class ParticleTrigger extends Trigger { - private Particle type; - private Location spawnLoc; - private int count; + private final Particle type; + private final Location spawnLoc; + private final int count; - public ParticleTrigger(String[] data) { + public ParticleTrigger(String[] data) throws InvalidArgumentException { super(data); World w = Bukkit.getWorld(data[0]); if (w == null) { - Bukkit.getLogger().info("De wereld is null!"); - return; + throw new InvalidArgumentException("Provided World in ParticleTrigger is null!"); } int x; @@ -30,8 +30,7 @@ public class ParticleTrigger extends Trigger { y = Integer.parseInt(data[2]); z = Integer.parseInt(data[3]); } catch (NumberFormatException ex) { - Bukkit.getLogger().info("De positie is incorrect!"); - return; + throw new InvalidArgumentException("Provided position in ParticleTrigger is invalid!"); } this.spawnLoc = new Location(w, x, y, z); @@ -39,14 +38,13 @@ public class ParticleTrigger extends Trigger { try { this.type = Particle.valueOf(data[4]); } catch (IllegalArgumentException ex) { - Bukkit.getLogger().info("De particle " + data[4] + " bestaat niet!"); - return; + throw new InvalidArgumentException("Provided particle " + data[4] + " in ParticleTrigger does not exists!"); } try { this.count = Integer.parseInt(data[5]); } catch (NumberFormatException ex) { - Bukkit.getLogger().info("Het aantal " + data[4] + " is incorrect!"); + throw new InvalidArgumentException("Provided count " + data[5] + " in ParticleTrigger is invalid!"); } } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java index d516af7..ec64ce7 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/SpotTrigger.java @@ -1,5 +1,6 @@ package nl.sbdeveloper.showcontrol.api.triggers.impl; +import nl.sbdeveloper.showcontrol.api.InvalidArgumentException; import nl.sbdeveloper.showcontrol.api.triggers.Trigger; import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier; import nl.sbdeveloper.showcontrol.elements.Spots; @@ -10,17 +11,16 @@ import org.bukkit.World; @TriggerIdentifier(value = "spot", minArgs = 5, argDesc = " ") public class SpotTrigger extends Trigger { private final String name; - private Location newLocation; + private final Location newLocation; - public SpotTrigger(String[] data) { + public SpotTrigger(String[] data) throws InvalidArgumentException { super(data); this.name = data[0]; World w = Bukkit.getWorld(data[1]); if (w == null) { - Bukkit.getLogger().info("De wereld is null!"); - return; + throw new InvalidArgumentException("Provided World in SpotTrigger is null!"); } int x; @@ -31,8 +31,7 @@ public class SpotTrigger extends Trigger { y = Integer.parseInt(data[3]); z = Integer.parseInt(data[4]); } catch (NumberFormatException ex) { - Bukkit.getLogger().info("De positie is null!"); - return; + throw new InvalidArgumentException("Provided position in SpotTrigger is invalid!"); } this.newLocation = new Location(w, x, y, z); diff --git a/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java b/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java index baaa3fb..706d3f9 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java @@ -13,29 +13,20 @@ import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandAlias("mctpshow|show") +@CommandAlias("showcontrol|sc") @CommandPermission("mctp.show") public class ShowCMD extends BaseCommand { - /* - /mctpshow create - /mctpshow delete - /mctpshow add - /mctpshow start - /mctpshow cancel - /mctpshow gui - */ - @Subcommand("create") @Description("") public void onCreate(CommandSender sender, @Single String name) { if (Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat al."); + sender.sendMessage(ChatColor.RED + "That show already exists."); return; } Shows.create(name); - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is aangemaakt!"); + sender.sendMessage(ChatColor.GREEN + "The show " + ChatColor.WHITE + name + ChatColor.GREEN + " has been created!"); } @Subcommand("delete") @@ -43,13 +34,13 @@ public class ShowCMD extends BaseCommand { @CommandCompletion("@showname") public void onDelete(CommandSender sender, @Single String name) { if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + sender.sendMessage(ChatColor.RED + "That show doesn't exists."); return; } Shows.delete(name); - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is verwijderd!"); + sender.sendMessage(ChatColor.GREEN + "The show " + ChatColor.WHITE + name + ChatColor.GREEN + " has been removed!"); } @Subcommand("add") @@ -57,7 +48,7 @@ public class ShowCMD extends BaseCommand { @CommandCompletion("@showname @empty @showtype") public void onAdd(CommandSender sender, String name, String time, String args) { if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + sender.sendMessage(ChatColor.RED + "That show doesn't exists."); return; } @@ -65,7 +56,7 @@ public class ShowCMD extends BaseCommand { try { timeMilli = TimeUtil.toMilis(time); } catch (Exception e) { - sender.sendMessage(ChatColor.RED + "Geef een correcte tijd mee."); + sender.sendMessage(ChatColor.RED + "Provide a valid time, for example 5s (5 seconds) or 10m (10 minutes)."); return; } @@ -74,18 +65,18 @@ public class ShowCMD extends BaseCommand { data = ShowAPI.getTrigger(args); } catch (ReflectiveOperationException e) { e.printStackTrace(); - sender.sendMessage(ChatColor.RED + "Er is iets fout gegaan! Vraag de server eigenaar voor meer informatie."); + sender.sendMessage(ChatColor.RED + "Something went wrong! Please ask a server admin."); return; } catch (InvalidTriggerException e) { - sender.sendMessage(ChatColor.RED + "De meegegeven trigger bestaat niet."); + sender.sendMessage(ChatColor.RED + "The provided trigger does not exists."); return; } catch (TooFewArgumentsException e) { - sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger."); + sender.sendMessage(ChatColor.RED + "You did not provide enough information for the chosen trigger."); return; } Shows.addPoint(name, timeMilli, data); - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " bevat nu een extra punt!"); + sender.sendMessage(ChatColor.GREEN + "The show " + ChatColor.WHITE + name + ChatColor.GREEN + " now contains an extra point!"); } @Subcommand("start") @@ -93,13 +84,13 @@ public class ShowCMD extends BaseCommand { @CommandCompletion("@showname") public void onStart(CommandSender sender, @Single String name) { if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + sender.sendMessage(ChatColor.RED + "That show doesn't exists."); return; } Shows.startShow(name); - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is gestart!"); + sender.sendMessage(ChatColor.GREEN + "The show " + ChatColor.WHITE + name + ChatColor.GREEN + " has been started!"); } @Subcommand("cancel") @@ -107,13 +98,13 @@ public class ShowCMD extends BaseCommand { @CommandCompletion("@showname") public void onCancel(CommandSender sender, @Single String name) { if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + sender.sendMessage(ChatColor.RED + "That show doesn't exists."); return; } Shows.cancelShow(name); - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is gestopt!"); + sender.sendMessage(ChatColor.GREEN + "The show " + ChatColor.WHITE + name + ChatColor.GREEN + " has been stopped!"); } @Subcommand("gui") @@ -121,7 +112,7 @@ public class ShowCMD extends BaseCommand { @CommandCompletion("@showname") public void onGUI(Player sender, @Single String name) { if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + sender.sendMessage(ChatColor.RED + "That show doesn't exists."); return; } diff --git a/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java b/src/main/java/nl/sbdeveloper/showcontrol/data/DataStorage.java similarity index 99% rename from src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java rename to src/main/java/nl/sbdeveloper/showcontrol/data/DataStorage.java index 11db140..ea64d34 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/data/DataStorage.java @@ -11,7 +11,7 @@ import nl.sbdeveloper.showcontrol.utils.YamlFile; import java.io.File; import java.util.*; -public class DataSaving { +public class DataStorage { private static final Map files = new HashMap<>(); public static Map getFiles() { diff --git a/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java b/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java index dd8c8bf..e633036 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/data/Shows.java @@ -11,7 +11,6 @@ import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -23,7 +22,7 @@ public class Shows { public static void create(String name) { showsMap.put(name, new ArrayList<>()); - DataSaving.save(); + DataStorage.save(); } public static void delete(String name) { @@ -45,7 +44,7 @@ public class Shows { public static void addPoint(String name, Long time, Trigger data) { if (!exists(name)) return; getPoints(name).add(new ShowCuePoint(time, data)); - DataSaving.save(); + DataStorage.save(); } public static void removePoint(String name, ShowCuePoint point) { @@ -54,7 +53,7 @@ public class Shows { point.getTask().remove(); showsMap.get(name).remove(point); - YamlFile data = DataSaving.getFiles().get(name); + YamlFile data = DataStorage.getFiles().get(name); data.getFile().set(point.getCueID().toString(), null); data.saveFile(); From 248cf90e8562ef0fd318120213504f206f64a50e Mon Sep 17 00:00:00 2001 From: Stijn Bannink Date: Sun, 9 Apr 2023 13:01:04 +0200 Subject: [PATCH 3/3] Updated to 1.19.4 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index f8e7705..df9bb33 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ org.spigotmc spigot-api - 1.19.2-R0.1-SNAPSHOT + 1.19.4-R0.1-SNAPSHOT provided @@ -129,7 +129,7 @@ com.github.cryptomorin XSeries - 9.2.0 + 9.3.1 co.aikar @@ -140,7 +140,7 @@ io.github.skytasul guardianbeam - 2.3.1 + 2.3.2 compile