メインコンテンツまでスキップ

BTCMobs

開発中:スキル、スポナー、ドロップテーブル、クエストイベントを備えたカスタムモブと NPC。

近日公開エンティティとモデル
必要TypeWriter0.9.0-beta-177 (BTC build)QuestRoadNetworkGUI任意ModelEngine任意BetterModel任意MiniPlaceholders任意PacketEvents任意

開発中。最初のリリースまでに、エントリーやフィールドが変更される可能性があります。

開発中

BTCMobs は Soon(近日公開) のエクステンションです。まだリリースされておらず、ダウンロードもバージョン番号もなく、公開までにエントリーやフィールドが変更される可能性があります。このページは、参考情報として、現在の開発ビルドを文書化しています。これは古い「BTC Mob」プラグインではありません。モブエンジンはエクステンション自体の中にあり、別途インストールするプラグインはありません。

概要​

BTCMobs

BTCMobs を使うと、TypeWriter の Web パネルだけで、カスタムモブとインタラクティブな NPC を構築できます。モブテンプレートは、1 体のクリーチャーを記述します。ベースとなる Minecraft のエンティティ、レベル、体力、防御力、スキル、ドロップ、派閥、任意の 3D モデル、任意の繁殖です。スポナーと自然スポーンは、テンプレートが、ワールドのどこに、いつ現れるかを決めます。スキルとドロップテーブルは、モブが何をし、何を残すかを定義します。

モブの行動はすべて、TypeWriter に公開されます。モブがスポーンしたとき、ダメージを受けたとき、スキルを使ったとき、死亡したときに、イベントが発火します。ファクトと変数は、体力、レベル、数、距離を報告します。アクションは、モブをスポーン、デスポーンさせたり、スキルを使わせたりします。これにより、クエスト、ダイアログ、シネマティックが、戦闘に反応したり、戦闘を開始したりできます。

同じエクステンションは、NPC 側の機能も提供します。モブテンプレートを、クライアント側の NPC として表示し、ダイアログのインタラクション、クエスト目標、カメラシネマティック(モデルのボーンに取り付けたカメラを含む)、プレイヤーごとのボーンの表示、ModelEngine または BetterModel のアニメーション制御に対応します。このエクステンションは、TypeWriter の BTC ビルド(Paper/Folia)を対象としています。

機能​

  • モブテンプレート — クリーチャーごとに 1 つの btc_mob_template エントリー。エンティティタイプ、レベル、体力、攻撃ダメージ、防御力、スキル、ドロップ、派閥、脅威テーブル、モデル、アニメーション。
  • スポナー — スポーン上限、スポーン間隔、ウォームアップを持つ、リージョンベースのスポナー。ファクトで制御できるため、プレイヤーごとに異なるペースを体験できます。
  • 自然スポーンの置き換え — ワールド、バイオーム、確率に基づくルールごとに、バニラのクリーチャーのスポーンを BTC モブに置き換えます。
  • スキル — スキルは、TypeWriter のアクションの順序付きリスト、またはスクリプトの 1 行です。テンプレートは、スポーン、攻撃、ダメージ、死亡、繰り返しのタイマーなどのトリガーに、スキルを割り当てます。
  • ドロップテーブルとアイテム — バニラの素材、カスタムアイテム、経験値、再利用可能なテーブル。確率と数量は、モブのレベルに応じて変化します。
  • クエストとの連携 — ストーリーがモブや戦闘に反応できるよう、イベント、ファクト、変数、スキル目標を提供します。
  • NPC — ダイアログ、インタラクション、注視、カメラの動作を持つ、テンプレートベースのクライアント側 NPC。
  • シネマティック — TypeWriter のシネマティック中に、モブをスポーンさせる、スキルを使う、NPC にフォーカスする、モデルのボーンに乗る。
  • 永続化 — ストレージアーティファクトを設定すると、スキルのクールダウン、カウンター、オーラ、脅威テーブル、ボスバーは、再起動後も維持されます。
  • MythicMobs のインポート — オペレーター向けのコマンドが、MythicMobs のパックを BTCMobs のページに変換します。

インストール​

BTCMobs は開発中で、公開ダウンロードはありません。以下は、開発ビルドの構成の説明です。

  1. TypeWriter の BTC ビルド(BTC Core、Paper または Folia)を、ビルドが依存関係として宣言している Quest と RoadNetwork のエクステンションとともに実行します。
  2. BTCMobs の JAR を plugins/Typewriter/extensions/ に配置し、サーバーを再起動します。独自のモブエンジンが同梱されているため、別途 BTCMobs プラグインは必要ありません。
  3. 必要な任意の連携をインストールします。エクステンションは、実行時にそれらを検出します。3D モデル用の ModelEngine または BetterModel、プレースホルダーを公開するための MiniPlaceholders、PacketEvents、Vault、DecentHolograms、WorldGuard です。
  4. モブカタログメニューを開くには、BTC GUI エクステンションがインストールされている必要があります。
  5. Web パネルで btcmobs_storage アーティファクトを作成し、ゲームプレイの状態が保存されるように、btcmobs_config エントリー(下記参照)から参照します。

