diff --git a/.idea/misc.xml b/.idea/misc.xml
index 64de3b3..5ccf79a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -6,6 +6,9 @@
+
+
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 17cfd2c..69c241a 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -4,6 +4,8 @@
+
+
diff --git a/.idea/modules/EventCore.main.iml b/.idea/modules/EventCore.main.iml
index f5de878..32d39f8 100644
--- a/.idea/modules/EventCore.main.iml
+++ b/.idea/modules/EventCore.main.iml
@@ -10,4 +10,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/EventCore.test.iml b/.idea/modules/EventCore.test.iml
new file mode 100644
index 0000000..c462275
--- /dev/null
+++ b/.idea/modules/EventCore.test.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ ADVENTURE
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/intelij.EventCore.main.iml b/.idea/modules/intelij.EventCore.main.iml
new file mode 100644
index 0000000..bbeeb3e
--- /dev/null
+++ b/.idea/modules/intelij.EventCore.main.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ PAPER
+ ADVENTURE
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/intelij.EventCore.test.iml b/.idea/modules/intelij.EventCore.test.iml
new file mode 100644
index 0000000..a376b96
--- /dev/null
+++ b/.idea/modules/intelij.EventCore.test.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ ADVENTURE
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/lol.aabss.EventCore.main.iml b/.idea/modules/lol.aabss.EventCore.main.iml
new file mode 100644
index 0000000..bbeeb3e
--- /dev/null
+++ b/.idea/modules/lol.aabss.EventCore.main.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ PAPER
+ ADVENTURE
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/lol.aabss.EventCore.test.iml b/.idea/modules/lol.aabss.EventCore.test.iml
new file mode 100644
index 0000000..a376b96
--- /dev/null
+++ b/.idea/modules/lol.aabss.EventCore.test.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ ADVENTURE
+
+ 1
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/lol/aabss/eventcore/EventCore.java b/src/main/java/lol/aabss/eventcore/EventCore.java
index ad4b344..5e68b4a 100644
--- a/src/main/java/lol/aabss/eventcore/EventCore.java
+++ b/src/main/java/lol/aabss/eventcore/EventCore.java
@@ -17,8 +17,7 @@
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Objects;
+import java.util.*;
import static lol.aabss.eventcore.hooks.UpdateChecker.UPDATE_CHECKER;
@@ -27,9 +26,8 @@ public class EventCore extends JavaPlugin {
public static EventCore instance;
- public ArrayList Alive = new ArrayList<>();
- public ArrayList Dead = new ArrayList<>();
- public ArrayList Recent = new ArrayList<>();
+ public List Alive = new ArrayList<>();
+ public List Recent = new ArrayList<>();
public File datafile;
public FileConfiguration dataconfig;
@@ -46,48 +44,39 @@ public void onEnable() {
// Registering bStats
new Metrics(this, 19718);
- Objects.requireNonNull(getCommand("alivelist")).setExecutor(new AliveList());
- Objects.requireNonNull(getCommand("clearalive")).setExecutor(new ClearAlive());
- Objects.requireNonNull(getCommand("givealive")).setExecutor(new GiveAlive());
- Objects.requireNonNull(getCommand("healalive")).setExecutor(new HealAlive());
- Objects.requireNonNull(getCommand("killalive")).setExecutor(new KillAlive());
- Objects.requireNonNull(getCommand("tpalive")).setExecutor(new TpAlive());
+ new AliveList().register();
+ new ClearAlive().register();
+ new GiveAlive().register();
+ new HealAlive().register();
+ new KillAlive().register();
+ new TpAlive().register();
// ---
- Objects.requireNonNull(getCommand("cleardead")).setExecutor(new ClearDead());
- Objects.requireNonNull(getCommand("deadlist")).setExecutor(new DeadList());
- Objects.requireNonNull(getCommand("givedead")).setExecutor(new GiveDead());
- Objects.requireNonNull(getCommand("healdead")).setExecutor(new HealDead());
- Objects.requireNonNull(getCommand("killdead")).setExecutor(new KillDead());
- Objects.requireNonNull(getCommand("tpdead")).setExecutor(new TpDead());
+ new DeadList().register();
+ new ClearDead().register();
+ new GiveDead().register();
+ new HealDead().register();
+ new KillDead().register();
+ new TpDead().register();
// ---
- Objects.requireNonNull(getCommand("balrevive")).setExecutor(new BalRevive());
- Objects.requireNonNull(getCommand("giverevive")).setExecutor(new GiveRevive());
- Objects.requireNonNull(getCommand("recentrev")).setExecutor(new RecentRev());
- Objects.requireNonNull(getCommand("revive")).setExecutor(new Revive());
- Objects.requireNonNull(getCommand("reviveall")).setExecutor(new ReviveAll());
- Objects.requireNonNull(getCommand("revivelate")).setExecutor(new ReviveLate());
- Objects.requireNonNull(getCommand("setrevive")).setExecutor(new SetRevive());
- Objects.requireNonNull(getCommand("togglerevive")).setExecutor(new ToggleRevive());
- Objects.requireNonNull(getCommand("takerevive")).setExecutor(new TakeRevive());
- Objects.requireNonNull(getCommand("unrevive")).setExecutor(new Unrevive());
- Objects.requireNonNull(getCommand("userevive")).setExecutor(new UseRevive());
+ new BalRevive().register();
+ new GiveRevive().register();
+ new RecentRev().register();
+ new Revive().register();
+ new ReviveAll().register();
+ new ReviveLate().register();
+ new SetRevive().register();
+ new TakeRevive().register();
+ new ToggleRevive().register();
+ new Unrevive().register();
+ new UseRevive().register();
// ---
- Objects.requireNonNull(getCommand("eventcore")).setExecutor(new MainCommand());
- Objects.requireNonNull(getCommand("mutechat")).setExecutor(new Mutechat());
- Objects.requireNonNull(getCommand("visibility")).setExecutor(new Visibility());
-
- // Registering tab completions
- Objects.requireNonNull(getCommand("givealive")).setTabCompleter(new GiveAlive());
- Objects.requireNonNull(getCommand("givedead")).setTabCompleter(new GiveDead());
- Objects.requireNonNull(getCommand("balrevive")).setTabCompleter(new BalRevive());
- Objects.requireNonNull(getCommand("giverevive")).setTabCompleter(new GiveRevive());
- Objects.requireNonNull(getCommand("revive")).setTabCompleter(new Revive());
- Objects.requireNonNull(getCommand("setrevive")).setTabCompleter(new SetRevive());
- Objects.requireNonNull(getCommand("takerevive")).setTabCompleter(new TakeRevive());
- Objects.requireNonNull(getCommand("visibility")).setTabCompleter(new Visibility());
+ new MainCommand().register("eventcore");
+ new Mutechat().register();
+ new Visibility().register();
+
// Registering PlaceholderAPI
if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
@@ -136,4 +125,26 @@ public void onDisable() {
getLogger().info("EventCore disabled!");
}
+ public static String formatList(List> list){
+ List stringlist = new ArrayList<>();
+ list.forEach(o -> stringlist.add(o.toString()));
+ Collections.sort(stringlist);
+ StringBuilder builder = new StringBuilder();
+ int i = 0;
+ if (stringlist.size() == 1){
+ return stringlist.get(0);
+ }
+ for (Object obj : stringlist){
+ if (i == stringlist.size() - 1) {
+ builder.append(obj);
+ } else if (i == stringlist.size() - 2) {
+ builder.append(obj).append(" and ");
+ } else {
+ builder.append(obj).append(", ");
+ }
+ i++;
+ }
+ return builder.toString();
+ }
+
}
diff --git a/src/main/java/lol/aabss/eventcore/commands/Visibility.java b/src/main/java/lol/aabss/eventcore/commands/Visibility.java
index 2ba6dd4..94a3f7b 100644
--- a/src/main/java/lol/aabss/eventcore/commands/Visibility.java
+++ b/src/main/java/lol/aabss/eventcore/commands/Visibility.java
@@ -2,7 +2,6 @@
import lol.aabss.eventcore.events.VisibilityEvent;
import lol.aabss.eventcore.util.SimpleCommand;
-import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -11,7 +10,6 @@
import java.util.List;
import static lol.aabss.eventcore.EventCore.API;
-import static lol.aabss.eventcore.EventCore.instance;
import static lol.aabss.eventcore.util.Config.msg;
public class Visibility implements SimpleCommand {
diff --git a/src/main/java/lol/aabss/eventcore/commands/alive/AliveList.java b/src/main/java/lol/aabss/eventcore/commands/alive/AliveList.java
index 4d0289c..227a31f 100644
--- a/src/main/java/lol/aabss/eventcore/commands/alive/AliveList.java
+++ b/src/main/java/lol/aabss/eventcore/commands/alive/AliveList.java
@@ -22,11 +22,11 @@ public boolean run(CommandSender sender, Command command, String[] args) {
}
if (names.size() == 1){
sender.sendMessage(msg("alivelist.one-player")
- .replaceText(builder -> builder.matchLiteral("%alive%").replacement(String.valueOf(names))));
+ .replaceText(builder -> builder.matchLiteral("%alive%").replacement(formatList(names))));
return true;
}
sender.sendMessage(msg("alivelist.players")
- .replaceText(builder -> builder.matchLiteral("%alive%").replacement(String.valueOf(names)))
+ .replaceText(builder -> builder.matchLiteral("%alive%").replacement(formatList(names)))
.replaceText(builder -> builder.matchLiteral("%amount%").replacement(String.valueOf(names.size())))
);
return true;
diff --git a/src/main/java/lol/aabss/eventcore/commands/dead/DeadList.java b/src/main/java/lol/aabss/eventcore/commands/dead/DeadList.java
index f2be842..c5743f5 100644
--- a/src/main/java/lol/aabss/eventcore/commands/dead/DeadList.java
+++ b/src/main/java/lol/aabss/eventcore/commands/dead/DeadList.java
@@ -1,6 +1,5 @@
package lol.aabss.eventcore.commands.dead;
-
import lol.aabss.eventcore.util.SimpleCommand;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -9,6 +8,7 @@
import java.util.List;
import static lol.aabss.eventcore.EventCore.API;
+import static lol.aabss.eventcore.EventCore.formatList;
import static lol.aabss.eventcore.util.Config.msg;
public class DeadList implements SimpleCommand {
@@ -23,11 +23,11 @@ public boolean run(CommandSender sender, Command command, String[] args) {
}
if (names.size() == 1){
sender.sendMessage(msg("deadlist.one-player")
- .replaceText(builder -> builder.matchLiteral("%dead%").replacement(String.valueOf(names))));
+ .replaceText(builder -> builder.matchLiteral("%dead%").replacement(formatList(names))));
return true;
}
sender.sendMessage(msg("deadlist.players")
- .replaceText(builder -> builder.matchLiteral("%dead%").replacement(String.valueOf(names)))
+ .replaceText(builder -> builder.matchLiteral("%dead%").replacement(formatList(names)))
.replaceText(builder -> builder.matchLiteral("%amount%").replacement(String.valueOf(names.size())))
);
return true;
diff --git a/src/main/java/lol/aabss/eventcore/commands/revives/ToggleRevive.java b/src/main/java/lol/aabss/eventcore/commands/revives/ToggleRevive.java
index fc169dc..46890fe 100644
--- a/src/main/java/lol/aabss/eventcore/commands/revives/ToggleRevive.java
+++ b/src/main/java/lol/aabss/eventcore/commands/revives/ToggleRevive.java
@@ -14,7 +14,7 @@ public class ToggleRevive implements SimpleCommand {
@Override
public boolean run(CommandSender sender, Command command, String[] args) {
API.toggleRevives();
- sender.sendMessage(msg("togglerevive."+(REVIVES ? "enabled" : "disabled)")));
+ sender.sendMessage(msg("togglerevive."+(REVIVES ? "enabled" : "disabled")));
return true;
}
}
diff --git a/src/main/java/lol/aabss/eventcore/commands/revives/Unrevive.java b/src/main/java/lol/aabss/eventcore/commands/revives/Unrevive.java
index 4023877..5593dcb 100644
--- a/src/main/java/lol/aabss/eventcore/commands/revives/Unrevive.java
+++ b/src/main/java/lol/aabss/eventcore/commands/revives/Unrevive.java
@@ -42,7 +42,7 @@ public boolean run(CommandSender sender, Command command, String[] args) {
public List tabComplete(CommandSender sender, Command command, String[] args) {
if (args.length == 1){
List completions = new ArrayList<>();
- API.getDead().forEach(player -> completions.add(player.getName()));
+ API.getAlive().forEach(player -> completions.add(player.getName()));
return completions;
}
return null;
diff --git a/src/main/java/lol/aabss/eventcore/hooks/UpdateChecker.java b/src/main/java/lol/aabss/eventcore/hooks/UpdateChecker.java
index 4569e75..9fe8bda 100644
--- a/src/main/java/lol/aabss/eventcore/hooks/UpdateChecker.java
+++ b/src/main/java/lol/aabss/eventcore/hooks/UpdateChecker.java
@@ -1,7 +1,7 @@
package lol.aabss.eventcore.hooks;
+import com.google.gson.JsonParser;
import org.bukkit.command.CommandSender;
-import org.json.JSONArray;
import java.net.URI;
import java.net.http.HttpClient;
@@ -24,7 +24,7 @@ public static String latestVersion() {
.build();
try {
String body = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()).get().body();
- return new JSONArray(body).getJSONObject(0).getString("version_number");
+ return JsonParser.parseString(body).getAsJsonArray().get(0).getAsJsonObject().get("version_number").getAsString();
} catch (Exception e) {
throw new RuntimeException(e);
}
diff --git a/src/main/java/lol/aabss/eventcore/util/EventCoreAPI.java b/src/main/java/lol/aabss/eventcore/util/EventCoreAPI.java
index 32b4723..1e77b09 100644
--- a/src/main/java/lol/aabss/eventcore/util/EventCoreAPI.java
+++ b/src/main/java/lol/aabss/eventcore/util/EventCoreAPI.java
@@ -10,6 +10,7 @@
import org.bukkit.entity.Player;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.List;
import static lol.aabss.eventcore.EventCore.instance;
@@ -24,15 +25,15 @@ public EventCoreAPI(EventCore plugin) {
}
public boolean isAlive(Player p) {
- return plugin.Alive.contains(p);
+ return getAlive().contains(p);
}
public boolean isDead(Player p) {
- return plugin.Dead.contains(p);
+ return getDead().contains(p);
}
public boolean isRecentlyDead(Player p) {
- return plugin.Recent.contains(p);
+ return getRecentlyDead().contains(p);
}
public List getAlive() {
@@ -40,7 +41,11 @@ public List getAlive() {
}
public List getDead() {
- return plugin.Dead;
+ List players = new ArrayList<>(Bukkit.getOnlinePlayers());
+ players.forEach(player -> {
+ if (getAlive().contains(player)) players.remove(player);
+ });
+ return players;
}
public List getRecentlyDead() {
@@ -91,21 +96,18 @@ public void revive(Player p, Location location) {
public void revive(Player p) {
new ReviveEvent(p, Bukkit.getConsoleSender()).callEvent();
- plugin.Dead.remove(p);
plugin.Recent.remove(p);
plugin.Alive.add(p);
}
public void revive(Player revived, Player reviver, boolean teleport) {
new ReviveEvent(revived, reviver).callEvent();
- plugin.Dead.remove(revived);
plugin.Recent.remove(revived);
plugin.Alive.add(revived);
if (teleport) revived.teleport(reviver);
}
public void unrevive(Player p, boolean kill) {
- plugin.Dead.add(p);
plugin.Recent.remove(p);
plugin.Alive.remove(p);
if (kill) p.setHealth(0);
diff --git a/src/main/java/lol/aabss/eventcore/util/Listeners.java b/src/main/java/lol/aabss/eventcore/util/Listeners.java
index 025a41a..4c717ec 100644
--- a/src/main/java/lol/aabss/eventcore/util/Listeners.java
+++ b/src/main/java/lol/aabss/eventcore/util/Listeners.java
@@ -22,7 +22,6 @@ public class Listeners implements org.bukkit.event.Listener {
public void onLeave(PlayerQuitEvent event){
Player p = event.getPlayer();
API.getAlive().remove(p);
- API.getDead().remove(p);
for (Player player : Visibility.VisStaff){
player.showPlayer(instance, p);
}
@@ -35,7 +34,6 @@ public void onLeave(PlayerQuitEvent event){
public void onJoin(PlayerJoinEvent event){
Player p = event.getPlayer();
API.getAlive().remove(event.getPlayer());
- API.getDead().add(event.getPlayer());
if (UPDATE_CHECKER && p.hasPermission("eventcore.admin")){
UpdateChecker.updateCheck(p);
}
@@ -55,8 +53,6 @@ public void onJoin(PlayerJoinEvent event){
public void onDeath(PlayerDeathEvent event){
if (API.isAlive(event.getPlayer())){
API.getAlive().remove(event.getEntity());
- API.getDead().remove(event.getEntity());
- API.getDead().add(event.getEntity());
if (!API.isRecentlyDead(event.getPlayer())){
API.getRecentlyDead().add(event.getEntity());
Bukkit.getScheduler().runTaskLater(EventCore.getPlugin(EventCore.class), () ->
diff --git a/src/main/java/lol/aabss/eventcore/util/SimpleCommand.java b/src/main/java/lol/aabss/eventcore/util/SimpleCommand.java
index aad7903..9e0c83e 100644
--- a/src/main/java/lol/aabss/eventcore/util/SimpleCommand.java
+++ b/src/main/java/lol/aabss/eventcore/util/SimpleCommand.java
@@ -6,22 +6,42 @@
package lol.aabss.eventcore.util;
import net.kyori.adventure.text.Component;
+import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
+import org.bukkit.command.PluginCommand;
import org.bukkit.command.TabExecutor;
+import org.bukkit.permissions.Permission;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
+import static lol.aabss.eventcore.EventCore.instance;
import static lol.aabss.eventcore.util.Config.msg;
public interface SimpleCommand extends TabExecutor {
+ default void register(){
+ register(this.getClass().getSimpleName().toLowerCase());
+ }
+
+ default void register(String name){
+ PluginCommand cmd = instance.getCommand(name);
+ if (cmd != null){
+ cmd.setExecutor(this);
+ cmd.setTabCompleter(this);
+ }
+ if (Bukkit.getPluginManager().getPermission(this.permission()) == null) {
+ Bukkit.getPluginManager().addPermission(new Permission(this.permission()));
+ }
+ }
+
+
@Override
default boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!sender.hasPermission(permission())) {
- sender.sendMessage(permissionMessage());
+ sender.sendMessage(msg("permission-message"));
return true;
}
return run(sender, command, args);
@@ -35,7 +55,7 @@ default List onTabComplete(@NotNull CommandSender sender, org.bukkit.com
if (args.length == 0 || tabs == null || tabs.isEmpty()) {
return completions;
}
- String arg = args[args.length - 1].toLowerCase();
+ String arg = args[args.length-1].toLowerCase();
for (String s : tabs) {
if (s.toLowerCase().startsWith(arg)) {
completions.add(s);
diff --git a/src/main/resources/lang/default.lang b/src/main/resources/lang/default.lang
index b309a5b..5484638 100644
--- a/src/main/resources/lang/default.lang
+++ b/src/main/resources/lang/default.lang
@@ -1,4 +1,4 @@
-version: 2.1
+version: 2.2
types:
visibilitystate: visibility ?state¦s @a
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index c9f5335..40af90b 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: EventCore
-version: '2.1'
+version: '2.2'
main: lol.aabss.eventcore.EventCore
api-version: '1.13'
authors:
@@ -16,6 +16,7 @@ commands:
aliases: [event]
description: "Main command for EventCore"
revive:
+ aliases: rev
description: "Revive a player."
permission: eventcore.command.revive
reviveall: