Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Очередной_адмЕн, 2 дек 2015.

  1. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Здраствуйте. У меня возник вопрос. Как можно выполнить действие с вещью, которую игрок берет из креатив инвентаря. То есть, допустим, игрок открыл креатив меню и нажал на определенную вещь, она появилась в его курсоре, и я хочу, чтобы в момент, когда определенная вещь переносилась в курсор игрока в креативе, выполнялось определенное действие.
    Пробовал через InventoryClickEvent, но он вообще не реагирует на нажатие в креатив инвентаре, только на нажатия в нижних слотах. И то любые действия, пусть даже в креативе со считываемыми нижними слотами возвращает меню PLAYER, а не CREATIVE, что сопоставимо с инвентарем обычного игрока.
    Как мне выполнять действие при взятии игроком вещи из креатив инвентаря, что мне нужно считывать?
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    P.S. Мне не нужно выполнять действие со всеми вещами, которых игрок касается в креативе в своем инвентаре, а лишь именно тогда, когда он берет себе в инвентарь что-то из креатива.[DOUBLEPOST=1449095657,1449087497][/DOUBLEPOST]Обрыл уже интернет, а так и не нашел способа получить собитие, когда игрок кликает в креатив инвентарь.
     
  4. NaPsTeR

    NaPsTeR Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    kesha0129
  5. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    И что это мне даст? Оно реагирует лишь на нажатия в нижних слотах. На самой клик в креатив инвентаре не реагирует ни один из эвентов, связанных с инвентарем.
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну вот через такую жопу сделан креатив режим. И ничего с этим не сделаешь
     
  7. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Решил мутить костыль, в котором я решил проверять, что находится в курсоре креатив игрока в данный момент. Юзаю вот такой код ради теста, чтобы проверять эту вещь:

    Код:
        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, независимо от того, что находится в курсоре. Как можно получить вещь, которая находится в курсоре игрока?
     
  8. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Никак, в креативе не существует вещи на курсоре игрока, существует только инвентарь в который игрок может положить что угодно.
     
  9. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Пытался уже придумать костыль используя это для нужного мне функционала(если интересно, хочу намутить систему антираздачи креативами путём установления меток на все вещи, вытащенные из креатив инвентаря, при этом без какого-либо влияния на любые другие вещи в инвентаре игрока, не взятые оттуда), но всё летит к чертям, когда игрок берет любую вещь, которая у него уже была и уничтожает её путем выбрасывания в креатив инвентарь.
     
  10. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Раздели инвентарь и запрети открывать всё кроме своего инвентаря, а также взаимодействовать с рамками и армор стэндами. А метки не сильно помогут, ибо их придётся добавлять на каждый клик в инвентаре.
    Потому что управление креатив инвентарём на уровне протокола выглядит как, положить в этот слот этот итемстак.
     

Поделиться этой страницей