add prefix for playground players

This commit is contained in:
iceBear67 committed 2024-09-17 12:38:37 +08:00
1 parent 6fdd64a593
commit 6dda40d34a
1 file changed
+43 -1
@@ -13,10 +13,19 @@ import io.ib67.sfcraft.room.create.CreativeSpaceFactory;
import io.ib67.sfcraft.room.create.CreativeSpaceRoom; import io.ib67.sfcraft.room.create.CreativeSpaceRoom;
import io.ib67.sfcraft.util.SFConsts; import io.ib67.sfcraft.util.SFConsts;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; 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.command.CommandRegistryAccess;
import net.minecraft.network.packet.s2c.play.TeamS2CPacket;
import net.minecraft.registry.RegistryKey; 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.CommandManager;
import net.minecraft.server.command.ServerCommandSource; 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; import net.minecraft.world.chunk.ChunkStatus;
public class CreativeRoomModule extends ServerModule { public class CreativeRoomModule extends ServerModule {
@@ -29,17 +38,50 @@ public class CreativeRoomModule extends ServerModule {
@Inject @Inject
private MinecraftServerSupplier serverSupplier; private MinecraftServerSupplier serverSupplier;
private CreativeSpaceRoom room; private CreativeSpaceRoom room;
private Team team;
@Override @Override
public void onInitialize() { public void onInitialize() {
CommandRegistrationCallback.EVENT CommandRegistrationCallback.EVENT
.register(this::registerCommand); .register(this::registerCommand);
ServerPlayConnectionEvents.JOIN.register(this::onJoin);
ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect);
room = new CreativeSpaceRoom(); room = new CreativeSpaceRoom();
roomRegistry.registerRoomType(CreativeSpaceRoom.class, CreativeSpaceRoom.WORLD, new CreativeSpaceFactory(room)); roomRegistry.registerRoomType(CreativeSpaceRoom.class, CreativeSpaceRoom.WORLD, new CreativeSpaceFactory(room));
roomRegistry.createRoomOf(CreativeSpaceRoom.class, CreativeSpaceRoom.IDENTIFIER, null, (String) null); 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<ServerCommandSource> dispatcher, private void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher,
CommandRegistryAccess registry, CommandManager.RegistrationEnvironment env) { CommandRegistryAccess registry, CommandManager.RegistrationEnvironment env) {
dispatcher.register( dispatcher.register(