ItemStack item = new ItemStack(ид, кол-во, мета);
Видел этот ответ, только, что за мета?
Каким образом получить метадату предмета, который был зарегистрирован в другом моде?Метадата твоего предмета
Уважаемый, тебе бы стоило сначала поучить, что такое метадата, как её использовать и т.п.Каким образом получить метадату предмета, который был зарегистрирован в другом моде?
Так-то можно работать с текстовыми ID для, например, добавления рецепта с использованием предметов из другого мода по условию, что он загружен в игре, чтобы не тянуть его в библиотеки проекта ради одного-двух крафтов. Не везде же есть OreDict'ы.В коде вам не нужно работать с ID вообще
GameRegistry
вроде был (нашел: findBlock
/findItem
/findItemStack
), лучше его использовать.Зачем? В классе item или block есть методы конкретно для этой задачи.Там какой-то аналог вGameRegistry
вроде был (нашел:findBlock
/findItem
/findItemStack
), лучше его использовать.
block-
/itemRegistry
в Block
/Item
, но из GameRegistry
NullPo не должно вызвать, судя по комментариям и коду.Каким образом получить метадату предмета, который был зарегистрирован в другом моде?
Как получить ItemStack по id или названию предмета?
Судя по этим трём ответам, твой вариант решения далеко не самый надёжный. Объясню, абсолютно никогда и нигде нет гарантии, что условно предмет и n мода с ID 1337 на другой сборке с другими модами будет так-же с ID 1337, поэтому необходимо будет воспользоваться одним из трёх вариантов:Посмотрел класс Item, и от туда взял нужный мне метод.
@GameRegistry.ObjectHolder(value = "modid:name")
public static ItemStack itemFromMod;
@GameRegistry.ItemStackHolder(value = "modid:name", meta = 0, nbt = "{\"MyTag\":\"example\"}")
public static ItemStack itemFromMod;