はじめに​

この手順では、ゾンビのボスを作成し、アリーナにスポーンさせ、その死亡に反応させます。

  1. TypeWriter の Web パネルでマニフェストページを開きます。BTCMobs Storage アーティファクトを追加し、続いて BTCMobs Global Configuration エントリーを追加して、storage にそのアーティファクトを設定します。
  2. スタティックページを開き、Native BTC mob template を追加します。後で再利用する id(たとえば crypt_warden)を付けます。entityType を ZOMBIE に、display をプレイヤーに見せる名前に設定し、続いて level、maxHealth、attackDamage、armor を設定します。
  3. Native BTC mob drop table を追加し、drops を 1 行に 1 つの宣言で列挙します。たとえば DIAMOND 1 0.25(素材、数量、確率)や exp 20to40 です。テンプレートの drops リストで、ID によってテーブルを参照します。
  4. Native BTC mob skill を追加し、actions に、実行する TypeWriter のアクションを順に入力します。テンプレートでは、skills にスキルの ID を追加します。たとえば warden_slam~onTimer:100 は、100 tick ごとに使用します。
  5. BTCMobs Spawner を追加します。mobType にテンプレートの ID(表示名ではありません)、world、リージョンの 2 つの角 corner1 と corner2、defaultMaxMobs、defaultCooldown(tick 単位)を設定します。
  6. mobName にテンプレートの ID を設定した On BTCMob die イベントを追加し、その triggers を、ダイアログ、報酬、ファクトのモディファイアにリンクします。
  7. ページを Publish し、リージョンの中心から defaultActivationRange(デフォルトは 24 ブロック)以内まで歩いて近づくと、モブが出現します。待たずにテストするには、/tw btcmobs spawners force <id> を使用します。
モブを手早くテストする

/tw btcmobs spawn <template> <level> <amount> は、選んだレベルで、テンプレートを自分の隣にスポーンさせます。コマンドは、読み込まれているテンプレートの ID を補完候補として表示します。

仕組み​

テンプレートは説明に過ぎません。生きているモブは、スポナー、自然スポーン、Spawn a mob アクション、または spawn コマンドが要求したときに作成されます。それ以降、モブは、トリガーに割り当てられたスキルを実行し、死亡すると、ドロップの宣言を抽選します。すべてのステップは TypeWriter のイベントも発火するため、クエストとダイアログは、戦闘の経過を追うことができます。

スキルとトリガー​

テンプレートの skills リストのエントリーは、skillId または skillId~trigger と書きます。ID は、btc_mob_skill エントリーの ID(または名前)です。トリガーは、モブがそれをいつ実行するかを示します。onSpawn、onAttack、onDamaged、onDeath、onKill、onDespawn、onInteract、onTeleport、onExplode、onRanged、onProjectile、または、繰り返しのスキルを表す onTimer:<ticks> です(onTimer:5s のように秒単位も受け付けられます)。トリガーのないスキルは、モブが発生させるすべてのトリガーで実行されるため、必ずトリガーを付けてください。conditions はすべてのスキルの行をフィルタリングし、targeters は、それらが共有するターゲットを選びます。

ドロップの宣言​

ドロップテーブル、またはテンプレートの drops リストの各行は、次のいずれかです。

  • 数量と確率が任意の、バニラの素材。たとえば BONE 2 0.5。
  • 数量と確率が任意の、btc_mob_item エントリーの ID または名前。
  • 経験値を表す exp 10 または exp 10to20。
  • BTC カタログのアイテムを表す btc:<item_id> [amount or range] [chance] [+n/m]。+n/m のトークンがない場合、数量はモブのレベルに応じて、レベル 1 の x1 からレベル 100 の x6 まで増加します。
  • 別のドロップテーブルの ID。その場で展開されます。

不明な宣言は、警告としてログに記録され、スキップされます。

NPC​

NPC は、クライアント側のエンティティとしてプレイヤーに表示されるテンプレートです。BtcMob NPC definition は、mobType でテンプレートを指定し、表示名、そのオフセット、tick の有無を設定します。BtcMob NPC instance は、spawnLocation、任意の activity、group、追加の data で、それを配置します。NPC のデータエントリーは、モデルの見た目を変更します。プレイヤーごとのボーンの表示、ボーンを別のモデルのものに入れ替えるアタッチメント、昼と夜のための ModelEngine のスタンス、歩行速度です。

