From a1c1c50c5ca99766cb8330dc9056bbb8c4d8dabf Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Thu, 2 May 2024 17:47:36 +0200 Subject: [PATCH] feat: chat & death events --- docs/gateway.md | 32 +++++++++++++++-- .../backend/v2/gateway/GatewaySocket.java | 2 +- .../crss/listeners/PlayerListener.java | 34 +++++++++++++++++++ .../crss/models/SocketReqMessage.java | 14 ++++---- 4 files changed, 72 insertions(+), 10 deletions(-) diff --git a/docs/gateway.md b/docs/gateway.md index 7ca8785..381ba03 100644 --- a/docs/gateway.md +++ b/docs/gateway.md @@ -13,8 +13,8 @@ Send a JSON object with the `type` field set to `subscribe` and the `events` fie * `player_join` * `player_leave` * `player_move` -* `player_chat` :: Not Yet Implemented -* `player_death` :: Not Yet Implemented +* `player_chat` +* `player_death` ## Events @@ -70,4 +70,32 @@ Example: } } } +``` + +### `player_chat` + +Example: +```json +{ + "type": "player_chat", + "player": { + "name": "TheClashFruit", + "uuid": "942ae64d-e4e5-4dd0-a153-b6aba7817ca9" + }, + "message": "Hello, world!" +} +``` + +### `player_death` + +Example: +```json +{ + "type": "player_death", + "player": { + "name": "TheClashFruit", + "uuid": "942ae64d-e4e5-4dd0-a153-b6aba7817ca9" + }, + "message": "TheClashFruit was slain by a zombie." +} ``` \ No newline at end of file diff --git a/src/main/java/me/theclashfruit/crss/backend/v2/gateway/GatewaySocket.java b/src/main/java/me/theclashfruit/crss/backend/v2/gateway/GatewaySocket.java index c6e0294..3625066 100644 --- a/src/main/java/me/theclashfruit/crss/backend/v2/gateway/GatewaySocket.java +++ b/src/main/java/me/theclashfruit/crss/backend/v2/gateway/GatewaySocket.java @@ -41,7 +41,7 @@ public class GatewaySocket { SocketReqMessage reqMessage = (SocketReqMessage) SocketReqMessage.fromJson(message, SocketReqMessage.class); if (Objects.equals(reqMessage.getType(), "subscribe")) { - for (String channel : reqMessage.getChannels()) { + for (String channel : reqMessage.getEvents()) { this.subscriptions.add(Channels.getChannel(channel)); } } diff --git a/src/main/java/me/theclashfruit/crss/listeners/PlayerListener.java b/src/main/java/me/theclashfruit/crss/listeners/PlayerListener.java index dc7f568..3184dd7 100644 --- a/src/main/java/me/theclashfruit/crss/listeners/PlayerListener.java +++ b/src/main/java/me/theclashfruit/crss/listeners/PlayerListener.java @@ -5,6 +5,8 @@ import me.theclashfruit.crss.enums.Channels; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -71,4 +73,36 @@ public class PlayerListener implements Listener { if (event.getFrom().distance(event.getTo()) != 0) GatewaySocket.broadcastToChannel(Channels.PLAYER_MOVE, msg); } + + @EventHandler + public void onPlayerChat(PlayerChatEvent event) { + Player player = event.getPlayer(); + + String msg = "{" + + "\"type\":\"player_chat\"," + + "\"player\":{" + + "\"name\":\"" + player.getName() + "\"," + + "\"uuid\":\"" + player.getUniqueId() + "\"" + + "}," + + "\"message\":\"" + event.getMessage() + "\"" + + "}"; + + GatewaySocket.broadcastToChannel(Channels.PLAYER_CHAT, msg); + } + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent event) { + Player player = event.getEntity(); + + String msg = "{" + + "\"type\":\"player_death\"," + + "\"player\":{" + + "\"name\":\"" + player.getName() + "\"," + + "\"uuid\":\"" + player.getUniqueId() + "\"" + + "}," + + "\"message\":\"" + event.getDeathMessage() + "\"" + + "}"; + + GatewaySocket.broadcastToChannel(Channels.PLAYER_DEATH, msg); + } } diff --git a/src/main/java/me/theclashfruit/crss/models/SocketReqMessage.java b/src/main/java/me/theclashfruit/crss/models/SocketReqMessage.java index 9dd4254..fa68e00 100644 --- a/src/main/java/me/theclashfruit/crss/models/SocketReqMessage.java +++ b/src/main/java/me/theclashfruit/crss/models/SocketReqMessage.java @@ -7,26 +7,26 @@ import java.util.stream.Collectors; public class SocketReqMessage extends Model { private String type; - private String[] channels; + private String[] events; - public SocketReqMessage(String type, String[] channels) { + public SocketReqMessage(String type, String[] events) { this.type = type; - this.channels = channels; + this.events = events; } public String getType() { return type; } - public String[] getChannels() { - return channels; + public String[] getEvents() { + return events; } public void setType(String type) { this.type = type; } - public void setChannels(String[] channels) { - this.channels = channels; + public void setEvents(String[] events) { + this.events = events; } }