【问题标题】:Minecraft fontRenderer.drawString() disappears instantlyMinecraft fontRenderer.drawString() 立即消失
【发布时间】:2014-08-14 22:22:26
【问题描述】:

我尝试使用此功能在我的世界中制作游戏 GUI。 (我在 MC 1.5.2 中使用 forge)。

Minecraft.getMinecraft().fontRenderer.drawString(String)

这是我的代码:

@ForgeSubscribe
public void onServerChat(ServerChatEvent event)
{
    mcObject.fontRenderer.drawStringWithShadow("Hello WOrld", 4, 4, 0xffFFFFFF);
    mcObject.ingameGUI.drawRect(2 /*X*/, 2 /*Y*/, 100 /*X1*/, 12 /*Y1*/, 0x80000000 /*COLOUR*/);
}

但是当我输入一条聊天消息(仅使用该事件进行测试)时,文本会立即消失,您几乎看不到它,当然也看不到它。

我对伪造改装还很陌生。

如何使文本更永久以及如何再次删除(或覆盖)?

【问题讨论】:

    标签: java minecraft minecraft-forge


    【解决方案1】:

    onServerChat 是一个瞬时事件:当聊天收到消息并立即停止时触发。

    您需要在更新每一帧的事件中绘制您的 GUI。我一直在做 OnRenderExperienceBar,这是 Minecraft 默认 GUI 的一个元素。这是使用您的代码的示例。

    @SideOnly(Side.CLIENT)
    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderExperienceBar(RenderGameOverlayEvent event) {
    
    mcObject.fontRenderer.drawStringWithShadow("Hello World", 4, 4, 0xffFFFFFF);
    mcObject.ingameGUI.drawRect(2 /*X*/, 2 /*Y*/, 100 /*X1*/, 12 /*Y1*/, 0x80000000 /*COLOUR*/);
    
    }
    

    【讨论】:

      【解决方案2】:

      我没有使用 Minecraft 代码的经验,但我推测您尝试绘制的任何内容都只是为单帧绘制的。这与您看到的“立即消失”行为一致。如果是这种情况,您可以在每一帧上调用这些方法,直到您想停止绘图。

      【讨论】:

      • 我想是的,但我仍然无法做到......我想我会再玩一些......
      【解决方案3】:

      我得到了答案,我查看了 Minecraft 制作 gui 代码,发现了这个,它可能会对你有所帮助:

      this.fontRenderer.drawString("Crafting", 28, 6, 4210752); 
      // Args that I think: text, X, Y, color 
      

      你需要import org.lwjgl.opengl.GL11;

      您知道,这是来自普通 Minecraft 中的 MCP,但它应该工作

      【讨论】:

        猜你喜欢
        • 2011-06-26
        • 2019-05-02
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-22
        相关资源
        最近更新 更多