1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Постоянный просмотр инвенторя игрока на предмет

Тема в разделе "Разработка плагинов для новичков", создана пользователем VladlenSSD, 20 окт 2023.

Статус темы:
Закрыта.
  1. Автор темы
    VladlenSSD

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

    Баллы:
    61
    Имя в Minecraft:
    vladoskin
    Доброго времени суток!

    Столкнулся с такой проблемой - мне нужно написать постоянный просмотр инвентаря у всех игроков, т.е допустим у какого-то игрока лежит в инвентаре алмаз и дальше взаимодействуем с ним, но не могу понять как это сделать чтобы сильно не грузило сервер...

    Заранее спасибо!
     
  2. SlenderMix

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

    Баллы:
    76
    Никто тебя не понял, разьясни что ты хочешь то.
     
  3. alexandrage

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

    Баллы:
    173
    Ну каждый тик смотришь, игроков не на столько же много что бы нагрузить сервер.
     
  4. Level132331

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

    Баллы:
    66
    runTaskTimer
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Что ты хочешь сделать в конечном итоге? Приведи пример
     
  6. Автор темы
    VladlenSSD

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

    Баллы:
    61
    Имя в Minecraft:
    vladoskin
    Вот смотри, допустим есть какой-то уникальный предмет и если игрок его подбирает/получает через команду и д.р способы, он там подсвечиваетсяи и взаимодействовать с игроком у которого есть этот предмет в инвентаре (Не важно в каком слоте)
     
  7. Sturm_PT

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

    Баллы:
    76
    Отслеживаешь PlayerPickupEvent, InventoryClickEvent, (+ свою команду на выдачу), если у игрока появился предмет - подсвечиваешь
    Дальше отслеживаешь PlayerDropItemEvent, InventoryClickEvent, CraftItemEvent, PlayerCommandPreporcessEvent (мб ещё есть способы избавиться от предмета), если у игрока больше нет предмета - перестаёшь подсвечивать
     
  8. Level132331

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

    Баллы:
    66
    Код:
    @Override
        public void onEnable() {
            Bukkit.getScheduler().runTaskTimer(this, () -> {
                for(Player player : Bukkit.getOnlinePlayers()) {
                    ItemStack[] contents = player.getInventory().getStorageContents();
                    for(ItemStack item : contents) {
                        if(item != null) {
                            if(item.getItemMeta() != null) {
                                ItemMeta meta = item.getItemMeta();
                                if (item.getType().equals(Material.DIAMOND)) {
                                    meta.addEnchant(Enchantment.MENDING, 1, true);
                                    item.setItemMeta(meta);
                                }
                            }
                        }
                    }
                }
            }, 20, 20);
        }
    При запуске плагина можно сделать runTaskTimer, который каждую секунду будет проверять инвентарь игроков на наличие нужного предмета
     
  9. Автор темы
    VladlenSSD

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

    Баллы:
    61
    Имя в Minecraft:
    vladoskin
    Спасибо, тема закрыта!
     
Статус темы:
Закрыта.

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