Merge pull request #11 from MCTPPlugins/feature/1.19.4

Feature/1.19.4
This commit is contained in:
Stijn Bannink 2023-04-09 13:22:57 +02:00 committed by GitHub
commit d35850ac73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 374 additions and 343 deletions

29
pom.xml
View file

@ -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>
@ -106,7 +117,7 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.19.2-R0.1-SNAPSHOT</version> <version>1.19.4-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -118,7 +129,7 @@
<dependency> <dependency>
<groupId>com.github.cryptomorin</groupId> <groupId>com.github.cryptomorin</groupId>
<artifactId>XSeries</artifactId> <artifactId>XSeries</artifactId>
<version>9.2.0</version> <version>9.3.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>co.aikar</groupId> <groupId>co.aikar</groupId>
@ -129,7 +140,19 @@
<dependency> <dependency>
<groupId>io.github.skytasul</groupId> <groupId>io.github.skytasul</groupId>
<artifactId>guardianbeam</artifactId> <artifactId>guardianbeam</artifactId>
<version>2.3.1</version> <version>2.3.2</version>
<scope>compile</scope>
</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> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -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.DataStorage;
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,28 +16,41 @@ public final class ShowControlPlugin extends JavaPlugin {
public void onEnable() { public void onEnable() {
instance = this; 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); 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());
getLogger().info("Loading GUI manageer...");
Inventory.init(); 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 @Override
public void onDisable() { public void onDisable() {
instance = null; getLogger().info("Saving data...");
DataStorage.save();
DataSaving.save();
Shows.getShowsMap().values().forEach(show -> show.forEach(showCue -> showCue.getTask().remove())); Shows.getShowsMap().values().forEach(show -> show.forEach(showCue -> showCue.getTask().remove()));
getLogger().info("Plugin disabled!");
instance = null;
} }
public static ShowControlPlugin getInstance() { public static ShowControlPlugin getInstance() {

View file

@ -0,0 +1,7 @@
package nl.sbdeveloper.showcontrol.api;
import lombok.experimental.StandardException;
@StandardException
public class InvalidArgumentException extends Exception {
}

View file

@ -0,0 +1,7 @@
package nl.sbdeveloper.showcontrol.api;
import lombok.experimental.StandardException;
@StandardException
public class InvalidTriggerException extends Exception {
}

View 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.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<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);
}
}

View file

@ -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;
} }
} }

View file

@ -0,0 +1,7 @@
package nl.sbdeveloper.showcontrol.api;
import lombok.experimental.StandardException;
@StandardException
public class TooFewArgumentsException extends Exception {
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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();
}
} }

View file

@ -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;
}

View file

@ -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 = "<name>", 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());
}
}

View file

@ -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 = "<command ...>", 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());
}
}

View file