コマンド​

すべてのコマンドは /tw btcmobs の下にあります。短いエイリアスの /tw btc と /tw btcmobsadmin は、同じツリーを実行します。すべてのノードには、btcmobs.command.<node> 形式のパーミッションがあります(下記参照)。

コマンド説明
/tw btcmobs mobs [list]読み込まれているモブテンプレートを一覧表示します。
/tw btcmobs mobs listactive現在生きているモブを一覧表示します。
/tw btcmobs spawn <template> [level] [amount]自分の隣にテンプレートをスポーンさせます(数量は 1 から 64)。summon と mobs spawn は同じ意味です。
/tw btcmobs mobs kill <template> [radius]自分の周囲にいる、テンプレートのモブを倒します(デフォルトの半径は 48)。
/tw btcmobs mobs killall [radius]自分の周囲にいるすべての BTC モブを倒します(デフォルトの半径は 48)。
/tw btcmobs mobs info見ているモブの情報を表示します。
/tw btcmobs skills [list]読み込まれているスキルを一覧表示します。
/tw btcmobs cast <skill>自分自身からスキルを使用します(skills cast、test cast、profile cast は同じ意味です)。
/tw btcmobs spawners [list]スポナーエントリーを一覧表示します。
/tw btcmobs spawners info <id>1 つのスポナーを表示します。
/tw btcmobs spawners force <id> [amount]条件と上限を無視して、スポーンを強制します。
/tw btcmobs spawners reloadネイティブエントリーを再読み込みします。
/tw btcmobs reloadネイティブエントリーを再読み込みします。
/tw btcmobs menuモブカタログメニューを開きます(最初の 45 件のテンプレート、アルファベット順)。
/tw btcmobs items list と get <item> [amount]カタログのアイテムを一覧表示する、または受け取ります。
/tw btcmobs items give <player> <item> [amount]カタログのアイテムを、プレイヤーに渡します。
/tw btcmobs signal <uuid> <signal>アクティブなモブにシグナルを送信します。
/tw btcmobs test mechanic, condition, targeter <line>スクリプトの 1 行を、テストとして実行します。
/tw btcmobs test on <uuid or nearest> <line>特定のアクティブなモブに対して、スクリプトの 1 行を実行します。
/tw btcmobs import mythic [path]MythicMobs のパックを BTCMobs のページに変換します(デフォルトのフォルダーは、TypeWriter のデータフォルダー内の import/BtcMob)。migrate mythic は同じ意味です。
/tw btcmobs audit, coverage, registrydump, variables, placeholders読み込まれているテンプレート、スキル、スポナー、レジストリに関する診断。
/tw btcmobs debug, version, modeldiag実行時の診断、バージョン、近くのモブの BetterModel の状態。

パーミッション​

パーミッション許可される内容
btcmobs.command.main/tw btcmobs のルートとそのヘルプ。デフォルトで全員に付与されます。
btcmobs.command.versionversion と v。デフォルトで全員に付与されます。
btcmobs.command.mobs, .mobs.spawn, .mobs.kill, .mobs.killall, .mobs.info, .mobs.listactive, .mobs.statsmobs と spawn のコマンド。
btcmobs.command.skills, .skills.castスキルの一覧表示と使用。
btcmobs.command.spawners, .spawners.list, .spawners.info, .spawners.force, .spawners.reloadspawners コマンド。
btcmobs.command.items, .items.list, .items.get, .items.giveitems コマンド。
btcmobs.command.menu, .menu.openカタログメニュー。
btcmobs.command.import, .migrate, .migrate.mythic, btcmobs.importMythicMobs のインポート。
btcmobs.command.test, .test.mechanic, .test.condition, .test.targeter, .test.casttest コマンド。
btcmobs.command.audit, .variables, .debug, .modeldiag, .signal, .reload, .profile対応する診断コマンド。
btcmobs.command.admin, btcmobs.admin管理用のルート(/tw btcmobsadmin)。
btcmobs.command.*, btcmobs.*上記のすべて。

btcmobs.command.main と btcmobs.command.version を除くすべてのパーミッションは、デフォルトではオペレーターのみです。modeldiag コマンドは、エクステンションが登録する btcmobs.command.modeldiag(デフォルトはオペレーター)を確認します。

プレースホルダー​

プレースホルダーは、MiniPlaceholders にのみ公開されます。公開に PlaceholderAPI は使用されません。構文は <name:argument:argument> です。

