3

新しいタイプのmobを追加するMinecraftmodを作成したいと思います。それは可能ですか?BukkitではEntityType、事前定義された列挙型であることがわかります。これにより、新しいタイプのエンティティを追加する方法がない可能性があると私は信じています。私はそれが間違っていることを望んでいます。

4

4 に答える 4

11

はい、できます!

Bukkitフォーラムのいくつかのチュートリアルを紹介します。具体的には:

免責事項:最初は私が書いたものです。

Bukkitだけでまったく新しい暴徒を追加することはできません。別のスキンを与えるには、Spoutを使用する必要があります。ただし、単に暴徒が必要で、別のエンティティのスキンを共有することに満足している場合は、それを行うことができます。

アイデアは、JavaのReflectionAPIを介してEntityType値を注入することです。次のようになります。

public static void load() {
  try {

    Method a = EntityTypes.class.getDeclaredMethod("a", Class.class, String.class, int.class);
    a.setAccessible(true); 
    a.invoke(a, YourEntityClass.class, "Your identifier, can be anything", id_map);

} catch (Exception e) {
//Insert handling code here
}
}

上記はかなり簡単だと思います。プライベートメソッドへのハンドルを取得してパブリックにし、その登録メソッドを呼び出します。id_mapエンティティをマップするエンティティIDが含まれます。12は火の玉のそれです。マッピングはにありますEntityType.class。これらのIDをパケット指定と混同しないように注意してください。2つは完全に異なります。

最後に、実際にエンティティをスポーンする必要があります。マップからデフォルトエンティティを削除していないため、MCはデフォルトエンティティを生成し続けます。しかし、それはただ呼び出すことの問題ですnet.minecraft.server.spawnEntity(your_entity, SpawnReason.CUSTOM)

スキンが必要な場合は、Spoutプラグインを調べることをお勧めします。そのようなサーバーに参加するには、Spoutクライアントを実行する必要がありますが、その時点での可能性は文字通り無限です。

于 2013-01-28T20:09:16.580 に答える
4

悲しいことに、それはクライアント側のmodでも可能です。Spout(http://www.spout.org/)を調べることができます。これは、サーバー側のプラグインがクライアントでより多くのことを実行するためのAPIを提供するクライアントmodですが、クライアント側で何かを行わなければ、これは不可能です。

于 2013-01-13T18:32:57.683 に答える
1

新しいエンティティを追加することはできませんが、エンティティの動作を一度編集することは可能です。たとえば、鉄のゴーレムを飼いならすことができるように作成しました。

于 2013-01-14T22:01:07.573 に答える
1

また、プレーヤーエンティティにアクセスし、ネットワークパケットを微調整することで、カスタムの外観の人間エンティティを実現できます。

これを達成するためにプレーヤーアカウントを作成する必要があり、それが暴徒として機能するために使用されるため、費用がかかります。次に、名前付きエンティティをスポーンし、既存の暴徒の場合と同じ動作AIを与えます。ただし、AIを自分で作成する必要があり(craftbukkit / bukkitから直接コードを借りることができます)、この暴徒の動きとイベントを視界内のプレーヤーにプッシュする必要があることに注意してください。実際に起こっていることに関するサーブからクライアントへのパケットですが、そのプッシュリストの外側では、他のプレイヤーがあなたが目に見えない何かにノックアウトされているのを見るので、何も起こりません:)それは少し精神的な飛躍です:)

私はこの概念を使用して、友好的で派閥的な軍隊として機能するNpcを作成しています。私はまた、モブ自体を友好的な存在として使用しました(あなたが暗い派閥に属している場合)

サーバー固有のキャッシュのモデル命令をクライアントにプッシュできる将来のサーバーAPIと、mobスキンをダウンロードする場所をクライアントに指示する機能を個人的に見たいと思います。

今日は実行可能ですが、これを実現するためにクライアント用のプラグインを作成する必要があります。これは、特にmojangが新しいリリースをプッシュし、すべてのプラグインがその潮流に合わせて上昇するのに永遠にかかる場合に、煩わしいゲームに戻ります。

正直なところ、このエコシステム全体をより戦略的に管理することはできますが、今のところ、それは本当にアドホックな製品管理だと思います(.netの元製品マネージャーと言えば、この戦略に取り組みたいと思っています。とても楽しいギグになるでしょう)

于 2014-01-05T07:18:00.423 に答える