diff --git a/pom.xml b/pom.xml
index 60a4390..f412de6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
org.projectlombok
lombok
- 1.18.30
+ 1.18.28
@@ -145,7 +145,7 @@
org.projectlombok
lombok
- 1.18.30
+ 1.18.28
provided
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/ShowControlPlugin.java b/src/main/java/tech/sbdevelopment/showcontrol/ShowControlPlugin.java
index 7ea0055..8a61674 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/ShowControlPlugin.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/ShowControlPlugin.java
@@ -1,12 +1,13 @@
package tech.sbdevelopment.showcontrol;
import co.aikar.commands.PaperCommandManager;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.java.JavaPlugin;
+import tech.sbdevelopment.showcontrol.api.SCAPI;
import tech.sbdevelopment.showcontrol.commands.ShowCMD;
import tech.sbdevelopment.showcontrol.data.DataStorage;
-import tech.sbdevelopment.showcontrol.api.SCAPI;
import tech.sbdevelopment.showcontrol.utils.inventories.Inventory;
-import org.bukkit.Bukkit;
-import org.bukkit.plugin.java.JavaPlugin;
public final class ShowControlPlugin extends JavaPlugin {
private static ShowControlPlugin instance;
@@ -26,6 +27,15 @@ public final class ShowControlPlugin extends JavaPlugin {
commandManager.registerCommand(new ShowCMD());
commandManager.getCommandCompletions().registerCompletion("showname", c -> SCAPI.getShowsMap().keySet());
commandManager.getCommandCompletions().registerCompletion("showtype", c -> SCAPI.getTriggers().keySet());
+ commandManager.getCommandCompletions().registerCompletion("cuearg", c -> {
+ String arguments = c.getContextValue(String.class, 3);
+ String[] args = arguments.split(" ", -1);
+ if (args.length < 1) {
+ return null;
+ }
+ int lastArgIndex = args.length - 2;
+ return SCAPI.getTabComplete(args[0], c.getSender() instanceof Player ? c.getPlayer() : null, lastArgIndex, args[lastArgIndex + 1]);
+ });
getLogger().info("Loading GUI manageer...");
Inventory.init(this);
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/SCAPI.java b/src/main/java/tech/sbdevelopment/showcontrol/api/SCAPI.java
index ecf7d24..edef746 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/SCAPI.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/SCAPI.java
@@ -1,6 +1,8 @@
package tech.sbdevelopment.showcontrol.api;
import lombok.Getter;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.reflections.Reflections;
import org.reflections.scanners.Scanners;
import org.reflections.util.ClasspathHelper;
@@ -14,16 +16,18 @@ import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
import tech.sbdevelopment.showcontrol.data.DataStorage;
import tech.sbdevelopment.showcontrol.utils.YamlFile;
-import org.bukkit.Bukkit;
import java.io.File;
import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class SCAPI {
+ @Getter
+ private static final Map defaultTriggers = new HashMap<>(); //DO NOT USE, just for tab complete!
@Getter
private static final Map> triggers = new HashMap<>();
@Getter
@@ -49,9 +53,20 @@ public class SCAPI {
TriggerIdentifier identifier = trigger.getAnnotation(TriggerIdentifier.class);
triggers.put(identifier.value(), (Class extends Trigger>) trigger);
+ try {
+ defaultTriggers.put(identifier.value(), (Trigger) trigger.getDeclaredConstructor().newInstance());
+ } catch (NoSuchMethodException | InvocationTargetException | InstantiationException |
+ IllegalAccessException ex) {
+ throw new RuntimeException("Could not find default constructor for trigger " + trigger.getSimpleName() + "! Tab complete will not work for this trigger.", ex);
+ }
}
}
+ public static List getTabComplete(String triggerType, Player player, int index, String arg) {
+ if (!defaultTriggers.containsKey(triggerType)) return new ArrayList<>();
+ return defaultTriggers.get(triggerType).getArgumentTabComplete(player, index, arg);
+ }
+
public static T getTrigger(String data) throws ReflectiveOperationException, InvalidTriggerException, TooFewArgumentsException, IllegalArgumentException {
String[] dataSplitter = data.split(" ");
String[] dataSplitterNew = Arrays.copyOfRange(dataSplitter, 1, dataSplitter.length);
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/Trigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/Trigger.java
index e555142..704cc5e 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/Trigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/Trigger.java
@@ -2,7 +2,13 @@ package tech.sbdevelopment.showcontrol.api.triggers;
import lombok.AllArgsConstructor;
import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.bukkit.entity.Player;
+import javax.annotation.Nullable;
+import java.util.List;
+
+@NoArgsConstructor(force = true)
@AllArgsConstructor
@Getter
public abstract class Trigger {
@@ -13,6 +19,16 @@ public abstract class Trigger {
*/
public abstract void trigger();
+ /**
+ * This method gets fired when a player wants to add a cue
+ *
+ * @param player The player that wants to add the cue, will be null if it's not a player
+ * @param index The current argument index
+ * @param arg The current argument
+ * @return The tab complete value based on the index and argument
+ */
+ public abstract List getArgumentTabComplete(@Nullable Player player, int index, String arg);
+
/**
* This method gets fired when the cue gets removed
* It's not required, and does nothing if it's not needed.
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/AnimaTrigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/AnimaTrigger.java
index be95e9f..f631a12 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/AnimaTrigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/AnimaTrigger.java
@@ -1,18 +1,52 @@
package tech.sbdevelopment.showcontrol.api.triggers.impl;
-import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
-import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
+import lombok.NoArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
+import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@NoArgsConstructor(force = true)
@TriggerIdentifier(value = "animatronic", minArgs = 1, argDesc = "", item = Material.ARMOR_STAND)
public class AnimaTrigger extends Trigger {
public AnimaTrigger(String[] data) {
super(data);
+ if (Bukkit.getPluginManager().getPlugin("Animatronics") == null) {
+ throw new RuntimeException("Animatronics is not installed, can't run an animatronic trigger!");
+ }
}
@Override
public void trigger() {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + getDataString());
}
+
+ @Override
+ public List getArgumentTabComplete(Player player, int index, String arg) {
+ //This trigger supports one argument!
+ if (index > 0) {
+ return List.of();
+ }
+
+ List animaFiles = new ArrayList<>();
+ File directory = new File(Bukkit.getPluginManager().getPlugin("Animatronics").getDataFolder(), "animatronics");
+ if (directory.isDirectory()) {
+ File[] files = directory.listFiles((dir, name) -> name.endsWith(".anima"));
+ if (files != null) {
+ animaFiles.addAll(
+ Arrays.stream(files)
+ .map(file -> file.getName().replaceFirst("[.][^.]+$", ""))
+ .collect(Collectors.toList())
+ );
+ }
+ }
+ return animaFiles;
+ }
}
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/CommandTrigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/CommandTrigger.java
index 0eb368f..f151152 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/CommandTrigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/CommandTrigger.java
@@ -1,10 +1,15 @@
package tech.sbdevelopment.showcontrol.api.triggers.impl;
-import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
-import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
+import lombok.NoArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
+import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
+import java.util.List;
+
+@NoArgsConstructor(force = true)
@TriggerIdentifier(value = "command", minArgs = 1, argDesc = "", item = Material.COMMAND_BLOCK)
public class CommandTrigger extends Trigger {
public CommandTrigger(String[] data) {
@@ -15,4 +20,9 @@ public class CommandTrigger extends Trigger {
public void trigger() {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), getDataString());
}
+
+ @Override
+ public List getArgumentTabComplete(Player player, int index, String arg) {
+ return List.of();
+ }
}
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/FireworkTrigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/FireworkTrigger.java
index 21da57a..5108396 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/FireworkTrigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/FireworkTrigger.java
@@ -1,12 +1,20 @@
package tech.sbdevelopment.showcontrol.api.triggers.impl;
+import lombok.NoArgsConstructor;
+import org.bukkit.*;
+import org.bukkit.entity.Player;
import tech.sbdevelopment.showcontrol.api.exceptions.InvalidArgumentException;
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
import tech.sbdevelopment.showcontrol.elements.Fireworks;
import tech.sbdevelopment.showcontrol.utils.Color;
-import org.bukkit.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+@NoArgsConstructor(force = true)
@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = " ", item = Material.FIREWORK_ROCKET)
public class FireworkTrigger extends Trigger {
private final Fireworks.Firework fw;
@@ -59,6 +67,10 @@ public class FireworkTrigger extends Trigger {
continue;
}
+ //Limit value to 0-127
+ if (power < 0) power = 0;
+ if (power > 127) power = 127;
+
firework = firework.setPower(power);
}
}
@@ -70,4 +82,36 @@ public class FireworkTrigger extends Trigger {
public void trigger() {
Fireworks.spawn(fw, spawnLoc);
}
+
+ @Override
+ public List getArgumentTabComplete(Player player, int index, String arg) {
+ if (index == 0) {
+ return player != null ? List.of(player.getWorld().getName()) : Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toList());
+ } else if (index == 1) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockX())) : List.of();
+ } else if (index == 2) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockY())) : List.of();
+ } else if (index == 3) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockZ())) : List.of();
+ } else if (index >= 4) {
+ String key = arg.contains(":") ? arg.split(":", -1)[0] : arg;
+
+ if (key.isBlank()) {
+ return List.of("color:", "shape:", "fade:", "effect:", "power:");
+ } else if ("color".startsWith(key)) {
+ return Arrays.stream(Color.values()).map(c -> "color:" + c.name()).collect(Collectors.toList());
+ } else if ("shape".startsWith(key)) {
+ return Arrays.stream(FireworkEffect.Type.values()).map(t -> "shape:" + t.name()).collect(Collectors.toList());
+ } else if ("fade".startsWith(key)) {
+ return Arrays.stream(Color.values()).map(c -> "fade:" + c.name()).collect(Collectors.toList());
+ } else if ("effect".startsWith(key)) {
+ return List.of("effect:trail", "effect:twinkle");
+ } else if ("power".startsWith(key)) {
+ return IntStream.rangeClosed(0, 127)
+ .mapToObj(i -> "power:" + i)
+ .collect(Collectors.toList());
+ }
+ }
+ return List.of();
+ }
}
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/LaserTrigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/LaserTrigger.java
index 68c746e..8cac4c7 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/LaserTrigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/LaserTrigger.java
@@ -1,13 +1,20 @@
package tech.sbdevelopment.showcontrol.api.triggers.impl;
+import lombok.NoArgsConstructor;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.entity.Player;
import tech.sbdevelopment.showcontrol.api.exceptions.InvalidArgumentException;
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
import tech.sbdevelopment.showcontrol.elements.Lasers;
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.World;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@NoArgsConstructor(force = true)
@TriggerIdentifier(value = "laser", minArgs = 5, argDesc = " ")
public class LaserTrigger extends Trigger {
private final String name;
@@ -46,6 +53,22 @@ public class LaserTrigger extends Trigger {
Lasers.move(name, newLocation);
}
+ @Override
+ public List getArgumentTabComplete(Player player, int index, String arg) {
+ if (index == 0) {
+ return new ArrayList<>(Lasers.getLasers().keySet());
+ } else if (index == 1) {
+ return player != null ? List.of(player.getWorld().getName()) : Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toList());
+ } else if (index == 2) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockX())) : List.of();
+ } else if (index == 3) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockY())) : List.of();
+ } else if (index == 4) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockZ())) : List.of();
+ }
+ return List.of();
+ }
+
@Override
public void remove() {
Lasers.remove(name);
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/ParticleTrigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/ParticleTrigger.java
index 06937f8..fa82db9 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/ParticleTrigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/ParticleTrigger.java
@@ -1,13 +1,20 @@
package tech.sbdevelopment.showcontrol.api.triggers.impl;
-import tech.sbdevelopment.showcontrol.api.exceptions.InvalidArgumentException;
-import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
-import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
+import lombok.NoArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Particle;
import org.bukkit.World;
+import org.bukkit.entity.Player;
+import tech.sbdevelopment.showcontrol.api.exceptions.InvalidArgumentException;
+import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
+import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@NoArgsConstructor(force = true)
@TriggerIdentifier(value = "particle", minArgs = 6, argDesc = " ")
public class ParticleTrigger extends Trigger {
private final Particle type;
@@ -52,4 +59,20 @@ public class ParticleTrigger extends Trigger {
public void trigger() {
spawnLoc.getWorld().spawnParticle(type, spawnLoc, count);
}
+
+ @Override
+ public List getArgumentTabComplete(Player player, int index, String arg) {
+ if (index == 0) {
+ return player != null ? List.of(player.getWorld().getName()) : Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toList());
+ } else if (index == 1) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockX())) : List.of();
+ } else if (index == 2) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockY())) : List.of();
+ } else if (index == 3) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockZ())) : List.of();
+ } else if (index == 4) {
+ return Arrays.stream(Particle.values()).map(Enum::name).collect(Collectors.toList());
+ }
+ return List.of();
+ }
}
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/SpotTrigger.java b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/SpotTrigger.java
index 17115ce..0e0c504 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/SpotTrigger.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/api/triggers/impl/SpotTrigger.java
@@ -1,13 +1,20 @@
package tech.sbdevelopment.showcontrol.api.triggers.impl;
+import lombok.NoArgsConstructor;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.entity.Player;
import tech.sbdevelopment.showcontrol.api.exceptions.InvalidArgumentException;
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
import tech.sbdevelopment.showcontrol.elements.Spots;
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.World;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@NoArgsConstructor(force = true)
@TriggerIdentifier(value = "spot", minArgs = 5, argDesc = " ")
public class SpotTrigger extends Trigger {
private final String name;
@@ -46,6 +53,22 @@ public class SpotTrigger extends Trigger {
Spots.move(name, newLocation);
}
+ @Override
+ public List getArgumentTabComplete(Player player, int index, String arg) {
+ if (index == 0) {
+ return new ArrayList<>(Spots.getSpots().keySet());
+ } else if (index == 1) {
+ return player != null ? List.of(player.getWorld().getName()) : Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toList());
+ } else if (index == 2) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockX())) : List.of();
+ } else if (index == 3) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockY())) : List.of();
+ } else if (index == 4) {
+ return player != null ? List.of(String.valueOf(player.getLocation().getBlockZ())) : List.of();
+ }
+ return List.of();
+ }
+
@Override
public void remove() {
Spots.remove(name);
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/commands/ShowCMD.java b/src/main/java/tech/sbdevelopment/showcontrol/commands/ShowCMD.java
index 3cb1c3c..408e930 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/commands/ShowCMD.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/commands/ShowCMD.java
@@ -1,20 +1,28 @@
package tech.sbdevelopment.showcontrol.commands;
import co.aikar.commands.BaseCommand;
+import co.aikar.commands.CommandHelp;
import co.aikar.commands.annotation.*;
-import tech.sbdevelopment.showcontrol.api.exceptions.InvalidTriggerException;
-import tech.sbdevelopment.showcontrol.api.exceptions.TooFewArgumentsException;
-import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
-import tech.sbdevelopment.showcontrol.api.SCAPI;
-import tech.sbdevelopment.showcontrol.gui.ShowCueGUI;
-import tech.sbdevelopment.showcontrol.utils.TimeUtil;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import tech.sbdevelopment.showcontrol.api.SCAPI;
+import tech.sbdevelopment.showcontrol.api.exceptions.InvalidTriggerException;
+import tech.sbdevelopment.showcontrol.api.exceptions.TooFewArgumentsException;
+import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
+import tech.sbdevelopment.showcontrol.gui.ShowCueGUI;
+import tech.sbdevelopment.showcontrol.utils.TimeUtil;
@CommandAlias("showcontrol|sc")
@CommandPermission("sc.admin")
public class ShowCMD extends BaseCommand {
+ @HelpCommand
+ @CatchUnknown
+ @Default
+ public static void onHelp(CommandSender sender, CommandHelp help) {
+ help.showHelp();
+ }
+
@Subcommand("create")
@Description("")
public void onCreate(CommandSender sender, @Single String name) {
@@ -44,7 +52,7 @@ public class ShowCMD extends BaseCommand {
@Subcommand("add")
@Description("")
- @CommandCompletion("@showname @empty @showtype @empty")
+ @CommandCompletion("@showname @empty @showtype @cuearg")
public void onAdd(CommandSender sender, String name, String time, String args) {
if (!SCAPI.exists(name)) {
sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/data/DataStorage.java b/src/main/java/tech/sbdevelopment/showcontrol/data/DataStorage.java
index 2f4479d..05b594e 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/data/DataStorage.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/data/DataStorage.java
@@ -3,8 +3,8 @@ package tech.sbdevelopment.showcontrol.data;
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
import tech.sbdevelopment.showcontrol.api.SCAPI;
import tech.sbdevelopment.showcontrol.api.exceptions.InvalidTriggerException;
-import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
import tech.sbdevelopment.showcontrol.api.exceptions.TooFewArgumentsException;
+import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
import tech.sbdevelopment.showcontrol.utils.YamlFile;
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/elements/Lasers.java b/src/main/java/tech/sbdevelopment/showcontrol/elements/Lasers.java
index 59a63c3..c31e757 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/elements/Lasers.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/elements/Lasers.java
@@ -1,14 +1,16 @@
package tech.sbdevelopment.showcontrol.elements;
import fr.skytasul.guardianbeam.Laser;
-import tech.sbdevelopment.showcontrol.ShowControlPlugin;
+import lombok.Getter;
import org.bukkit.Location;
import org.bukkit.scheduler.BukkitRunnable;
+import tech.sbdevelopment.showcontrol.ShowControlPlugin;
import java.util.HashMap;
import java.util.Map;
public class Lasers {
+ @Getter
private static final Map lasers = new HashMap<>();
/**
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/elements/Spots.java b/src/main/java/tech/sbdevelopment/showcontrol/elements/Spots.java
index ba0f4bd..0430a4e 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/elements/Spots.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/elements/Spots.java
@@ -1,14 +1,16 @@
package tech.sbdevelopment.showcontrol.elements;
import fr.skytasul.guardianbeam.Laser;
-import tech.sbdevelopment.showcontrol.ShowControlPlugin;
+import lombok.Getter;
import org.bukkit.Location;
import org.bukkit.scheduler.BukkitRunnable;
+import tech.sbdevelopment.showcontrol.ShowControlPlugin;
import java.util.HashMap;
import java.util.Map;
public class Spots {
+ @Getter
private static final Map spots = new HashMap<>();
/**
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/gui/ShowCueGUI.java b/src/main/java/tech/sbdevelopment/showcontrol/gui/ShowCueGUI.java
index d9c92e7..9be6930 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/gui/ShowCueGUI.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/gui/ShowCueGUI.java
@@ -1,12 +1,12 @@
package tech.sbdevelopment.showcontrol.gui;
import fr.minuskube.inv.ClickableItem;
-import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
-import tech.sbdevelopment.showcontrol.api.SCAPI;
-import tech.sbdevelopment.showcontrol.utils.MainUtil;
-import tech.sbdevelopment.showcontrol.utils.inventories.PaginationInventory;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
+import tech.sbdevelopment.showcontrol.api.SCAPI;
+import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
+import tech.sbdevelopment.showcontrol.utils.MainUtil;
+import tech.sbdevelopment.showcontrol.utils.inventories.PaginationInventory;
import java.util.Comparator;
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/utils/MainUtil.java b/src/main/java/tech/sbdevelopment/showcontrol/utils/MainUtil.java
index d54ef9d..da5860d 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/utils/MainUtil.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/utils/MainUtil.java
@@ -1,10 +1,10 @@
package tech.sbdevelopment.showcontrol.utils;
-import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
-import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
import org.bukkit.ChatColor;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.ChatPaginator;
+import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
+import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/tech/sbdevelopment/showcontrol/utils/TimeUtil.java b/src/main/java/tech/sbdevelopment/showcontrol/utils/TimeUtil.java
index 35257a1..ac3001a 100644
--- a/src/main/java/tech/sbdevelopment/showcontrol/utils/TimeUtil.java
+++ b/src/main/java/tech/sbdevelopment/showcontrol/utils/TimeUtil.java
@@ -4,7 +4,7 @@ import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.TimeUnit;
-/**
+/*
* Source from:
* https://github.com/Mindgamesnl/OpenAudioMc/blob/master/plugin/src/main/java/com/craftmend/openaudiomc/spigot/modules/show/util/TimeParser.java
*/
@@ -40,7 +40,7 @@ public class TimeUtil {
String[] tickSplit = input.split("t");
if (isValid(tickSplit)) {
- time += Math.round(Integer.parseInt(tickSplit[0]) * 50);
+ time += Integer.parseInt(tickSplit[0]) * 50L;
return time;
}
@@ -48,7 +48,7 @@ public class TimeUtil {
}
private static boolean isValid(String[] array) {
- return array.length > 1 && array[0].length() > 0;
+ return array.length > 1 && !array[0].isEmpty();
}
public static String makeReadable(Long time) {
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index db43d08..d8a15fd 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -3,5 +3,6 @@ version: ${project.version}
main: tech.sbdevelopment.showcontrol.ShowControlPlugin
api-version: 1.13
authors: [SBDeveloper]
+softdepend: [Animatronics]
description: Create shows easily using this plugin!
website: https://sbdevelopment.tech
\ No newline at end of file