玩MineCraft的时候突发奇想,自己写个mod玩一玩。然后就开始了漫长的搜索mod开发文档和教程之路,配个环境配了一天,之后更是踩了好多好多坑。所以写个博客记录一下踩过的这些坑。
0.相关文档
Minecraft 1.12.2 Mod开发笔记——新的GUI(待完成)/HUD - 0.0~~ - 博客园
1.分辨率问题
我笔记本是15.6英寸屏幕、win10系统,分辨率是1920*1080,缩放与布局设置的是125%。写完mod的“游戏主界面显示背包剩余箭量”这一功能,进行测试的时候发现屏幕分辨率获取错误,实际分辨率和获取到的显示分辨率不一致,这就导致本来该定位显示在右下角的数量跑到了显示范围之外,换句话说就是超出屏幕显示范围。踩坑踩了一天多才终于上了岸。
之前获取分辨率代码如下,这样获取用的时候只有将界面尺寸设置为小才能正常显示,但是“小”又小到看不清。
Minecraft mc = Minecraft.getMinecraft(); //和mc.getFramebuffer().framebufferWidth获取到的宽度一致 int width = mc.displayWidth; //和mc.getFramebuffer().framebufferHeight获取到的高度一致 int height = mc.displayHeight;
正确用法如下。
@SubscribeEvent public void onRender(RenderGameOverlayEvent event) { if (event.getType() == RenderGameOverlayEvent.ElementType.ALL) { return; } int screenWidth = event.getResolution().getScaledWidth(); int screenHeight = event.getResolution().getScaledHeight(); // 这里调用自定义的HUD函数 // 不加这一行生存模式血量护甲这些会变乱码 mc.renderEngine.bindTexture(Gui.ICONS); }