@ -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.InvalidArgumentException;
import nl.sbdeveloper.showcontrol.api.TriggerType; import nl.sbdeveloper.showcontrol.api.triggers.Trigger;
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
import nl.sbdeveloper.showcontrol.elements.Fireworks; import nl.sbdeveloper.showcontrol.elements.Fireworks;
import nl.sbdeveloper.showcontrol.utils.Color; import nl.sbdeveloper.showcontrol.utils.Color;
import org.bukkit.Bukkit; import org.bukkit.*;
import org.bukkit.FireworkEffect;
import org.bukkit.Location;
import org.bukkit.World;
public class FireworkTrigger extends TriggerTask { @TriggerIdentifier(value = "firework", minArgs = 5, argDesc = "<world> <x> <y> <z> <configuration ...>", item = Material.FIREWORK_ROCKET)
private Fireworks.Firework fw; public class FireworkTrigger extends Trigger {
private Location spawnLoc; private final Fireworks.Firework fw;
private final Location spawnLoc;
public FireworkTrigger(String[] data) { public FireworkTrigger(String[] data) throws InvalidArgumentException {
super(TriggerType.FIREWORK, data); super(data);
World w = Bukkit.getWorld(data[0]); World w = Bukkit.getWorld(data[0]);
if (w == null) { if (w == null) {
Bukkit.getLogger().info("De wereld is null!"); throw new InvalidArgumentException("Provided World in FireworkTrigger is null!");
return;
} }
int x; int x;
@ -30,8 +28,7 @@ public class FireworkTrigger extends TriggerTask {
y = Integer.parseInt(data[2]); y = Integer.parseInt(data[2]);
z = Integer.parseInt(data[3]); z = Integer.parseInt(data[3]);
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
Bukkit.getLogger().info("De positie is incorrect!"); throw new InvalidArgumentException("Provided position in FireworkTrigger is invalid!");
return;
} }
this.spawnLoc = new Location(w, x, y, z); this.spawnLoc = new Location(w, x, y, z);

View file

@ -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 = "<world> <x> <y> <z> <delay>", item = Material.FIRE)
public class FlameThrowerTrigger extends Trigger {
public FlameThrowerTrigger(String[] dataString) {
super(dataString);
}
@Override
public void trigger() {
//TODO Implement
}
}

View file

@ -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.InvalidArgumentException;
import nl.sbdeveloper.showcontrol.api.TriggerType; import nl.sbdeveloper.showcontrol.api.triggers.Trigger;
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
import nl.sbdeveloper.showcontrol.elements.Lasers; import 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 final Location newLocation;
//TODO Fix laser for 1.17 public LaserTrigger(String[] data) throws InvalidArgumentException {
public LaserTrigger(String[] data) { super(data);
super(TriggerType.LASER, data);
this.name = data[0]; this.name = data[0];
World w = Bukkit.getWorld(data[1]); World w = Bukkit.getWorld(data[1]);
if (w == null) { if (w == null) {
Bukkit.getLogger().info("De wereld is null!"); throw new InvalidArgumentException("Provided World in LaserTrigger is null!");
return;
} }
int x; int x;
@ -31,8 +31,7 @@ public class LaserTrigger extends TriggerTask {
y = Integer.parseInt(data[3]); y = Integer.parseInt(data[3]);
z = Integer.parseInt(data[4]); z = Integer.parseInt(data[4]);
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
Bukkit.getLogger().info("De positie is null!"); throw new InvalidArgumentException("Provided position in LaserTrigger is invalid!");
return;
} }
this.newLocation = new Location(w, x, y, z); this.newLocation = new Location(w, x, y, z);
@ -44,8 +43,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

View file

@ -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 = "<world> <x> <y> <z> <type> <count>")
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);
}
}

View file

@ -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.InvalidArgumentException;
import nl.sbdeveloper.showcontrol.api.TriggerType; import nl.sbdeveloper.showcontrol.api.triggers.Trigger;
import nl.sbdeveloper.showcontrol.api.triggers.TriggerIdentifier;
import nl.sbdeveloper.showcontrol.elements.Spots; import 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 final Location newLocation;
public SpotTrigger(String[] data) { public SpotTrigger(String[] data) throws InvalidArgumentException {
super(TriggerType.SPOT, data); super(data);
this.name = data[0]; this.name = data[0];
World w = Bukkit.getWorld(data[1]); World w = Bukkit.getWorld(data[1]);
if (w == null) { if (w == null) {
Bukkit.getLogger().info("De wereld is null!"); throw new InvalidArgumentException("Provided World in SpotTrigger is null!");
return;
} }
int x; int x;
@ -30,8 +31,7 @@ public class SpotTrigger extends TriggerTask {
y = Integer.parseInt(data[3]); y = Integer.parseInt(data[3]);
z = Integer.parseInt(data[4]); z = Integer.parseInt(data[4]);
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
Bukkit.getLogger().info("De positie is null!"); throw new InvalidArgumentException("Provided position in SpotTrigger is invalid!");
return;
} }
this.newLocation = new Location(w, x, y, z); this.newLocation = new Location(w, x, y, z);
@ -43,7 +43,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.");
} }

View file

