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 を描画する必要があります。私は、Minecraft のデフォルト GUI の要素である OnRenderExperienceBar を実行しています。コードを使用した例を次に示します。

@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 コードの経験はありませんが、あなたが描こうとしているものはすべて、1 つのフレームに対してのみ描画されていると推測します。これは、あなたが見ている「即座に消える」動作と一致します。この場合、描画を停止するまで、すべてのフレームでメソッドを呼び出すことができます。

于 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 に答える