From 6dda40d34a9ff2f1a343d2ad0375718b578bcea7 Mon Sep 17 00:00:00 2001 From: iceBear67 Date: Tue, 17 Sep 2024 12:38:37 +0800 Subject: [PATCH] add prefix for playground players --- .../module/room/CreativeRoomModule.java | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/ib67/sfcraft/module/room/CreativeRoomModule.java b/src/main/java/io/ib67/sfcraft/module/room/CreativeRoomModule.java index c1060b3..08ec936 100644 --- a/src/main/java/io/ib67/sfcraft/module/room/CreativeRoomModule.java +++ b/src/main/java/io/ib67/sfcraft/module/room/CreativeRoomModule.java @@ -13,10 +13,19 @@ import io.ib67.sfcraft.room.create.CreativeSpaceFactory; import io.ib67.sfcraft.room.create.CreativeSpaceRoom; import io.ib67.sfcraft.util.SFConsts; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.fabricmc.fabric.api.networking.v1.PacketSender; +import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.minecraft.command.CommandRegistryAccess; +import net.minecraft.network.packet.s2c.play.TeamS2CPacket; import net.minecraft.registry.RegistryKey; +import net.minecraft.scoreboard.Team; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.Text; +import net.minecraft.util.Colors; import net.minecraft.world.chunk.ChunkStatus; public class CreativeRoomModule extends ServerModule { @@ -29,17 +38,50 @@ public class CreativeRoomModule extends ServerModule { @Inject private MinecraftServerSupplier serverSupplier; private CreativeSpaceRoom room; + private Team team; @Override public void onInitialize() { CommandRegistrationCallback.EVENT .register(this::registerCommand); + ServerPlayConnectionEvents.JOIN.register(this::onJoin); + ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect); room = new CreativeSpaceRoom(); roomRegistry.registerRoomType(CreativeSpaceRoom.class, CreativeSpaceRoom.WORLD, new CreativeSpaceFactory(room)); roomRegistry.createRoomOf(CreativeSpaceRoom.class, CreativeSpaceRoom.IDENTIFIER, null, (String) null); - roomModule.enqueuePregen(CreativeSpaceRoom.WORLD,CreativeSpaceRoom.SPAWN_POS); + roomModule.enqueuePregen(CreativeSpaceRoom.WORLD, CreativeSpaceRoom.SPAWN_POS); } + private void onDisconnect(ServerPlayNetworkHandler serverPlayNetworkHandler, MinecraftServer minecraftServer) { + ServerPlayerEntity player = serverPlayNetworkHandler.getPlayer(); + if (!RoomModule.isVirtual(player.getUuid())) { + return; + } + String playerName = player.getName().getLiteralString(); + team.getPlayerList().remove(playerName); + player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true)); + } + + private void onJoin(ServerPlayNetworkHandler serverPlayNetworkHandler, PacketSender packetSender, MinecraftServer minecraftServer) { + ServerPlayerEntity player = serverPlayNetworkHandler.getPlayer(); + if (RoomModule.isVirtual(player.getUuid())) { + String playerName = player.getName().getLiteralString(); + team.getPlayerList().add(playerName); + } + player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true)); + } + + + + @Override + public void onEnable() { + if (team == null) { + team = new Team(serverSupplier.get().getScoreboard(), "playgrd"); + team.setPrefix(Text.literal("[游乐场] ").withColor(Colors.LIGHT_YELLOW)); + } + } + + private void registerCommand(CommandDispatcher dispatcher, CommandRegistryAccess registry, CommandManager.RegistrationEnvironment env) { dispatcher.register(