Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by BrainRTP, Jan 14, 2017.

Thread Status:
Not open for further replies.
  1. Автор темы
    BrainRTP

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

    Trophy Points:
    76
    Имя в Minecraft:
    BrainRTP
    Здравствуйте! Подскажите мне, пожалуйста, как реализовать выдачу предметов с зачарованиями? Эти предметы берутся из confing.yml (пример ниже)
    Code:
    warrior:
        items:
            - IRON_SWORD:1:KNOCK_BACK:1  #id:кол-во_предмета:название_чара:LVL_чара
           - NAME_TAG:1 ....
    
    И если, к примеру, нужно выдать предмет без зачарование, то нужно написать так:
    Code:
    warrior:
        items:
            - IRON_SWORD:1
           - NAME_TAG:1
    
    Либо как-нибудь по-другому в конфиге сделать структуру предмет + его зачарование
    Выдачу предметов из списка научился делать (без зачарований):
    Code:
    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.")));
    }
    
    Буду вам благодарен за помощь!
     
    Last edited: Jan 14, 2017
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Enchantment.getByName(...) вроде как.
     
  4. Автор темы
    BrainRTP

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

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

    alexandrage Администратор

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

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

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

    alexandrage Администратор

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

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

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

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

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

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

    Trophy Points:
    76
    Имя в Minecraft:
    BrainRTP
    Я мозг сломал, простите...
    Не могли бы Вы снова мне помочь?
    Проблема такая, что игроку должно выдаться вот это:
    В '9' слоте один железный меч на отдачу I
    В '10' слоте две бирки на прочность II
    В конфиге:
    Code:
    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
    Я не понимаю, как выдать-то?!
    Разделить-то я разделил, а вот как выдать не понимаю!
    Если берем:
    Code:
    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 мне не нужно, если что)
    Очень рассчитываю на вашу помощь!
     
    Last edited: Jan 14, 2017
  10. Fenix78563

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    Code:
    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]));
    }
     
  11. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Накидать редактор, в конфиг кидать сразу ItemStack. После просто забирать из секции лист с предметами. ???
     
Thread Status:
Not open for further replies.

Share This Page