restore player prefix after afk in playground

This commit is contained in:
iceBear67 committed 2024-09-17 15:09:56 +08:00
1 parent ba81b50bc8
commit f11ba9e4d3
3 files changed
+14 -1

No files matched your search

@@ -35,6 +35,12 @@ public interface SFCallbacks {
l -> (p, a) -> forEach(l, i -> i.onSneaking(p, a))); l -> (p, a) -> forEach(l, i -> i.onSneaking(p, a)));
Event<PlayerFlyingCallback> PLAYER_FLYING = EventFactory.createArrayBacked(PlayerFlyingCallback.class, Event<PlayerFlyingCallback> PLAYER_FLYING = EventFactory.createArrayBacked(PlayerFlyingCallback.class,
l -> (p, t, f) -> forEach(l, i -> i.onFlyingTick(p, t, f))); l -> (p, t, f) -> forEach(l, i -> i.onFlyingTick(p, t, f)));
Event<PlayerAFKCallback> PLAYER_AFK = EventFactory.createArrayBacked(PlayerAFKCallback.class,
l -> (p, s) -> forEach(l, i -> i.onAFKStatus(p, s)));
interface PlayerAFKCallback {
void onAFKStatus(ServerPlayerEntity player, boolean inAFK);
}
interface PlayerFlyingCallback { interface PlayerFlyingCallback {
void onFlyingTick(PlayerEntity player, long flyingTick, boolean flying); void onFlyingTick(PlayerEntity player, long flyingTick, boolean flying);
@@ -56,6 +56,7 @@ public class AFKModule extends ServerModule {
} }
private void enAFK(ServerPlayerEntity player) { private void enAFK(ServerPlayerEntity player) {
SFCallbacks.PLAYER_AFK.invoker().onAFKStatus(player,true);
String playerName = player.getName().getLiteralString(); String playerName = player.getName().getLiteralString();
team.getPlayerList().add(playerName); team.getPlayerList().add(playerName);
player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true)); player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
@@ -66,6 +67,7 @@ public class AFKModule extends ServerModule {
} }
public void deAFK(ServerPlayerEntity player) { public void deAFK(ServerPlayerEntity player) {
SFCallbacks.PLAYER_AFK.invoker().onAFKStatus(player,false);
String playerName = player.getName().getLiteralString(); String playerName = player.getName().getLiteralString();
team.getPlayerList().remove(playerName); team.getPlayerList().remove(playerName);
player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true)); player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
@@ -5,6 +5,7 @@ import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import io.ib67.sfcraft.ServerModule; import io.ib67.sfcraft.ServerModule;
import io.ib67.sfcraft.callback.SFCallbacks;
import io.ib67.sfcraft.inject.MinecraftServerSupplier; import io.ib67.sfcraft.inject.MinecraftServerSupplier;
import io.ib67.sfcraft.module.RoomModule; import io.ib67.sfcraft.module.RoomModule;
import io.ib67.sfcraft.registry.RoomRegistry; import io.ib67.sfcraft.registry.RoomRegistry;
@@ -46,12 +47,17 @@ public class CreativeRoomModule extends ServerModule {
.register(this::registerCommand); .register(this::registerCommand);
ServerPlayConnectionEvents.JOIN.register(this::onJoin); ServerPlayConnectionEvents.JOIN.register(this::onJoin);
ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect); ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect);
SFCallbacks.PLAYER_AFK.register(this::onAFK);
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 onAFK(ServerPlayerEntity player, boolean b) {
if (!b) player.server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
}
private void onDisconnect(ServerPlayNetworkHandler serverPlayNetworkHandler, MinecraftServer minecraftServer) { private void onDisconnect(ServerPlayNetworkHandler serverPlayNetworkHandler, MinecraftServer minecraftServer) {
ServerPlayerEntity player = serverPlayNetworkHandler.getPlayer(); ServerPlayerEntity player = serverPlayNetworkHandler.getPlayer();
if (!RoomModule.isVirtual(player.getUuid())) { if (!RoomModule.isVirtual(player.getUuid())) {
@@ -73,7 +79,6 @@ public class CreativeRoomModule extends ServerModule {
} }
@Override @Override
public void onEnable() { public void onEnable() {
if (team == null) { if (team == null) {