Проблема с blockstates айтема

Версия Minecraft
1.8.9
API
Forge
192
2
9
Доброго времени суток. Решил сделать мод на все версии майна с 1.7.10 до 1.18.2, однако столкнулся с непонятной проблемой.
Сделал первым делом мод под 1.12.2 и его же начал портировать на версии ниже. В итоге я сделал на 1.12.2, 1.11.2, 1.10.2, 1.9.4 и 1.7.10, а вот на 1.8.9 я получаю странную ошибку. Суть то ясна, но я не понимаю, по какой причине у меня игра требует blockstates для айтема. Как вы уже догадались, версии 1.9.4 - 1.12.2 имеют блокстейт только для блока и всё работает отлично, а в 1.8.9 без блокстейта для айтема я вижу битую(черно-розовую) текстуру в игре, так еще и в форме блока почему-то. Что я упустил, подскажете?
Может быть я и не прав, но опираюсь на эту строку в логе в первую очередь
Caused by: java.io.FileNotFoundException: drc:blockstates/item_red_coal.json
RegisterItems.java:
public class RegisterItems {
    
    public static Item ITEM_RED_COAL = new RedCoal();

    public static void register() {
        GameRegistry.registerItem(ITEM_RED_COAL,  "item_red_coal");
    }

    @SideOnly(Side.CLIENT)
    public static void registerRender() {   
        setRender(ITEM_RED_COAL);
    }

    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new net.minecraft.client.resources.model.ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
    
}
RedCoal.java:
public class RedCoal extends Item {
    
    public RedCoal() {
        this.setRegistryName("item_red_coal");
        this.setUnlocalizedName("item_red_coal");
        this.setMaxStackSize(64);
        this.setCreativeTab(CreativeTabs.tabMaterials);
    }
    
}
ClientProxy.java:
public class ClientProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent e) {
        super.preInit(e);   
    }
    
    @Override
    public void init(FMLInitializationEvent e) {
        super.init(e);
        RegisterBlocks.registerRender();
        RegisterItems.registerRender();
    }
    
    @Override
    public void postInit(FMLPostInitializationEvent e) {
        super.postInit(e);
    }
}
CommonProxy.java:
public class CommonProxy {
    
    public void preInit(FMLPreInitializationEvent e) {
        RegisterBlocks.register();
        RegisterRecipes.register();
        RegisterItems.register();
    }
    
    public void init(FMLInitializationEvent e) {
        GameRegistry.registerFuelHandler(new Fuels());
    }
    
    public void postInit(FMLPostInitializationEvent e) {
    
    }
}
models/item/item_red_coal.json:
{
    "parent": "item/generated",
    "textures": {
        "layer0": "drc:items/item_red_coal"
    }
}
 
Краш-лог
[05:39:23] [Client thread/ERROR] [FML]: Exception loading model for variant drc:item_red_coal#inventory for item "drc:item_red_coal"
java.lang.Exception: Could not load model definition for variant drc:item_red_coal#inventory
at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:215) ~[ModelLoader.class:?]
at net.minecraftforge.client.model.ModelLoader.loadItems(ModelLoader.java:259) ~[ModelLoader.class:?]
at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:116) ~[ModelLoader.class:?]
at net.minecraft.client.resources.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:130) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:111) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:772) [Minecraft.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:326) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.startGame(Minecraft.java:532) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:360) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of model drc:blockstates/item_red_coal.json
at net.minecraft.client.resources.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:165) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:211) ~[ModelLoader.class:?]
... 22 more
Caused by: java.io.FileNotFoundException: drc:blockstates/item_red_coal.json
at net.minecraft.client.resources.FallbackResourceManager.getAllResources(FallbackResourceManager.java:93) ~[FallbackResourceManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.getAllResources(SimpleReloadableResourceManager.java:78) ~[SimpleReloadableResourceManager.class:?]
at net.minecraft.client.resources.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:143) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:211) ~[ModelLoader.class:?]
... 22 more
[05:39:23] [Client thread/ERROR] [FML]: Model definition for location drc:item_red_coal#inventory not found
Краш-лог:
[05:39:23] [Client thread/ERROR] [FML]: Exception loading model for variant drc:item_red_coal#inventory for item "drc:item_red_coal"
java.lang.Exception: Could not load model definition for variant drc:item_red_coal#inventory
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:215) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadItems(ModelLoader.java:259) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:116) ~[ModelLoader.class:?]
	at net.minecraft.client.resources.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:130) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:111) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:772) [Minecraft.class:?]
	at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:326) [FMLClientHandler.class:?]
	at net.minecraft.client.Minecraft.startGame(Minecraft.java:532) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:360) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_311]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_311]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_311]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_311]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of model drc:blockstates/item_red_coal.json
	at net.minecraft.client.resources.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:165) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:211) ~[ModelLoader.class:?]
	... 22 more
Caused by: java.io.FileNotFoundException: drc:blockstates/item_red_coal.json
	at net.minecraft.client.resources.FallbackResourceManager.getAllResources(FallbackResourceManager.java:93) ~[FallbackResourceManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.getAllResources(SimpleReloadableResourceManager.java:78) ~[SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.resources.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:143) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:211) ~[ModelLoader.class:?]
	... 22 more
