Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds chat prefix to go from global to team or ally chat #545

Merged
merged 3 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 31 additions & 15 deletions src/main/java/com/booksaw/betterTeams/events/ChatManagement.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,24 +50,40 @@ public void onChat(AsyncPlayerChatEvent event) {
if(teamPlayer == null) {
throw new IllegalStateException("Player " + p.getName() + " is registered to be in a team, yet has no playerdata associated with that team");
}

if ((teamPlayer.isInTeamChat() || teamPlayer.isInAllyChat())
&& (event.getMessage().startsWith("!") && event.getMessage().length() > 1)) {
event.setMessage(event.getMessage().substring(1));
} else if (teamPlayer.isInTeamChat()) {
// player is sending to team chat
event.setCancelled(true);

team.sendMessage(teamPlayer, event.getMessage());
// Used as some chat plugins do not accept when a message is cancelled
event.setMessage("");
event.setFormat("");
return;
} else if (teamPlayer.isInAllyChat()) {
// player is sending to ally chat
String anyChatToGlobalPrefix = Main.plugin.getConfig().getString("chatPrefixes.teamOrAllyToGlobal", "!");
String globalToTeamPrefix = Main.plugin.getConfig().getString("chatPrefixes.globalToTeam", "!");
String globalToAllyPrefix = Main.plugin.getConfig().getString("chatPrefixes.globalToAlly", "?");

if (teamPlayer.isInTeamChat() || teamPlayer.isInAllyChat()) {
if (!anyChatToGlobalPrefix.isEmpty() && event.getMessage().startsWith(anyChatToGlobalPrefix) && event.getMessage().length() > anyChatToGlobalPrefix.length()) {
event.setMessage(event.getMessage().substring(anyChatToGlobalPrefix.length()));
} else {
// Player is not sending to global chat
event.setCancelled(true);

if (teamPlayer.isInTeamChat()) {
team.sendMessage(teamPlayer, event.getMessage());
} else {
team.sendAllyMessage(teamPlayer, event.getMessage());
}
// Used as some chat plugins do not accept when a message is cancelled
event.setMessage("");
event.setFormat("");
return;
}
} else if (
(!globalToTeamPrefix.isEmpty() && event.getMessage().startsWith(globalToTeamPrefix) && event.getMessage().length() > globalToTeamPrefix.length())
|| (!globalToAllyPrefix.isEmpty() && event.getMessage().startsWith(globalToAllyPrefix) && event.getMessage().length() > globalToAllyPrefix.length())
) {
// Player is not sending to global chat
event.setCancelled(true);

team.sendAllyMessage(teamPlayer, event.getMessage());
if (event.getMessage().startsWith(globalToTeamPrefix)) {
team.sendMessage(teamPlayer, event.getMessage().substring(globalToTeamPrefix.length()));
} else {
team.sendAllyMessage(teamPlayer, event.getMessage().substring(globalToAllyPrefix.length()));
}
// Used as some chat plugins do not accept when a message is cancelled
event.setMessage("");
event.setFormat("");
Expand Down
10 changes: 10 additions & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,16 @@ announceTeamLeave: false
# This is used to determine whether disbanding a team should be announced (Message is configurable in messages.yml)
announceTeamDisband: false

# These are prefix shortcuts to change where a chat message is sent
# Possible values: [Any text/character(s)]
chatPrefixes:
# This prefix will instead send the global message to the team chat
globalToTeam: '!'
# This prefix will instead send the global message to the ally chat
globalToAlly: '?'
# This prefix will instead send the team or ally message to the global chat
teamOrAllyToGlobal: '!'

# This is used to set the maxmimum number of allies a team can have
# - If this feature is unwanted, set the allyLimit to -1 and there will be unlimited allies for each team
# - Keep this value reasonable, as Java cannot cope with larger numbers (over 2 billion), so if you want the team to be limitless, set the value to -1 instead of something large
Expand Down