feat: chat & death events

This commit is contained in:
TheClashFruit 2024-05-02 17:47:36 +02:00
parent 282387aabe
commit a1c1c50c5c
Signed by: TheClashFruit
GPG key ID: 09BB24C34C2F3204
4 changed files with 72 additions and 10 deletions

View file

@ -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."
}
```

View file

@ -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));
}
}

View file

@ -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);
}
}

View file

@ -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;
}
}