Implemented argument tab complete #19
17 changed files with 248 additions and 37 deletions
|
@ -1,12 +1,13 @@
|
||||||
package tech.sbdevelopment.showcontrol;
|
package tech.sbdevelopment.showcontrol;
|
||||||
|
|
||||||
import co.aikar.commands.PaperCommandManager;
|
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.commands.ShowCMD;
|
||||||
import tech.sbdevelopment.showcontrol.data.DataStorage;
|
import tech.sbdevelopment.showcontrol.data.DataStorage;
|
||||||
import tech.sbdevelopment.showcontrol.api.SCAPI;
|
|
||||||
import tech.sbdevelopment.showcontrol.utils.inventories.Inventory;
|
import tech.sbdevelopment.showcontrol.utils.inventories.Inventory;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
public final class ShowControlPlugin extends JavaPlugin {
|
public final class ShowControlPlugin extends JavaPlugin {
|
||||||
private static ShowControlPlugin instance;
|
private static ShowControlPlugin instance;
|
||||||
|
@ -26,6 +27,15 @@ public final class ShowControlPlugin extends JavaPlugin {
|
||||||
commandManager.registerCommand(new ShowCMD());
|
commandManager.registerCommand(new ShowCMD());
|
||||||
commandManager.getCommandCompletions().registerCompletion("showname", c -> SCAPI.getShowsMap().keySet());
|
commandManager.getCommandCompletions().registerCompletion("showname", c -> SCAPI.getShowsMap().keySet());
|
||||||
commandManager.getCommandCompletions().registerCompletion("showtype", c -> SCAPI.getTriggers().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...");
|
getLogger().info("Loading GUI manageer...");
|
||||||
Inventory.init(this);
|
Inventory.init(this);
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package tech.sbdevelopment.showcontrol.api;
|
package tech.sbdevelopment.showcontrol.api;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
import org.reflections.scanners.Scanners;
|
import org.reflections.scanners.Scanners;
|
||||||
import org.reflections.util.ClasspathHelper;
|
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.api.triggers.TriggerIdentifier;
|
||||||
import tech.sbdevelopment.showcontrol.data.DataStorage;
|
import tech.sbdevelopment.showcontrol.data.DataStorage;
|
||||||
import tech.sbdevelopment.showcontrol.utils.YamlFile;
|
import tech.sbdevelopment.showcontrol.utils.YamlFile;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class SCAPI {
|
public class SCAPI {
|
||||||
|
@Getter
|
||||||
|
private static final Map<String, Trigger> defaultTriggers = new HashMap<>(); //DO NOT USE, just for tab complete!
|
||||||
@Getter
|
@Getter
|
||||||
private static final Map<String, Class<? extends Trigger>> triggers = new HashMap<>();
|
private static final Map<String, Class<? extends Trigger>> triggers = new HashMap<>();
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -49,9 +53,20 @@ public class SCAPI {
|
||||||
|
|
||||||
TriggerIdentifier identifier = trigger.getAnnotation(TriggerIdentifier.class);
|
TriggerIdentifier identifier = trigger.getAnnotation(TriggerIdentifier.class);
|
||||||
triggers.put(identifier.value(), (Class<? extends Trigger>) trigger);
|
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<String> 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 extends Trigger> T getTrigger(String data) throws ReflectiveOperationException, InvalidTriggerException, TooFewArgumentsException, IllegalArgumentException {
|
public static <T extends Trigger> T getTrigger(String data) throws ReflectiveOperationException, InvalidTriggerException, TooFewArgumentsException, IllegalArgumentException {
|
||||||
String[] dataSplitter = data.split(" ");
|
String[] dataSplitter = data.split(" ");
|
||||||
String[] dataSplitterNew = Arrays.copyOfRange(dataSplitter, 1, dataSplitter.length);
|
String[] dataSplitterNew = Arrays.copyOfRange(dataSplitter, 1, dataSplitter.length);
|
||||||
|
|
|
@ -2,7 +2,13 @@ package tech.sbdevelopment.showcontrol.api.triggers;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@NoArgsConstructor(force = true)
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
public abstract class Trigger {
|
public abstract class Trigger {
|
||||||
|
@ -13,6 +19,16 @@ public abstract class Trigger {
|
||||||
*/
|
*/
|
||||||
public abstract void 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<String> getArgumentTabComplete(@Nullable Player player, int index, String arg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets fired when the cue gets removed
|
* This method gets fired when the cue gets removed
|
||||||
* It's not required, and does nothing if it's not needed.
|
* It's not required, and does nothing if it's not needed.
|
||||||
|
|
|
@ -1,18 +1,52 @@
|
||||||
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
||||||
|
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
import lombok.NoArgsConstructor;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
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 = "<name>", item = Material.ARMOR_STAND)
|
@TriggerIdentifier(value = "animatronic", minArgs = 1, argDesc = "<name>", item = Material.ARMOR_STAND)
|
||||||
public class AnimaTrigger extends Trigger {
|
public class AnimaTrigger extends Trigger {
|
||||||
public AnimaTrigger(String[] data) {
|
public AnimaTrigger(String[] data) {
|
||||||
super(data);
|
super(data);
|
||||||
|
if (Bukkit.getPluginManager().getPlugin("Animatronics") == null) {
|
||||||
|
throw new RuntimeException("Animatronics is not installed, can't run an animatronic trigger!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void trigger() {
|
public void trigger() {
|
||||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + getDataString());
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + getDataString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getArgumentTabComplete(Player player, int index, String arg) {
|
||||||
|
//This trigger supports one argument!
|
||||||
|
if (index > 0) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
||||||
|
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
import lombok.NoArgsConstructor;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
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 = "<command ...>", item = Material.COMMAND_BLOCK)
|
@TriggerIdentifier(value = "command", minArgs = 1, argDesc = "<command ...>", item = Material.COMMAND_BLOCK)
|
||||||
public class CommandTrigger extends Trigger {
|
public class CommandTrigger extends Trigger {
|
||||||
public CommandTrigger(String[] data) {
|
public CommandTrigger(String[] data) {
|
||||||
|
@ -15,4 +20,9 @@ public class CommandTrigger extends Trigger {
|
||||||
public void trigger() {
|
public void trigger() {
|
||||||
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), getDataString());
|
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), getDataString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getArgumentTabComplete(Player player, int index, String arg) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
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.exceptions.InvalidArgumentException;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import tech.sbdevelopment.showcontrol.elements.Fireworks;
|
import tech.sbdevelopment.showcontrol.elements.Fireworks;
|
||||||
import tech.sbdevelopment.showcontrol.utils.Color;
|
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 = "<world> <x> <y> <z> <configuration ...>", item = Material.FIREWORK_ROCKET)
|
@TriggerIdentifier(value = "firework", minArgs = 5, argDesc = "<world> <x> <y> <z> <configuration ...>", item = Material.FIREWORK_ROCKET)
|
||||||
public class FireworkTrigger extends Trigger {
|
public class FireworkTrigger extends Trigger {
|
||||||
private final Fireworks.Firework fw;
|
private final Fireworks.Firework fw;
|
||||||
|
@ -59,6 +67,10 @@ public class FireworkTrigger extends Trigger {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Limit value to 0-127
|
||||||
|
if (power < 0) power = 0;
|
||||||
|
if (power > 127) power = 127;
|
||||||
|
|
||||||
firework = firework.setPower(power);
|
firework = firework.setPower(power);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,4 +82,36 @@ public class FireworkTrigger extends Trigger {
|
||||||
public void trigger() {
|
public void trigger() {
|
||||||
Fireworks.spawn(fw, spawnLoc);
|
Fireworks.spawn(fw, spawnLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
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.exceptions.InvalidArgumentException;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import tech.sbdevelopment.showcontrol.elements.Lasers;
|
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 = "<name> <world> <x> <y> <z>")
|
@TriggerIdentifier(value = "laser", minArgs = 5, argDesc = "<name> <world> <x> <y> <z>")
|
||||||
public class LaserTrigger extends Trigger {
|
public class LaserTrigger extends Trigger {
|
||||||
private final String name;
|
private final String name;
|
||||||
|
@ -46,6 +53,22 @@ public class LaserTrigger extends Trigger {
|
||||||
Lasers.move(name, newLocation);
|
Lasers.move(name, newLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> 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
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
Lasers.remove(name);
|
Lasers.remove(name);
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
||||||
|
|
||||||
import tech.sbdevelopment.showcontrol.api.exceptions.InvalidArgumentException;
|
import lombok.NoArgsConstructor;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
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 = "<world> <x> <y> <z> <type> <count>")
|
@TriggerIdentifier(value = "particle", minArgs = 6, argDesc = "<world> <x> <y> <z> <type> <count>")
|
||||||
public class ParticleTrigger extends Trigger {
|
public class ParticleTrigger extends Trigger {
|
||||||
private final Particle type;
|
private final Particle type;
|
||||||
|
@ -52,4 +59,20 @@ public class ParticleTrigger extends Trigger {
|
||||||
public void trigger() {
|
public void trigger() {
|
||||||
spawnLoc.getWorld().spawnParticle(type, spawnLoc, count);
|
spawnLoc.getWorld().spawnParticle(type, spawnLoc, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
package tech.sbdevelopment.showcontrol.api.triggers.impl;
|
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.exceptions.InvalidArgumentException;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
import tech.sbdevelopment.showcontrol.api.triggers.TriggerIdentifier;
|
||||||
import tech.sbdevelopment.showcontrol.elements.Spots;
|
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 = "<name> <world> <x> <y> <z>")
|
@TriggerIdentifier(value = "spot", minArgs = 5, argDesc = "<name> <world> <x> <y> <z>")
|
||||||
public class SpotTrigger extends Trigger {
|
public class SpotTrigger extends Trigger {
|
||||||
private final String name;
|
private final String name;
|
||||||
|
@ -46,6 +53,22 @@ public class SpotTrigger extends Trigger {
|
||||||
Spots.move(name, newLocation);
|
Spots.move(name, newLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> 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
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
Spots.remove(name);
|
Spots.remove(name);
|
||||||
|
|
|
@ -1,20 +1,28 @@
|
||||||
package tech.sbdevelopment.showcontrol.commands;
|
package tech.sbdevelopment.showcontrol.commands;
|
||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
|
import co.aikar.commands.CommandHelp;
|
||||||
import co.aikar.commands.annotation.*;
|
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.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
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")
|
@CommandAlias("showcontrol|sc")
|
||||||
@CommandPermission("sc.admin")
|
@CommandPermission("sc.admin")
|
||||||
public class ShowCMD extends BaseCommand {
|
public class ShowCMD extends BaseCommand {
|
||||||
|
@HelpCommand
|
||||||
|
@CatchUnknown
|
||||||
|
@Default
|
||||||
|
public static void onHelp(CommandSender sender, CommandHelp help) {
|
||||||
|
help.showHelp();
|
||||||
|
}
|
||||||
|
|
||||||
@Subcommand("create")
|
@Subcommand("create")
|
||||||
@Description("")
|
@Description("")
|
||||||
public void onCreate(CommandSender sender, @Single String name) {
|
public void onCreate(CommandSender sender, @Single String name) {
|
||||||
|
@ -44,7 +52,7 @@ public class ShowCMD extends BaseCommand {
|
||||||
|
|
||||||
@Subcommand("add")
|
@Subcommand("add")
|
||||||
@Description("")
|
@Description("")
|
||||||
@CommandCompletion("@showname @empty @showtype @empty")
|
@CommandCompletion("@showname @empty @showtype @cuearg")
|
||||||
public void onAdd(CommandSender sender, String name, String time, String args) {
|
public void onAdd(CommandSender sender, String name, String time, String args) {
|
||||||
if (!SCAPI.exists(name)) {
|
if (!SCAPI.exists(name)) {
|
||||||
sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
|
sender.sendMessage(ChatColor.RED + "That show doesn't exists.");
|
||||||
|
|
|
@ -3,8 +3,8 @@ package tech.sbdevelopment.showcontrol.data;
|
||||||
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
|
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
|
||||||
import tech.sbdevelopment.showcontrol.api.SCAPI;
|
import tech.sbdevelopment.showcontrol.api.SCAPI;
|
||||||
import tech.sbdevelopment.showcontrol.api.exceptions.InvalidTriggerException;
|
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.exceptions.TooFewArgumentsException;
|
||||||
|
import tech.sbdevelopment.showcontrol.api.points.ShowCuePoint;
|
||||||
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
import tech.sbdevelopment.showcontrol.api.triggers.Trigger;
|
||||||
import tech.sbdevelopment.showcontrol.utils.YamlFile;
|
import tech.sbdevelopment.showcontrol.utils.YamlFile;
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package tech.sbdevelopment.showcontrol.elements;
|
package tech.sbdevelopment.showcontrol.elements;
|
||||||
|
|
||||||
import fr.skytasul.guardianbeam.Laser;
|
import fr.skytasul.guardianbeam.Laser;
|
||||||
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
|
import lombok.Getter;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class Lasers {
|
public class Lasers {
|
||||||
|
@Getter
|
||||||
private static final Map<String, LaserRunnable> lasers = new HashMap<>();
|
private static final Map<String, LaserRunnable> lasers = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package tech.sbdevelopment.showcontrol.elements;
|
package tech.sbdevelopment.showcontrol.elements;
|
||||||
|
|
||||||
import fr.skytasul.guardianbeam.Laser;
|
import fr.skytasul.guardianbeam.Laser;
|
||||||
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
|
import lombok.Getter;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import tech.sbdevelopment.showcontrol.ShowControlPlugin;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class Spots {
|
public class Spots {
|
||||||
|
@Getter
|
||||||
private static final Map<String, SpotRunnable> spots = new HashMap<>();
|
private static final Map<String, SpotRunnable> spots = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
package tech.sbdevelopment.showcontrol.gui;
|
package tech.sbdevelopment.showcontrol.gui;
|
||||||
|
|
||||||
import fr.minuskube.inv.ClickableItem;
|
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.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
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;
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package tech.sbdevelopment.showcontrol.utils;
|
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.ChatColor;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.ChatPaginator;
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.time.LocalTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Source from:
|
* Source from:
|
||||||
* https://github.com/Mindgamesnl/OpenAudioMc/blob/master/plugin/src/main/java/com/craftmend/openaudiomc/spigot/modules/show/util/TimeParser.java
|
* 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");
|
String[] tickSplit = input.split("t");
|
||||||
if (isValid(tickSplit)) {
|
if (isValid(tickSplit)) {
|
||||||
time += Math.round(Integer.parseInt(tickSplit[0]) * 50);
|
time += Integer.parseInt(tickSplit[0]) * 50L;
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ public class TimeUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isValid(String[] array) {
|
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) {
|
public static String makeReadable(Long time) {
|
||||||
|
|
|
@ -3,5 +3,6 @@ version: ${project.version}
|
||||||
main: tech.sbdevelopment.showcontrol.ShowControlPlugin
|
main: tech.sbdevelopment.showcontrol.ShowControlPlugin
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
authors: [SBDeveloper]
|
authors: [SBDeveloper]
|
||||||
|
softdepend: [Animatronics]
|
||||||
description: Create shows easily using this plugin!
|
description: Create shows easily using this plugin!
|
||||||
website: https://sbdevelopment.tech
|
website: https://sbdevelopment.tech
|
Loading…
Add table
Reference in a new issue