From 95796a1b3ef694ab2f54231774ca3017d1c98ce4 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 17 Feb 2019 02:22:06 +0100 Subject: [PATCH] Command fix, using the brtoggles DiscordPlugin#89 Started #60 Should have committed this earlier --- .../core/component/channel/ChatRoom.java | 3 ++- .../component/restart/PrimeRestartCommand.java | 9 +++++++-- .../core/component/restart/RestartComponent.java | 14 +++++++++----- .../component/restart/ScheduledRestartCommand.java | 7 ++++++- .../buttondevteam/lib/TBMCSystemChatEvent.java | 2 +- .../lib/architecture/ButtonPlugin.java | 2 ++ .../buttondevteam/lib/architecture/Component.java | 1 + .../main/java/buttondevteam/lib/chat/Command2.java | 4 +++- .../java/buttondevteam/lib/chat/ICommand2.java | 5 +---- 9 files changed, 32 insertions(+), 15 deletions(-) diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/channel/ChatRoom.java b/ButtonCore/src/main/java/buttondevteam/core/component/channel/ChatRoom.java index 4172d5f..428007a 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/component/channel/ChatRoom.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/channel/ChatRoom.java @@ -1,5 +1,6 @@ package buttondevteam.core.component.channel; +import buttondevteam.lib.TBMCSystemChatEvent; import buttondevteam.lib.chat.Color; import buttondevteam.lib.chat.TBMCChatAPI; import org.bukkit.command.CommandSender; @@ -17,7 +18,7 @@ public class ChatRoom extends Channel { public void joinRoom(CommandSender sender) { usersInRoom.add(sender); - TBMCChatAPI.SendSystemMessage(this, RecipientTestResult.ALL, sender.getName() + " joined the room", ChannelComponent.roomJoinLeave); + TBMCChatAPI.SendSystemMessage(this, RecipientTestResult.ALL, sender.getName() + " joined the room", TBMCSystemChatEvent.BroadcastTarget.ALL); //Always show message in the same kind of channel } public void leaveRoom(CommandSender sender) { diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/restart/PrimeRestartCommand.java b/ButtonCore/src/main/java/buttondevteam/core/component/restart/PrimeRestartCommand.java index 32773ab..f387b1d 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/restart/PrimeRestartCommand.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/restart/PrimeRestartCommand.java @@ -1,26 +1,31 @@ package buttondevteam.core.component.restart; +import buttondevteam.core.component.channel.Channel; import buttondevteam.lib.chat.CommandClass; +import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.chat.TBMCCommandBase; import lombok.Getter; +import lombok.RequiredArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @CommandClass(path = "primerestart", modOnly = true) +@RequiredArgsConstructor public class PrimeRestartCommand extends TBMCCommandBase { + private final RestartComponent component; @Override public boolean OnCommand(CommandSender sender, String alias, String[] args) { loud = args.length > 0; if (Bukkit.getOnlinePlayers().size() > 0) { sender.sendMessage("§bPlayers online, restart delayed."); if (loud) - Bukkit.broadcastMessage(ChatColor.DARK_RED + "The server will restart as soon as nobody is online."); + TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL, ChatColor.DARK_RED + "The server will restart as soon as nobody is online.", component.restartBroadcast); plsrestart = true; } else { sender.sendMessage("§bNobody is online. Restarting now."); if (loud) - Bukkit.broadcastMessage("§cNobody is online. Restarting server."); + TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL, "§cNobody is online. Restarting server.", component.restartBroadcast); Bukkit.spigot().restart(); } return true; diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java index e49e3b2..332f9dc 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java @@ -1,5 +1,7 @@ package buttondevteam.core.component.restart; +import buttondevteam.core.component.channel.Channel; +import buttondevteam.lib.TBMCSystemChatEvent; import buttondevteam.lib.architecture.Component; import buttondevteam.lib.chat.IFakePlayer; import buttondevteam.lib.chat.TBMCChatAPI; @@ -13,17 +15,19 @@ public class RestartComponent extends Component implements Listener { @Override public void enable() { //TODO: Permissions for the commands - TBMCChatAPI.AddCommand(this, new ScheduledRestartCommand()); - TBMCChatAPI.AddCommand(this, new PrimeRestartCommand()); + TBMCChatAPI.AddCommand(this, new ScheduledRestartCommand(this)); + TBMCChatAPI.AddCommand(this, new PrimeRestartCommand(this)); registerListener(this); + restartBroadcast = TBMCSystemChatEvent.BroadcastTarget.add("restartCountdown"); } @Override public void disable() { - + TBMCSystemChatEvent.BroadcastTarget.remove(restartBroadcast); } private long lasttime = 0; + TBMCSystemChatEvent.BroadcastTarget restartBroadcast; @EventHandler public void onPlayerLeave(PlayerQuitEvent event) { @@ -32,12 +36,12 @@ public class RestartComponent extends Component implements Listener { && !event.getQuitMessage().equalsIgnoreCase("Server is restarting")) { if (Bukkit.getOnlinePlayers().size() <= 1) { if (PrimeRestartCommand.isLoud()) - Bukkit.broadcastMessage("§cNobody is online anymore. Restarting."); + TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL, "§cNobody is online anymore. Restarting.", restartBroadcast); Bukkit.spigot().restart(); } else if (!(event.getPlayer() instanceof IFakePlayer) && System.nanoTime() - 10 * 1000000000L - lasttime > 0) { //Ten seconds passed since last reminder lasttime = System.nanoTime(); if (PrimeRestartCommand.isLoud()) - Bukkit.broadcastMessage(ChatColor.DARK_RED + "The server will restart as soon as nobody is online."); + TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL, ChatColor.DARK_RED + "The server will restart as soon as nobody is online.", restartBroadcast); } } } diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/restart/ScheduledRestartCommand.java b/ButtonCore/src/main/java/buttondevteam/core/component/restart/ScheduledRestartCommand.java index fea469e..3f83e48 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/component/restart/ScheduledRestartCommand.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/restart/ScheduledRestartCommand.java @@ -1,10 +1,13 @@ package buttondevteam.core.component.restart; import buttondevteam.core.MainPlugin; +import buttondevteam.core.component.channel.Channel; import buttondevteam.lib.ScheduledServerRestartEvent; import buttondevteam.lib.chat.CommandClass; +import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.chat.TBMCCommandBase; import lombok.Getter; +import lombok.RequiredArgsConstructor; import lombok.Setter; import org.bukkit.Bukkit; import org.bukkit.boss.BarColor; @@ -15,12 +18,14 @@ import org.bukkit.command.CommandSender; import org.bukkit.scheduler.BukkitTask; @CommandClass(modOnly = true, path = "schrestart") +@RequiredArgsConstructor public class ScheduledRestartCommand extends TBMCCommandBase { @Getter @Setter private int restartCounter; private BukkitTask restarttask; private volatile BossBar restartbar; + private final RestartComponent component; @Override public boolean OnCommand(CommandSender sender, String alias, String[] args) { @@ -51,7 +56,7 @@ public class ScheduledRestartCommand extends TBMCCommandBase { Bukkit.spigot().restart(); } if (restartCounter % 200 == 0) - Bukkit.broadcastMessage("§c-- The server is restarting in " + restartCounter / 20 + " seconds! (/press)"); + TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL, "§c-- The server is restarting in " + restartCounter / 20 + " seconds! (/press)", component.restartBroadcast); restartbar.setProgress(restartCounter / (double) restarttime); restartbar.setTitle(String.format("Server restart in %.2f", restartCounter / 20f)); restartCounter--; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCSystemChatEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCSystemChatEvent.java index df04be4..f5d5a0f 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCSystemChatEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCSystemChatEvent.java @@ -64,7 +64,7 @@ public class TBMCSystemChatEvent extends TBMCChatEventBase { @Nullable public static BroadcastTarget get(String name) { - return targets.stream().filter(bt -> bt.name.equals(name)).findAny().orElse(null); + return targets.stream().filter(bt -> bt.name.equalsIgnoreCase(name)).findAny().orElse(null); } public static Stream stream() { diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java index 8ca1109..a4b5bdf 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java @@ -16,6 +16,8 @@ public abstract class ButtonPlugin extends JavaPlugin { private static Command2MC command2MC = new Command2MC(); @Getter(AccessLevel.PROTECTED) private IHaveConfig iConfig; + @Getter(AccessLevel.PROTECTED) + private IHaveConfig data; //TODO /** * Used to unregister components in the right order */ diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java index 6e0a9c3..5494c78 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java @@ -31,6 +31,7 @@ public abstract class Component { @NonNull private @Getter IHaveConfig config; + private @Getter IHaveConfig data; //TODO public final ConfigData shouldBeEnabled() { return config.getData("enabled", true); diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java index c5c2f5a..9b8ad31 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java @@ -181,7 +181,9 @@ public abstract class Command2 TBMCCoreAPI.SendException("Could not register default handler for command /" + path, e); } for (val method : command.getClass().getMethods()) { - var ht = command.getHelpText(method); + val ann = method.getAnnotation(Subcommand.class); + if (ann == null) continue; //Don't call the method on non-subcommands because they're not in the yaml + var ht = command.getHelpText(method, ann); if (ht != null) { val subcommand = commandChar + path + //Add command path (class name by default) (method.getName().equals("def") ? "" : " " + method.getName().replace('_', ' ').toLowerCase()); //Add method name, unless it's 'def' diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java index 7d46821..781efe4 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java @@ -37,10 +37,7 @@ public abstract class ICommand2 { * @param method The method of the subcommand * @return The help text, empty array or null */ - public String[] getHelpText(Method method) { - val ann = method.getAnnotation(Command2.Subcommand.class); - if (ann == null) - return null; + public String[] getHelpText(Method method, Command2.Subcommand ann) { val cc = getClass().getAnnotation(CommandClass.class); return ann.helpText().length != 0 || cc == null ? ann.helpText() : cc.helpText(); //If cc is null then it's empty array }