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

ограничить инвертарь

Тема в разделе "Разработка плагинов для новичков", создана пользователем nellsan, 28 июн 2022.

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

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san
    Как можно ограничить инвертарь, может добавлением невидимых блоков, но как дабавить в последние слоты, чтобы первые были свободными + чтобы у обычных игроков было так, а у оп полный инвертарь Желательно кодом, заранее спасибо
     
  2. MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    отменяй ивент клика по конкретному слоту игроку без права а с правом не отменяй вот и все
     
  3. Автор темы
    nellsan

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san
    Можно точное название ивента или ссылку на него
     
  4. Sturm_PT

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

    Баллы:
    76
    InventoryClickEvent InventoryDragEvent InventoryMoveEvent
    Всё это слушаешь и отменяешь, если слот тебе не нравится
     
  5. ItsWay

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

    Баллы:
    76
    Имя в Minecraft:
    ItsWay
    Чувак, закрой тему. Тебе стурм уже ответил.
     
  6. Автор темы
    nellsan

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san
    в таком порядке как ты и написал, тоесть сначала один класс, в нем другой класс и тд?И можешь сказать что именно отвечает за отмену слота
     
  7. Sturm_PT

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

    Баллы:
    76
    Регаешь ивентхандлер
    Слушаешь эти три ивента
    Получаешь e.getClickedSlot() (там названия методов отличаются, открой джавадок)
    Если этот слот равен тому слоту, что ты хочешь запретить - e.setCancelled(true)
     
  8. FeniksDEV

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

    Баллы:
    76
    Имя в Minecraft:
    Feniksovich
  9. Автор темы
    nellsan

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san


    Мне нужно занести 3 класса подряд или в 1 одном классе, вписать другой класс, а в нем уже третий, можно пример кода, заранее спасибо
     
  10. Sturm_PT

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

    Баллы:
    76
    Пример кода напишешь сам. Первый хандлер отвечает за клик, второй - за перемещение предметов (в т.ч. цифрами), третий - за объединение предметов через шифт(по-моему)
     
  11. Автор темы
    nellsan

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san
    Получилось, спасибо. Подскажи еще как прописать чтобы предмет положенный в этот слот выбрасывался, а не удолялся. И можно как-то сразу прописать на слоты подряд, чтоб не повторять одно и то же?
     
  12. Sturm_PT

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

    Баллы:
    76
    1)удаляешь предмет и выбрасываешь его world.dropItem(loc, item)
    2)if (slot >= min & & slot <= max) {
    //todo
    }
     
  13. Автор темы
    nellsan

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san
    Подчеркивает dropItem, что делать? И как задать переменную item предмета который кладется в этот слот
     
    Последнее редактирование: 2 июл 2022
  14. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Это означает, что тебе нужно учить джаву.
    world - мир в котором находится игрок, тебе его нужно получить. Один из способов: player.getWorld().dropItem(loc, item);
    Если у тебя игрока нет, то на помощь придёт Bukkit.getWorld("название мира").dropItem(loc, item);
    Дальше: item мы получаем с ивента, в котором отменяем нажатие, getCurrentItem() либо
    getCursor()
     
  15. Автор темы
    nellsan

    nellsan Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Ne1san
    public class Event implements Listener {
    @EventHandler
    public void inv (InventoryClickEvent event) {
    Player p = (Player)event.getWhoClicked();
    Location loc = event.getWhoClicked().getLocation();
    ItemStack item = event.getCursor();
    int slot = event.getSlot();
    if (slot >= 9 && slot <= 35) {
    event.setCancelled(true);
    p.getWorld().dropItem(loc, item);
    p.sendMessage("У вас нет такого колличества карманов");
    }
    }
    }

    все нормально, но происходит раздваивание предметов ((
     
Статус темы:
Закрыта.

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