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

Помогите Блоки/Предметы из модов

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

  1. Автор темы
    Zabqer

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

    Баллы:
    61
    Как можно получить материал блока/предмета используя id по типу mod:item для манипуляций в дальнейшем (поставить в мир/дать игроку).
     
  2. Exception_Prototype

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

    Баллы:
    96
    Material m = Material.getMaterial("String");
    Статические вещи из ванильного майна можно по id, но такой способ (метод) считается устаревшим.
    Material'ы из модов только по способу выше, по id не получать.
     
    Последнее редактирование: 20 янв 2017
  3. Автор темы
    Zabqer

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

    Баллы:
    61
    Я пробовал Material.matchMaterial(), но он возвращает null, если я передаю mod:item.
     
  4. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Material.getMaterial("Имя");
     
  5. Автор темы
    Zabqer

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

    Баллы:
    61
    Этот метод просто берёт из Map'ы материал по имени например: stone, diamond_block. А мне нужно получить блок из другого мода.
     
  6. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    все остальные методы берут оттуда же. (ну ты по пробуй)
     
  7. Автор темы
    Zabqer

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

    Баллы:
    61
    Нуль-же ну... Он возвращает материал только если я ему передам строку типа "STONE", а мне надо из строки типа "minecraft:stone" получить шмот(блок/предмет).
     
  8. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Код:
    modname = str.split(":")[0];//str - строка по типу minecraft:stone
    materialname = str.split(":")[1]; //не забывай toUpperCase, либо используй mathMaterial, он сделает это за тебя
     
  9. Автор темы
    Zabqer

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

    Баллы:
    61
    Ты меня немного не понимаешь походу...
    Представим что у меня есть YAML-файл:
    Код:
    item: "имя_мода:имя_блока"
    
    Мне нужно получить материал с него...
    Вот я получу стрингу
    Код:
    yamlFile.getString("item")
    А дальше?
    Или у меня не правильный подход?
    Предположим я хочу сетнуть этот блок по 0,64,0
    Код:
    world.getBlockAt(0,64,0).//Что дальше?
     
  10. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Это ты не понимаешь немного походу.
    Код:
    String str = yamlFile.getString("item");
    modname = str.split(":")[0];//str - строка по типу minecraft:stone
    materialname = str.split(":")[1]; //не забывай toUpperCase, либо используй mathMaterial, он сделает это за тебя
    
    Предположим сетнуть хочешь
    Код:
            String str = yamlFile.getString("item");
            String modname = str.split(":")[0];
            String materialname = str.split(":")[1]; 
            Location loc = new Location(world, 0, 64, 0);
            loc.getBlock().setType(Material.matchMaterial(materialname));
     
  11. Автор темы
    Zabqer

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

    Баллы:
    61
    Но... Мод игнорируется... А если 2 мода с одинаковым названием блоков?
     
  12. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Ну так выведи название материала куданибудь. сложно чтоли?
     
  13. Автор темы
    Zabqer

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

    Баллы:
    61
    Я что-то вас не понимаю... Вот есть у меня mod1:block и mod2:block, как ведро узнает какой именно материал я хочу?
     
  14. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Ну так выведи в консоль этот материал и узнаешь. и потом заноси его в конфиг.
     
  15. Автор темы
    Zabqer

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

    Баллы:
    61
    Командный блок не находит.
     
  16. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    ???
    System.out.print(material)
     
  17. Автор темы
    Zabqer

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

    Баллы:
    61
    System.out.println(Material.matchMaterial("command_block")) //null
     
  18. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Так ты материал из руки например выведи. getItemInHand().getType()
     
  19. Автор темы
    Zabqer

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

    Баллы:
    61
    Ну.. Понял.. Он пишет modid_block.
    Что-то такое получил:
    Код:
    public static Material getMaterialFromString(String s) {
           
            String[] spl = s.split(":");
           
            if (spl[0].equals("minecraft")) {
               
                return Material.matchMaterial(spl[1]);
               
            }
           
            return Material.matchMaterial(spl[0]+"_"+spl[1]);
           
        }
    
     

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