Minecraft fontRenderer.drawString()立即消失

时间:2013-05-25 21:14:34

标签: java minecraft minecraft-forge

我尝试使用此功能在我的世界中制作一个游戏GUI。 (我正在使用伪造的MC 1.5.2)。

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

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

我很擅长伪造modding。

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

3 个答案:

答案 0 :(得分: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*/);

}

答案 1 :(得分:3)

我没有使用Minecraft代码的经验,但我推测,无论你想要绘制什么,都只绘制一帧。这与您所看到的“瞬间消失”行为一致。如果是这种情况,您可以在每个帧上调用方法,直到您想要停止绘制。

答案 2 :(得分:-1)

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

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

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

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