diff --git a/pom.xml b/pom.xml index 4ccd6b9..4e3ec5f 100644 --- a/pom.xml +++ b/pom.xml @@ -69,6 +69,12 @@ spigot 1.14.4 + + com.songoda + abledskyblock + 79.1 + provided + com.songoda SongodaCore diff --git a/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java b/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java index d87c549..4785d7c 100644 --- a/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java +++ b/src/main/java/com/songoda/ultimatemoderation/UltimateModeration.java @@ -29,6 +29,7 @@ import com.songoda.ultimatemoderation.tickets.TicketStatus; import com.songoda.ultimatemoderation.utils.Methods; import com.songoda.ultimatemoderation.utils.gui.AbstractGUI; import org.bukkit.Bukkit; +import org.bukkit.plugin.PluginManager; import java.util.List; import java.util.UUID; @@ -111,18 +112,21 @@ public class UltimateModeration extends SongodaPlugin { // Register Listeners guiManager.init(); AbstractGUI.initializeListeners(this); - Bukkit.getPluginManager().registerEvents(new CommandListener(this), this); - Bukkit.getPluginManager().registerEvents(new DeathListener(this), this); - Bukkit.getPluginManager().registerEvents(new MoveListener(this), this); - Bukkit.getPluginManager().registerEvents(new DropListener(this), this); - Bukkit.getPluginManager().registerEvents(new InventoryListener(this), this); - Bukkit.getPluginManager().registerEvents(new ChatListener(this), this); - Bukkit.getPluginManager().registerEvents(new LoginListener(this), this); - Bukkit.getPluginManager().registerEvents(new MobTargetLister(), this); - Bukkit.getPluginManager().registerEvents(new BlockListener(this), this); + PluginManager pluginManager = Bukkit.getPluginManager(); + pluginManager.registerEvents(new CommandListener(this), this); + pluginManager.registerEvents(new DeathListener(this), this); + pluginManager.registerEvents(new MoveListener(this), this); + pluginManager.registerEvents(new DropListener(this), this); + pluginManager.registerEvents(new InventoryListener(this), this); + pluginManager.registerEvents(new ChatListener(this), this); + pluginManager.registerEvents(new LoginListener(this), this); + pluginManager.registerEvents(new MobTargetLister(), this); + pluginManager.registerEvents(new BlockListener(this), this); + if (pluginManager.isPluginEnabled("FabledSkyBlock")) + pluginManager.registerEvents(new SkyBlockListener(this), this); if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) - Bukkit.getPluginManager().registerEvents(new SpyingDismountListener(), this); + pluginManager.registerEvents(new SpyingDismountListener(), this); // Start tasks SlowModeTask.startTask(this); diff --git a/src/main/java/com/songoda/ultimatemoderation/listeners/ChatListener.java b/src/main/java/com/songoda/ultimatemoderation/listeners/ChatListener.java index c68f928..eabb146 100644 --- a/src/main/java/com/songoda/ultimatemoderation/listeners/ChatListener.java +++ b/src/main/java/com/songoda/ultimatemoderation/listeners/ChatListener.java @@ -38,6 +38,12 @@ public class ChatListener implements Listener { @EventHandler public void onChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); + if (!onChat(player, event.getMessage())) + event.setCancelled(true); + } + + public static boolean onChat(Player player, String message) { + UltimateModeration instance = UltimateModeration.getInstance(); long slowmode = slowModeOverride == 0 ? Methods.parseTime(Settings.SLOW_MODE.getString()) : slowModeOverride; @@ -46,33 +52,35 @@ public class ChatListener implements Listener { if (chats.size() != 0) { Log last = chats.get(chats.size() - 1); if ((System.currentTimeMillis() - last.sent) < slowmode) { - event.setCancelled(true); - return; + return false; } } } + boolean isCancelled = false; + for (StaffChannel channel : instance.getStaffChatManager().getChats().values()) { if (!channel.listMembers().contains(player.getUniqueId())) continue; - event.setCancelled(true); - channel.processMessage(event.getMessage(), player); + isCancelled = true; + channel.processMessage(message, player); } if (!isChatToggled && !player.hasPermission("um.togglechat.bypass")) { - event.setCancelled(true); + isCancelled = true; instance.getLocale().getMessage("command.togglechat.muted").sendPrefixedMessage(player); } List appliedPunishments = instance.getPunishmentManager().getPlayer(player).getActivePunishments(PunishmentType.MUTE); if (!appliedPunishments.isEmpty()) { appliedPunishments.get(0).sendMessage(player); - event.setCancelled(true); + isCancelled = true; } // Log chat. - chatLog.add(new Log(player.getUniqueId(), System.currentTimeMillis(), event.getMessage())); + chatLog.add(new Log(player.getUniqueId(), System.currentTimeMillis(), message)); + return !isCancelled; } public static void setSlowModeOverride(long slowModeOverride) { @@ -83,7 +91,7 @@ public class ChatListener implements Listener { return new ArrayList<>(chatLog); } - public class Log { + public static class Log { private UUID player; private long sent; diff --git a/src/main/java/com/songoda/ultimatemoderation/listeners/SkyBlockListener.java b/src/main/java/com/songoda/ultimatemoderation/listeners/SkyBlockListener.java new file mode 100644 index 0000000..588dd02 --- /dev/null +++ b/src/main/java/com/songoda/ultimatemoderation/listeners/SkyBlockListener.java @@ -0,0 +1,30 @@ +package com.songoda.ultimatemoderation.listeners; + +import com.songoda.skyblock.api.event.player.PlayerIslandChatEvent; +import com.songoda.ultimatemoderation.UltimateModeration; +import com.songoda.ultimatemoderation.staffchat.StaffChatManager; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; + +import java.util.List; + +public class SkyBlockListener implements Listener { + + private UltimateModeration instance; + + public SkyBlockListener(UltimateModeration ultimateModeration) { + this.instance = ultimateModeration; + } + + @EventHandler + public void onIslandChat(PlayerIslandChatEvent event) { + if (!ChatListener.onChat(event.getPlayer(), event.getMessage())) + event.setCancelled(true); + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2bd703e..3c3ceb0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ main: com.songoda.ultimatemoderation.UltimateModeration version: maven-version-number author: Songoda api-version: 1.13 -softdepend: [Vault] +softdepend: [Vault, FabledSkyBlock] commands: UltimateModeration: description: View information on this plugin.