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

Помогите Проверка на наличие предмета не пашет

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

  1. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну так после ифа уже выдавай предмет свой.
     
  2. _TheZit445_

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

    Баллы:
    76
    Skype:
    kirik2425
    Имя в Minecraft:
    _TheZit445_
    Ну да, их же местами можно поменять, как то глупо себя чувствую, лол
     
  3. _TheZit445_

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

    Баллы:
    76
    Skype:
    kirik2425
    Имя в Minecraft:
    _TheZit445_
    Ts, на будущее, вставляй исходник в bb code
    И чтобы табуляция везде где надо была, читать невозможно.
    И если ошибку кидает, то говори какую, если сам не знаешь как исправить, чаще всего это не очевидно.
     
  4. Автор темы
    menusha11

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

    Баллы:
    61
    Имя в Minecraft:
    menusha11
    Предмет выдается даже если уже есть в инвентаре

    for (ItemStack item : p.getInventory().getContents()){
    if(GUI.itemmenu().isSimilar(item)) {
    p.sendMessage(ChatColor.DARK_RED+"Меню не было выдано!");
    return true;
    }
    }
    p.getInventory().addItem(GUI.itemmenu());
    return true;
     
  5. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Кинь метод GUI.itemmenu()
     
  6. Автор темы
    menusha11

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

    Баллы:
    61
    Имя в Minecraft:
    menusha11
    public ItemStack itemmenu() {


    ItemStack itemmenu = new ItemStack(Material.COMPASS);
    ItemMeta meta = itemmenu.getItemMeta();
    meta.setDisplayName(ChatColor.GREEN+"Сервер-меню");
    List<String> lore = new ArrayList<String>();
    lore.add(ChatColor.GOLD+"Нажмите пкм для открытия меню сервера!");
    lore.add(ChatColor.AQUA+"Меню можно получить прописав /menu в чат!");
    meta.addEnchant(Enchantment.LURE , 1337, true);
    meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
    meta.setLore(lore);
    itemmenu.setItemMeta(meta);
    meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
    return itemmenu;
    }
     
  7. alexandrage

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

    Баллы:
    173
    Велик делаете? e.getPlayer().getInventory().containsAtLeast(stack, 1); Проверит наличие от 1 до 64 в стаке.
     
  8. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    И зачем каждый раз создавать предмет. Сравнивай в данном случае не сами предметы, а название чтобы было ChatColor.GREEN+"Сервер-меню" (костыль), или по-нормальному какой-то нбт тег добавь и сверяй, ибо имя предмета может измениться в будущем (но это ты вряд ли осилишь, так что мож костылить через название).
     
  9. alexandrage

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

    Баллы:
    173
    Ну и выдаст новый предмет. Нашел проблему лол. Всего лишь команда на меню, пфф.
     
  10. Автор темы
    menusha11

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

    Баллы:
    61
    Имя в Minecraft:
    menusha11
    Это работает как нужно
    for (ItemStack item : p.getInventory().getContents()){
    if (item==null) continue;
    if(item.getItemMeta().hasDisplayName() && item.getItemMeta().hasLore()) {
    if(item.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN+"Сервер-меню")) {
    p.sendMessage(ChatColor.DARK_RED+"Меню не было выдано!");
    return true;
    }
    }
    }
    p.getInventory().addItem(GUI.itemmenu());
    return true;
     
  11. Автор темы
    menusha11

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

    Баллы:
    61
    Имя в Minecraft:
    menusha11
    Спасибо всем, кто отвечал в теме.
     
  12. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Это лишь пример, потом он в других местах может лишнего натворить.
     

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