diff --git a/pom.xml b/pom.xml index df1e547..df9bb33 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 + @@ -106,7 +117,7 @@ org.spigotmc spigot-api - 1.19.2-R0.1-SNAPSHOT + 1.19.4-R0.1-SNAPSHOT provided @@ -118,7 +129,7 @@ com.github.cryptomorin XSeries - 9.2.0 + 9.3.1 co.aikar @@ -129,7 +140,19 @@ io.github.skytasul guardianbeam - 2.3.1 + 2.3.2 + 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..74a28d7 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.DataStorage; 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,28 +16,41 @@ public final class ShowControlPlugin extends JavaPlugin { public void onEnable() { instance = this; - DataConversion.handle(); + 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().registerStaticCompletion("showtype", Arrays.stream(TriggerType.values()).map(Enum::name).collect(Collectors.toList())); + 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/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..94d3204 --- /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.Scanners; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; + +import java.lang.reflect.Constructor; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +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/triggers/ParticleTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/ParticleTrigger.java deleted file mode 100644 index 1387f12..0000000 --- a/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/ParticleTrigger.java +++ /dev/null @@ -1,56 +0,0 @@ -package nl.sbdeveloper.showcontrol.api.triggers; - -import nl.sbdeveloper.showcontrol.api.TriggerTask; -import nl.sbdeveloper.showcontrol.api.TriggerType; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Particle; -import org.bukkit.World; - -public class ParticleTrigger extends TriggerTask { - private Particle type; - private Location spawnLoc; - private int count; - - public ParticleTrigger(String[] data) { - super(TriggerType.PARTICLE, data); - - World w = Bukkit.getWorld(data[0]); - if (w == null) { - Bukkit.getLogger().info("De wereld is null!"); - return; - } - - int x; - int y; - int z; - try { - x = Integer.parseInt(data[1]); - y = Integer.parseInt(data[2]); - z = Integer.parseInt(data[3]); - } catch (NumberFormatException ex) { - Bukkit.getLogger().info("De positie is incorrect!"); - return; - } - - this.spawnLoc = new Location(w, x, y, z); - - try { - this.type = Particle.valueOf(data[4]); - } catch (IllegalArgumentException ex) { - Bukkit.getLogger().info("De particle " + data[4] + " bestaat niet!"); - return; - } - - try { - this.count = Integer.parseInt(data[5]); - } catch (NumberFormatException ex) { - Bukkit.getLogger().info("Het aantal " + data[4] + " is incorrect!"); - } - } - - @Override - public void trigger() { - spawnLoc.getWorld().spawnParticle(type, spawnLoc, count); - } -} 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..9c29cc2 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/TriggerIdentifier.java @@ -0,0 +1,17 @@ +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; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +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 new file mode 100644 index 0000000..30d62a9 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/AnimaTrigger.java @@ -0,0 +1,18 @@ +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 = "", item = Material.ARMOR_STAND) +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..c404768 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/CommandTrigger.java @@ -0,0 +1,18 @@ +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 = "", item = Material.COMMAND_BLOCK) +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 70% 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..b1b2069 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,25 +1,23 @@ -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.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.*; -public class FireworkTrigger extends TriggerTask { - private Fireworks.Firework fw; - private Location spawnLoc; +@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = " ", item = Material.FIREWORK_ROCKET) +public class FireworkTrigger extends Trigger { + private final Fireworks.Firework fw; + private final Location spawnLoc; - public FireworkTrigger(String[] data) { - super(TriggerType.FIREWORK, 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; @@ -30,8 +28,7 @@ public class FireworkTrigger extends TriggerTask { 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 new file mode 100644 index 0000000..0f04df7 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/FlameThrowerTrigger.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.Material; + +@TriggerIdentifier(value = "flamethrower", minArgs = 5, argDesc = " ", item = Material.FIRE) +public class FlameThrowerTrigger extends Trigger { + public FlameThrowerTrigger(String[] dataString) { + super(dataString); + } + + @Override + public void trigger() { + //TODO Implement + } +} 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 52% 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..931e0da 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,26 +1,26 @@ -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.InvalidArgumentException; +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; + private final Location newLocation; - //TODO Fix laser for 1.17 - public LaserTrigger(String[] data) { - super(TriggerType.LASER, 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 TriggerTask { 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); @@ -44,8 +43,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/impl/ParticleTrigger.java b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java new file mode 100644 index 0000000..e5e8671 --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showcontrol/api/triggers/impl/ParticleTrigger.java @@ -0,0 +1,55 @@ +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; +import org.bukkit.Location; +import org.bukkit.Particle; +import org.bukkit.World; + +@TriggerIdentifier(value = "particle", minArgs = 6, argDesc = " ") +public class ParticleTrigger extends Trigger { + private final Particle type; + private final Location spawnLoc; + private final int count; + + public ParticleTrigger(String[] data) throws InvalidArgumentException { + super(data); + + World w = Bukkit.getWorld(data[0]); + if (w == null) { + throw new InvalidArgumentException("Provided World in ParticleTrigger is null!"); + } + + int x; + int y; + int z; + try { + x = Integer.parseInt(data[1]); + y = Integer.parseInt(data[2]); + z = Integer.parseInt(data[3]); + } catch (NumberFormatException ex) { + throw new InvalidArgumentException("Provided position in ParticleTrigger is invalid!"); + } + + this.spawnLoc = new Location(w, x, y, z); + + try { + this.type = Particle.valueOf(data[4]); + } catch (IllegalArgumentException ex) { + throw new InvalidArgumentException("Provided particle " + data[4] + " in ParticleTrigger does not exists!"); + } + + try { + this.count = Integer.parseInt(data[5]); + } catch (NumberFormatException ex) { + throw new InvalidArgumentException("Provided count " + data[5] + " in ParticleTrigger is invalid!"); + } + } + + @Override + public void trigger() { + spawnLoc.getWorld().spawnParticle(type, spawnLoc, count); + } +} 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 55% 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..ec64ce7 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,25 +1,26 @@ -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.InvalidArgumentException; +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; + private final Location newLocation; - public SpotTrigger(String[] data) { - super(TriggerType.SPOT, 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; @@ -30,8 +31,7 @@ public class SpotTrigger extends TriggerTask { 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); @@ -43,7 +43,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..706d3f9 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/commands/ShowCMD.java @@ -2,38 +2,31 @@ 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; 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") @@ -41,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") @@ -55,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; } @@ -63,18 +56,27 @@ 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; } - TriggerTask data = MainUtil.parseData(args); - if (data == null) { - sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger."); + Trigger data; + try { + data = ShowAPI.getTrigger(args); + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + sender.sendMessage(ChatColor.RED + "Something went wrong! Please ask a server admin."); + return; + } catch (InvalidTriggerException e) { + sender.sendMessage(ChatColor.RED + "The provided trigger does not exists."); + return; + } catch (TooFewArgumentsException e) { + 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") @@ -82,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") @@ -96,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") @@ -110,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/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/DataStorage.java similarity index 63% rename from src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java rename to src/main/java/nl/sbdeveloper/showcontrol/data/DataStorage.java index 2cadede..ea64d34 100644 --- a/src/main/java/nl/sbdeveloper/showcontrol/data/DataSaving.java +++ b/src/main/java/nl/sbdeveloper/showcontrol/data/DataStorage.java @@ -1,15 +1,17 @@ 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; import java.util.*; -public class DataSaving { +public class DataStorage { private static final Map files = new HashMap<>(); public static Map getFiles() { @@ -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..e633036 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; @@ -15,13 +16,13 @@ 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); + DataStorage.save(); } public static void delete(String name) { @@ -35,25 +36,24 @@ 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)); - DataSaving.save(); -// Bukkit.getScheduler().runTaskAsynchronously(ShowAPIPlugin.getInstance(), DataSaving::save); + getPoints(name).add(new ShowCuePoint(time, data)); + DataStorage.save(); } - public static void removePoint(String name, ShowCue point) { + public static void removePoint(String name, ShowCuePoint point) { if (!exists(name)) return; 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(); @@ -62,9 +62,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 +74,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