Skip to content

Commit

Permalink
Add party setting chat.cancel-main-event that cancels the chat even…
Browse files Browse the repository at this point in the history
…t instead of modifying recipients
  • Loading branch information
Travja committed Jun 1, 2024
1 parent e45629c commit aeddc5f
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
package studio.magemonkey.divinity.modules.list.party;

import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.projectiles.ProjectileSource;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import studio.magemonkey.codex.config.api.ILangMsg;
import studio.magemonkey.codex.config.api.JYML;
import studio.magemonkey.codex.hooks.Hooks;
Expand All @@ -16,27 +30,12 @@
import studio.magemonkey.divinity.modules.EModule;
import studio.magemonkey.divinity.modules.api.QModule;
import studio.magemonkey.divinity.modules.list.party.command.*;
import studio.magemonkey.divinity.modules.list.party.command.*;
import studio.magemonkey.divinity.modules.list.party.compat.level.IPEFabled;
import studio.magemonkey.divinity.modules.list.party.compat.level.IPEInternal;
import studio.magemonkey.divinity.modules.list.party.compat.level.IPartyLevelManager;
import studio.magemonkey.divinity.modules.list.party.compat.quest.IPOMangoQuest;
import studio.magemonkey.divinity.modules.list.party.compat.quest.IPartyObjective;
import studio.magemonkey.divinity.modules.list.party.event.PlayerLeavePartyEvent;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.projectiles.ProjectileSource;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.*;
import java.util.Map.Entry;
Expand Down Expand Up @@ -515,21 +514,33 @@ public void onPartyChat(AsyncPlayerChatEvent e) {

e.getRecipients().clear();

for (PartyMember friend : member.getParty().getMembers()) {
Player pFriend = friend.getPlayer();
if (pFriend == null) continue;

e.getRecipients().add(pFriend);
}

String format = settings.getChatFormat()
.replace("{player}", "%1$s")
.replace("{message}", "%2$s");

if (Hooks.hasPlaceholderAPI()) {
format = PlaceholderAPI.setPlaceholders(player, format);
}
e.setFormat(format);
if (settings.cancelMainChatEvent()) {
format = format.replace("%1$s", player.getDisplayName())
.replace("%2$s", e.getMessage());
e.setCancelled(true);
for (PartyMember mem : member.getParty().getMembers()) {
Player friend = mem.getPlayer();
if (friend == null) continue;

friend.sendMessage(format);
}
} else {
e.setFormat(format);

for (PartyMember friend : member.getParty().getMembers()) {
Player pFriend = friend.getPlayer();
if (pFriend == null) continue;

e.getRecipients().add(pFriend);
}
}
}

@EventHandler(ignoreCancelled = true)
Expand Down Expand Up @@ -969,6 +980,7 @@ public class PartySettings {

private final boolean partyChatEnabled;
private final String partyChatFormat;
private final boolean partyChatCancel;

private final Map<String, Integer> partySizeByRank;

Expand All @@ -994,6 +1006,7 @@ public PartySettings(JYML cfg) {
path = "chat.";
this.partyChatEnabled = cfg.getBoolean(path + "enabled");
this.partyChatFormat = cfg.getString(path + "format");
this.partyChatCancel = cfg.getBoolean(path + "cancel-main-event", true);

this.partySizeByRank = new LinkedHashMap<>();
for (String rank : cfg.getSection("size-permissions")) {
Expand Down Expand Up @@ -1061,6 +1074,10 @@ public String getChatFormat() {
return this.partyChatFormat;
}

public boolean cancelMainChatEvent() {
return this.partyChatCancel;
}

//

public Map<String, Integer> getSizePerms() {
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/modules/party/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ party:
chat:
enabled: true
format: '&9[Group] &l{player}: &7{message}'
cancel-main-event: false
size-permissions:
vip: 8
premium: 10
Expand Down

0 comments on commit aeddc5f

Please sign in to comment.