プレースホルダー戻り値
<btcmobs_caster> と <btcmobs_caster:field>テンプレートの ID、またはプレイヤーに紐付いたモブのフィールド: name、type、level、hp、maxhp、percent、uuid。
<btcmobs_looking> と <btcmobs_looking:field>プレイヤーが見ている BTC モブ(視線の射程まで)の、同じフィールド。いない場合は空。
<btcmobs_var:name>BTCMobs のグローバル変数の値。
<btcmobsdamage_top:BOSS:POSITION:field>ボスのダメージランキングの、ある順位にいるプレイヤー。フィールド: name、damage、raw_damage、percent、uuid。
<btcmobsdamage_self:BOSS:field>閲覧しているプレイヤー自身のランキング。フィールド: damage、raw_damage、percent、position。
<btcmobsdamage_participants:BOSS>, _total, _max_health, _last_updateボスのダメージランキングの合計値。

エントリー​

57 件のエントリー(拡張機能のソースから生成)。

アクション7
イベント9
目標2
ファクト9
シネマティック5
エンティティ2
エンティティデータ4
インタラクション境界3
変数8
アーティファクト1
マニフェスト1
定義6

トラブルシューティング​

スポナーが何も起こさず、ログに "references unknown mob template" と表示される。 mobType は、エディターに表示される名前ではなく、btc_mob_template の ID でなければなりません。テンプレートエントリーから ID をコピーしてください。同じルールは、btc_natural_spawn、スポーンとデスポーンのアクション、NPC デフィニションにも当てはまります。

スポナーが上限に達しない、または 1 で止まる。 2 つの角が同じ点であるリージョンは、defaultMaxMobs を 1 に制限します。上限は、そのスポナーが所有するモブを、場所を問わずカウントします。スポナーが機能するのは、プレイヤーがリージョンの中心から defaultActivationRange 以内にいる間のみです。

スポナーが一部のプレイヤーに対して何もしない。 リージョンの近くにいるプレイヤーごとに、スポナーはワールド、次に conditionLines、次に criteria を確認し、リージョン、クールダウン、スポーンを見る前にすべてが通る必要があります。criteria を満たさないプレイヤーはスキップされます(診断行「criteria did not match」がプレイヤーごとに一度だけログに記録されます)。criteria が、すでにスポーンしたモブを取り除くことはありません。...Fact フィールド(maxMobsFact、mobsPerSpawnFact など)は、引き続き数値のデフォルトを上書きします。

自然スポーンの置き換えが発動しない。 このエントリーが置き換えるのは、サーバーがすでに生成するスポーン(自然、チャンク生成、デフォルト)のみです。ワールドの paper-world-defaults.yml の spawn-limits が 0 の場合、バニラのクリーチャーはスポーンせず、何も置き換えられません。最初に一致したルールが優先され、maxNearby を 0 にすると、上限なしを意味し、モブがゼロという意味ではありません。

モブが Attack や Death のアニメーションをループ再生する、または歩かない。 モデルが取り付けられたとき、modelAnimations がループ再生するのは待機タイプのアニメーションだけで、そこに置かれた攻撃や死亡の名前は無視されます。単発のアニメーションはテンプレートの modelLifecycle(スポーン、攻撃、被弾、死亡)で設定し、対応するタイミングで再生されます。死亡アニメーションは、モデルが消える前に最後まで再生されます。モデルに存在しない名前はテンプレートごとに一度だけログに記録され、そのタイミングは無音のままです。歩行アニメーションは、まだモブによって駆動されず、NPC 側のみです。

スキルやドロップが通知なしに欠けている。 サーバーログを確認してください。不明なドロップの宣言、不明なアイテム、無効な確率は、警告として記録され、スキップされます。ID が btc_mob_skill エントリーと一致しない skills のエントリーは、モブがそれを使用するときにログに記録されます。

On BTCMob despawn が発火しない。 このイベントは、追跡中のモブが死亡せずにワールドから去り(自然なデスポーン、プラグインによる削除、ワールド外への落下)、radius ブロック以内にプレイヤーがいるときに発火します。モブが死亡したとき(On BTCMob die を使用)、チャンクがアンロードされるだけのとき(再ロード時にモブは再び取り込まれます)、Despawn アクションや /tw btcmobs mobs kill で取り除いたときには発火しません。mobName が空の場合はすべてのモブに一致します。spawn、die、damage、interact の各イベントも同様です。

関連エクステンション​

  • BetterModel — BetterModel は、BTCMobs がモブと NPC のモデルに対して制御できる、2 つのモデルバックエンド(modelProvider)のうちの 1 つです。