- 22
- 1
- 2
Доброго времени суток, форумчане!
Стоит такая задача: необходимо удалить игрока из Tab-листа для всех, кроме него самого.
Собственно удаление я реализую так:
И он действительно удаляется, однако потом появляется снова, спустя 10-20 секунд. Я пробовал ставить cancellable миксины в
Это дало половинчатый эффект: игрок удаляется из таба вновь, однако на доли секунды виден появляющийся в табе никнейм. Вместе с тем хотелось бы найти способ, который, по возможности, не задействует Tick-события, чтобы лишний раз не грузить систему.
Могли бы вы, пожалуйста, направить меня, на какой метод/событие/пакет обратить внимание, чтобы достичь цели?
Стоит такая задача: необходимо удалить игрока из Tab-листа для всех, кроме него самого.
Собственно удаление я реализую так:
Java:
List<EntityPlayerMP> allPlayers = (List<EntityPlayerMP>)MinecraftServer.getServer().getConfigurationManager().playerEntityList;
for (EntityPlayerMP otherPlayer : allPlayers) {
otherPlayer.playerNetServerHandler.sendPacket(new S38PacketPlayerListItem(player.getCommandSenderName(), false, -1));
}
NetHandlerPlayServer#sendPacket и NetHandlerPlayClient#handlePlayerListItem. Однако это не дало никакого результата. Я также пробовал отправлять этот же S38PacketPlayerListItem пакет в событии PlayerTickEvent:
Java:
@SubscribeEvent
public void onPlayerTick(PlayerTickEvent e) {
if (e.phase == TickEvent.Phase.START && e.player instanceof EntityPlayerMP) {
for (EntityPlayerMP otherPlayer : PlayerHelper.getPlayerList()) {
otherPlayer.playerNetServerHandler.sendPacket(new S38PacketPlayerListItem(e.player.getCommandSenderName(), false, -1));
}
}
}
Могли бы вы, пожалуйста, направить меня, на какой метод/событие/пакет обратить внимание, чтобы достичь цели?