サーチ…


Forgeでイベントリスナーを作成する

Forgeでのイベントリスナーの作成は、Bukketでのイベントリスナーの作成と非常によく似ています。

リスナークラスを作成するには、あまり必要がありません。実装するインタフェースやその他のインポートはありません。

public class ListenerClass { } //perfectly valid event listener class

それを登録するには、インスタンスをForgeイベントバスに渡す必要があります。

MinecraftForge.EVENT_BUS.register(new ListenerClass());

イベントに応じて2種類のイベントバスがあります。たとえば、鉱石生成イベントはORE_GEN_BUSます。この登録はどこからでも呼び出すことができますが、メインのModクラス(@Modアノテーション付き)またはプロキシクラスから呼び出すことをお勧めします(一部のイベントはクライアント側のみであり、クライアントサイドイベントハンドラは呼び出される必要があります)クライアントプロキシから、そうでない場合、専用サーバーがクラッシュします)。

リスナークラスの任意のイベントをリッスンするには、メソッドの@SubscribeEventアノテーションを使用してメソッドを作成する必要があります。イベントタイプは、メソッドの唯一の引数のTypeによって指定されます。このメソッドの名前は任意です。

いくつかのイベントタイプがサブタイプであることに注意してください(その外側の種類によって参照する必要があり、例えばCropGrowEvent.Pre )、それは、そのような全てとして(複数の場所で発射されるよう、いくつかのイベントがフェーズを有することができることTickEventの前に両方の発射されていますやがてバニラコード)。モダンとして、これらのことを常に確認し、必要なときにのみコードを実行してください。

public class ListenerClass {
    @SubscribeEvent
    public void onPlayerLogin(PlayerLoggedInEvent event) {
        event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
    }
}

ForgeモッズはMinecraft内部と直接的に相互作用するので、モダンには多くの力が与えられますが、同様にコードはバニラフレームワークに従わなければなりません。メッセージを送信するためのショートカットはありません。メッセージはITextComponentsは手作業ですが、これらのオブジェクトを操作する機能(カラーフォーマットの適用など)ははるかに簡単です。例えば:

TextComponentString txt = new TextComponentString(
    TextFormatting.LIGHT_PURPLE + "Welcome to the server!");
txt.appendSibling(new TextComponentString(
    TextFormatting.AQUA + "Server has been online for " + x + " days"));
event.player.addChatMessage(txt);

次の結果が得られます。 チャットメッセージ



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow