Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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

VladlenSSD

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
vladoskin
Доброго времени суток!

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

Заранее спасибо!
 
Доброго времени суток!

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

Заранее спасибо!
Никто тебя не понял, разьясни что ты хочешь то.
 
Ну каждый тик смотришь, игроков не на столько же много что бы нагрузить сервер.
 
Что ты хочешь сделать в конечном итоге? Приведи пример
 
Что ты хочешь сделать в конечном итоге? Приведи пример
Вот смотри, допустим есть какой-то уникальный предмет и если игрок его подбирает/получает через команду и д.р способы, он там подсвечиваетсяи и взаимодействовать с игроком у которого есть этот предмет в инвентаре (Не важно в каком слоте)
 
Вот смотри, допустим есть какой-то уникальный предмет и если игрок его подбирает/получает через команду и д.р способы, он там подсвечиваетсяи и взаимодействовать с игроком у которого есть этот предмет в инвентаре (Не важно в каком слоте)
Отслеживаешь PlayerPickupEvent, InventoryClickEvent, (+ свою команду на выдачу), если у игрока появился предмет - подсвечиваешь
Дальше отслеживаешь PlayerDropItemEvent, InventoryClickEvent, CraftItemEvent, PlayerCommandPreporcessEvent (мб ещё есть способы избавиться от предмета), если у игрока больше нет предмета - перестаёшь подсвечивать
 
Код:
@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, который каждую секунду будет проверять инвентарь игроков на наличие нужного предмета
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх