Compare commits

...

3 Commits

3 changed files with 31 additions and 10 deletions

View File

@ -82,6 +82,7 @@ public class Messages extends AbstractConfig {
public static String BORDER_SHRINK = "<red>The border is shrinking to <size> blocks!</red>";
public static String CHEST_EMPTY = "<red>This chest is empty!</red>";
public static String WINNER = "<gold><player> has won the Hunger Games!</gold>";
public static String PLAYER_DEATH = "<red><player> has died! <gold><remaining></gold> players remaining.</red>";
@SuppressWarnings("unused")
private static void load() {
@ -90,6 +91,18 @@ public class Messages extends AbstractConfig {
BORDER_SHRINK = config.getString(prefix, "border-shrink", BORDER_SHRINK);
CHEST_EMPTY = config.getString(prefix, "chest-empty", CHEST_EMPTY);
WINNER = config.getString(prefix, "winner", WINNER);
PLAYER_DEATH = config.getString(prefix, "player-death", PLAYER_DEATH);
}
}
public static class START_ROUND {
private static final String prefix = "start-round.";
public static String CAN_NOT_START_ROUND = "<red>Unable to start the round, current state is <round_state></red>";
@SuppressWarnings("unused")
private static void load() {
CAN_NOT_START_ROUND = config.getString(prefix, "can-not-start", CAN_NOT_START_ROUND);
}
}
@ -153,14 +166,15 @@ public class Messages extends AbstractConfig {
public static class STATS {
private static final String prefix = "stats.";
public static String STATS_FORMAT = "<gold>Stats for <player>:</gold>\n" +
"<green>Kills: <gold><kills></gold></green>\n" +
"<green>Deaths: <gold><deaths></gold></green>\n" +
"<green>Damage Dealt: <gold><damage_dealt></gold></green>\n" +
"<green>Damage Taken: <gold><damage_taken></gold></green>\n" +
"<green>Wins: <gold><wins></gold></green>\n" +
"<green>Rounds Played: <gold><rounds_played></gold></green>\n" +
"<green>K/D Ratio: <gold><kd_ratio></gold></green>";
public static String STATS_FORMAT = """
<gold>Stats for <player>:</gold>
<green>Kills: <gold><kills></gold></green>
<green>Deaths: <gold><deaths></gold></green>
<green>Damage Dealt: <gold><damage_dealt></gold></green>
<green>Damage Taken: <gold><damage_taken></gold></green>
<green>Wins: <gold><wins></gold></green>
<green>Rounds Played: <gold><rounds_played></gold></green>
<green>K/D Ratio: <gold><kd_ratio></gold></green>""";
@SuppressWarnings("unused")
private static void load() {

View File

@ -42,6 +42,7 @@ public class PlayerDamageListener implements Listener {
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
Player player = event.getPlayer();
event.deathMessage(null);
playerService.handlePlayerDeath(player);
statService.addDeath(player.getUniqueId());

View File

@ -4,6 +4,8 @@ import com.alttd.hunger_games.config.Messages;
import com.alttd.hunger_games.data_objects.DESTINATION;
import com.alttd.hunger_games.data_objects.PLAYER_STATE;
import com.alttd.hunger_games.data_objects.ROUND_STATE;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -76,7 +78,7 @@ public class PlayerService implements RoundListener {
PLAYER_STATE playerState = optionalPlayerState.get();
if (playerState == PLAYER_STATE.SPECTATING) {
//TODO: teleport player to spectator location
playerTeleporterService.teleportPlayer(player, DESTINATION.SPECTATOR_AREA);
}
roundService.setPlayerState(player.getUniqueId(), playerState);
@ -104,7 +106,11 @@ public class PlayerService implements RoundListener {
public void handlePlayerDeath(Player player) {
UUID uuid = player.getUniqueId();
roundService.setPlayerState(uuid, PLAYER_STATE.SPECTATING);
// TODO: send a message when a player is killed
int remaining = roundService.getPlayers(PLAYER_STATE.REGISTERED).size();
Bukkit.broadcast(MiniMessage.miniMessage().deserialize(Messages.GAME.PLAYER_DEATH,
Placeholder.component("player", player.name()),
Placeholder.unparsed("remaining", String.valueOf(remaining))));
}
public void handlePlayerRespawn(Player player) {