diff --git a/pom.xml b/pom.xml index 84c4b9e..2ff4745 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,6 @@ Make perfect shows with this API! - 1.8 UTF-8 @@ -31,16 +30,18 @@ org.apache.maven.plugins maven-compiler-plugin - 3.7.0 + 3.8.1 - ${java.version} - ${java.version} + 11 + + -parameters + org.apache.maven.plugins maven-shade-plugin - 3.1.0 + 3.2.4 package @@ -50,6 +51,7 @@ true false + false org.inventivetalent.apihelper @@ -59,6 +61,18 @@ fr.minuskube.inv nl.sbdeveloper.showapi.helpers.inv + + com.github.fierioziy.particlenativeapi + nl.sbdeveloper.showapi.helpers.particleapi + + + co.aikar.commands + nl.sbdeveloper.showapi.helpers.acf + + + co.aikar.locales + nl.sbdeveloper.showapi.helpers.locales + @@ -155,5 +169,17 @@ XSeries 7.8.0 + + com.github.fierioziy.particlenativeapi + ParticleNativeAPI-plugin + 3.0.0 + compile + + + co.aikar + acf-paper + 0.5.0-SNAPSHOT + compile + diff --git a/src/main/java/nl/sbdeveloper/showapi/ShowAPIPlugin.java b/src/main/java/nl/sbdeveloper/showapi/ShowAPIPlugin.java index 882fa04..f90111d 100644 --- a/src/main/java/nl/sbdeveloper/showapi/ShowAPIPlugin.java +++ b/src/main/java/nl/sbdeveloper/showapi/ShowAPIPlugin.java @@ -1,5 +1,9 @@ package nl.sbdeveloper.showapi; +import co.aikar.commands.PaperCommandManager; +import com.github.fierioziy.particlenativeapi.api.ParticleNativeAPI; +import com.github.fierioziy.particlenativeapi.api.utils.ParticleException; +import com.github.fierioziy.particlenativeapi.core.ParticleNativeCore; import nl.sbdeveloper.showapi.commands.ShowCMD; import nl.sbdeveloper.showapi.data.DataSaving; import nl.sbdeveloper.showapi.data.Shows; @@ -12,8 +16,10 @@ import org.inventivetalent.apihelper.APIManager; public final class ShowAPIPlugin extends JavaPlugin { private static ShowAPIPlugin instance; + private static PaperCommandManager commandManager; private final ShowAPI showAPI = new ShowAPI(); private static YamlFile data; + private static ParticleNativeAPI particleAPI; @Override public void onLoad() { @@ -29,9 +35,20 @@ public final class ShowAPIPlugin extends JavaPlugin { APIManager.initAPI(ShowAPI.class); - Inventory.init(); + commandManager = new PaperCommandManager(this); + commandManager.enableUnstableAPI("help"); - getCommand("mctpshow").setExecutor(new ShowCMD()); + commandManager.registerCommand(new ShowCMD()); + + try { + particleAPI = ParticleNativeCore.loadAPI(this); + } catch (ParticleException ex) { + ex.printStackTrace(); + getPluginLoader().disablePlugin(this); + return; + } + + Inventory.init(); Bukkit.getScheduler().runTaskLater(this, DataSaving::load, 1L); //Load 1 tick later, because of multi world } @@ -51,7 +68,15 @@ public final class ShowAPIPlugin extends JavaPlugin { return instance; } + public static PaperCommandManager getCommandManager() { + return commandManager; + } + public static YamlFile getData() { return data; } + + public static ParticleNativeAPI getParticleAPI() { + return particleAPI; + } } diff --git a/src/main/java/nl/sbdeveloper/showapi/api/TriggerTask.java b/src/main/java/nl/sbdeveloper/showapi/api/TriggerTask.java index 683c52a..550d3df 100644 --- a/src/main/java/nl/sbdeveloper/showapi/api/TriggerTask.java +++ b/src/main/java/nl/sbdeveloper/showapi/api/TriggerTask.java @@ -19,8 +19,9 @@ public abstract class TriggerTask { /** * This method gets fired when the cue gets removed + * It's not required, and does nothing if it's not needed. */ - public abstract void remove(); + public void remove() {} /** * Get the trigger type diff --git a/src/main/java/nl/sbdeveloper/showapi/api/TriggerType.java b/src/main/java/nl/sbdeveloper/showapi/api/TriggerType.java index d26835e..24596b1 100644 --- a/src/main/java/nl/sbdeveloper/showapi/api/TriggerType.java +++ b/src/main/java/nl/sbdeveloper/showapi/api/TriggerType.java @@ -5,6 +5,7 @@ import nl.sbdeveloper.showapi.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), diff --git a/src/main/java/nl/sbdeveloper/showapi/api/triggers/AnimaTrigger.java b/src/main/java/nl/sbdeveloper/showapi/api/triggers/AnimaTrigger.java index 2b2a8c2..c959353 100644 --- a/src/main/java/nl/sbdeveloper/showapi/api/triggers/AnimaTrigger.java +++ b/src/main/java/nl/sbdeveloper/showapi/api/triggers/AnimaTrigger.java @@ -17,9 +17,4 @@ public class AnimaTrigger extends TriggerTask { public void trigger() { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "anima play " + name); } - - @Override - public void remove() { - //TODO Remove the anima? - } } diff --git a/src/main/java/nl/sbdeveloper/showapi/api/triggers/CommandTrigger.java b/src/main/java/nl/sbdeveloper/showapi/api/triggers/CommandTrigger.java index 473549e..5bf6c63 100644 --- a/src/main/java/nl/sbdeveloper/showapi/api/triggers/CommandTrigger.java +++ b/src/main/java/nl/sbdeveloper/showapi/api/triggers/CommandTrigger.java @@ -17,7 +17,4 @@ public class CommandTrigger extends TriggerTask { public void trigger() { Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), command); } - - @Override - public void remove() {} //A command is one time, ignore. } diff --git a/src/main/java/nl/sbdeveloper/showapi/api/triggers/FakeFireworkTrigger.java b/src/main/java/nl/sbdeveloper/showapi/api/triggers/FakeFireworkTrigger.java new file mode 100644 index 0000000..acf624b --- /dev/null +++ b/src/main/java/nl/sbdeveloper/showapi/api/triggers/FakeFireworkTrigger.java @@ -0,0 +1,53 @@ +package nl.sbdeveloper.showapi.api.triggers; + +import nl.sbdeveloper.showapi.ShowAPIPlugin; +import nl.sbdeveloper.showapi.api.TriggerTask; +import nl.sbdeveloper.showapi.api.TriggerType; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; + +public class FakeFireworkTrigger extends TriggerTask { + private Location spawnLoc; + private float xVelocity; + private float yVelocity; + private float zVelocity; + + public FakeFireworkTrigger(String[] data) { + super(TriggerType.FAKE_FIREWORK, 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.xVelocity = Float.parseFloat(data[4]); + this.yVelocity = Float.parseFloat(data[5]); + this.zVelocity = Float.parseFloat(data[6]); + } catch (NumberFormatException ex) { + Bukkit.getLogger().info("De velocity is incorrect!"); + } + } + + @Override + public void trigger() { + //TODO Fix this trigger + ShowAPIPlugin.getParticleAPI().getParticles_1_13().DUST().color(255, 0, 0, 5).packet(true, spawnLoc.getX(), spawnLoc.getY(), spawnLoc.getZ(), xVelocity, yVelocity, zVelocity, 0.01, 40); + } +} diff --git a/src/main/java/nl/sbdeveloper/showapi/api/triggers/FireworkTrigger.java b/src/main/java/nl/sbdeveloper/showapi/api/triggers/FireworkTrigger.java index 6d8daab..8d0c511 100644 --- a/src/main/java/nl/sbdeveloper/showapi/api/triggers/FireworkTrigger.java +++ b/src/main/java/nl/sbdeveloper/showapi/api/triggers/FireworkTrigger.java @@ -73,7 +73,4 @@ public class FireworkTrigger extends TriggerTask { public void trigger() { ShowAPI.Fireworks.spawn(fw, spawnLoc); } - - @Override - public void remove() {} //Firework is one-time, ignore. } diff --git a/src/main/java/nl/sbdeveloper/showapi/api/triggers/ParticleTrigger.java b/src/main/java/nl/sbdeveloper/showapi/api/triggers/ParticleTrigger.java index 584b541..8d6a3c8 100644 --- a/src/main/java/nl/sbdeveloper/showapi/api/triggers/ParticleTrigger.java +++ b/src/main/java/nl/sbdeveloper/showapi/api/triggers/ParticleTrigger.java @@ -53,7 +53,4 @@ public class ParticleTrigger extends TriggerTask { public void trigger() { spawnLoc.getWorld().spawnParticle(type, spawnLoc, count); } - - @Override - public void remove() {} //A particle is one time, ignore. } diff --git a/src/main/java/nl/sbdeveloper/showapi/commands/ShowCMD.java b/src/main/java/nl/sbdeveloper/showapi/commands/ShowCMD.java index f79a5b6..8e12031 100644 --- a/src/main/java/nl/sbdeveloper/showapi/commands/ShowCMD.java +++ b/src/main/java/nl/sbdeveloper/showapi/commands/ShowCMD.java @@ -1,18 +1,19 @@ package nl.sbdeveloper.showapi.commands; +import co.aikar.commands.BaseCommand; +import co.aikar.commands.annotation.*; import nl.sbdeveloper.showapi.api.TriggerTask; import nl.sbdeveloper.showapi.data.Shows; import nl.sbdeveloper.showapi.gui.ShowCueGUI; import nl.sbdeveloper.showapi.utils.MainUtil; import nl.sbdeveloper.showapi.utils.TimeUtil; import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -public class ShowCMD implements CommandExecutor { +@CommandAlias("mctpshow|show") +@CommandPermission("mctp.show") +public class ShowCMD extends BaseCommand { /* /mctpshow create /mctpshow delete @@ -22,106 +23,97 @@ public class ShowCMD implements CommandExecutor { /mctpshow gui */ - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, @NotNull String[] args) { - if (label.equalsIgnoreCase("mctpshow")) { - if (!sender.hasPermission("mctp.show")) { - sender.sendMessage(ChatColor.RED + "Je hebt hier geen permissie voor."); - return false; - } - - if (args.length == 2 && args[0].equalsIgnoreCase("create")) { - String name = args[1]; - if (Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat al."); - return false; - } - - Shows.create(name); - - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is aangemaakt!"); - return true; - } else if (args.length == 2 && args[0].equalsIgnoreCase("delete")) { - String name = args[1]; - if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); - return false; - } - - Shows.delete(name); - - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is verwijderd!"); - return true; - } else if (args.length >= 5 && args[0].equalsIgnoreCase("add")) { - String name = args[1]; - if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); - return false; - } - - Long time; - try { - time = TimeUtil.toMilis(args[2]); - } catch (Exception e) { - sender.sendMessage(ChatColor.RED + "Heeft een correcte tijd mee."); - return false; - } - - StringBuilder builder = new StringBuilder(); - for (int i = 3; i < args.length; i++) { - builder.append(args[i]).append(" "); - } - TriggerTask data = MainUtil.parseData(builder.toString().trim()); - - if (data == null) { - sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger."); - return false; - } - - Shows.addPoint(name, time, data); - - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " bevat nu een extra punt!"); - return true; - } else if (args.length == 2 && args[0].equalsIgnoreCase("start")) { - String name = args[1]; - if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); - return false; - } - - Shows.startShow(name); - - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is gestart!"); - return true; - } else if (args.length == 2 && args[0].equalsIgnoreCase("cancel")) { - String name = args[1]; - if (!Shows.exists(name)) { - sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); - return false; - } - - Shows.cancelShow(name); - - sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is gestopt!"); - return true; - } else if (args.length == 2 && args[0].equalsIgnoreCase("gui")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "Je moet een speler zijn om dit te doen."); - return false; - } - - Player p = (Player) sender; - - String name = args[1]; - if (!Shows.exists(name)) { - p.sendMessage(ChatColor.RED + "Die show bestaat niet."); - return false; - } - - new ShowCueGUI(p, name); - return true; - } + @Subcommand("create") + @Description("") + public void onCreate(CommandSender sender, @Single String name) { + if (Shows.exists(name)) { + sender.sendMessage(ChatColor.RED + "Die show bestaat al."); + return; } - return false; + + Shows.create(name); + + sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is aangemaakt!"); + } + + @Subcommand("delete") + @Description("") + @CommandCompletion("@showname") + public void onDelete(CommandSender sender, @Single String name) { + if (!Shows.exists(name)) { + sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + return; + } + + Shows.delete(name); + + sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is verwijderd!"); + } + + @Subcommand("add") + @Description("") + @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."); + return; + } + + Long timeMilli; + try { + timeMilli = TimeUtil.toMilis(time); + } catch (Exception e) { + sender.sendMessage(ChatColor.RED + "Geef een correcte tijd mee."); + return; + } + + TriggerTask data = MainUtil.parseData(args); + if (data == null) { + sender.sendMessage(ChatColor.RED + "Je hebt niet genoeg informatie meegeven voor de trigger."); + return; + } + + Shows.addPoint(name, timeMilli, data); + sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " bevat nu een extra punt!"); + } + + @Subcommand("start") + @Description("") + @CommandCompletion("@showname") + public void onStart(CommandSender sender, @Single String name) { + if (!Shows.exists(name)) { + sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + return; + } + + Shows.startShow(name); + + sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is gestart!"); + } + + @Subcommand("cancel") + @Description("") + @CommandCompletion("@showname") + public void onCancel(CommandSender sender, @Single String name) { + if (!Shows.exists(name)) { + sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + return; + } + + Shows.cancelShow(name); + + sender.sendMessage(ChatColor.GREEN + "De show " + ChatColor.WHITE + name + ChatColor.GREEN + " is gestopt!"); + } + + @Subcommand("gui") + @Description("") + @CommandCompletion("@showname") + public void onGUI(Player sender, @Single String name) { + if (!Shows.exists(name)) { + sender.sendMessage(ChatColor.RED + "Die show bestaat niet."); + return; + } + + new ShowCueGUI(sender, name); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6ac19ef..7b4dc9e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,10 +4,4 @@ main: nl.sbdeveloper.showapi.ShowAPIPlugin api-version: 1.13 authors: [SBDeveloper] description: Make perfect shows with this API! -website: https://sbdplugins.nl -commands: - mctpshow: - description: Het show command! -permissions: - mctp.show: - description: De permissie voor /mctpshow \ No newline at end of file +website: https://sbdplugins.nl \ No newline at end of file