Minecraft Forge 1.12.2 自定义物品纹理无法加载问题求助
Minecraft 1.12.2 Forge自定义物品纹理加载失败修复
你的代码和资源结构存在4处核心错误,按以下步骤修复即可正常加载纹理:
1. 修正资源文件存放路径与格式
当前纹理文件的位置和后缀完全错误:
- 错误配置:纹理被存为
src/main/resources/assets/hdo/textures/items.json - 修复要求:
- 在
assets/hdo/textures/目录下新建名为items的文件夹 - 将物品纹理PNG文件重命名为
coca.png,放入上述新建的items文件夹,最终正确路径为src/main/resources/assets/hdo/textures/items/coca.png - 确保PNG纹理尺寸为2的整数次幂(如16x16、32x32),不符合尺寸要求的纹理会被Forge直接忽略。
- 在
2. 修正物品模型JSON的纹理路径
当前模型文件内的纹理路径多写了一个斜杠,修改coca.json内容如下:
{ "parent": "item/generated", "textures": { "layer0": "hdo:items/coca" } }
注意:Minecraft资源定位格式为[modid]:[路径],域和路径之间仅用单个冒号分隔,不要额外加斜杠。
3. 补全物品初始化与注册逻辑
现有代码存在逻辑断层:ModItems类的init()方法从未被调用,会直接触发空指针异常,同时自定义物品根本没有被实例化、注册进游戏。
修复步骤:
- 在
CommonProxy类的preinit()方法中添加初始化调用,保证双端都能完成物品初始化:
public class CommonProxy { public void preinit() { ModItems.INSTANCE.init(); } public void init() {} public void postinit() {} }
- 检查你主类中注册的
RegisteringEvent类,必须添加物品注册事件的监听逻辑(如果缺失请补上):
@SubscribeEvent public void registerItems(RegistryEvent.Register<Item> event) { event.getRegistry().register(ModItems.coca); }
4. 校验MODID一致性
检查Reference类中MODID常量的取值,必须和assets下的模组资源文件夹名、模型JSON里的资源域完全一致,即严格等于全小写的hdo,任何大小写差异、多余字符都会导致资源定位失败。
内容的提问来源于stack exchange,提问作者DouFut
相关产品推荐
相关产品推荐

