fix: afk state isn't revoked after disconnection
This commit is contained in:
1 file changed
+22
-4
@@ -25,6 +25,16 @@ public class AFKModule extends ServerModule {
|
|||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
SFCallbacks.PLAYER_IDLE.register(this::onAFK);
|
SFCallbacks.PLAYER_IDLE.register(this::onAFK);
|
||||||
ServerPlayConnectionEvents.JOIN.register(this::onJoin);
|
ServerPlayConnectionEvents.JOIN.register(this::onJoin);
|
||||||
|
ServerPlayConnectionEvents.DISCONNECT.register(this::onDisconnect);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onDisconnect(ServerPlayNetworkHandler serverPlayNetworkHandler, MinecraftServer server) {
|
||||||
|
if (team != null) {
|
||||||
|
var name = serverPlayNetworkHandler.getPlayer().getName().getLiteralString();
|
||||||
|
team.getPlayerList().remove(name);
|
||||||
|
server.getPlayerManager().sendToAll(TeamS2CPacket.updateTeam(team, true));
|
||||||
|
server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, name, TeamS2CPacket.Operation.REMOVE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -36,16 +46,25 @@ public class AFKModule extends ServerModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onAFK(ServerPlayerEntity player, boolean afk) {
|
private void onAFK(ServerPlayerEntity player, boolean afk) {
|
||||||
String playerName = player.getName().getLiteralString();
|
|
||||||
Objects.requireNonNull(playerName);
|
|
||||||
if (afk) {
|
if (afk) {
|
||||||
|
enAFK(player);
|
||||||
|
} else {
|
||||||
|
deAFK(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enAFK(ServerPlayerEntity player) {
|
||||||
|
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));
|
||||||
player.server.getPlayerManager().broadcast(
|
player.server.getPlayerManager().broadcast(
|
||||||
Text.literal(" * " + playerName + " 正在挂机.").withColor(Colors.LIGHT_GRAY),
|
Text.literal(" * " + playerName + " 正在挂机.").withColor(Colors.LIGHT_GRAY),
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
public void deAFK(ServerPlayerEntity player) {
|
||||||
|
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));
|
||||||
player.server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, playerName, TeamS2CPacket.Operation.REMOVE));
|
player.server.getPlayerManager().sendToAll(TeamS2CPacket.changePlayerTeam(team, playerName, TeamS2CPacket.Operation.REMOVE));
|
||||||
@@ -54,7 +73,6 @@ public class AFKModule extends ServerModule {
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void onJoin(ServerPlayNetworkHandler serverPlayNetworkHandler, PacketSender packetSender, MinecraftServer minecraftServer) {
|
private void onJoin(ServerPlayNetworkHandler serverPlayNetworkHandler, PacketSender packetSender, MinecraftServer minecraftServer) {
|
||||||
if (team != null) {
|
if (team != null) {
|
||||||
|
|||||||
Reference in new issue
Block a user