= 创作分享 =
编程开发
求助, 使用ForgeRegistries注册物品时, 贴图无法显示, ...
随克

求助, 使用ForgeRegistries注册物品时, 贴图无法显示, 为黑紫块

随克 于 2025-1-21 09:15 ( 9天前 ) [复制链接] [只看楼主] [打印]
209 6
50RF
版本: 1.12.2

使用RegistryEvent时能够正常注册并显示贴图:
@SubscribeEvent
public static void onRegisterItems(RegistryEvent.Register<Item> event) {
    event.getRegistry().registerAll(ITEMS.toArray(new Item[0]));

    for (Item item : ITEMS) {
        SuiKe.proxy.registerItemRenderer(item);
    }
}



但是我需要在 PostInit 阶段注册物品;能成功注册物品, 但是贴图为黑紫块
@EventHandler
public static void PostInit(FMLPostInitializationEvent event) {
    ForgeRegistries.ITEMS.registerAll(ITEMS.toArray(new Item[0]));

    for (Item item : ITEMS) {
        SuiKe.proxy.registerItemRenderer(item);
    }
}



已在主类注册贴图:
@SubscribeEvent
public static void onTextureStitchPre(TextureStitchEvent.Pre event) {
    List<String> textureNameList = new ArrayList<>();
    textureNameList.add(省略大量贴图...

    for (String textureName : textureNameList) {
        event.getMap().registerSprite(new ResourceLocation(MODID, textureName));
    }
}


发表于 2025-1-21 09:15:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 6 条回复!
MapleSugar365
为什么要在PostInit阶段注册物品?
如果确实有相关需求,进入游戏后使用调试重载一次资源,看能不能显示纹理,可以就说明你的纹理注册(加载)在PostInit后面造成,需要你想办法更改执行顺序,如果依旧不显示,那就说明你的纹理未注册/渲染不成功。那就调试SuiKe.proxy.registerItemRenderer(item)和TextureStitchEvent.Pre有没有正常执行
发表于 2025-1-22 14:44:40 | 只看该作者

回复 | 举报

随克

================

本帖最后由 QQ酱121421 于 2025-1-22 22:57 编辑
Youi 发表于 2025-1-22 14:44
为什么要在PostInit阶段注册物品?
如果确实有相关需求,进入游戏后使用调试重载一次资源,看能不能显示纹 ...

F3+T重载了依然是黑紫
纹理是注册了的, 因为如果将 纹理改名 打包后加载, 会在加载结束进入主菜单时在控制台显示材质丢失的提示:

[Client thread/ERROR] [FML.TEXTURE_ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: The following texture errors were found.
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: ==================================
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:   DOMAIN suikerawore
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: --------------------------------------------------
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:   domain suikerawore is missing 1 texture
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:     domain suikerawore has 1 location:
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:       mod suikerawore resources at
                                         F:\Minecraft\minecraft\模组测试\versions\模组测试\mods\!rawOre_on-1.12.2-1.4.44.jar
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: -------------------------
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:   The missing resources for domain suikerawore are:
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:       textures/items/rawore/raw_aluminium.png
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: -------------------------
[Client thread/ERROR] [FML.TEXTURE_ERRORS]:     No other errors exist for domain suikerawore
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: ==================================
[Client thread/ERROR] [FML.TEXTURE_ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

文件名改回来就不会有这个提示
发表于 2025-1-22 22:53:00 | 只看该作者

回复 | 举报

MapleSugar365
QQ酱121421 发表于 2025-1-22 22:53
F3+T重载了依然是黑紫
纹理是注册了的, 因为如果将 纹理改名 打包后加载, 会在加载结束进入主菜单时在控制 ...

如果你排除了材质的问题,那就还需要检查渲染问题,在 PostInit 阶段中,SuiKe.proxy.registerItemRenderer(item)能否正常工作
发表于 2025-1-23 19:13:05 | 只看该作者

回复 | 举报

随克
Youi 发表于 2025-1-23 19:13
如果你排除了材质的问题,那就还需要检查渲染问题,在 PostInit 阶段中,SuiKe.proxy.registerItemRender ...

怎么检查
发表于 7 天前 | 只看该作者

回复 | 举报

随克
本帖最后由 QQ酱121421 于 2025-1-24 13:58 编辑

或者你知道ForgeRegistries注册注册物品的所有流程吗, 或者有没有模组这样做, 我去看看他的源码
或者有没有别的非事件方法注册物品, 能够在加载结束之后手动调用

发表于 7 天前 | 只看该作者

回复 | 举报

MapleSugar365
QQ酱121421 发表于 2025-1-24 13:55
或者你知道ForgeRegistries注册注册物品的所有流程吗, 或者有没有模组这样做, 我去看看他的源码
或者有没有 ...

其他mod我不清楚有没有这样做的,不过你是我见过第一个这样做的
毕竟一些方法在这个阶段可以正常工作,但在另一个阶段可能就不能了,你需要了解方法在不同阶段的生命周期
发表于 7 天前 | 只看该作者

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表