diff --git a/BuildConfigUpdater/BuildConfigUpdater.iml b/BuildConfigUpdater/BuildConfigUpdater.iml index 9cd800b..73696cd 100644 --- a/BuildConfigUpdater/BuildConfigUpdater.iml +++ b/BuildConfigUpdater/BuildConfigUpdater.iml @@ -12,8 +12,6 @@ - - diff --git a/BuildConfigUpdater/src/main/java/BCUMain.java b/BuildConfigUpdater/src/main/java/BCUMain.java index 5780afa..bca7209 100644 --- a/BuildConfigUpdater/src/main/java/BCUMain.java +++ b/BuildConfigUpdater/src/main/java/BCUMain.java @@ -8,7 +8,7 @@ public class BCUMain { System.out.println("Getting list of repositories..."); List plugins = PluginUpdater.GetPluginNames(); System.out.println("Removing non-Maven projects..."); - plugins.removeIf(plugin -> !PluginUpdater.isMaven(plugin, "master")); + plugins.removeIf(plugin -> PluginUpdater.isNotMaven(plugin, "master")); System.out.println(plugins.stream().collect(Collectors.joining("\n"))); for (String plugin : plugins) { //TODO: We don't want to apply it all at once, especially to unused/unowned repos } //TODO: Add it to ButtonCore - or actually as a plugin or ButtonProcessor diff --git a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java index 0df0374..5e0f094 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java +++ b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java @@ -29,14 +29,13 @@ public class MainPlugin extends JavaPlugin { public static boolean Test; public static Essentials ess; - private PluginDescriptionFile pdfFile; private Logger logger; @Override public void onEnable() { // Logs "Plugin Enabled", registers commands Instance = this; - pdfFile = getDescription(); + PluginDescriptionFile pdf = getDescription(); logger = getLogger(); setupPermissions(); Test = getConfig().getBoolean("test", true); @@ -66,7 +65,7 @@ public class MainPlugin extends JavaPlugin { } ess = Essentials.getPlugin(Essentials.class); new RandomTP().onEnable(this); //It registers it's command - logger.info(pdfFile.getName() + " has been Enabled (V." + pdfFile.getVersion() + ") Test: " + Test + "."); + logger.info(pdf.getName() + " has been Enabled (V." + pdf.getVersion() + ") Test: " + Test + "."); } @Override diff --git a/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java b/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java index 2bb22cc..c85ecea 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java +++ b/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java @@ -53,7 +53,7 @@ public class PlayerListener implements Listener { public void onSystemChat(TBMCSystemChatEvent event) { if (event.isHandled()) return; // Only handle here if ButtonChat couldn't - Bukkit.getOnlinePlayers().stream().filter(p -> event.shouldSendTo(p)) + Bukkit.getOnlinePlayers().stream().filter(event::shouldSendTo) .forEach(p -> p.sendMessage(event.getChannel().DisplayName.substring(0, 2) + event.getMessage())); } } \ No newline at end of file diff --git a/ButtonCore/src/main/java/buttondevteam/core/ScheduledRestartCommand.java b/ButtonCore/src/main/java/buttondevteam/core/ScheduledRestartCommand.java index 987c244..d7ade35 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/ScheduledRestartCommand.java +++ b/ButtonCore/src/main/java/buttondevteam/core/ScheduledRestartCommand.java @@ -24,6 +24,8 @@ public class ScheduledRestartCommand extends TBMCCommandBase { if (args.length > 0) ticks = Integer.parseInt(args[0]); } catch (NumberFormatException e) { + sender.sendMessage("§cError: Ticks must be a number."); + return false; } if (ticks < 20) { sender.sendMessage("§cError: Ticks must be more than 20."); @@ -33,14 +35,14 @@ public class ScheduledRestartCommand extends TBMCCommandBase { restartbar = Bukkit.createBossBar("Server restart in " + ticks / 20f, BarColor.RED, BarStyle.SOLID, BarFlag.DARKEN_SKY); restartbar.setProgress(1); - Bukkit.getOnlinePlayers().stream().forEach(p -> restartbar.addPlayer(p)); + Bukkit.getOnlinePlayers().forEach(p -> restartbar.addPlayer(p)); sender.sendMessage("Scheduled restart in " + ticks / 20f); ScheduledServerRestartEvent e = new ScheduledServerRestartEvent(ticks); Bukkit.getPluginManager().callEvent(e); restarttask = Bukkit.getScheduler().runTaskTimer(MainPlugin.Instance, () -> { if (restartcounter < 0) { restarttask.cancel(); - restartbar.getPlayers().stream().forEach(p -> restartbar.removePlayer(p)); + restartbar.getPlayers().forEach(p -> restartbar.removePlayer(p)); Bukkit.spigot().restart(); } if (restartcounter % 200 == 0) diff --git a/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java b/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java index 981c702..5f89ad3 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java +++ b/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java @@ -20,7 +20,7 @@ public class TestPrepare { Bukkit.setServer(Mockito.mock(Server.class, new Answer() { @Override - public Object answer(InvocationOnMock invocation) throws Throwable { + public Object answer(InvocationOnMock invocation) { if (returns(invocation, String.class)) return "test"; if (returns(invocation, Logger.class)) diff --git a/ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java b/ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java index 19a5ed0..ba5b309 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java +++ b/ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java @@ -11,23 +11,22 @@ import org.bukkit.command.CommandSender; public class UpdatePluginCommand extends TBMCCommandBase { @Override public boolean OnCommand(CommandSender sender, String alias, String[] args) { - if (args.length == 0) { - sender.sendMessage("Downloading plugin names..."); - boolean first = true; - for (String plugin : PluginUpdater.GetPluginNames()) { - if (first) { - sender.sendMessage("§6---- Plugin names ----"); - first = false; - } - sender.sendMessage("- " + plugin); - } - return true; - } else { - Bukkit.getScheduler().runTaskAsynchronously(MainPlugin.Instance, () -> { - TBMCCoreAPI.UpdatePlugin(args[0], sender, args.length == 1 ? "master" : args[1]); - }); - return true; - } + Bukkit.getScheduler().runTaskAsynchronously(MainPlugin.Instance, () -> { + if (args.length == 0) { + sender.sendMessage("Downloading plugin names..."); + boolean first = true; + for (String plugin : PluginUpdater.GetPluginNames()) { + if (first) { + sender.sendMessage("§6---- Plugin names ----"); + first = false; + } + sender.sendMessage("- " + plugin); + } + } else { + TBMCCoreAPI.UpdatePlugin(args[0], sender, args.length == 1 ? "master" : args[1]); + } + }); + return true; } @Override diff --git a/ButtonCore/src/main/java/buttondevteam/lib/EventExceptionHandler.java b/ButtonCore/src/main/java/buttondevteam/lib/EventExceptionHandler.java index 2d3ec1a..471d364 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/EventExceptionHandler.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/EventExceptionHandler.java @@ -22,11 +22,8 @@ abstract class EventExceptionHandler { // https://gist.github.com/aadnk/5430459 * Represents an event executor that does nothing. This is not really necessary in the current * implementation of CraftBukkit, but we will take no chances. */ - private static EventExecutor NULL_EXECUTOR = new EventExecutor() { - @Override - public void execute(Listener listener, Event event) throws EventException { - // Do nothing - } + private static final EventExecutor NULL_EXECUTOR = (listener, event) -> { + // Do nothing }; private final RegisteredListener delegate; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java b/ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java index c2cc864..ca758f8 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java @@ -55,7 +55,7 @@ public class PluginUpdater { error(sender, "Can't find branch \"" + branch + "\" for plugin \"" + correctname + "\""); return false; } - if (!isMaven(correctname, correctbranch.get())) { + if (isNotMaven(correctname, correctbranch.get())) { error(sender, "The plugin doesn't appear to have a pom.xml. Make sure it's a Maven project."); return false; } @@ -98,21 +98,21 @@ public class PluginUpdater { } /** - * Checks if pom.xml is present for the project. + * Checks if pom.xml is not present for the project. * * @param pluginname * Does not have to match case * @param branch * Does not have to match case */ - public static boolean isMaven(String pluginname, String branch) { + public static boolean isNotMaven(String pluginname, String branch) { try { - return !TBMCCoreAPI + return TBMCCoreAPI .DownloadString( "https://raw.githubusercontent.com/TBMCPlugins/" + pluginname + "/" + branch + "/pom.xml") .equals("404: Not Found\n"); } catch (IOException e1) { - return false; + return true; } } @@ -172,7 +172,7 @@ public class PluginUpdater { public static class UpdatedEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private JsonObject data; + private final JsonObject data; public UpdatedEvent(JsonObject data) { this.data = data; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/ScheduledServerRestartEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/ScheduledServerRestartEvent.java index c73ca4e..749578f 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/ScheduledServerRestartEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/ScheduledServerRestartEvent.java @@ -6,7 +6,7 @@ import org.bukkit.event.HandlerList; public class ScheduledServerRestartEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private int restartticks; + private final int restartticks; public ScheduledServerRestartEvent(int restartticks) { this.restartticks = restartticks; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEvent.java index 1f161d8..3c44345 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEvent.java @@ -1,6 +1,7 @@ package buttondevteam.lib; import buttondevteam.lib.chat.Channel; +import buttondevteam.lib.player.ChromaGamerBase; import lombok.Getter; import org.bukkit.command.CommandSender; import org.bukkit.event.HandlerList; @@ -15,25 +16,28 @@ import javax.annotation.Nullable; */ @Getter public class TBMCChatEvent extends TBMCChatEventBase { - public TBMCChatEvent(CommandSender sender, Channel channel, String message, int score, boolean fromcmd, String groupid) { + public TBMCChatEvent(CommandSender sender, ChromaGamerBase user, Channel channel, String message, int score, boolean fromcmd, String groupid) { super(channel, message, score, groupid); this.sender = sender; this.fromcmd = fromcmd; this.ignoreSenderPermissions = false; + this.user = user; } - public TBMCChatEvent(CommandSender sender, Channel channel, String message, int score, boolean fromcmd, String groupid, boolean ignoreSenderPermissions) { + public TBMCChatEvent(CommandSender sender, ChromaGamerBase user, Channel channel, String message, int score, boolean fromcmd, String groupid, boolean ignoreSenderPermissions) { super(channel, message, score, groupid); this.sender = sender; + this.user = user; this.fromcmd = fromcmd; this.ignoreSenderPermissions = ignoreSenderPermissions; } private static final HandlerList handlers = new HandlerList(); - private CommandSender sender; - private boolean fromcmd; + private final CommandSender sender; + private final boolean fromcmd; private final boolean ignoreSenderPermissions; + private final ChromaGamerBase user; // TODO: Message object with data? /** diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java index d301876..3dd4720 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java @@ -1,6 +1,8 @@ package buttondevteam.lib; import buttondevteam.lib.chat.Channel; +import lombok.Getter; +import lombok.Setter; import org.bukkit.command.CommandSender; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; @@ -13,13 +15,16 @@ import org.bukkit.event.HandlerList; * @author NorbiPeti * */ +@Getter public class TBMCChatPreprocessEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); - private Channel channel; - private CommandSender sender; + private final Channel channel; + private final CommandSender sender; + @Setter private String message; - private boolean cancelled; + @Setter + private boolean cancelled; public TBMCChatPreprocessEvent(CommandSender sender, Channel channel, String message) { this.sender = sender; @@ -31,22 +36,6 @@ public class TBMCChatPreprocessEvent extends Event implements Cancellable { * public TBMCPlayer getPlayer() { return TBMCPlayer.getPlayer(sender); // TODO: Get Chroma user } */ - public Channel getChannel() { - return channel; - } - - public CommandSender getSender() { - return sender; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - @Override public HandlerList getHandlers() { return handlers; @@ -55,14 +44,4 @@ public class TBMCChatPreprocessEvent extends Event implements Cancellable { public static HandlerList getHandlerList() { return handlers; } - - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean cancelled) { - this.cancelled = cancelled; - } } diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java index 95587a2..9f0539f 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java @@ -12,7 +12,6 @@ import org.bukkit.plugin.Plugin; import java.io.IOException; import java.io.InputStream; -import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; @@ -21,7 +20,7 @@ import java.util.List; import java.util.Map.Entry; public class TBMCCoreAPI { - static List coders = new ArrayList() { + static final List coders = new ArrayList() { private static final long serialVersionUID = -4462159250738367334L; { add("Alisolarflare"); @@ -59,7 +58,7 @@ public class TBMCCoreAPI { return PluginUpdater.UpdatePlugin(name, sender, branch); } - public static String DownloadString(String urlstr) throws MalformedURLException, IOException { + public static String DownloadString(String urlstr) throws IOException { URL url = new URL(urlstr); URLConnection con = url.openConnection(); con.setRequestProperty("User-Agent", "TBMCPlugins"); diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java index 67debcf..d2cbbdf 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java @@ -5,7 +5,7 @@ import org.bukkit.event.HandlerList; public class TBMCDebugMessageEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private String message; + private final String message; private boolean sent; public TBMCDebugMessageEvent(String message) { diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/Channel.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/Channel.java index c37c3b9..a9d4d20 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/Channel.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/Channel.java @@ -24,7 +24,7 @@ public class Channel { */ public final Function filteranderrormsg; - private static List channels = new ArrayList<>(); + private static final List channels = new ArrayList<>(); /** * Creates a channel. @@ -66,12 +66,11 @@ public class Channel { * generated automatically. * * @param permgroup The group that can access the channel or null to only allow OPs. - * @return + * @return If has access */ public static Function inGroupFilter(String permgroup) { return noScoreResult( - s -> s.isOp() || (permgroup != null - ? s instanceof Player && MainPlugin.permission != null && MainPlugin.permission.playerInGroup((Player) s, permgroup) : false), + s -> s.isOp() || (permgroup != null && (s instanceof Player && MainPlugin.permission != null && MainPlugin.permission.playerInGroup((Player) s, permgroup))), "You need to be a(n) " + (permgroup != null ? permgroup : "OP") + " to use this channel."); } diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatChannelRegisterEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatChannelRegisterEvent.java index d10c54b..ad592a6 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatChannelRegisterEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatChannelRegisterEvent.java @@ -6,7 +6,7 @@ import org.bukkit.event.HandlerList; public class ChatChannelRegisterEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private Channel channel; + private final Channel channel; public ChatChannelRegisterEvent(Channel channel) { this.channel = channel; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java new file mode 100644 index 0000000..a6fc3f1 --- /dev/null +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java @@ -0,0 +1,46 @@ +package buttondevteam.lib.chat; + +import buttondevteam.lib.player.ChromaGamerBase; +import lombok.Builder; +import lombok.Getter; +import lombok.NonNull; +import org.bukkit.command.CommandSender; + +@Builder +@Getter +public class ChatMessage { + /** + * The MC channel to send the message to. + */ + private final Channel channel; + /** + * The sender which sends the message. + */ + private final CommandSender sender; + /** + * The Chroma user which sends the message. + */ + private final ChromaGamerBase user; + /** + * The message to send as the user. + */ + private final String message; + /** + * Indicates whether the message comes from running a command (like /tableflip). Implemented to be used from Discord. + */ + private boolean fromCommand; + /** + * The sender which we should check for permissions. Same as {@link #sender} by default. + */ + private CommandSender permCheck; + + private static ChatMessageBuilder builder() { + return new ChatMessageBuilder(); + } + + @NonNull + public static ChatMessageBuilder builder(Channel channel, CommandSender sender, ChromaGamerBase user, String message) { + return builder().channel(channel).sender(sender).user(user).message(message); + } + +} diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatRoom.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatRoom.java index dcd88b7..8a1e75d 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatRoom.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatRoom.java @@ -6,7 +6,7 @@ import java.util.ArrayList; import java.util.List; public class ChatRoom extends Channel { - private List usersInRoom = new ArrayList<>(); + private final List usersInRoom = new ArrayList<>(); public ChatRoom(String displayname, Color color, String command) { super(displayname, color, command, noScoreResult((this_, s) -> this_.usersInRoom.contains(s), diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/CommandClass.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/CommandClass.java index 6e0206c..851068e 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/CommandClass.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/CommandClass.java @@ -20,7 +20,7 @@ public @interface CommandClass { * * @return If the command is mod only */ - public boolean modOnly() default false; + boolean modOnly() default false; /** * The command's path, or name if top-level command.
@@ -30,10 +30,10 @@ public @interface CommandClass { * * @return The command path, which is the command class name by default (removing any "command" from it) */ - public String path() default ""; + String path() default ""; /** * Exclude this class from the path. Useful if more commands share some property but aren't subcommands of a common command. See {@link CommandClass} for more details. */ - public boolean excludeFromPath() default false; + boolean excludeFromPath() default false; } diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/OptionallyPlayerCommandClass.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/OptionallyPlayerCommandClass.java index 88418c7..1850df2 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/OptionallyPlayerCommandClass.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/OptionallyPlayerCommandClass.java @@ -12,5 +12,5 @@ import java.lang.annotation.*; @Target(ElementType.TYPE) @Inherited public @interface OptionallyPlayerCommandClass { - public boolean playerOnly(); + boolean playerOnly(); } diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/Priority.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/Priority.java index 2a2f18f..7cf319b 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/Priority.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/Priority.java @@ -2,7 +2,7 @@ package buttondevteam.lib.chat; public enum Priority { Low(0), Normal(1), High(2); - private int val; + private final int val; Priority(int v) { val = v; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java index 894c9d2..f1fcd98 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java @@ -7,6 +7,7 @@ import buttondevteam.lib.TBMCChatPreprocessEvent; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.TBMCSystemChatEvent; import buttondevteam.lib.chat.Channel.RecipientTestResult; +import lombok.val; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -26,7 +27,7 @@ import java.util.function.Consumer; public class TBMCChatAPI { - private static HashMap commands = new HashMap(); + private static final HashMap commands = new HashMap<>(); public static HashMap GetCommands() { return commands; @@ -77,7 +78,7 @@ public class TBMCChatAPI { addToCmds.accept("/" + cmd.getKey()); } } - return cmds.toArray(new String[cmds.size()]); + return cmds.toArray(new String[0]); //Apparently it's faster to use an empty array in modern Java } /** @@ -149,7 +150,7 @@ public class TBMCChatAPI { try { TBMCCommandBase c; if (params.length > 0) - c = thecmdclass.getConstructor(Arrays.stream(params).map(p -> p.getClass()).toArray(Class[]::new)) + c = thecmdclass.getConstructor(Arrays.stream(params).map(Object::getClass).toArray(Class[]::new)) .newInstance(params); else c = thecmdclass.newInstance(); @@ -205,70 +206,31 @@ public class TBMCChatAPI { return false; } - /** - * Sends a chat message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}. - * - * @param channel - * The channel to send to - * @param sender - * The sender to send from - * @param message - * The message to send - * @return The event cancelled state - */ - public static boolean SendChatMessage(Channel channel, CommandSender sender, String message) { - return SendChatMessage(channel, sender, message, false); - } - /** * Sends a chat message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}.
* This will also send the error message to the sender, if they can't send the message. * - * @param channel The channel to send to - * @param sender The sender to send from - * @param message The message to send - * @param fromcommand Whether this message comes from running a command, used to determine whether to delete Discord messages for example + * @param cm The message to send * @return The event cancelled state */ - public static boolean SendChatMessage(Channel channel, CommandSender sender, String message, boolean fromcommand) { - return sendChatMessageInternal(channel, sender, message, fromcommand, sender); - } - - private static boolean sendChatMessageInternal(Channel channel, CommandSender sender, String message, boolean fromcommand, CommandSender permcheck) { - if (!Channel.getChannels().contains(channel)) - throw new RuntimeException("Channel " + channel.DisplayName + " not registered!"); - RecipientTestResult rtr = getScoreOrSendError(channel, permcheck); + public static boolean SendChatMessage(ChatMessage cm) { + if (!Channel.getChannels().contains(cm.getChannel())) + throw new RuntimeException("Channel " + cm.getChannel().DisplayName + " not registered!"); + val permcheck = cm.getPermCheck() == null ? cm.getSender() : cm.getPermCheck(); + RecipientTestResult rtr = getScoreOrSendError(cm.getChannel(), permcheck); int score = rtr.score; if (score == -1 || rtr.groupID == null) return true; - TBMCChatPreprocessEvent eventPre = new TBMCChatPreprocessEvent(sender, channel, message); + TBMCChatPreprocessEvent eventPre = new TBMCChatPreprocessEvent(cm.getSender(), cm.getChannel(), cm.getMessage()); Bukkit.getPluginManager().callEvent(eventPre); if (eventPre.isCancelled()) return true; TBMCChatEvent event; - if (permcheck == sender) - event = new TBMCChatEvent(sender, channel, eventPre.getMessage(), score, fromcommand, rtr.groupID); - else - event = new TBMCChatEvent(sender, channel, eventPre.getMessage(), score, fromcommand, rtr.groupID, true); + event = new TBMCChatEvent(cm.getSender(), cm.getUser(), cm.getChannel(), eventPre.getMessage(), score, cm.isFromCommand(), rtr.groupID, permcheck != cm.getSender()); Bukkit.getPluginManager().callEvent(event); return event.isCancelled(); } - /** - * Sends a chat message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}.
- * This will not check if the sender has permission. - * - * @param channel The channel to send to - * @param sender The sender to send from - * @param message The message to send - * @param fromcommand Whether this message comes from running a command, used to determine whether to delete Discord messages for example - * @param permcheck The sender to check permissions - * @return The event cancelled state - */ - public static boolean SendChatMessageDontCheckSender(Channel channel, CommandSender sender, String message, boolean fromcommand, CommandSender permcheck) { - return sendChatMessageInternal(channel, sender, message, fromcommand, permcheck); - } - /** * Sends a regular message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}. * diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCCommandBase.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCCommandBase.java index cefc1f2..de5fb14 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCCommandBase.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCCommandBase.java @@ -40,7 +40,7 @@ public abstract class TBMCCommandBase { return path; } - private final String getcmdpath() { + private String getcmdpath() { if (!getClass().isAnnotationPresent(CommandClass.class)) throw new RuntimeException( "No @CommandClass annotation on command class " + getClass().getSimpleName() + "!"); @@ -72,11 +72,10 @@ public abstract class TBMCCommandBase { } public final boolean isPlayerOnly() { - return this instanceof PlayerCommandBase ? true - : this instanceof OptionallyPlayerCommandBase - ? getClass().isAnnotationPresent(OptionallyPlayerCommandClass.class) - ? getClass().getAnnotation(OptionallyPlayerCommandClass.class).playerOnly() : true - : false; + return this instanceof PlayerCommandBase || + (this instanceof OptionallyPlayerCommandBase && + (!getClass().isAnnotationPresent(OptionallyPlayerCommandClass.class) + || getClass().getAnnotation(OptionallyPlayerCommandClass.class).playerOnly())); } private final boolean modonly; @@ -88,7 +87,7 @@ public abstract class TBMCCommandBase { return modonly; } - private final boolean ismodonly() { + private boolean ismodonly() { if (!getClass().isAnnotationPresent(CommandClass.class)) throw new RuntimeException( "No @CommandClass annotation on command class " + getClass().getSimpleName() + "!"); diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/TellrawSerializableEnum.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/TellrawSerializableEnum.java index 1b10963..045c666 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/TellrawSerializableEnum.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/TellrawSerializableEnum.java @@ -1,5 +1,5 @@ package buttondevteam.lib.chat; public interface TellrawSerializableEnum { - public String getName(); + String getName(); } diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java b/ButtonCore/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java index 64268c3..2d7ef8b 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java @@ -72,10 +72,10 @@ public abstract class ChromaGamerBase implements AutoCloseable { /*** * Loads a user from disk and returns the user object. Make sure to use the subclasses' methods, where possible, like {@link TBMCPlayerBase#getPlayer(java.util.UUID, Class)} - * - * @param fname - * @param cl - * @return + * + * @param fname Filename without .yml, usually UUID + * @param cl User class + * @return The user object */ public static T getUser(String fname, Class cl) { try { @@ -194,7 +194,7 @@ public abstract class ChromaGamerBase implements AutoCloseable { } @SuppressWarnings("rawtypes") - private HashMap datamap = new HashMap<>(); + private final HashMap datamap = new HashMap<>(); /** * Use from a data() method, which is in a method with the name of the key. For example, use flair() for the enclosing method of the outer data() to save to and load from "flair" @@ -225,7 +225,7 @@ public abstract class ChromaGamerBase implements AutoCloseable { } @SuppressWarnings("rawtypes") - private HashMap dataenummap = new HashMap<>(); + private final HashMap dataenummap = new HashMap<>(); /** * Use from a data() method, which is in a method with the name of the key. For example, use flair() for the enclosing method of the outer data() to save to and load from "flair" diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/EnumPlayerData.java b/ButtonCore/src/main/java/buttondevteam/lib/player/EnumPlayerData.java index ddade7a..398716d 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/EnumPlayerData.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/EnumPlayerData.java @@ -3,9 +3,9 @@ package buttondevteam.lib.player; import org.bukkit.configuration.file.YamlConfiguration; public class EnumPlayerData> { - private PlayerData data; - private Class cl; - private T def; + private final PlayerData data; + private final Class cl; + private final T def; public EnumPlayerData(String name, YamlConfiguration yaml, Class cl, T def) { data = new PlayerData(name, yaml, ""); diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/PlayerData.java b/ButtonCore/src/main/java/buttondevteam/lib/player/PlayerData.java index d9af642..a0a6620 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/PlayerData.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/PlayerData.java @@ -3,9 +3,9 @@ package buttondevteam.lib.player; import org.bukkit.configuration.file.YamlConfiguration; public class PlayerData { - private String name; - private YamlConfiguration yaml; - private T def; + private final String name; + private final YamlConfiguration yaml; + private final T def; public PlayerData(String name, YamlConfiguration yaml, T def) { this.name = name; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java index 1abfac0..5e63713 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java @@ -19,9 +19,9 @@ import java.util.stream.Collectors; public class TBMCPlayerGetInfoEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private ChromaGamerBase player; - private List infolines; - private InfoTarget target; + private final ChromaGamerBase player; + private final List infolines; + private final InfoTarget target; TBMCPlayerGetInfoEvent(ChromaGamerBase player, InfoTarget target) { this.player = player; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerJoinEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerJoinEvent.java index b1c3960..46b1eab 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerJoinEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerJoinEvent.java @@ -7,8 +7,8 @@ import org.bukkit.event.HandlerList; public class TBMCPlayerJoinEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private TBMCPlayerBase player; - private Player player_; + private final TBMCPlayerBase player; + private final Player player_; public TBMCPlayerJoinEvent(TBMCPlayerBase player, Player player_) { this.player = player; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerLoadEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerLoadEvent.java index 80ad7da..b92d2df 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerLoadEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerLoadEvent.java @@ -6,7 +6,7 @@ import org.bukkit.event.HandlerList; public class TBMCPlayerLoadEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private TBMCPlayerBase player; + private final TBMCPlayerBase player; public TBMCPlayerLoadEvent(TBMCPlayerBase player) { this.player = player; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerQuitEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerQuitEvent.java index 4d0ef4b..e5dc4b9 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerQuitEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerQuitEvent.java @@ -7,8 +7,8 @@ import org.bukkit.event.HandlerList; public class TBMCPlayerQuitEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private TBMCPlayerBase player; - private Player player_; + private final TBMCPlayerBase player; + private final Player player_; public TBMCPlayerQuitEvent(TBMCPlayerBase player, Player player_) { this.player = player; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerSaveEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerSaveEvent.java index 2f4ea4c..c755c8a 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerSaveEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerSaveEvent.java @@ -6,7 +6,7 @@ import org.bukkit.event.HandlerList; public class TBMCPlayerSaveEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private TBMCPlayerBase player; + private final TBMCPlayerBase player; public TBMCPlayerSaveEvent(TBMCPlayerBase player) { this.player = player; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCYEEHAWEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCYEEHAWEvent.java index a54a1b7..2a283da 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCYEEHAWEvent.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCYEEHAWEvent.java @@ -6,7 +6,7 @@ import org.bukkit.event.HandlerList; public class TBMCYEEHAWEvent extends Event { private static final HandlerList handlers = new HandlerList(); - private CommandSender sender; + private final CommandSender sender; public TBMCYEEHAWEvent(CommandSender sender) { this.sender = sender; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/potato/DebugPotato.java b/ButtonCore/src/main/java/buttondevteam/lib/potato/DebugPotato.java index d410bd9..aa2fb76 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/potato/DebugPotato.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/potato/DebugPotato.java @@ -49,9 +49,7 @@ public class DebugPotato { List tempList = new ArrayList(); for(String line: message){ tempList = WordWrap(line.toString()); - for (String s: tempList){ - outputList.add(s); - } + outputList.addAll(tempList); } this.message = outputList; } diff --git a/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java b/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java index 23993d5..13433bf 100755 --- a/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java +++ b/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java @@ -32,13 +32,13 @@ public class PlayerDataTest extends TestCase { assertEquals("Test", p.PlayerName().get()); assertEquals(TestEnum.A, p.testenum().get()); assertEquals((short) 0, (short) p.TestShort().get()); - assertEquals(false, (boolean) p.TestBool().get()); + assertFalse(p.TestBool().get()); p.testenum().set(TestEnum.B); assertEquals(TestEnum.B, p.testenum().get()); p.TestShort().set((short) 5); assertEquals((short) 5, (short) p.TestShort().get()); p.TestBool().set(true); - assertEquals(true, (boolean) p.TestBool().get()); + assertTrue(p.TestBool().get()); } catch (Exception e) { throw e; } @@ -46,7 +46,7 @@ public class PlayerDataTest extends TestCase { assertEquals("Test", p.PlayerName().get()); assertEquals(TestEnum.B, p.testenum().get()); assertEquals((short) 5, (short) p.TestShort().get()); - assertEquals(true, (boolean) p.TestBool().get()); + assertTrue(p.TestBool().get()); } catch (Exception e) { throw e; }