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

Помогите Выдача предметов из config.yml

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    Здравствуйте! Подскажите мне, пожалуйста, как реализовать выдачу предметов с зачарованиями? Эти предметы берутся из confing.yml (пример ниже)
    Код:
    warrior:
        items:
            - IRON_SWORD:1:KNOCK_BACK:1  #id:кол-во_предмета:название_чара:LVL_чара
           - NAME_TAG:1 ....
    
    И если, к примеру, нужно выдать предмет без зачарование, то нужно написать так:
    Код:
    warrior:
        items:
            - IRON_SWORD:1
           - NAME_TAG:1
    
    Либо как-нибудь по-другому в конфиге сделать структуру предмет + его зачарование
    Выдачу предметов из списка научился делать (без зачарований):
    Код:
    List<String> items = this.getConfig().getStringList("warrior.items");
    final short[] number = {0};
    for (String i : items){
        ItemStack warrior1 = new ItemStack(Material.valueOf(i.toUpperCase()));
        inv.setItem(number[0], warrior1);
        number[0]++;player.sendMessage(String.valueOf(this.getConfig().getStringList("warrior.items.")));
    }
    
    Буду вам благодарен за помощь!
     
    Последнее редактирование: 14 янв 2017
  2. alexandrage

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

    Баллы:
    173
    Enchantment.getByName(...) вроде как.
     
  3. Автор темы
    BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    Таки я знаю как выдавать чары, но как реализовать систему, что бы она брала чары для определенного предмета из списка?
    и все это в for.
    Тобишь есть список предметов в конфиге такого типа (или Вы можете предложить другой тип)
    Код:
    warrior:
        items:
            - IRON_SWORD:1:KNOCK_BACK:1  #id:кол-во_предмета:название_чара:LVL_чара
           - NAME_TAG:2:KNOCK_BACK:10
    
    Используя конструкцию for игроку выдаются эти предметы. В итоге мы должны получить такую картину:
    У игрока в '0' слоте один железный меч на отдачу I
    В '1' слоте две бирки на отдачу X
     
  4. alexandrage

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

    Баллы:
    173
    Ну к примеру раздели пробелами для split и ищи startsWith("Чтототам:")
     
  5. Автор темы
    BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    Большое спасибо, я попробую!
    Может быть у Вас есть какие-нибудь идеи, как лучше эту систему реализовать? К примеру, как лучше сделать в config.yml ? А то id:ammount:enchant:lvl не для всех будет понятна :oops:
    Если есть идеи, или по опыту знаете как лучше, не могли бы поделиться?
     
  6. alexandrage

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

    Баллы:
    173
    Я предпочитаю визуализацию, как в моем nbtkits. Накидал хрени в инвентарь, прописал команду и вуаля, у нас сериализовался контейнер. Пруфит.
    https://cloud.mail.ru/public/KjNt/QKeHtjQTR
     
  7. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    У меня вот так реализовано.

    т.е. для каждого item новый конфиг секшон

    upload_2017-1-14_14-42-31.png
     
  8. Автор темы
    BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    Я мозг сломал, простите...
    Не могли бы Вы снова мне помочь?
    Проблема такая, что игроку должно выдаться вот это:
    В '9' слоте один железный меч на отдачу I
    В '10' слоте две бирки на прочность II
    В конфиге:
    Код:
    warrior:
        items:
            - IRON_SWORD:KNOCK_BACK:1  #id:название_чара:LVL_чара
           - NAME_TAG:UNBREAKING:2
    
    В коде:
    Снимок экрана 2017-01-14 в 15.04.24.png
    Выдает:
    Снимок экрана 2017-01-14 в 15.04.14.png
    Я не понимаю, как выдать-то?!
    Разделить-то я разделил, а вот как выдать не понимаю!
    Если берем:
    Код:
    for (String data : i.split(":", 2) {
        ItemStack warrior1 = new ItemStack(Material.valueOf(data.toUpperCase()));
        inv.setItem(number[0], warrior1);
        number[0]++;
    
    То нам сначала выдастся предмет, а потом мы словим ошибку, что нет такого предмета как "KNOCK_BACK".
    Вообщем, что-то в голову вообще мыслей голых не лезет как это можно сделать...
    Через Essentials kits мне не нужно, если что)
    Очень рассчитываю на вашу помощь!
     
    Последнее редактирование: 14 янв 2017
  9. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Код:
    for (String s: items){
       String[] itemInfo = s.split(":");
       ItemStack item = new ItemStack(Material.getMaterial(itemInfo[0].toUpperCase()));
       item.addEnchantment(Enchantment.getByName(itemInfo[1].toUpperCase()), Integer.parseInt(itemInfo[2]));
    }
     
  10. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Накидать редактор, в конфиг кидать сразу ItemStack. После просто забирать из секции лист с предметами. ???
     
Статус темы:
Закрыта.

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