Minecraft-清单栏上方的信息栏完全伪造

时间:2018-10-24 20:31:41

标签: java rendering minecraft minecraft-forge visual-artifacts

我在下面的代码行中隔离了该问题:

   NY:    phrase        state
         one_two         NY
         two_one         NY
          three          NY

我对为什么要制作XP栏,健康栏,食物栏和装甲栏感到非常困惑。这是我的代码的一部分:

Minecraft.getMinecraft().fontRendererObj.drawStringWithShadow(etc)

有效地,引起伪像的行是// the main code public void postInit(FMLPostInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new MyMod()); } // MyMod class public uiCreator; public MyMod() { uiCreator = new UICreator(); } @SubscribeEvent public void onGui(RenderGameOverlayEvent event) { uiCreator.Create(); } // UICreator class public void Create() { GlStateManager.scale(1.5, 1.5, 1.5); Minecraft.getMinecraft().fontRendererObj.drawStringWithShadow("MyMod", 2, 2, 0xffffff); GlStateManager.scale(1 / 1.5, 1 / 1.5, 1 / 1.5); } 。我不明白为什么。我敢肯定这是这一行,因为在我注释掉这行之前,删除/注释掉代码的任何其他部分都不会修复工件。我对为什么发生这种情况感到非常困惑。如果有人有任何见识,我将不胜感激

Artifacting Info Bar

1 个答案:

答案 0 :(得分:0)

问题如下:

当您尝试绘制String时,它将用文本纹理替换纹理。因此,之后渲染的所有内容看起来都像文本,而不是适当的图标,因为纹理已在“内存”中被替换。为了避免这种情况,请使用RenderGameOverlayEvent.Post并检查event是否获得TEXT渲染的类型。