Rewritten detector API
This commit is contained in:
parent
8ac4017b9b
commit
673f03a689
25 changed files with 253 additions and 232 deletions
23
pom.xml
23
pom.xml
|
@ -33,6 +33,13 @@
|
||||||
<version>3.10.1</version>
|
<version>3.10.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<release>17</release>
|
<release>17</release>
|
||||||
|
<annotationProcessorPaths>
|
||||||
|
<path>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.24</version>
|
||||||
|
</path>
|
||||||
|
</annotationProcessorPaths>
|
||||||
<compilerArgs>
|
<compilerArgs>
|
||||||
<arg>-parameters</arg>
|
<arg>-parameters</arg>
|
||||||
</compilerArgs>
|
</compilerArgs>
|
||||||
|
@ -69,6 +76,10 @@
|
||||||
<pattern>co.aikar.locales</pattern>
|
<pattern>co.aikar.locales</pattern>
|
||||||
<shadedPattern>nl.sbdeveloper.showcontrol.libs.locales</shadedPattern>
|
<shadedPattern>nl.sbdeveloper.showcontrol.libs.locales</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
|
<relocation>
|
||||||
|
<pattern>org.reflections</pattern>
|
||||||
|
<shadedPattern>nl.sbdeveloper.showcontrol.libs.reflections</shadedPattern>
|
||||||
|
</relocation>
|
||||||
</relocations>
|
</relocations>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
|
@ -132,5 +143,17 @@
|
||||||
<version>2.3.1</version>
|
<version>2.3.1</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.24</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.reflections</groupId>
|
||||||
|
<artifactId>reflections</artifactId>
|
||||||
|
<version>0.10.2</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -1,18 +1,14 @@
|
||||||
package nl.sbdeveloper.showcontrol;
|
package nl.sbdeveloper.showcontrol;
|
||||||
|
|
||||||
import co.aikar.commands.PaperCommandManager;
|
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.commands.ShowCMD;
|
||||||
import nl.sbdeveloper.showcontrol.data.DataConversion;
|
|
||||||
import nl.sbdeveloper.showcontrol.data.DataSaving;
|
import nl.sbdeveloper.showcontrol.data.DataSaving;
|
||||||
import nl.sbdeveloper.showcontrol.data.Shows;
|
import nl.sbdeveloper.showcontrol.data.Shows;
|
||||||
import nl.sbdeveloper.showcontrol.utils.Inventory;
|
import nl.sbdeveloper.showcontrol.utils.Inventory;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public final class ShowControlPlugin extends JavaPlugin {
|
public final class ShowControlPlugin extends JavaPlugin {
|
||||||
private static ShowControlPlugin instance;
|
private static ShowControlPlugin instance;
|
||||||
|
|
||||||
|
@ -20,15 +16,13 @@ public final class ShowControlPlugin extends JavaPlugin {
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
DataConversion.handle();
|
|
||||||
|
|
||||||
final PaperCommandManager commandManager = new PaperCommandManager(this);
|
final PaperCommandManager commandManager = new PaperCommandManager(this);
|
||||||
commandManager.enableUnstableAPI("help");
|
commandManager.enableUnstableAPI("help");
|
||||||
|
|
||||||
commandManager.registerCommand(new ShowCMD());
|
commandManager.registerCommand(new ShowCMD());
|
||||||
|
|
||||||
commandManager.getCommandCompletions().registerCompletion("showname", c -> Shows.getShowsMap().keySet());
|
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();
|
Inventory.init();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package nl.sbdeveloper.showcontrol.api;
|
||||||
|
|
||||||
|
import lombok.experimental.StandardException;
|
||||||
|
|
||||||
|
@StandardException
|
||||||
|
public class InvalidTriggerException extends Exception {
|
||||||
|
}
|
57
src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java
Normal file
57
src/main/java/nl/sbdeveloper/showcontrol/api/ShowAPI.java
Normal file
|
@ -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<String, Class<? extends Trigger>> 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<Class<?>> 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 extends Trigger> 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<T> ctor = (Constructor<T>) 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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +1,16 @@
|
||||||
package nl.sbdeveloper.showcontrol.api;
|
package nl.sbdeveloper.showcontrol.api;
|
||||||
|
|
||||||
|
import nl.sbdeveloper.showcontrol.api.triggers.Trigger;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A cue point of a show
|
* A cue point of a show
|
||||||
*/
|
*/
|
||||||
public class ShowCue {
|
public class ShowCuePoint {
|
||||||
private final UUID cueID;
|
private final UUID cueID;
|
||||||
private final Long time;
|
private final Long time;
|
||||||
private final TriggerTask data;
|
private final Trigger data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new cue point
|
* Create a new cue point
|
||||||
|
@ -16,7 +18,7 @@ public class ShowCue {
|
||||||
* @param time The starttime (milli)
|
* @param time The starttime (milli)
|
||||||
* @param data The data
|
* @param data The data
|
||||||
*/
|
*/
|
||||||
public ShowCue(Long time, TriggerTask data) {
|
public ShowCuePoint(Long time, Trigger data) {
|
||||||
this(UUID.randomUUID(), time, data);
|
this(UUID.randomUUID(), time, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +29,7 @@ public class ShowCue {
|
||||||
* @param time The starttime (milli)
|
* @param time The starttime (milli)
|
||||||
* @param data The data
|
* @param data The data
|
||||||
*/
|
*/
|
||||||
public ShowCue(UUID uuid, Long time, TriggerTask data) {
|
public ShowCuePoint(UUID uuid, Long time, Trigger data) {
|
||||||
this.cueID = uuid;
|
this.cueID = uuid;
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
|
@ -56,7 +58,7 @@ public class ShowCue {
|
||||||
*
|
*
|
||||||
* @return The data
|
* @return The data
|
||||||
*/
|
*/
|
||||||
public TriggerTask getTask() {
|
public Trigger getTask() {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package nl.sbdeveloper.showcontrol.api;
|
||||||
|
|
||||||
|
import lombok.experimental.StandardException;
|
||||||
|
|
||||||
|
@StandardException
|
||||||
|
public class TooFewArgumentsException extends Exception {
|
||||||
|
}
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +1,13 @@
|
||||||
package nl.sbdeveloper.showcontrol.api;
|
package nl.sbdeveloper.showcontrol.api.triggers;
|
||||||
|
|
||||||
public abstract class TriggerTask {
|
import lombok.AllArgsConstructor;
|
||||||
private final TriggerType type;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public abstract class Trigger {
|
||||||
private final String[] dataString;
|
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
|
* This method gets fired when the cue gets triggered
|
||||||
*/
|
*/
|
||||||
|
@ -23,15 +19,6 @@ public abstract class TriggerTask {
|
||||||
*/
|
*/
|
||||||
public void remove() {}
|
public void remove() {}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the trigger type
|
|
||||||
*
|
|
||||||
* @return The trigger type
|
|
||||||
*/
|
|
||||||
public TriggerType getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the datastring from this cue
|
* Get the datastring from this cue
|
||||||
*
|
*
|
||||||
|
@ -44,4 +31,8 @@ public abstract class TriggerTask {
|
||||||
}
|
}
|
||||||
return builder.toString().trim();
|
return builder.toString().trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getTriggerId() {
|
||||||
|
return getClass().getAnnotation(TriggerIdentifier.class).value();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -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 "";
|
||||||
|
}
|
|
@ -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 = "<name>")
|
||||||
|
public class AnimaTrigger extends Trigger {
|
||||||
|
public AnimaTrigger(String[] data) {
|
||||||
|
super(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void trigger() {
|
||||||
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + getDataString());
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 = "<command ...>")
|
||||||
|
public class CommandTrigger extends Trigger {
|
||||||
|
public CommandTrigger(String[] data) {
|
||||||
|
super(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void trigger() {
|
||||||
|
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), getDataString());
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.triggers.Trigger;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerType;
|
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import nl.sbdeveloper.showcontrol.elements.Fireworks;
|
import nl.sbdeveloper.showcontrol.elements.Fireworks;
|
||||||
import nl.sbdeveloper.showcontrol.utils.Color;
|
import nl.sbdeveloper.showcontrol.utils.Color;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -9,12 +9,13 @@ import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
public class FireworkTrigger extends TriggerTask {
|
@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = "<world> <x> <y> <z> <configuration ...>")
|
||||||
|
public class FireworkTrigger extends Trigger {
|
||||||
private Fireworks.Firework fw;
|
private Fireworks.Firework fw;
|
||||||
private Location spawnLoc;
|
private Location spawnLoc;
|
||||||
|
|
||||||
public FireworkTrigger(String[] data) {
|
public FireworkTrigger(String[] data) {
|
||||||
super(TriggerType.FIREWORK, data);
|
super(data);
|
||||||
|
|
||||||
World w = Bukkit.getWorld(data[0]);
|
World w = Bukkit.getWorld(data[0]);
|
||||||
if (w == null) {
|
if (w == null) {
|
|
@ -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 = "<world> <x> <y> <z> <delay>")
|
||||||
|
public class FlameThrowerTrigger extends Trigger {
|
||||||
|
public FlameThrowerTrigger(String[] dataString) {
|
||||||
|
super(dataString);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void trigger() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.triggers.Trigger;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerType;
|
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import nl.sbdeveloper.showcontrol.elements.Lasers;
|
import nl.sbdeveloper.showcontrol.elements.Lasers;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
public class LaserTrigger extends TriggerTask {
|
@TriggerIdentifier(value = "laser", minArgs = 5, argDesc = "<name> <world> <x> <y> <z>")
|
||||||
|
public class LaserTrigger extends Trigger {
|
||||||
private final String name;
|
private final String name;
|
||||||
private Location newLocation;
|
private Location newLocation;
|
||||||
|
|
||||||
//TODO Fix laser for 1.17
|
|
||||||
public LaserTrigger(String[] data) {
|
public LaserTrigger(String[] data) {
|
||||||
super(TriggerType.LASER, data);
|
super(data);
|
||||||
|
|
||||||
this.name = data[0];
|
this.name = data[0];
|
||||||
|
|
||||||
|
@ -44,8 +44,7 @@ public class LaserTrigger extends TriggerTask {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void trigger() {
|
public void trigger() {
|
||||||
Bukkit.broadcastMessage("[ShowAPI] De trigger " + name + " is genegeerd, omdat de LASER is disabled.");
|
Lasers.move(name, newLocation);
|
||||||
// ShowAPI.Lasers.move(name, newLocation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -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.triggers.Trigger;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerType;
|
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
public class ParticleTrigger extends TriggerTask {
|
@TriggerIdentifier(value = "particle", minArgs = 6, argDesc = "<world> <x> <y> <z> <type> <count>")
|
||||||
|
public class ParticleTrigger extends Trigger {
|
||||||
private Particle type;
|
private Particle type;
|
||||||
private Location spawnLoc;
|
private Location spawnLoc;
|
||||||
private int count;
|
private int count;
|
||||||
|
|
||||||
public ParticleTrigger(String[] data) {
|
public ParticleTrigger(String[] data) {
|
||||||
super(TriggerType.PARTICLE, data);
|
super(data);
|
||||||
|
|
||||||
World w = Bukkit.getWorld(data[0]);
|
World w = Bukkit.getWorld(data[0]);
|
||||||
if (w == null) {
|
if (w == null) {
|
|
@ -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.triggers.Trigger;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerType;
|
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import nl.sbdeveloper.showcontrol.elements.Spots;
|
import nl.sbdeveloper.showcontrol.elements.Spots;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
public class SpotTrigger extends TriggerTask {
|
@TriggerIdentifier(value = "spot", minArgs = 5, argDesc = "<name> <world> <x> <y> <z>")
|
||||||
|
public class SpotTrigger extends Trigger {
|
||||||
private final String name;
|
private final String name;
|
||||||
private Location newLocation;
|
private Location newLocation;
|
||||||
|
|
||||||
public SpotTrigger(String[] data) {
|
public SpotTrigger(String[] data) {
|
||||||
super(TriggerType.SPOT, data);
|
super(data);
|
||||||
|
|
||||||
this.name = data[0];
|
this.name = data[0];
|
||||||
|
|
||||||
|
@ -43,7 +44,7 @@ public class SpotTrigger extends TriggerTask {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void trigger() {
|
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.");
|
Bukkit.broadcastMessage("[ShowAPI] De trigger " + name + " is genegeerd, omdat de SPOT is disabled.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ package nl.sbdeveloper.showcontrol.commands;
|
||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.*;
|
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.data.Shows;
|
||||||
import nl.sbdeveloper.showcontrol.gui.ShowCueGUI;
|
import nl.sbdeveloper.showcontrol.gui.ShowCueGUI;
|
||||||
import nl.sbdeveloper.showcontrol.utils.MainUtil;
|
|
||||||
import nl.sbdeveloper.showcontrol.utils.TimeUtil;
|
import nl.sbdeveloper.showcontrol.utils.TimeUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
@ -67,8 +69,17 @@ public class ShowCMD extends BaseCommand {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TriggerTask data = MainUtil.parseData(args);
|
Trigger data;
|
||||||
if (data == null) {
|
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.");
|
sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +1,11 @@
|
||||||
package nl.sbdeveloper.showcontrol.data;
|
package nl.sbdeveloper.showcontrol.data;
|
||||||
|
|
||||||
import nl.sbdeveloper.showcontrol.ShowControlPlugin;
|
import nl.sbdeveloper.showcontrol.ShowControlPlugin;
|
||||||
import nl.sbdeveloper.showcontrol.api.ShowCue;
|
import nl.sbdeveloper.showcontrol.api.InvalidTriggerException;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerTask;
|
import nl.sbdeveloper.showcontrol.api.ShowAPI;
|
||||||
import nl.sbdeveloper.showcontrol.utils.MainUtil;
|
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 nl.sbdeveloper.showcontrol.utils.YamlFile;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -23,24 +25,30 @@ public class DataSaving {
|
||||||
YamlFile showConfig = new YamlFile("data/" + showID);
|
YamlFile showConfig = new YamlFile("data/" + showID);
|
||||||
files.put(showID, showConfig);
|
files.put(showID, showConfig);
|
||||||
|
|
||||||
List<ShowCue> cues = new ArrayList<>();
|
List<ShowCuePoint> cues = new ArrayList<>();
|
||||||
for (String id : showConfig.getFile().getKeys(false)) {
|
for (String id : showConfig.getFile().getKeys(false)) {
|
||||||
UUID cueID = UUID.fromString(id);
|
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");
|
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);
|
Shows.getShowsMap().put(showID, cues);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void save() {
|
public static void save() {
|
||||||
for (Map.Entry<String, List<ShowCue>> entry : Shows.getShowsMap().entrySet()) {
|
for (Map.Entry<String, List<ShowCuePoint>> entry : Shows.getShowsMap().entrySet()) {
|
||||||
YamlFile file = files.containsKey(entry.getKey()) ? files.get(entry.getKey()) : new YamlFile("data/" + entry.getKey());
|
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() + ".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.getFile().set(cue.getCueID().toString() + ".Data", cue.getTask().getDataString());
|
||||||
}
|
}
|
||||||
file.saveFile();
|
file.saveFile();
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package nl.sbdeveloper.showcontrol.data;
|
package nl.sbdeveloper.showcontrol.data;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import nl.sbdeveloper.showcontrol.ShowControlPlugin;
|
import nl.sbdeveloper.showcontrol.ShowControlPlugin;
|
||||||
import nl.sbdeveloper.showcontrol.api.ShowCue;
|
import nl.sbdeveloper.showcontrol.api.ShowCuePoint;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerTask;
|
import nl.sbdeveloper.showcontrol.api.triggers.Trigger;
|
||||||
import nl.sbdeveloper.showcontrol.utils.YamlFile;
|
import nl.sbdeveloper.showcontrol.utils.YamlFile;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
@ -10,18 +11,19 @@ import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class Shows {
|
public class Shows {
|
||||||
private static final HashMap<String, List<ShowCue>> showsMap = new HashMap<>();
|
@Getter
|
||||||
|
private static final HashMap<String, List<ShowCuePoint>> showsMap = new HashMap<>();
|
||||||
private static final HashMap<String, ScheduledExecutorService> showTimers = new HashMap<>();
|
private static final HashMap<String, ScheduledExecutorService> showTimers = new HashMap<>();
|
||||||
|
|
||||||
public static void create(String name) {
|
public static void create(String name) {
|
||||||
showsMap.put(name, new ArrayList<>());
|
showsMap.put(name, new ArrayList<>());
|
||||||
DataSaving.save();
|
DataSaving.save();
|
||||||
// Bukkit.getScheduler().runTaskAsynchronously(ShowAPIPlugin.getInstance(), DataSaving::save);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void delete(String name) {
|
public static void delete(String name) {
|
||||||
|
@ -35,19 +37,18 @@ public class Shows {
|
||||||
return showsMap.containsKey(name);
|
return showsMap.containsKey(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ShowCue> getPoints(String name) {
|
public static List<ShowCuePoint> getPoints(String name) {
|
||||||
if (!exists(name)) return new ArrayList<>();
|
if (!exists(name)) return new ArrayList<>();
|
||||||
return showsMap.get(name);
|
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;
|
if (!exists(name)) return;
|
||||||
getPoints(name).add(new ShowCue(time, data));
|
getPoints(name).add(new ShowCuePoint(time, data));
|
||||||
DataSaving.save();
|
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;
|
if (!exists(name)) return;
|
||||||
|
|
||||||
point.getTask().remove();
|
point.getTask().remove();
|
||||||
|
@ -62,9 +63,7 @@ public class Shows {
|
||||||
public static void startShow(String name) {
|
public static void startShow(String name) {
|
||||||
if (!exists(name)) return;
|
if (!exists(name)) return;
|
||||||
ScheduledExecutorService showTimer = Executors.newSingleThreadScheduledExecutor();
|
ScheduledExecutorService showTimer = Executors.newSingleThreadScheduledExecutor();
|
||||||
Bukkit.getLogger().info("Scheduled show " + name);
|
for (ShowCuePoint point : getPoints(name)) {
|
||||||
for (ShowCue point : getPoints(name)) {
|
|
||||||
Bukkit.getLogger().info("Point " + point.getTask().getDataString() + " on " + point.getTime());
|
|
||||||
showTimer.schedule(() -> Bukkit.getScheduler().runTask(ShowControlPlugin.getInstance(), () -> point.getTask().trigger()), point.getTime(), TimeUnit.MILLISECONDS);
|
showTimer.schedule(() -> Bukkit.getScheduler().runTask(ShowControlPlugin.getInstance(), () -> point.getTask().trigger()), point.getTime(), TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
showTimers.put(name, showTimer);
|
showTimers.put(name, showTimer);
|
||||||
|
@ -76,8 +75,4 @@ public class Shows {
|
||||||
ScheduledExecutorService showTimer = showTimers.get(name);
|
ScheduledExecutorService showTimer = showTimers.get(name);
|
||||||
showTimer.shutdownNow();
|
showTimer.shutdownNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HashMap<String, List<ShowCue>> getShowsMap() {
|
|
||||||
return showsMap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import fr.minuskube.inv.ClickableItem;
|
||||||
import fr.minuskube.inv.content.InventoryContents;
|
import fr.minuskube.inv.content.InventoryContents;
|
||||||
import fr.minuskube.inv.content.Pagination;
|
import fr.minuskube.inv.content.Pagination;
|
||||||
import fr.minuskube.inv.content.SlotIterator;
|
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.data.Shows;
|
||||||
import nl.sbdeveloper.showcontrol.utils.Inventory;
|
import nl.sbdeveloper.showcontrol.utils.Inventory;
|
||||||
import nl.sbdeveloper.showcontrol.utils.ItemBuilder;
|
import nl.sbdeveloper.showcontrol.utils.ItemBuilder;
|
||||||
|
@ -33,7 +33,7 @@ public class ShowCueGUI extends Inventory {
|
||||||
Pagination pagination = contents.pagination();
|
Pagination pagination = contents.pagination();
|
||||||
|
|
||||||
List<ClickableItem> items = new ArrayList<>();
|
List<ClickableItem> 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 -> {
|
.forEach(cue -> items.add(ClickableItem.of(MainUtil.pointToItem(cue), e -> {
|
||||||
Shows.removePoint(showName, cue);
|
Shows.removePoint(showName, cue);
|
||||||
open(player, pagination.getPage());
|
open(player, pagination.getPage());
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
package nl.sbdeveloper.showcontrol.utils;
|
package nl.sbdeveloper.showcontrol.utils;
|
||||||
|
|
||||||
import nl.sbdeveloper.showcontrol.api.ShowCue;
|
import nl.sbdeveloper.showcontrol.api.ShowCuePoint;
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerTask;
|
|
||||||
import nl.sbdeveloper.showcontrol.api.TriggerType;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.ChatPaginator;
|
import org.bukkit.util.ChatPaginator;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MainUtil {
|
public class MainUtil {
|
||||||
|
@ -19,12 +14,12 @@ public class MainUtil {
|
||||||
return ChatColor.translateAlternateColorCodes('&', in);
|
return ChatColor.translateAlternateColorCodes('&', in);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack pointToItem(ShowCue point) {
|
public static ItemStack pointToItem(ShowCuePoint point) {
|
||||||
ItemBuilder builder = new ItemBuilder(Material.NOTE_BLOCK);
|
ItemBuilder builder = new ItemBuilder(Material.NOTE_BLOCK);
|
||||||
builder.setName(ChatColor.ITALIC + "TimeCode: " + TimeUtil.makeReadable(point.getTime()));
|
builder.setName(ChatColor.ITALIC + "TimeCode: " + TimeUtil.makeReadable(point.getTime()));
|
||||||
|
|
||||||
List<String> lores = new ArrayList<>();
|
List<String> 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:");
|
lores.add(ChatColor.GREEN + "Data:");
|
||||||
for (String str : ChatPaginator.paginate(point.getTask().getDataString(), 20).getLines()) {
|
for (String str : ChatPaginator.paginate(point.getTask().getDataString(), 20).getLines()) {
|
||||||
lores.add(ChatColor.AQUA + ChatColor.stripColor(str));
|
lores.add(ChatColor.AQUA + ChatColor.stripColor(str));
|
||||||
|
@ -36,26 +31,6 @@ public class MainUtil {
|
||||||
return builder.toItemStack();
|
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) {
|
public static String capitalize(String str) {
|
||||||
return str.substring(0, 1).toUpperCase() + str.substring(1);
|
return str.substring(0, 1).toUpperCase() + str.substring(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,5 +3,5 @@ version: ${project.version}
|
||||||
main: nl.sbdeveloper.showcontrol.ShowControlPlugin
|
main: nl.sbdeveloper.showcontrol.ShowControlPlugin
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
authors: [SBDeveloper]
|
authors: [SBDeveloper]
|
||||||
description: Make perfect shows with this API!
|
description: Create shows easily using this plugin!
|
||||||
website: https://sbdevelopment.tech
|
website: https://sbdevelopment.tech
|
Loading…
Add table
Reference in a new issue