From da695a7fc0928b3fdf7a5d47a755d64b8818fa39 Mon Sep 17 00:00:00 2001 From: Minenash Date: Tue, 11 Dec 2018 18:41:11 -0500 Subject: Added ChatAPI Message in broadcasts --- src/main/java/com/redstoner/misc/Utils.java | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main/java/com/redstoner/misc/Utils.java b/src/main/java/com/redstoner/misc/Utils.java index 8186bcb..d950d67 100644 --- a/src/main/java/com/redstoner/misc/Utils.java +++ b/src/main/java/com/redstoner/misc/Utils.java @@ -12,6 +12,9 @@ import org.bukkit.entity.Player; import com.redstoner.annotations.Version; +import net.nemez.chatapi.ChatAPI; +import net.nemez.chatapi.click.Message; + /** The utils class containing utility functions. Those include but are not limited to sending formatted messages, broadcasts and more. * * @author Pepich */ @@ -69,6 +72,45 @@ public final class Utils } } + /** This method broadcasts a message to all players and console that are allowed by the filter. Set the filter to NULL to broadcast to everyone.
+ * If you want to, you can set a message that will be logged to console. Set to null to not log anything.
+ * You can still allow console in the filter to log the original message. + * + * @param prefix The prefix for the message. Set to NULL to let it auto generate. + * @param message the message to be sent around + * @param filter the BroadcastFilter to be applied.
+ * Write a class implementing the interface and pass it to this method, the "sendTo()" method will be called for each recipient. + * @param logmessage the log message to appear in console. Set to null to not log this (you can still log the original message by returning true in the filter). + */ + public static int broadcast(String prefix, Message message, BroadcastFilter filter) + { + if (prefix == null) + prefix = "§8[§2" + getCaller() + "§8]: "; + if (filter == null) + { + for (Player p : Bukkit.getOnlinePlayers()) + ChatAPI.createMessage(p).appendText(prefix).appendMessage(message).send(); + Bukkit.getConsoleSender().sendMessage(prefix + message); + return Bukkit.getOnlinePlayers().size() + 1; + } + else + { + int count = 0; + for (Player p : Bukkit.getOnlinePlayers()) + if (filter.sendTo(p)) + { + ChatAPI.createMessage(p).appendText(prefix).appendMessage(message).send(); + count++; + } + if (filter.sendTo(Bukkit.getConsoleSender())) + { + Bukkit.getConsoleSender().sendMessage(prefix + message); + count++; + } + return count; + } + } + /** This method will find the next parent caller and return their class name, omitting package names. * * @return the Name of the calling class. */ -- cgit v1.2.3