Стоит задача через пакеты подсвечивать игрока так, чтобы это видел определённый игрок. Прошерстив достаточно тем на других форумах, я нашёл этот код:
Само свечение в этом методе работает отлично. Но помимо свечения, этот метод затрагивает эффект невидимости. (если у игрока которого мы подсвечиваем будет невидимость, то после отправки пакета она визуально пропадёт (тоесть технически на игроке эффект останется, но игрок, который получил пакет, будет видеть игрока, будто он без этого эффекта)).
Как я понял, проблема в значении 0x40 на строке 8. если верить этой
Вопрос: как изменять только состояние свечения в этом методе и есть ли иные реализации нужного мне эффекта?
Java:
public static void setGlowing(Player send, Player glowing, boolean glow) {
PacketContainer packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.ENTITY_METADATA);
packet.getIntegers().write(0, glowing.getEntityId());
WrappedDataWatcher watcher = new WrappedDataWatcher();
WrappedDataWatcher.Serializer serializer = WrappedDataWatcher.Registry.get(Byte.class);
watcher.setEntity(glowing);
watcher.setObject(0, serializer, (byte) (glow ? 0x40 : 0x0) ); // 8
packet.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects());
try {
ProtocolLibrary.getProtocolManager().sendServerPacket(send, packet);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
Само свечение в этом методе работает отлично. Но помимо свечения, этот метод затрагивает эффект невидимости. (если у игрока которого мы подсвечиваем будет невидимость, то после отправки пакета она визуально пропадёт (тоесть технически на игроке эффект останется, но игрок, который получил пакет, будет видеть игрока, будто он без этого эффекта)).
Как я понял, проблема в значении 0x40 на строке 8. если верить этой
Авторизуйтесь для просмотра ссылок.
это число отвечает за несколько визуальных состояний игрока, что еще больше усугубляет ситуацию. Вопрос: как изменять только состояние свечения в этом методе и есть ли иные реализации нужного мне эффекта?