refactor: prefix module
This commit is contained in:
11 files changed
+231
-94
No files matched your search
@@ -4,8 +4,9 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.inject.*;
|
||||
import io.ib67.sfcraft.module.*;
|
||||
import io.ib67.sfcraft.module.chat.ChatPingModule;
|
||||
import io.ib67.sfcraft.module.chat.ChatSendLocModule;
|
||||
import io.ib67.sfcraft.module.chat.ChatPrefixModule;
|
||||
import io.ib67.sfcraft.module.chat.decorator.ChatPingModule;
|
||||
import io.ib67.sfcraft.module.chat.decorator.ChatSendLocModule;
|
||||
import io.ib67.sfcraft.module.compat.ModCompatModule;
|
||||
import io.ib67.sfcraft.module.randomevt.LongNightModule;
|
||||
import io.ib67.sfcraft.module.room.CreativeRoomModule;
|
||||
@@ -59,6 +60,7 @@ public class SFCraftInitializer extends GuiceModInitializer {
|
||||
registerFeature(ModCompatModule.class);
|
||||
registerFeature(RoomModule.class);
|
||||
registerFeature(CreativeRoomModule.class);
|
||||
registerFeature(ChatPrefixModule.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,8 @@ import com.google.inject.Inject;
|
||||
import io.ib67.sfcraft.ServerModule;
|
||||
import io.ib67.sfcraft.callback.SFCallbacks;
|
||||
import io.ib67.sfcraft.inject.MinecraftServerSupplier;
|
||||
import io.ib67.sfcraft.module.chat.ChatPrefix;
|
||||
import io.ib67.sfcraft.module.chat.ChatPrefixModule;
|
||||
import net.fabricmc.fabric.api.networking.v1.PacketSender;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||
import net.minecraft.network.packet.s2c.play.TeamS2CPacket;
|
||||
@@ -19,33 +21,21 @@ import java.util.Objects;
|
||||
public class AFKModule extends ServerModule {
|
||||
@Inject
|
||||
private MinecraftServerSupplier serverSupplier;
|
||||
private Team team;
|
||||
@Inject
|
||||
private ChatPrefixModule chatPrefixModule;
|
||||
private ChatPrefix prefix;
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
SFCallbacks.PLAYER_IDLE.register(this::onAFK);
|
||||
ServerPlayConnectionEvents.JOIN.register(this::onJoin);
|
||||
ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect);
|
||||
prefix = new ChatPrefix(
|
||||
Text.literal("[挂机] ").withColor(Colors.LIGHT_GRAY),
|
||||
"afk",
|
||||
true,
|
||||
10
|
||||
);
|
||||
}
|
||||
|
||||
private void onDisconnect(ServerPlayNetworkHandler serverPlayNetworkHandler, MinecraftServer server) {
|
||||
if (team != null) {
|
||||
var name = serverPlayNetworkHandler.getPlayer().getName().getLiteralString();
|
||||
if (team.getPlayerList().contains(name)) {
|
||||
team.getPlayerList().remove(name);
|
||||
server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||
server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, name, TeamS2CPacket.Operation.REMOVE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
if (team == null) {
|
||||
team = new Team(serverSupplier.get().getScoreboard(), "afk");
|
||||
team.setPrefix(Text.literal("[挂机] ").withColor(Colors.LIGHT_GRAY));
|
||||
}
|
||||
}
|
||||
|
||||
private void onAFK(ServerPlayerEntity player, boolean afk) {
|
||||
if (afk) {
|
||||
@@ -56,11 +46,9 @@ public class AFKModule extends ServerModule {
|
||||
}
|
||||
|
||||
private void enAFK(ServerPlayerEntity player) {
|
||||
String playerName = player.getName().getLiteralString();
|
||||
team.getPlayerList().add(playerName);
|
||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||
chatPrefixModule.applyPrefix(player, prefix);
|
||||
player.server.getPlayerManager().broadcast(
|
||||
Text.literal(" * " + playerName + " 正在挂机.").withColor(Colors.LIGHT_GRAY),
|
||||
Text.literal(" * " + player.getName().getLiteralString() + " 正在挂机.").withColor(Colors.LIGHT_GRAY),
|
||||
false
|
||||
);
|
||||
SFCallbacks.PLAYER_AFK.invoker().onAFKStatus(player, true);
|
||||
@@ -68,19 +56,11 @@ public class AFKModule extends ServerModule {
|
||||
|
||||
public void deAFK(ServerPlayerEntity player) {
|
||||
String playerName = player.getName().getLiteralString();
|
||||
team.getPlayerList().remove(playerName);
|
||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, playerName, TeamS2CPacket.Operation.REMOVE));
|
||||
chatPrefixModule.removePrefix(player, prefix);
|
||||
player.server.getPlayerManager().broadcast(
|
||||
Text.literal(" * " + playerName + " 回来了.").withColor(Colors.LIGHT_GRAY),
|
||||
false
|
||||
);
|
||||
SFCallbacks.PLAYER_AFK.invoker().onAFKStatus(player, false);
|
||||
}
|
||||
|
||||
private void onJoin(ServerPlayNetworkHandler serverPlayNetworkHandler, PacketSender packetSender, MinecraftServer minecraftServer) {
|
||||
if (team != null) {
|
||||
packetSender.sendPacket(TeamS2CPacket.updateTeam(team, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package io.ib67.sfcraft.module.chat;
|
||||
|
||||
import net.minecraft.text.Text;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
public record ChatPrefix(
|
||||
Text prefix,
|
||||
String id,
|
||||
boolean temporary,
|
||||
int priority
|
||||
) implements Comparable<ChatPrefix> {
|
||||
public ChatPrefix {
|
||||
Objects.requireNonNull(id, "id cannot be null");
|
||||
Objects.requireNonNull(prefix, "prefix cannot be null");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return id.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj != null && obj instanceof ChatPrefix && ((ChatPrefix) obj).id.equals(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(@NotNull ChatPrefix o) {
|
||||
return Integer.compare(priority, o.priority);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
package io.ib67.sfcraft.module.chat;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import io.ib67.sfcraft.ServerModule;
|
||||
import io.ib67.sfcraft.inject.MinecraftServerSupplier;
|
||||
import net.fabricmc.fabric.api.networking.v1.PacketSender;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.packet.Packet;
|
||||
import net.minecraft.network.packet.s2c.play.TeamS2CPacket;
|
||||
import net.minecraft.scoreboard.Team;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class ChatPrefixModule extends ServerModule {
|
||||
@Inject
|
||||
private MinecraftServerSupplier serverSupplier;
|
||||
private volatile ChatPrefix empty;
|
||||
private final Map<UUID, SortedSet<ChatPrefix>> playerPrefixes = new HashMap<>();
|
||||
private final Map<String, Team> virtualTeams = new HashMap<>();
|
||||
private final Map<UUID, Team> players = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
ServerPlayConnectionEvents.JOIN.register(this::onJoin);
|
||||
ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
empty = new ChatPrefix(
|
||||
Text.empty(),
|
||||
"EMPTY",
|
||||
true,
|
||||
1000
|
||||
);
|
||||
virtualTeams.put(empty.id(), createTeamFrom(empty));
|
||||
}
|
||||
|
||||
private void onDisconnect(ServerPlayNetworkHandler serverPlayNetworkHandler, MinecraftServer minecraftServer) {
|
||||
var player = serverPlayNetworkHandler.getPlayer();
|
||||
var current = getCurrentPrefix(player);
|
||||
if (current.temporary()) {
|
||||
removeFromTeam(player, players.get(player.getUuid()));
|
||||
}
|
||||
}
|
||||
|
||||
private void onJoin(ServerPlayNetworkHandler networkHandler, PacketSender sender, MinecraftServer minecraftServer) {
|
||||
for (Map.Entry<UUID, Team> uuidTeamEntry : players.entrySet()) {
|
||||
var team = uuidTeamEntry.getValue();
|
||||
sender.sendPacket(TeamS2CPacket.updateTeam(team, true));
|
||||
}
|
||||
}
|
||||
|
||||
private void onPrefixUpdate(PlayerEntity player) {
|
||||
var lastTeam = players.get(player.getUuid());
|
||||
var current = virtualTeams.get(playerPrefixes.get(player.getUuid()).getFirst().id());
|
||||
if (lastTeam == current) return;
|
||||
if (lastTeam != null) removeFromTeam(player, lastTeam);
|
||||
if (current == null) {
|
||||
return;
|
||||
}
|
||||
addToTeam(player, current);
|
||||
}
|
||||
|
||||
private void addToTeam(PlayerEntity player, Team team) {
|
||||
var playerName = player.getName().getLiteralString();
|
||||
team.getPlayerList().add(playerName);
|
||||
sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||
players.put(player.getUuid(), team);
|
||||
}
|
||||
|
||||
private void removeFromTeam(PlayerEntity player, Team team) {
|
||||
var playerName = player.getName().getLiteralString();
|
||||
team.getPlayerList().remove(playerName);
|
||||
sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||
var current = getCurrentPrefix(player);
|
||||
var newTeam = virtualTeams.get(current.id());
|
||||
addToTeam(player, newTeam);
|
||||
}
|
||||
|
||||
private void sendToAll(Packet<?> packet) {
|
||||
serverSupplier.get().getPlayerManager().sendToAll(packet);
|
||||
}
|
||||
|
||||
public void applyPrefix(PlayerEntity player, ChatPrefix prefix) {
|
||||
if (hasPrefix(player.getUuid(), prefix)) {
|
||||
return;
|
||||
}
|
||||
playerPrefixes.get(player.getUuid()).add(prefix);
|
||||
onPrefixUpdate(player);
|
||||
}
|
||||
|
||||
public void removePrefix(PlayerEntity player, ChatPrefix prefix) {
|
||||
if (!hasPrefix(player.getUuid(), prefix)) {
|
||||
return;
|
||||
}
|
||||
playerPrefixes.get(player.getUuid()).remove(prefix);
|
||||
onPrefixUpdate(player);
|
||||
}
|
||||
|
||||
public ChatPrefix getCurrentPrefix(PlayerEntity player) {
|
||||
if (!playerPrefixes.containsKey(player.getUuid())) {
|
||||
return null;
|
||||
}
|
||||
return playerPrefixes.get(player.getUuid()).first();
|
||||
|
||||
}
|
||||
|
||||
public boolean hasPrefix(UUID player, ChatPrefix prefix) {
|
||||
if (!virtualTeams.containsKey(prefix.id())) {
|
||||
virtualTeams.put(prefix.id(), createTeamFrom(prefix));
|
||||
}
|
||||
return playerPrefixes.computeIfAbsent(player, ignored -> new TreeSet<>(List.of(empty))).contains(prefix);
|
||||
}
|
||||
|
||||
private Team createTeamFrom(ChatPrefix prefix) {
|
||||
var t = new Team(
|
||||
serverSupplier.get().getScoreboard(),
|
||||
prefix.id()
|
||||
);
|
||||
t.setPrefix(prefix.prefix());
|
||||
return t;
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -1,4 +1,4 @@
|
||||
package io.ib67.sfcraft.module.chat;
|
||||
package io.ib67.sfcraft.module.chat.decorator;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import io.ib67.sfcraft.ServerModule;
|
||||
@@ -9,7 +9,6 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.message.MessageDecorator;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvent;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Colors;
|
||||
+1
-2
@@ -1,4 +1,4 @@
|
||||
package io.ib67.sfcraft.module.chat;
|
||||
package io.ib67.sfcraft.module.chat.decorator;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import io.ib67.sfcraft.ServerModule;
|
||||
@@ -6,7 +6,6 @@ import io.ib67.sfcraft.registry.chat.SimpleMessageDecorator;
|
||||
import io.ib67.sfcraft.util.Helper;
|
||||
import io.ib67.sfcraft.util.SFConsts;
|
||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||
import net.minecraft.entity.effect.StatusEffectUtil;
|
||||
import net.minecraft.entity.effect.StatusEffects;
|
||||
import net.minecraft.network.message.MessageDecorator;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.ib67.sfcraft.module.chat;
|
||||
package io.ib67.sfcraft.module.chat.decorator;
|
||||
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.text.Text;
|
||||
@@ -8,6 +8,8 @@ import io.ib67.sfcraft.ServerModule;
|
||||
import io.ib67.sfcraft.callback.SFCallbacks;
|
||||
import io.ib67.sfcraft.inject.MinecraftServerSupplier;
|
||||
import io.ib67.sfcraft.module.RoomModule;
|
||||
import io.ib67.sfcraft.module.chat.ChatPrefix;
|
||||
import io.ib67.sfcraft.module.chat.ChatPrefixModule;
|
||||
import io.ib67.sfcraft.registry.RoomRegistry;
|
||||
import io.ib67.sfcraft.room.RoomTeleporter;
|
||||
import io.ib67.sfcraft.room.create.CreativeSpaceFactory;
|
||||
@@ -29,8 +31,10 @@ 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.GameMode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Set;
|
||||
|
||||
public class CreativeRoomModule extends ServerModule {
|
||||
@@ -50,19 +54,24 @@ public class CreativeRoomModule extends ServerModule {
|
||||
private RoomModule roomModule;
|
||||
@Inject
|
||||
private MinecraftServerSupplier serverSupplier;
|
||||
@Inject
|
||||
private ChatPrefixModule chatPrefixModule;
|
||||
private CreativeSpaceRoom room;
|
||||
private Team team;
|
||||
private ChatPrefix prefix;
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
prefix = new ChatPrefix(
|
||||
Text.literal("[PLAYGRD] ").withColor(Colors.LIGHT_YELLOW),
|
||||
"playgrd",
|
||||
true,
|
||||
20
|
||||
);
|
||||
CommandRegistrationCallback.EVENT
|
||||
.register(this::registerCommand);
|
||||
ServerPlayConnectionEvents.JOIN.register(this::onJoin);
|
||||
ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect);
|
||||
PermissionCheckEvent.EVENT.register(this::onWorldEdit);
|
||||
PermissionCheckEvent.EVENT.register(this::onOtherCommands);
|
||||
SFCallbacks.PLAYER_AFK.register(this::onAFK);
|
||||
room = new CreativeSpaceRoom();
|
||||
room = new CreativeSpaceRoom(this);
|
||||
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);
|
||||
@@ -92,44 +101,6 @@ public class CreativeRoomModule extends ServerModule {
|
||||
return TriState.DEFAULT;
|
||||
}
|
||||
|
||||
private void onAFK(ServerPlayerEntity player, boolean b) {
|
||||
if (!b) {
|
||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, player.getName().getLiteralString(), TeamS2CPacket.Operation.ADD));
|
||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||
}
|
||||
}
|
||||
|
||||
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));
|
||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, playerName, TeamS2CPacket.Operation.REMOVE));
|
||||
}
|
||||
|
||||
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));
|
||||
packetSender.sendPacket(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,
|
||||
CommandRegistryAccess registry, CommandManager.RegistrationEnvironment env) {
|
||||
dispatcher.register(
|
||||
@@ -144,4 +115,23 @@ public class CreativeRoomModule extends ServerModule {
|
||||
teleporter.teleportTo(room, player);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void onPlayerJoin(ServerPlayerEntity player) {
|
||||
player.sendMessage(Text.of("你现在正在创造游乐园中,使用 //schem list 查看可用投影。"));
|
||||
player.sendMessage(Text.literal("以下功能现在可用:").withColor(Colors.WHITE)
|
||||
.append(Text.literal("/player /track /summon /setblock /time /gamerule /weather 及 WorldEdit 的所有命令").withColor(Color.MAGENTA.getRGB()).append("。")));
|
||||
player.sendMessage(Text.of(" "));
|
||||
player.sendMessage(Text.literal("如何上传投影到游乐场: ").withColor(Colors.GRAY)
|
||||
.append(Text.literal("https://github.com/saltedfishclub/sfcraft-schematics").withColor(Colors.GRAY).styled(it -> it.withUnderline(true))) );
|
||||
player.sendMessage(Text.literal("游乐园中的生物不能逃逸到其他维度。").withColor(Colors.GRAY));
|
||||
player.sendMessage(Text.literal("使用 /reco 或重新加入游戏即可离开。").withColor(Colors.GRAY));
|
||||
player.changeGameMode(GameMode.CREATIVE);
|
||||
|
||||
chatPrefixModule.applyPrefix(player, prefix);
|
||||
}
|
||||
|
||||
public void onPlayerQuit(ServerPlayerEntity player) {
|
||||
System.out.println(player.getUuid());
|
||||
chatPrefixModule.removePrefix(player, prefix);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.ib67.sfcraft.room.create;
|
||||
|
||||
import io.ib67.sfcraft.module.room.CreativeRoomModule;
|
||||
import io.ib67.sfcraft.room.SimpleRoomPlayerManager;
|
||||
import io.ib67.sfcraft.subserver.Room;
|
||||
import io.ib67.sfcraft.subserver.RoomSession;
|
||||
@@ -7,12 +8,15 @@ import io.ib67.sfcraft.subserver.RoomSession;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CreativePlayerManager extends SimpleRoomPlayerManager {
|
||||
protected CreativePlayerManager(Room room) {
|
||||
protected final CreativeRoomModule module;
|
||||
|
||||
protected CreativePlayerManager(Room room, CreativeRoomModule module) {
|
||||
super(room);
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomSession createSession(UUID id) {
|
||||
return new CreativePlayerSession(room);
|
||||
return new CreativePlayerSession(room, module);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.ib67.sfcraft.room.create;
|
||||
|
||||
import io.ib67.sfcraft.module.room.CreativeRoomModule;
|
||||
import io.ib67.sfcraft.subserver.Room;
|
||||
import io.ib67.sfcraft.subserver.RoomSession;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
@@ -13,9 +14,11 @@ import java.util.UUID;
|
||||
|
||||
public class CreativePlayerSession extends RoomSession {
|
||||
private final GlobalPos spawn;
|
||||
protected final CreativeRoomModule module;
|
||||
|
||||
protected CreativePlayerSession(Room room) {
|
||||
protected CreativePlayerSession(Room room, CreativeRoomModule module) {
|
||||
super(room);
|
||||
this.module = module;
|
||||
spawn = new GlobalPos(
|
||||
CreativeSpaceRoom.WORLD,
|
||||
CreativeSpaceRoom.SPAWN_POS
|
||||
@@ -24,10 +27,7 @@ public class CreativePlayerSession extends RoomSession {
|
||||
|
||||
@Override
|
||||
public void onPlayerJoin(ServerPlayerEntity player) {
|
||||
player.sendMessage(Text.of("你现在正在创造游乐园中。"));
|
||||
player.sendMessage(Text.literal("游乐园中的生物不能逃逸到其他维度。").withColor(Colors.GRAY));
|
||||
player.sendMessage(Text.literal("使用 /reco 或重新加入游戏即可离开。").withColor(Colors.GRAY));
|
||||
player.changeGameMode(GameMode.CREATIVE);
|
||||
module.onPlayerJoin(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -42,6 +42,6 @@ public class CreativePlayerSession extends RoomSession {
|
||||
|
||||
@Override
|
||||
public void onPlayerQuit(ServerPlayerEntity player) {
|
||||
|
||||
module.onPlayerQuit(player);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.ib67.sfcraft.room.create;
|
||||
|
||||
import io.ib67.sfcraft.module.room.CreativeRoomModule;
|
||||
import io.ib67.sfcraft.subserver.Room;
|
||||
import io.ib67.sfcraft.subserver.RoomPlayerManager;
|
||||
import lombok.Getter;
|
||||
@@ -18,8 +19,8 @@ public class CreativeSpaceRoom implements Room {
|
||||
@Getter
|
||||
private final RoomPlayerManager playerManager;
|
||||
|
||||
public CreativeSpaceRoom() {
|
||||
this.playerManager = new CreativePlayerManager(this);
|
||||
public CreativeSpaceRoom(CreativeRoomModule module) {
|
||||
this.playerManager = new CreativePlayerManager(this,module);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in new issue
Block a user