Skip to content

Commit 6ab7f5e

Browse files
committed
Divided chat by arena (Including lobby)
1 parent c9535e4 commit 6ab7f5e

File tree

5 files changed

+61
-0
lines changed

5 files changed

+61
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
- Games are now deactivatable by setting their game time to -1
1414
- Added an option to send the user to the lobby when they join the server.
1515
- Added fireworks for the arena winner.
16+
- Divided chat by arena (Including lobby)
1617

1718
### Fixed
1819

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dev._2lstudios.jelly.utils;
2+
3+
public class ObjectUtils {
4+
public static boolean checkEquals(final Object obj1, final Object obj2) {
5+
if (obj1 == null && obj2 == null) {
6+
return true;
7+
}
8+
9+
if (obj1 == null || obj2 == null) {
10+
return false;
11+
}
12+
13+
return obj1.equals(obj2);
14+
}
15+
}

src/main/java/dev/_2lstudios/squidgame/SquidGame.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import dev._2lstudios.squidgame.commands.SquidGameCommand;
1313
import dev._2lstudios.squidgame.hooks.PlaceholderAPIHook;
1414
import dev._2lstudios.squidgame.hooks.ScoreboardHook;
15+
import dev._2lstudios.squidgame.listeners.AsyncPlayerChatListener;
1516
import dev._2lstudios.squidgame.listeners.BlockBreakListener;
1617
import dev._2lstudios.squidgame.listeners.BlockPlaceListener;
1718
import dev._2lstudios.squidgame.listeners.EntityDamageListener;
@@ -57,6 +58,7 @@ public void onEnable() {
5758
this.addCommand(new SquidGameCommand());
5859

5960
// Register listeners
61+
this.addEventListener(new AsyncPlayerChatListener(this));
6062
this.addEventListener(new BlockBreakListener(this));
6163
this.addEventListener(new BlockPlaceListener(this));
6264
this.addEventListener(new EntityDamageListener(this));
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package dev._2lstudios.squidgame.listeners;
2+
3+
import java.util.Iterator;
4+
5+
import org.bukkit.entity.Player;
6+
import org.bukkit.event.EventHandler;
7+
import org.bukkit.event.Listener;
8+
import org.bukkit.event.player.AsyncPlayerChatEvent;
9+
10+
import dev._2lstudios.jelly.utils.ObjectUtils;
11+
import dev._2lstudios.squidgame.SquidGame;
12+
import dev._2lstudios.squidgame.player.SquidPlayer;
13+
14+
public class AsyncPlayerChatListener implements Listener {
15+
16+
private final SquidGame plugin;
17+
18+
public AsyncPlayerChatListener(final SquidGame plugin) {
19+
this.plugin = plugin;
20+
}
21+
22+
@EventHandler
23+
public void onAsyncPlayerChat(final AsyncPlayerChatEvent e) {
24+
if (this.plugin.getMainConfig().getBoolean("game-settings.per-arena-chat", true)) {
25+
final SquidPlayer thisPlayer = (SquidPlayer) this.plugin.getPlayerManager().getPlayer(e.getPlayer());
26+
final Iterator<Player> players = e.getRecipients().iterator();
27+
28+
if (thisPlayer == null) {
29+
return;
30+
}
31+
32+
while (players.hasNext()) {
33+
final Player bukkitPlayer = players.next();
34+
final SquidPlayer recipient = (SquidPlayer) this.plugin.getPlayerManager().getPlayer(bukkitPlayer);
35+
36+
if (!ObjectUtils.checkEquals(recipient.getArena(), thisPlayer.getArena())) {
37+
players.remove();
38+
}
39+
}
40+
}
41+
}
42+
}

src/main/resources/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
game-settings:
22
allow-victory-before-completing-game: false
33
give-blindness-in-game-3: true
4+
per-arena-chat: true
45
send-player-to-lobby-on-join: true
56
spawn-fireworks-on-win: true
67
min-players: 2

0 commit comments

Comments
 (0)