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