- Баллы
- 76
- Имя в Minecraft
- Jenka20091
Как подсветить игрока игроку пакетом и потом отменить этот пакет
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Пакетом накладываешь на игрока эффект свечения, а информацию отправляешь тому игроку который должен видеть подцветкуКак подсветить игрока игроку пакетом и потом отменить этот пакет
Ага не все так просто, любая смена позы скипнет свечение, приседание или еще что то). Тут нужен ивент протоколлиба.Пакетом накладываешь на игрока эффект свечения, а информацию отправляешь тому игроку который должен видеть подцветку
Ну да ну да, давайте наставим по десять слушателей пакетов, а то сеть игры плохо нагружена

Версия 1.12.2 ваш glow api не подойдётПростой путь:
https://www.spigotmc.org/resources/api-glowapi.19422/
Сложный путь:
Хранить где-то информацию о том, включена ли твоя подсветка от одного игрока другому.
Слушать пакеты PacketType.Play.Server.ENTITY_METADATA (они же WrapperPlayServerEntityMetadata или PacketPlayOutEntityMetadata). При обработке проверять, включена ли твоя подсветка. Если включена - менять значение, отвечающее за свечение, на true.
Ну, и не забывать отправлять по пакету метадаты самостоятельно при включении/отключении подсветки
Почему так сложно написать сразу пакет???Пакетом накладываешь на игрока эффект свечения, а информацию отправляешь тому игроку который должен видеть подцветку
Да не сложно, юзай пакет врапер от протоколлиба.Почему так сложно написать сразу пакет???
Потому, что не указана версия сервера в момент отправки сообщения. Учитесь информативно указывать то, что вам нужно.Почему так сложно написать сразу пакет???
Конечно не указана. Да даВерсия 1.12.2 ваш glow api не подойдёт
Конечно не указана. Да да
Вы дергайте слова из контекстаПотому, что не указана версия сервера в момент отправки сообщения
Не получится. Пакет то ты отправишь, но стоит игроку сесть или поплыть, загореться в огне и прочие воздейтвия на ентити метадату и ты обосрешься. Потому нужно подписаться на ивент протоколлиба и править метадату там при всех ее изменениях.Мне нужен только баккит. Без библитек
Я выше уже написал название пакета. Но, боюсь, этого будет мало. Там попутно ещё работа с датавотчером и битовой маской. А если совсем без плагинов, то ещё и слушатель/обработчик пакетов свой писать. Работы хватит примерно на всю жизнь.Почему так сложно написать сразу пакет???
По какой причине?Мне нужен только баккит. Без библитек
Если включить соображалку и нажать "Version History", то внезапно всё найдётся.Версия 1.12.2 ваш glow api не подойдёт
Время, потраченное на написание собственной библиотеки подобного рода, стоит дороже серверных ресурсов, потраченных на использование ещё одного слушателя пакетов.Ну да ну да, давайте наставим по десять слушателей пакетов, а то сеть игры плохо нагружена![]()
Получится. Просто добавить свой обработчик в пайплайн нетти.Не получится. Пакет то ты отправишь, но стоит игроку сесть или поплыть, загореться в огне и прочие воздейтвия на ентити метадату и ты обосрешься. Потому нужно подписаться на ивент протоколлиба и править метадату там при всех ее изменениях.

Получится 100500 таких обрабтчиков, если каждый идиот полезет свой писать. Потому это плохая практика, как и юзанье GlowAPI. И все это говно еще и будет между собой конфликтовать. И так хватает этих протоколхаков, из за которых ивенты протоколлиба не срабатывают.Получится. Просто добавить свой обработчик в пайплайн нетти.
Реально без плагинов получится, как хочет ТС. Правда по своей сути тот же обработчик пакетов + GlowAPI. Да и дай ему Бог сил всё это осилить )
Предполагаю, что будет морганиеА через Listener никто не думал просто прочитать ивент и если он выполняется выдать эффект свечения?
Какой эвент? Каким образом выдать?А через Listener никто не думал просто прочитать ивент и если он выполняется выдать эффект свечения?
Ничего там не конфликтует. Да, есть небольшой оверхед, но плохая практика - это писать то, что уже написано и заниматься преждевременными оптимизациями. В данном случае писать имеет смысл только с целью самообученияПолучится 100500 таких обрабтчиков, если каждый идиот полезет свой писать. Потому это плохая практика, как и юзанье GlowAPI. И все это говно еще и будет между собой конфликтовать. И так хватает этих протоколхаков, из за которых ивенты протоколлиба не срабатывают.
В любом случае никто не полезет ему это все писать за него.
Я только что понял то что я не правильно вам всё объяснил. Один игрок должен подсветить игрока, но того кого он видит - он не видит. Вобщем подсветку видит один игрок, а не обаКакой эвент? Каким образом выдать?
Вся сложность в том, что ему надо подсветить игрока не для всех, а только для некоторых других игроков.
Ничего там не конфликтует. Да, есть небольшой оверхед, но плохая практика - это писать то, что уже написано и заниматься преждевременными оптимизациями. В данном случае писать имеет смысл только с целью самообучения
protocolLib -> WrappedDataWatcher.Я только что понял то что я не правильно вам всё объяснил. Один игрок должен подсветить игрока, но того кого он видит - он не видит. Вобщем подсветку видит один игрок, а не оба
public void setGlowing(Player p, Player sendPacket) {
PacketContainer packet = plugin.getProtocolManager().createPacket(PacketType.Play.Server.ENTITY_METADATA);
packet.getIntegers().write(0, p.getEntityId());
WrappedDataWatcher watcher = new WrappedDataWatcher();
Serializer serializer = Registry.get(Byte.class);
watcher.setEntity(p);
watcher.setObject(0, serializer, (byte) (0x40));
packet.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects());
try {
plugin.getProtocolManager().sendServerPacket(sendPacket, packet);
} catch (InvocationTargetException e) {
getLogger().info("Игрок не загорелся.");
}
}