Player Sync
build / build (push) Successful in 9m0s

This commit is contained in:
ciomek committed 2026-09-04 17:41:15 +02:00
1 parent 7d8bf9789f
commit 333f1bca4f
3 files changed
+41

No files matched your search

@@ -93,6 +93,7 @@ public class MQTTClient {
client.subscribe("loon/player/+/position/request"); client.subscribe("loon/player/+/position/request");
client.subscribe("loon/world/chunks/+/+/request"); client.subscribe("loon/world/chunks/+/+/request");
client.subscribe("loon/server/info/request"); client.subscribe("loon/server/info/request");
client.subscribe("loon/playerlist/sync/request");
if (reconnect) if (reconnect)
Loon.LOGGER.info("MQTT reconnected"); Loon.LOGGER.info("MQTT reconnected");
@@ -175,6 +176,10 @@ public class MQTTClient {
if (topic.equals("loon/server/info/request")) { if (topic.equals("loon/server/info/request")) {
RequestManager.addRequest(new ServerInfoRequest()); RequestManager.addRequest(new ServerInfoRequest());
} }
if (topic.equals("loon/playerlist/sync/request")) {
RequestManager.addRequest(new PlayerListSyncRequest());
}
} }
@Override @Override
@@ -0,0 +1,15 @@
package ciomek.loon.mqtt.payload.player.list;
import ciomek.loon.mqtt.payload.Payload;
import ciomek.loon.mqtt.payload.data.PlayerIdentity;
import java.util.List;
public record PlayerListSyncPayload(
List<PlayerIdentity> players
) implements Payload {
@Override
public List<String> topics() {
return List.of("loon/playerlist/sync");
}
}
@@ -0,0 +1,21 @@
package ciomek.loon.mqtt.request;
import ciomek.loon.mqtt.payload.data.PlayerIdentity;
import ciomek.loon.mqtt.payload.player.list.PlayerListSyncPayload;
import net.minecraft.server.MinecraftServer;
import java.util.List;
import java.util.stream.Collectors;
public record PlayerListSyncRequest() implements IRequest {
@Override
public void handle(MinecraftServer server) {
List<PlayerIdentity> players = server.playerList.playerEntities.stream()
.map(player -> new PlayerIdentity(player.uuid, player.username))
.collect(Collectors.toList());
PlayerListSyncPayload payload = new PlayerListSyncPayload(players);
payload.send();
}
}