[05:39:23] [Client thread/ERROR] [FML]: Model definition for location drc:item_red_coal#inventory not found

Вложения

  • 29.03.2022-00.jpg
    29.03.2022-00.jpg
    114.4 KB · Просмотры: 1
Решение
Решение
models/item/item_red_coal.json:
{
    "parent": "builtin/generated",
    "textures": {
        "layer0": "drc:items/item_red_coal"
    }
}
setRender():
    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
192
2
9
перед установкой модели.
В том и дело, что модель то не нужна) Все версии, кроме этой, не требуют blockstates айтему, а тут почему-то заортачился. Посмотрел в ваниллке, нет там блокстейтов для айтемов, вот я и не пойму, почему у меня требует эта версия. Сорцы то тащу с 1.12.2 и ниже по версиям, всё ок(кроме 1.8.9).
 
627
72
178
Если мод не может найти нормальную модель предмета - он будет требовать от предмета блокстейт. вставь написанный мной метод перед Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register и проверь, заработает ли модель
 
192
2
9
Сделал пока один цельный метод, результат тот же. Верно же всё прописал?

registerRender():
    @SideOnly(Side.CLIENT)
    public static void registerRender() {   
        ModelBakery.registerItemVariants(ITEM_RED_COAL, new ModelResourceLocation("drc:item_red_coal", "inventory"));
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(ITEM_RED_COAL, 0, new net.minecraft.client.resources.model.ModelResourceLocation(ITEM_RED_COAL.getRegistryName(), "inventory"));       
    }
 
192
2
9
Ошибка та же) Только в конце дважды выдало
[11:03:25] [Client thread/ERROR] [FML]: Model definition for location drc:item_red_coal#inventory not found
[11:03:25] [Client thread/ERROR] [FML]: Model definition for location drc:item_coal_red#inventory not found
registerRender():
    public static void registerRender() {
        ModelBakery.registerItemVariants(ITEM_RED_COAL, new ModelResourceLocation("drc:item_red_coal", "inventory"));
        ModelLoader.setCustomModelResourceLocation((Item)RegisterItems.ITEM_RED_COAL, 0, new ModelResourceLocation("drc:item_coal_red", "inventory"));
    }
 
627
72
178
GameRegistry.registerItem(ITEM_RED_COAL, "item_red_coal");
сравни с
ModelLoader.setCustomModelResourceLocation((Item)RegisterItems.ITEM_RED_COAL, 0, new ModelResourceLocation("drc:item_coal_red", "inventory")); и можешь registerItemVariants убрать, setCustomModelResourceLocation сам по себе его вызывает
 
Последнее редактирование:
192
2
9
[FML]: Exception loading model for variant drc:item_red_coal#inventory for item "drc:item_red_coal"
java.lang.Exception: Could not load model definition for variant drc:item_red_coal#inventory

Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of model drc:blockstates/item_red_coal.json
registerRender():
public class RegisterItems {
    
    public static Item ITEM_RED_COAL = new RedCoal();

    public static void register() {
        GameRegistry.registerItem(ITEM_RED_COAL, "item_red_coal");
    }
    
    @SideOnly(Side.CLIENT)
    public static void registerRender() {   
        ModelLoader.setCustomModelResourceLocation(ITEM_RED_COAL, 0, new ModelResourceLocation("drc:item_red_coal", "inventory"));       
    }
    
}
Выше ошибся с именами, есть такой момент. Я уже и по другим модам некоторым поглядел, то же самое... Разумеется, косячу где-то я, но где?! Никак не пойму.
 
192
2
9
1.9.4(работает)
setRender():
    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
        System.out.print("------------------------------[" + item.getRegistryName() + "]------------------------------");
    }
------------------------------[drc:item_red_coal]------------------------------

1.8.9(не работает)
registerRender():
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
        System.out.print("------------------------------[" + item.getRegistryName() + "]------------------------------");
    }
------------------------------[drc:item_red_coal]------------------------------

1.8.9(не работает)
registerRender():
    private static void setRender(Item item) {
        ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
        System.out.print("------------------------------[" + item.getRegistryName() + "]------------------------------");
    }
------------------------------[drc:item_red_coal]------------------------------

Оставлю это здесь. Может позднее сам найду ошибку или кто-то заметит что раньше меня.
 
Последнее редактирование:
192
2
9
Последнее, что я сделал, заменил "parent": "item/generated", на "parent": "builtin/generated" в модели айтема(копировал модель ванильного угля), и в логе ошибки пропали все, однако внутри игры результат тот же: айтем с битой текстурой и почему-то модель блока.
 

Вложения

  • 29.03.2022-00.jpg
    29.03.2022-00.jpg
    118.3 KB · Просмотры: 3
192
2
9
Решение
models/item/item_red_coal.json:
{
    "parent": "builtin/generated",
    "textures": {
        "layer0": "drc:items/item_red_coal"
    }
}
setRender():
    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
 

Вложения

  • 29.03.2022-01.jpg
    29.03.2022-01.jpg
    107.5 KB · Просмотры: 3
Сверху