commit
d35850ac73
27 changed files with 374 additions and 343 deletions
29
pom.xml
29
pom.xml
|
@ -33,6 +33,13 @@
|
|||
<version>3.10.1</version>
|
||||
<configuration>
|
||||
<release>17</release>
|
||||
<annotationProcessorPaths>
|
||||
<path>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.24</version>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
<compilerArgs>
|
||||
<arg>-parameters</arg>
|
||||
</compilerArgs>
|
||||
|
@ -69,6 +76,10 @@
|
|||
<pattern>co.aikar.locales</pattern>
|
||||
<shadedPattern>nl.sbdeveloper.showcontrol.libs.locales</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.reflections</pattern>
|
||||
<shadedPattern>nl.sbdeveloper.showcontrol.libs.reflections</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
@ -106,7 +117,7 @@
|
|||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.19.2-R0.1-SNAPSHOT</version>
|
||||
<version>1.19.4-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -118,7 +129,7 @@
|
|||
<dependency>
|
||||
<groupId>com.github.cryptomorin</groupId>
|
||||
<artifactId>XSeries</artifactId>
|
||||
<version>9.2.0</version>
|
||||
<version>9.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>co.aikar</groupId>
|
||||
|
@ -129,7 +140,19 @@
|
|||
<dependency>
|
||||
<groupId>io.github.skytasul</groupId>
|
||||
<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>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package nl.sbdeveloper.showcontrol.api;
|
||||
|
||||
import lombok.experimental.StandardException;
|
||||
|
||||
@StandardException
|
||||
public class InvalidArgumentException extends Exception {
|
||||
}
|
|
@ -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.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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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,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);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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 = "<world> <x> <y> <z> <configuration ...>", 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);
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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 = "<name> <world> <x> <y> <z>")
|
||||
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
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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 = "<name> <world> <x> <y> <z>")
|
||||
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.");
|
||||
}
|
||||
|
|
@ -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 <Naam>
|
||||
/mctpshow delete <Naam>
|
||||
/mctpshow add <Naam> <Tijd> <Type> <Data ...>
|
||||
/mctpshow start <Naam>
|
||||
/mctpshow cancel <Naam>
|
||||
/mctpshow gui <Naam>
|
||||
*/
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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,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<String, YamlFile> files = new HashMap<>();
|
||||
|
||||
public static Map<String, YamlFile> getFiles() {
|
||||
|
@ -23,24 +25,30 @@ public class DataSaving {
|
|||
YamlFile showConfig = new YamlFile("data/" + showID);
|
||||
files.put(showID, showConfig);
|
||||
|
||||
List<ShowCue> cues = new ArrayList<>();
|
||||
List<ShowCuePoint> 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<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());
|
||||
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();
|
|
@ -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<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<>();
|
||||
|
||||
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<ShowCue> getPoints(String name) {
|
||||
public static List<ShowCuePoint> 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<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.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<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 -> {
|
||||
Shows.removePoint(showName, cue);
|
||||
open(player, pagination.getPage());
|
||||
|
|
|
@ -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<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:");
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -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
|
Loading…
Add table
Reference in a new issue