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 extends Trigger>) 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 extends TriggerTask> trigger;
- private final int minArgs;
-
- TriggerType(Class extends TriggerTask> trigger, int minArgs) {
- this.trigger = trigger;
- this.minArgs = minArgs;
- }
-
- public Class extends TriggerTask> 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 extends TriggerTask> 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