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

  • Автор темы Автор темы Zabqer
  • Дата начала Дата начала

Zabqer

Активный участник
Пользователь
Баллы
61
Как можно получить материал блока/предмета используя id по типу mod:item для манипуляций в дальнейшем (поставить в мир/дать игроку).
 
Material m = Material.getMaterial("String");
Статические вещи из ванильного майна можно по id, но такой способ (метод) считается устаревшим.
Material'ы из модов только по способу выше, по id не получать.
 
Последнее редактирование:
Я пробовал Material.matchMaterial(), но он возвращает null, если я передаю mod:item.
 
Material.getMaterial("Имя");
 
Этот метод просто берёт из Map'ы материал по имени например: stone, diamond_block. А мне нужно получить блок из другого мода.
все остальные методы берут оттуда же. (ну ты по пробуй)
 
Нуль-же ну... Он возвращает материал только если я ему передам строку типа "STONE", а мне надо из строки типа "minecraft:stone" получить шмот(блок/предмет).
 
Нуль-же ну... Он возвращает материал только если я ему передам строку типа "STONE", а мне надо из строки типа "minecraft:stone" получить шмот(блок/предмет).
Java:
modname = str.split(":")[0];//str - строка по типу minecraft:stone
materialname = str.split(":")[1]; //не забывай toUpperCase, либо используй mathMaterial, он сделает это за тебя
 
Java:
modname = str.split(":")[0];//str - строка по типу minecraft:stone
materialname = str.split(":")[1]; //не забывай toUpperCase, либо используй mathMaterial, он сделает это за тебя
Ты меня немного не понимаешь походу...
Представим что у меня есть YAML-файл:
YAML:
item: "имя_мода:имя_блока"
Мне нужно получить материал с него...
Вот я получу стрингу
Java:
yamlFile.getString("item")
А дальше?
Или у меня не правильный подход?
Предположим я хочу сетнуть этот блок по 0,64,0
Java:
world.getBlockAt(0,64,0).//Что дальше?
 
Ты меня немного не понимаешь походу...
Представим что у меня есть YAML-файл:
YAML:
item: "имя_мода:имя_блока"
Мне нужно получить материал с него...
Вот я получу стрингу
Java:
yamlFile.getString("item")
А дальше?
Или у меня не правильный подход?
Предположим я хочу сетнуть этот блок по 0,64,0
Java:
world.getBlockAt(0,64,0).//Что дальше?
Это ты не понимаешь немного походу.
Java:
String str = yamlFile.getString("item");
modname = str.split(":")[0];//str - строка по типу minecraft:stone
materialname = str.split(":")[1]; //не забывай toUpperCase, либо используй mathMaterial, он сделает это за тебя

Предположим сетнуть хочешь
Java:
        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));
 
Но... Мод игнорируется... А если 2 мода с одинаковым названием блоков?
 
Я что-то вас не понимаю... Вот есть у меня mod1:block и mod2:block, как ведро узнает какой именно материал я хочу?
 
Я что-то вас не понимаю... Вот есть у меня mod1:block и mod2:block, как ведро узнает какой именно материал я хочу?
Ну так выведи в консоль этот материал и узнаешь. и потом заноси его в конфиг.
 
Так ты материал из руки например выведи. getItemInHand().getType()
Ну.. Понял.. Он пишет modid_block.
Что-то такое получил:
Java:
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]);
       
    }
 
Назад
Верх