
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
依存関係: プラットフォーム: Paper / Folia(Spigot やその他の旧式の Bukkit フォークはサポートされていません) Java バージョン: Java 21+(最新のビルドには Java 25 が必要です) Minecraft バージョン: 1.19.4…
依存関係: プラットフォーム: Paper / Folia(Spigot やその他の旧式の Bukkit フォークはサポートされていません) Java バージョン: Java 21+(最新のビルドには Java 25 が必要です) Minecraft バージョン: 1.19.4 – 1.21.x 追加ライブラリ: PlaceholdersAPI(アクションインターフェースへの変数の統合に推奨) Minecraft サーバーでインタラク
依存関係:
プラットフォーム: Paper / Folia(Spigot やその他の旧式の Bukkit フォークはサポートされていません)
Java バージョン: Java 21+(最新のビルドには Java 25 が必要です)
Minecraft バージョン: 1.19.4 – 1.21.x
追加ライブラリ: PlaceholdersAPI(アクションインターフェースへの変数の統合に推奨)
Minecraft サーバーでインタラクティブなノンプレイヤーキャラクター(NPC)を作成することには、従来から大きなハードウェアコストが伴ってきました。旧式のソリューションは NPC を本格的なサーバーエンティティ(Entity)として登録するため、コアはそれらの人工知能、物理的な衝突判定、経路探索、チャンクの読み込みを処理せざるを得ません。これは、キャラクター数が増加するにつれて TPS(Ticks Per Second)指標の致命的な低下を招きます。プラグイン FancyNpcs は、仮想キャラクターを描画する代替的なパケットベースの手法を提供しており、サーバースレッドのパフォーマンスにまったく影響を与えることなく、数百体ものインタラクティブなフィギュアを保持することを可能にします。
パケットアーキテクチャと Folia 互換性
FancyNpcs の主な技術的特徴は、それが作成するキャラクターがプラグインのメモリ内および接続中のクライアント側にのみ存在するという点です。サーバーはそれらをワールドのデータベースに追加せず、エンティティの全体的な更新サイクルでも処理しません。
プレイヤーが指定された座標に近づくと、プラグインはネットワークトラフィックを傍受し、クライアントに ClientboundAddPlayerPacket パケット(人型モデル用)または ClientboundAddEntityPacket(その他の生物用)を送信します。その後の挙動、装備、表示状態は、ClientboundSetEntityDataPacket(メタデータ)および ClientboundSetEquipmentPacket(装備)のパケットを用いて更新されます。サーバーにとってこれらのキャラクターは存在せず、エンドユーザー向けの「仮想的な投影」にすぎません。
この手法により、FancyNpcs は Folia をベースとするマルチスレッドサーバーにとって理想的な選択肢となります。Folia はワールドを個別のリージョンに分割し、それぞれが独自のスレッドで動作するため、従来の NPC プラグインは異なるリージョンのスレッド間で相互作用を試みることでデッドロックや致命的なエラーを引き起こすことがよくあります。FancyNpcs はデータを非同期で処理し、パケットをプレイヤーに直接送信することで、Folia のタスクスケジューラとの競合を完全に回避します。
外観のカスタマイズ機能
このプラグインは、幅広いエンティティタイプと視覚効果をサポートしています。プレイヤーは、あらゆるバニラのモブ(Player、Cow、Zombie、Skeleton、Villager、Pig など)の姿で NPC を作成し、その外観を細かく調整できます。
スキン管理(人型モデル用)
player タイプのキャラクターには、テクスチャを読み込むための複数のソースが利用できます:
@mirror: NPC のスキンは、その瞬間に見ているプレイヤーのスキンを動的にコピーします。正規アカウントの名前または UUID: プラグインは対応するテクスチャを読み込むために、Mojang のセッションサーバーへ自動的にリクエストを送信します。
Web リソースへの直接リンク(URL): Web サーバーから任意のサードパーティ製の .png ファイルを読み込む機能。
ローカルファイル: あらかじめ /plugins/FancyNpcs/skins/ フォルダーに配置された画像。
フラグ
--slim: リンク経由で読み込まれたスキンに対して、細い腕のモデル(Alex スタイル)の使用を有効にします。
視覚効果と属性
発光(Glowing): キャラクターの周囲に色付きの輪郭を追加します。色はバニラのチームカラー(Team Colors)に結び付けられます。
装備(Equipment): キャラクターには左手または右手に任意のアイテムを持たせることができ、またヘルメット、チェストプレート、レギンス、ブーツを着用させることができます。
ポーズ(Poses): 座る、横たわる(ベッドで眠る様子の再現)、泳ぐ、這うなど、特定の表示状態がサポートされています。
サイズ(Scale): 新しいバージョンのプラグインでは、エンティティのスケーリング(モデルの物理的なサイズの変更)のサポートが実装されています。
コマンドシステムと構文
キャラクターの管理は、ゲーム内チャットまたはサーバーコンソールでのコマンドのみを用いて行われます。以下の表に、基本的な構文の説明を示します:
コマンド | 説明とパラメーター | 使用例 |
| 新しいキャラクターの作成 |
|
| 既存のキャラクターの削除 |
|
| スキンの変更(名前、url、または @mirror) |
|
| プレイヤーが手に持っているアイテムを NPC に装備させる |
|
| モデルの周囲に色付きの発光を有効にする |
|
| キャラクターにプレイヤーの方へ頭を向けさせる |
|
| 特定のポーズやモブのバリエーションを設定する |
|
プラグインのグローバルな管理には、プラットフォームのコマンドが使用されます:
/fancynpcs reload— システム構成を再読み込みします。/fancynpcs save— すべての NPC の現在の状態を、データベースファイルとして強制的にディスクへ書き込みます。
インタラクティブなアクションシステム(Actions)
FancyNpcs には、プレイヤーがキャラクターと交流した際に発動する、組み込みのスクリプト式アクション機構が含まれています。アクションは、さまざまなクリックの種類(LEFT_CLICK、RIGHT_CLICK、ANY_CLICK)に対して設定できます。
このプラグインは、実行できる以下の種類のアクションを提供します:
message: プレイヤーへのメッセージの送信。MiniMessage(Hex カラー)および PlaceholdersAPI 変数をサポートします。player_command: プレイヤーの名義でコマンドを実行します。player_command_as_op: 一時的にオペレーター権限を付与した状態で、プレイヤーの名義でコマンドを実行します(通常のプレイヤーが使用できないコマンドを発動するため)。console_command: サーバーコンソールによってコマンドを実行します。変数 {player} は自動的にプレイヤーの名前に置き換えられます。send_to_server: BungeeCord または Velocity ネットワーク内の別のサーバーへ、プレイヤーを即座に移送します。wait: アクション間に一時停止を作成します(サーバーティック単位の遅延)。block_until_done: 現在のアクションのシナリオが完了するまで、NPC への再クリックを防止します。execute_random_action: リスト内の以下のアクションのうち 1 つをランダムに選択します。
Bob という名前の NPC 向けに複雑なインタラクティブシナリオを作成する例:
歓迎メッセージの追加:
/npc action Bob RIGHT_CLICK add message <yellow>当サーバーへようこそ、%player_name% さん!</yellow>40 ティック(2 秒)の一時停止の追加:
/npc action Bob RIGHT_CLICK add wait 40コンソールによるプレイヤーのスポーン地点へのテレポート:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
複数の連続したステップを追加し、add_before、add_after および move_up/move_down を用いて順序を調整できるため、管理者は Denizen や MyCommand のような追加プラグインを導入することなく、本格的な会話ツリーやロビーサーバー間の遷移といった複雑なメカニクスを構築できます。
設定ファイルの構造
すべてのデータは plugins/FancyNpcs/ ディレクトリに保存されます。プラグインの動作は 2 つのファイルに基づいています:
1. config.yml
このファイルはプラグインのグローバルな挙動を定義し、次の設定を含みます:
turn_to_player_distance(デフォルト 5): キャラクターがプレイヤーの方へ頭を向けるブロック単位の半径。このパラメーターを下げると、負荷の高いゾーンでのネットワークパケットの送信が最適化されます。visibility_distance(デフォルト 20): NPC の出現パケットがクライアントへ送信されるブロック単位の距離。これを小さくすると、壁や描画フォグの向こうにキャラクターを隠して、プレイヤーの FPS を節約するのに役立ちます。enable_autosave: 変更内容を定期的に自動でディスクへ書き込みます。
2. npcs.yml
このファイルに、プラグインは作成された NPC のデータベースを保存します。各キャラクターは個別のデータブロックで記述されます:
YAML
Bob: id: 104 type: PLAYER world: world x: 10.5 y: 64.0 z: -25.5 yaw: 90.0 pitch: 0.0 glowing: false turn_to_player: true skin: value: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..." signature: "d3G8h...==" actions: RIGHT_CLICK: - type: MESSAGE value: "<green>ようこそ!</green>" |
警告: npcs.yml ファイルを手動で編集することは、構文の破損や座標の誤った定義のリスクがあるため、強く推奨されません。NPC の構成に対するいかなる変更も、必ずゲーム内コマンドを通じて行い、その後 /fancynpcs save を用いて確定する必要があります。
結論
プラグイン FancyNpcs は、Minecraft Java Edition のサーバーで装飾的かつインタラクティブなキャラクターを作成するための、現代的で高性能なソリューションです。それは旧来のツールの主な問題、すなわちエンティティの処理にサーバーの CPU 時間が消費されるという問題を解消します。
このプラグインの主な制限は、人工知能が完全に欠如している点です。キャラクターはクライアント側の仮想的な投影であるため、自らワールドを移動したり、ブロックと交流したり、他のモブを攻撃したりすることはできません。
複雑な移動メカニクス(ウェイポイントによるナビゲーション)や戦闘システム(Sentinel モッド)との統合をサポートする古典的なプラグイン Citizens と比較すると、FancyNpcs は人工知能の柔軟性で劣ります。しかしながら、Citizens はサーバーのメインスレッドに膨大な負荷をかけ、Folia 上での使用には実質的に適していません。FancyNpcs は、キャラクターに求められるのが静的な存在感、優れた外観、そしてクリック時の迅速なコマンド実行のみであるような、ロビーサーバー、Velocity ハブ、大規模 SMP プロジェクトにとって理想的な代替手段を提供します。
インストール
通常のインストールは約 5 分で完了します。手順は同じで、ローダーと対応するビルドだけが異なります。
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.








