Minecraft自定义客户端开发 主菜单无法加载自定义背景问题求助
问题根因
你遇到的粉黑格子报错本质是Minecraft的纹理加载器找不到对应路径的资源文件,核心问题出在资源存放路径不匹配ResourceLocation的查找规则,其次是代码绘制逻辑缺少必要的OpenGL状态设置。
具体解决步骤
- 修正资源存放路径
Minecraft的ResourceLocation会默认从项目src/main/resources/assets/[命名空间]/目录下查找资源,你写的moon/gui/bg.jpg对应的正确存放路径为:
src/main/resources/assets/moon/gui/background.png
注意:
- 必须先创建
assets目录,再在下面创建和你命名空间同名的moon文件夹 - Minecraft对JPG格式的纹理支持兼容性较差,建议将背景图转成PNG格式使用,避免解码失败
- 优化主菜单绘制代码
修改drawScreen方法,补充必要的OpenGL状态设置,同时改用更规范的双参数ResourceLocation构造方法,减少路径写错的概率:
@Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { // 开启纹理混合,避免背景透明度显示异常 GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); // 第一个参数为命名空间,对应assets下的moon文件夹,第二个参数为资源相对路径 mc.getTextureManager().bindTexture(new ResourceLocation("moon", "gui/background.png")); this.drawModalRectWithCustomSizedTexture(0, 0, 0, 0, this.width, this.height, this.width, this.height); // 用完关闭混合,避免影响后续组件绘制 GlStateManager.disableBlend(); super.drawScreen(mouseX, mouseY, partialTicks); }
- 检查构建配置并清理缓存
- 确认项目
build.gradle中的processResources配置没有排除png格式文件,默认的Forge/Fabric项目配置都会自动打包resources下的所有资源文件 - 重新构建前先执行
clean任务,删除旧的编译缓存,避免资源没有更新到最终打包的jar里
内容的提问来源于stack exchange,提问作者Satindar31
相关产品推荐
相关产品推荐