@ -2,38 +2,31 @@ 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;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@CommandAlias("mctpshow|show") @CommandAlias("showcontrol|sc")
@CommandPermission("mctp.show") @CommandPermission("mctp.show")
public class ShowCMD extends BaseCommand { public class ShowCMD extends BaseCommand {
/*
/mctpshow create <Naam>
/mctpshow delete <Naam>
/mctpshow add <Naam> <Tijd> <Type> <Data ...>
/mctpshow start <Naam>
/mctpshow cancel <Naam>
/mctpshow gui <Naam>
*/
@Subcommand("create") @Subcommand("create")
@Description("") @Description("")
public void onCreate(CommandSender sender, @Single String name) { public void onCreate(CommandSender sender, @Single String name) {
if (Shows.exists(name)) { if (Shows.exists(name)) {
sender.sendMessage(ChatColor.RED + "Die show bestaat al."); sender.sendMessage(ChatColor.RED + "That show already exists.");
return; return;
} }
Shows.create(name); 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") @Subcommand("delete")
@ -41,13 +34,13 @@ public class ShowCMD extends BaseCommand {
@CommandCompletion("@showname") @CommandCompletion("@showname")
public void onDelete(CommandSender sender, @Single String name) { public void onDelete(CommandSender sender, @Single String name) {
if (!Shows.exists(name)) { if (!Shows.exists(name)) {
sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
return; return;
} }
Shows.delete(name); 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") @Subcommand("add")
@ -55,7 +48,7 @@ public class ShowCMD extends BaseCommand {
@CommandCompletion("@showname @empty @showtype") @CommandCompletion("@showname @empty @showtype")
public void onAdd(CommandSender sender, String name, String time, String args) { public void onAdd(CommandSender sender, String name, String time, String args) {
if (!Shows.exists(name)) { if (!Shows.exists(name)) {
sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
return; return;
} }
@ -63,18 +56,27 @@ public class ShowCMD extends BaseCommand {
try { try {
timeMilli = TimeUtil.toMilis(time); timeMilli = TimeUtil.toMilis(time);
} catch (Exception e) { } 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; return;
} }
TriggerTask data = MainUtil.parseData(args); Trigger data;
if (data == null) { try {
sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger."); 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; return;
} }
Shows.addPoint(name, timeMilli, data); 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") @Subcommand("start")
@ -82,13 +84,13 @@ public class ShowCMD extends BaseCommand {
@CommandCompletion("@showname") @CommandCompletion("@showname")
public void onStart(CommandSender sender, @Single String name) { public void onStart(CommandSender sender, @Single String name) {
if (!Shows.exists(name)) { if (!Shows.exists(name)) {
sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
return; return;
} }
Shows.startShow(name); 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") @Subcommand("cancel")
@ -96,13 +98,13 @@ public class ShowCMD extends BaseCommand {
@CommandCompletion("@showname") @CommandCompletion("@showname")
public void onCancel(CommandSender sender, @Single String name) { public void onCancel(CommandSender sender, @Single String name) {
if (!Shows.exists(name)) { if (!Shows.exists(name)) {
sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
return; return;
} }
Shows.cancelShow(name); 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") @Subcommand("gui")
@ -110,7 +112,7 @@ public class ShowCMD extends BaseCommand {
@CommandCompletion("@showname") @CommandCompletion("@showname")
public void onGUI(Player sender, @Single String name) { public void onGUI(Player sender, @Single String name) {
if (!Shows.exists(name)) { if (!Shows.exists(name)) {
sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
return; return;
} }

View file

@ -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();
}
}

View file

@ -1,15 +1,17 @@
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;
import java.util.*; import java.util.*;
public class DataSaving { public class DataStorage {
private static final Map<String, YamlFile> files = new HashMap<>(); private static final Map<String, YamlFile> files = new HashMap<>();
public static Map<String, YamlFile> getFiles() { public static Map<String, YamlFile> getFiles() {
@ -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();

View file

@ -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;
@ -15,13 +16,13 @@ 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(); DataStorage.save();
// Bukkit.getScheduler().runTaskAsynchronously(ShowAPIPlugin.getInstance(), DataSaving::save);
} }
public static void delete(String name) { public static void delete(String name) {
@ -35,25 +36,24 @@ 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(); DataStorage.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();
showsMap.get(name).remove(point); 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.getFile().set(point.getCueID().toString(), null);
data.saveFile(); data.saveFile();
@ -62,9 +62,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 +74,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;
}
} }

View file

@ -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());

View file

@ -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);
} }

View file

@ -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