Add chat system to TowerRun

This commit is contained in:
2025-04-18 10:07:42 +02:00
parent 2094120150
commit ace567ba33
4 changed files with 60 additions and 33 deletions
@@ -46,6 +46,10 @@ public class TowerRunGame {
public static final List<TowerRunPlayer> PLAYERS_ESCAPED = new ArrayList<>();
private static final World world = Bukkit.getWorlds().get(0);
public static boolean isEscaped(TowerRunPlayer player) {
return PLAYERS_ESCAPED.contains(player);
}
public static boolean isAlive(TowerRunPlayer player) {
return PLAYERS_ALIVE.contains(player);
}
@@ -19,20 +19,19 @@
package de.steamwar.towerrun.listener;
import de.steamwar.towerrun.TowerRun;
import de.steamwar.towerrun.config.WorldConfig;
import de.steamwar.towerrun.game.TowerRunGame;
import de.steamwar.towerrun.game.TowerRunPlayer;
import de.steamwar.towerrun.state.GameStateBukkitListener;
import de.steamwar.towerrun.state.GameStates;
import lombok.val;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.*;
import java.util.EnumSet;
@@ -67,4 +66,25 @@ public class GlobalListener extends GameStateBukkitListener implements Listener
public void onPlayerRespawn(PlayerRespawnEvent event) {
event.setRespawnLocation(WorldConfig.SPAWN);
}
@EventHandler
public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
TowerRunPlayer player = TowerRunPlayer.get(event.getPlayer());
if (TowerRunGame.isAlive(player) || TowerRunGame.isEscaped(player)) {
String prefix;
if (TowerRunGame.isAlive(player)) {
if (event.getPlayer().getGameMode() == GameMode.SPECTATOR) {
prefix = "§c☠";
} else {
prefix = "§6❤";
}
} else {
prefix = "§a✔";
}
TowerRun.getMessage().broadcastPrefixless("PARTICIPANT_CHAT", prefix, event.getPlayer().getName(), event.getMessage());
} else {
TowerRun.getMessage().broadcastPrefixless("SPECTATOR_CHAT", event.getPlayer().getName(), event.getMessage());
}
event.setCancelled(true);
}
}