Не работает текстура предмета

Версия Minecraft
1.12.2
19
1
Некорректное название
И опять я... После того, как я последовал вашим советам из прошлого поста, у меня всё заработало... Но оказалось не надолго. На следующий день(никаких изменений не было), я захожу в проект и вижу прекрасный, изумительный... черно-фиолетовый квадрат. И сколько бы я ни пытался решить проблему самостоятельно, сколько бы ни молился на этот куб, сколько бы ни плакал, сколько бы ни приносил в жертву быка: проблема остаётся открытой...
Постараюсь всё выложить по-максимому.
Я прикрепил архив.
Так вот, как видно json файл находится в правильном месте, т. е. путь src/main/resources/assets/smod/models/item. Называется этот файл так же, как и текстурка(nature_staff). Путь текстурки src/main/resources/assets/smod/textures/items. Разрешение 16x16, формат png
Консоль проиформировала меня об ошибке(в краш-логе)

Код:
Код:
package com.samjoll.smod;

import com.samjoll.smod.proxy.CommonProxy;

import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid="smod", version="1.0 beta")

public class Main_file {
    
    @SidedProxy(clientSide="com.samjoll.smod.proxy.ClientProxy", serverSide="com.samjoll.smod.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    @EventHandler
    public static void preInitial(FMLPreInitializationEvent event) {
        proxy.preInit(event);
        System.out.println("MINECRAFT " + "FORGE " + "MOD " + "PREINITIALIZATION " + "SMOD " + "STICKSMOD");
    }
    public static void Initial(FMLInitializationEvent event) {
        proxy.Init(event);
        System.out.println("MINECRAFT " + "FORGE " + "MOD " + "INITIALIZATION " + "SMOD " + "STICKSMOD");
    }
    public static void postInitial(FMLPostInitializationEvent event) {
        proxy.postInit(event);
        System.out.println("MINECRAFT " + "FORGE " + "MOD " + "POSTINITIALIZATION " + "SMOD " + "STICKSMOD");
    }
}
Код:
package com.samjoll.smod.moditem;

import net.minecraft.item.Item;

public class ItemStick extends Item {
    public ItemStick (String item_name) {
        setRegistryName(item_name);
        setUnlocalizedName(item_name);
    }
}
Код:
package com.samjoll.smod.moditem;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class ItemRegister {
    public static Item NATUREST = new ItemStick("nature_staff");

    public static void regItem() {
        setRegister(NATUREST);
    }
    @SideOnly(Side.CLIENT)
    public static void renItem() {
        setRender(NATUREST);
    }
    public static void setRegister(Item item) {
        ForgeRegistries.ITEMS.register(item);
    }   
    @SideOnly(Side.CLIENT)
    public static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
}
Код:
package com.samjoll.smod.proxy;

import com.samjoll.smod.moditem.ItemRegister;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent event) {
        super.preInit(event);
    }
    @Override
    public void Init(FMLInitializationEvent event) {
        ItemRegister.renItem();
        super.Init(event);
    }
    @Override
    public void postInit(FMLPostInitializationEvent event) {
        super.postInit(event);
    }
}
Код:
package com.samjoll.smod.proxy;

import com.samjoll.smod.moditem.ItemRegister;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class CommonProxy {
    public void preInit(FMLPreInitializationEvent event) {
        ItemRegister.regItem();
    }
    public void Init(FMLInitializationEvent event) {
        
    }
    public void postInit(FMLPostInitializationEvent event) {
        
    }
}
Код:
[{
    "modid": "smod",
    "name": "Sticks Mod",
    "version": "1.0 beta",
    "mcversion": "1.12.2",
    "description": "Oh... I'm tired so much... I can't set a texture on my item for mod :(",
    "authorList": ["TASOM"],
    "credits": "I want to thank Forge, Minecraft and people who's made mods! :)"
}]
Код:
{
  "parent": "item/generated",
  "textures": {
    "layer0": "smod:items/nature_staff"
  }
}
Если честно, то я уже гуглил лог из консоли и в англоязычном форуме, просто у пользователя был неправильный путь... Я не понимаю шо мне делать. 4 дн. бьюсь над этим.
 
