add prefix for playground players
This commit is contained in:
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(
|
||||||
|
|||||||
Reference in new issue
Block a user