本教程将会教大家如何绘制HUD,(以在屏幕上绘制一个原版心为例子)
脚本位于client_scripts
首先,需要手动导入RenderSystem类
const $RenderSystem = Java.loadClass("com.mojang.blaze3d.systems.RenderSystem");
或者直接使用模组提供的RenderJSRenderSystem类(因为部分方法有注解并且无需导入)
本教程将会使用模组提供的RenderSystem
使用RenderJSGUI.addRender方法即可添加绘制
//const $RenderSystem = Java.loadClass("com.mojang.blaze3d.systems.RenderSystem");
RenderJSGUI.addRender(context=>{
RenderJSRenderSystem.setShaderColorJS(1,1,1,1)//重置颜色
RenderJSRenderSystem.setShaderTextureJS(new ResourceLocation("minecraft:textures/gui/icons.png"))//设置资源位置,这里使用了原版的"textures/gui/icons.png"
var width = context.window.guiScaledWidth/2//x轴缩放中心
var height = context.window.guiScaledHeight/2//y轴缩放中心
RenderJSGUI.blitJS(context.poseStack,width,height,53,0,9,9)//在setShaderTextureJS里设置的材质中从(53,0)开始向右和向下截取9个像素
})
原版爱心在icon中的左上角点位于(53,0),长宽均为9
效果:
渲染顺序和是否启用深度测试共同决定了图层,但是在hud可以不用考虑深度测试