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