Войти или зарегистрироваться

Помогите Считывание взятия вещей из креатив инвентаря

Очередной_адмЕн

Участник
Пользователь
Баллы
36
Здраствуйте. У меня возник вопрос. Как можно выполнить действие с вещью, которую игрок берет из креатив инвентаря. То есть, допустим, игрок открыл креатив меню и нажал на определенную вещь, она появилась в его курсоре, и я хочу, чтобы в момент, когда определенная вещь переносилась в курсор игрока в креативе, выполнялось определенное действие.
Пробовал через InventoryClickEvent, но он вообще не реагирует на нажатие в креатив инвентаре, только на нажатия в нижних слотах. И то любые действия, пусть даже в креативе со считываемыми нижними слотами возвращает меню PLAYER, а не CREATIVE, что сопоставимо с инвентарем обычного игрока.
Как мне выполнять действие при взятии игроком вещи из креатив инвентаря, что мне нужно считывать?
 
P.S. Мне не нужно выполнять действие со всеми вещами, которых игрок касается в креативе в своем инвентаре, а лишь именно тогда, когда он берет себе в инвентарь что-то из креатива.
Обрыл уже интернет, а так и не нашел способа получить собитие, когда игрок кликает в креатив инвентарь.
 
И что это мне даст? Оно реагирует лишь на нажатия в нижних слотах. На самой клик в креатив инвентаре не реагирует ни один из эвентов, связанных с инвентарем.
Ну вот через такую жопу сделан креатив режим. И ничего с этим не сделаешь
 
Решил мутить костыль, в котором я решил проверять, что находится в курсоре креатив игрока в данный момент. Юзаю вот такой код ради теста, чтобы проверять эту вещь:

Код:
    public void checkCreative(){
           BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
           scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                  try {
                    for(Player p : Bukkit.getOnlinePlayers()){
                        if(p.getOpenInventory().getType().toString().equals("CREATIVE")){
                            System.out.println(p.getOpenInventory().getCursor().getType());
                        }
                    }
                  } catch (Exception ex){
                     
                  }
                }
            }, 0L, 10L);
    }

но он всегда возвращает AIR, независимо от того, что находится в курсоре. Как можно получить вещь, которая находится в курсоре игрока?
 
Никак, в креативе не существует вещи на курсоре игрока, существует только инвентарь в который игрок может положить что угодно.
 
Никак, в креативе не существует вещи на курсоре игрока, существует только инвентарь в который игрок может положить что угодно.
Пытался уже придумать костыль используя это для нужного мне функционала(если интересно, хочу намутить систему антираздачи креативами путём установления меток на все вещи, вытащенные из креатив инвентаря, при этом без какого-либо влияния на любые другие вещи в инвентаре игрока, не взятые оттуда), но всё летит к чертям, когда игрок берет любую вещь, которая у него уже была и уничтожает её путем выбрасывания в креатив инвентарь.
 
Пытался уже придумать костыль используя это для нужного мне функционала(если интересно, хочу намутить систему антираздачи креативами путём установления меток на все вещи, вытащенные из креатив инвентаря, при этом без какого-либо влияния на любые другие вещи в инвентаре игрока, не взятые оттуда), но всё летит к чертям, когда игрок берет любую вещь, которая у него уже была и уничтожает её путем выбрасывания в креатив инвентарь.
Раздели инвентарь и запрети открывать всё кроме своего инвентаря, а также взаимодействовать с рамками и армор стэндами. А метки не сильно помогут, ибо их придётся добавлять на каждый клик в инвентаре.
Потому что управление креатив инвентарём на уровне протокола выглядит как, положить в этот слот этот итемстак.
 
Назад
Верх