0

我试图用这个功能在我的世界中制作一个游戏 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*/);
}

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

我对锻造改装很陌生。

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

4

3 回答 3

4

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*/);

}
于 2014-08-03T20:37:11.233 回答
3

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

于 2013-05-25T21:22:55.013 回答
-2

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

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

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

只是让你知道,这是来自普通 Minecraft 中的 MCP,但它应该可以工作

于 2013-07-06T14:28:10.377 回答