Кастомный инвентарь не обновляется (не синхронизируется)

Версия Minecraft
1.20.X
Ядро
Paper

Lumividellir

Пользователь
Сообщения
13
Другие ядра
  1. Purpur
(версия 1.21.4, но ее нет в списке)
Я захотел стать безумцем и переделать систему зачарований, хотел сделать как на хайпикселе.
Я сделал чтобы когда игрок открывал стол зачарований, ему открылся инвентарь:
Java:
public static Inventory enchanting_inv = Bukkit.createInventory(null, 54, "Стол зачарований");
Java:
@EventHandler
public void onInteract(PlayerInteractEvent event) {
    if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
    Block block = event.getClickedBlock();
    Player player = event.getPlayer();
    if (block == null) return;

    switch (block.getType()) {
        case ENCHANTING_TABLE -> {
            event.setCancelled(true);
            player.openInventory(enchanting_inv);
        }
// чтото еще потом добавлю
    }
}

Потом я используя InventoryClickEvent попытался изменять что либо там (event.getInventory.setItem() и все такое)
Но когда я приступил к тестированию долго не понимал почему оно так странно работает, в итоге это оказался какой-то расинхрон.
Это можно пофиксить вручную просто подвигав какой-то предмет.

Я тогда решил использовать player.updateInventory(), ставил в начале, в конце кода, пытался поставить небольшую задержку (BukkitRunable), пытался каждый определенный промежуток времени обновлять (тоже BukkitRunable), но это не помогает.

Если кому надо могу прикрепить видео с этим, я уже час бьюсь головой об стенку и не понимаю чего мне делать.
Буду неизмеримо благодарен если поможете.
 
Что именно у тебя происходит в InventoryClickEvent?
То что там прописано вызывается когда игрок кликает по любому инвентарю.
Я полагаю твоё гуи заполняется в InventoryClickEvent?
 
Что именно у тебя происходит в InventoryClickEvent?
То что там прописано вызывается когда игрок кликает по любому инвентарю.
Я полагаю твоё гуи заполняется в InventoryClickEvent?
Да, когда я ложу предмет в определенный слот - предметы в GUI меняются
 
Да, когда я ложу предмет в определенный слот - предметы в GUI меняются
Для того чтобы помочь тебе, нужен полный код твоего творения. И описание результата которого ты ожидаешь от выполнения этого кода. Я к этому веду
 
Для того чтобы помочь тебе, нужен полный код твоего творения. И описание результата которого ты ожидаешь от выполнения этого кода. Я к этому веду
Я хочу чтобы когда я ложил в определенный слот предмет - доступные зачарования обновлялись
 
Я захотел стать безумцем и переделать систему зачарований, хотел сделать как на хайпикселе.
offtop
Хочешь как на хайпикселе, однако качество кода хуже чем у мкдев
Даже хуже чем у человека, который пытался продавать здесь курсы не зная java
Теперь после такого мне глаза придется отмывать, имейте совесть /

Причина простая - пакет не прилетает на клиент.

Переоткрыть меню
Обновить конкретно открытое меню (а не меню игрока)
И тд. Пробуй
 
offtop
Хочешь как на хайпикселе, однако качество кода хуже чем у мкдев
Даже хуже чем у человека, который пытался продавать здесь курсы не зная java
Теперь после такого мне глаза придется отмывать, имейте совесть /

Причина простая - пакет не прилетает на клиент.

Переоткрыть меню
Обновить конкретно открытое меню (а не меню игрока)
И тд. Пробуй
offtop
Да, из меня программист не очень от слова совсем, потом буду пытаться улучшать код
Если есть советы по улучшению кода - буду благодарен

Сейчас попробую чето из этого сообразить
 
offtop
Хочешь как на хайпикселе, однако качество кода хуже чем у мкдев
Даже хуже чем у человека, который пытался продавать здесь курсы не зная java
Теперь после такого мне глаза придется отмывать, имейте совесть /

Причина простая - пакет не прилетает на клиент.

Переоткрыть меню
Обновить конкретно открытое меню (а не меню игрока)
И тд. Пробуй
У меня получилось что-то путное сделать, премного благодарен за наводку
 
Да, из меня программист не очень от слова совсем, потом буду пытаться улучшать код
Если есть советы по улучшению кода - буду благодарен
offtop
Зато честно, уже плюсик в карму за смелость и желание расти

0) Зайди на и пройди все уроки, косяки ну прям сверх очевидные, ты даже материал из 1-5 глав не знаешь Также ты явно не читал про SOLID. Это так же база. Рекомендую ознакомиться
1) Нахрена перемешал стили? + Оформлено через одно место. Почитай и оформляй нормально.

2) Как минимум всю вот эту херню снести и сделать через обьекты
Пример - сделять класс CustomEnchant с полями имя, уровень, итд.
3) Фиксированные строки в коде. Вынести в конфиг.
4) Тут вообще без проблем вообще можно так же сделать поддержку неограниченного количество таких типовых чар, к-ые в цикле считать из конфига

Есть куча других косяков, но я не буду их обьяснять - выполни пункт 0 и сам все поймешь
 
Последнее редактирование:
Назад
Сверху Снизу