Adds compatibility with mute plugins

This commit is contained in:
RoinujNosde committed 2021-03-18 21:45:53 -03:00
1 parent 95c5b11352
commit 1f0b251885
2 files changed
+46 -23

No files matched your search

+11 -8
View File
@@ -4,7 +4,7 @@
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<name>SimpleClans</name>
<version>2.14.7</version>
<version>2.15.0</version>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
<build>
<resources>
@@ -103,10 +103,6 @@
<id>bstats-repo</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
@@ -119,6 +115,10 @@
<id>sk89q-repo</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
@@ -238,10 +238,13 @@
</dependencies>
<distributionManagement>
<repository>
<id>bintray-roinujnosde-bukkit-plugins</id>
<name>roinujnosde-bukkit-plugins</name>
<url>https://api.bintray.com/maven/roinujnosde/bukkit-plugins/SimpleClans/;publish=1</url>
<id>codemc-releases</id>
<url>https://repo.codemc.io/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>codemc-snapshots</id>
<url>https://repo.codemc.io/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -50,33 +50,45 @@ public class SCPlayerListener implements Listener {
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
@EventHandler(ignoreCancelled = true)
public void onPlayerChat(AsyncPlayerChatEvent event) {
if (event instanceof FakeAsyncPlayerChatEvent) {
return;
}
Player player = event.getPlayer();
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player.getUniqueId());
if (cp == null || settingsManager.isBlacklistedWorld(player.getLocation().getWorld())) {
return;
}
FakeAsyncPlayerChatEvent fakeEvent = new FakeAsyncPlayerChatEvent(event);
Bukkit.getPluginManager().callEvent(fakeEvent);
if (fakeEvent.isCancelled()) {
return;
}
Channel channel = cp.getChannel();
if (channel != NONE) {
PermissionsManager pm = plugin.getPermissionsManager();
if ((channel == Channel.ALLY && !pm.has(player, "simpleclans.member.ally")) ||
(channel == CLAN && !pm.has(player, "simpleclans.member.chat"))) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return;
}
switch (channel) {
case CLAN:
plugin.getClanManager().processClanChat(player, event.getMessage());
break;
case ALLY:
plugin.getClanManager().processAllyChat(player, event.getMessage());
}
if (!handleClanChat(event.getMessage(), player, channel)) return;
event.setCancelled(true);
}
}
private boolean handleClanChat(String message, Player player, Channel channel) {
PermissionsManager pm = plugin.getPermissionsManager();
if ((channel == Channel.ALLY && !pm.has(player, "simpleclans.member.ally")) ||
(channel == CLAN && !pm.has(player, "simpleclans.member.chat"))) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return false;
}
switch (channel) {
case CLAN:
plugin.getClanManager().processClanChat(player, message);
break;
case ALLY:
plugin.getClanManager().processAllyChat(player, message);
}
return true;
}
@EventHandler
public void handleChatTags(AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
@@ -186,4 +198,12 @@ public class SCPlayerListener implements Listener {
plugin.getClanManager().updateLastSeen(event.getPlayer());
}
private static class FakeAsyncPlayerChatEvent extends AsyncPlayerChatEvent {
public FakeAsyncPlayerChatEvent(AsyncPlayerChatEvent event) {
super(event.isAsynchronous(), event.getPlayer(), event.getMessage(), event.getRecipients());
}
}
}