Краш-лог
Exception loading model for variant smod:nature_staff#inventory for item "smod:nature_staff", blockstate location exception: 
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model smod:nature_staff#inventory with loader VariantLoader.INSTANCE, skipping
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:296) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:151) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
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_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1175) ~[ModelLoader$VariantLoader.class:?]
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
... 20 more
Краш-лог:
Exception loading model for variant smod:nature_staff#inventory for item "smod:nature_staff", blockstate location exception: 
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model smod:nature_staff#inventory with loader VariantLoader.INSTANCE, skipping
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:296) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:151) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
	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_211]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
	at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
	at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1175) ~[ModelLoader$VariantLoader.class:?]
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
	... 20 more

Вложения

  • мой_л-ю-ю-юбимый_мод.rar
    748.5 KB · Просмотры: 7
Решение
Ну смотри как у меня:
Код:
public class ItemNetherTeleport extends Item{
    Item item = this; //Эту переменную я использую в другой части кода, не кидайтесь тапками =)
    public ItemNetherTeleport(String name) {
        super();
        setUnlocalizedName(name);
        setRegistryName(name);
        setMaxStackSize(1);
        setMaxDamage(32);
        setCreativeTab(CreativeTabs.TOOLS);
    }
Код:
package ru.SupCM.quanttp.init;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import...
3,005
192
592
19
1
Вот только...
В коммон прокси у него ничего не вызывается, следовательно в данном примере это ничего не изменится.
Java:
public static void regItem() {
        setRegister(NATUREST);
    }
    
    public static void setRegister(Item item) {
        ForgeRegistries.ITEMS.register(item);
    }
А как же setRegister()?
 
19
1
at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]

Почему он указывает на какой-то блок?
 

ReyMagos

Тег-бомбастер
412
7
121
Вообще называть методы с большой буквы и классы с нижним подчёркиванием - несоблюдение правил хорошего кода (по крайней мере в java).
public static Item NATUREST = new ItemStick("nature_staff");
Я бы сделал final.
Евент хандлер надо писать перед каждым из методов в main (preinit, init, postinit). И вроде бы надо писать @Mod.EventHandler
 
Последнее редактирование:
19
1
@Rey838 ничего нового. Там так же четыре ошибки.

Java:
Exception loading model for variant smod:nature_staff#inventory for item "smod:nature_staff", normal location exception:

net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model smod:item/nature_staff with loader VanillaLoader.INSTANCE, skipping

Caused by: java.io.FileNotFoundException: smod:models/item/nature_staff.json

Exception loading model for variant smod:nature_staff#inventory for item "smod:nature_staff", blockstate location exception:

net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model smod:nature_staff#inventory with loader VariantLoader.INSTANCE, skipping

Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
 
1,329
104
225
Ну смотри как у меня:
Код:
public class ItemNetherTeleport extends Item{
    Item item = this; //Эту переменную я использую в другой части кода, не кидайтесь тапками =)
    public ItemNetherTeleport(String name) {
        super();
        setUnlocalizedName(name);
        setRegistryName(name);
        setMaxStackSize(1);
        setMaxDamage(32);
        setCreativeTab(CreativeTabs.TOOLS);
    }
Код:
package ru.SupCM.quanttp.init;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ru.SupCM.quanttp.items.ItemNetherTeleport;

public class ItemsRegister {
    
    public static Item NETHERTP = new ItemNetherTeleport("nethertp");
    
    public static void register() {
        setRegister(NETHERTP);
    }
    @SideOnly(Side.CLIENT)
    public static void registerRender() {
        setRender(NETHERTP);
    }
    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
        
    }

    private static void setRegister(Item item) {
        ForgeRegistries.ITEMS.register(item);
    }
}
Код:
package ru.SupCM.quanttp.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.SupCM.quanttp.init.ItemsRegister;

public class ClientProxy extends CommonProxy {
    
    @Override
    public void pre(FMLPreInitializationEvent e) {
        super.pre(e);
        
    }
    
    @Override
    public void init(FMLInitializationEvent e) {
        super.init(e);
        ItemsRegister.registerRender();
    }
    
    @Override
    public void post(FMLPostInitializationEvent e) {
        super.post(e);
    }
}

P.S. Извини ошибочка вышла, там нет ModelResourceLocation для итема
 

ReyMagos

Тег-бомбастер
412
7
121
Сверху