Помогите Открытие виртуальной книги с пером

Статус
Закрыто для дальнейших ответов.

NN_KOF3STx

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
kof3st
Всем привет. Я делаю плагин на паспорт, и чтобы изменить данные там, я решил использовать книгу с пером. Вкратце работает так: игрок нажимает в паспорте на "изменить данные чего-то", открывается книга с пером, и после нажатия на "готово" данные изменяются. Я сделал всё, кроме автоматического открытия книги с пером.
Сколько я способов не перепробовал: вызвать интеракт-ивент, отослать пакет
Код:
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload("MC|BOpen", new PacketDataSerializer(buf));
, отослать другой пакет
Код:
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload("MC|BEdit", new PacketDataSerializer(buf));
Все эти способы мне не помогают. Может, я что-то не так написал, или есть какие-то другие способы?
 
Попробуй перед отправкой пакета установить в основную руку стак книги.
Так работает если не с редактированием, то как минимум с открытием уже законченной книги
 
Попробуй перед отправкой пакета установить в основную руку стак книги.
Так работает если не с редактированием, то как минимум с открытием уже законченной книги
Книгу в руки игроку не выдал.
Код:
public static void openEditBook(Player player, ItemStack book) {
        int slot = player.getInventory().getHeldItemSlot();
        ItemStack item = player.getInventory().getItem(slot);
        player.getInventory().setItem(slot, book);
        //Открытие книги
        player.getInventory().setItem(slot, item);
    }
 
Так работает если не с редактированием, то как минимум с открытием уже законченной книги
В этом и проблема, что открыть паспорт ввиде законченной книги я могу, а просто книгу не могу
 
В этом и проблема, что открыть паспорт ввиде законченной книги я могу, а просто книгу не могу
Да, вижу. Сам проверил сейчас - такая же ситуация.
Выяснил, что CustomPayload даже не отправляется при начале редактирования книги.
А это значит, что эта функция вызывается исключительно по желанию клиента, а не по команде сервере.
Короче говоря, думаю, без модификации клиента нет возможности открыть меню редактирования книги.

А вот команду от клиента о завершении редактирования книги вполне можно отловить.
Поэтому можешь сделать так:
1) Выдаёшь в руку книгу, а прошлый предмет куда-то сохраняешь
2) Выводишь тайтл с просьбой нажать ПКМ и заполнить нужную информацию
3) Ожидаешь завершения редактирования
4) Забираешь книгу и возвращаешь оригинальный предмет
Во время всего того процесса запрещаешь менять предмет в руке.
Костыль, конечно, но других вариантов без использования модов я сейчас не вижу.

Возможно ещё сгодится вариант с табличкой - ей точно можно открыть со стороны сервера.
 
Последнее редактирование:
Да, вижу. Сам проверил сейчас - такая же ситуация.
Выяснил, что CustomPayload даже не отправляется при начале редактирования книги.
А это значит, что эта функция вызывается исключительно по желанию клиента, а не по команде сервере.
Короче говоря, думаю, без модификации клиента нет возможности открыть меню редактирования книги.

А вот команду от клиента о завершении редактирования книги вполне можно отловить.
Поэтому можешь сделать так:
1) Выдаёшь в руку книгу, а прошлый предмет куда-то сохраняешь
2) Выводишь тайтл с просьбой нажать ПКМ и заполнить нужную информацию
3) Ожидаешь завершения редактирования
4) Забираешь книгу и возвращаешь оригинальный предмет
Во время всего того процесса запрещаешь менять предмет в руке.
Костыль, конечно, но других вариантов без использования модов я сейчас не вижу.

Возможно ещё сгодится вариант с табличкой - ей точно можно открыть со стороны сервера.
Спасибо за помощь и идеи. Что-нибудь из этого возьму в разработку. Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх