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