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

Machine

BTC Sky の島向けのデータ駆動マシン:レシピ、エネルギーグリッド、ティア、アップグレードモジュール、ホログラム。

プライベートv0.1.1経済とクラフト
必要TypeWriter0.9.0-beta-177 (BTC build)Quest extensionRPG Bundle (RPG Core)BTC SkyBTCMobsGUI extension (GuiAndDialogs)CraftEngine任意MiniPlaceholders任意

BornToCraft ネットワーク向けに作られた拡張機能です。参照用にドキュメント化されており、配布されていません。

概要​

Machine は、マシンの設計を設定に変えます。1 つの Machine Definition エントリが、マシンの 1 つの種類を記述します。入力、出力、燃料、アップグレードのスロット数、何を処理するか、燃料とエネルギーに何が必要か、見た目、ホログラムの内容、プレイヤーや島ごとに何台まで設置できるかです。拡張機能は定義を読み取り、設置されたすべてのコピーを動かします。かまど、粉砕機、丸石ジェネレーター、モブグラインダーは、コードではなくエントリです。

マシンは BTC Sky の島に属します。マシンは、プレイヤー自身の島にしか設置できず、プレイヤーごと、島ごとの制限があり、そのティアは島のリサーチツリーによって解放されます。エネルギーと液体は、島のディメンション内で共有されます。ジェネレーターとセルがプールを作り、そのディメンション内のリンクされたすべてのマシンが、そこから引き出します。

これは、BTC ビルドの TypeWriter(BTC Core、Paper または Folia)の非公開の拡張機能で、参考のために文書化されています。実行時は Folia に対応しており、スロットはメモリ上にキャッシュされ、非同期で保存されます。

機能​

  • マシンごとに 1 エントリ — スロット、レシピ、燃料、エネルギー、見た目、ホログラム、制限、オートメーションは、1 つの Machine Definition にまとまっています。
  • 27 種類の処理タイプ — レシピマシン(精錬、粉砕、製材、混合、醸造など)、ストレージ、ロジスティクス、範囲マシン、エネルギーマシン、スポナー、グラインダーなど。
  • 複数入力とランダムなレシピ — 追加の入力と出力、確率による出力、液体の入力と出力、カタログのアイテム、バニラのポーション。
  • 共有のエネルギーグリッドと液体タンク — セル、ジェネレーター、タンクは、島のディメンションごとにプールされます。マシンをグリッドから切り離すこともできます。
  • ティアとアップグレードモジュール — BTC Sky のリサーチで解放される恒久的なティアに加え、それと重なる、取り外し可能なモジュール(速度、収量、幸運、範囲、フィルター、容量、液体燃料)。
  • 島の保護と制限 — 自分の島への設置、建築フラグ、プレイヤーごと、島ごと、ディメンションごとの上限。
  • レッドストーンとホッパー — レッドストーンモード、排出、コンパレーター出力、完了パルス、ホッパーによる搬送。
  • ホログラム — 各マシンの上に、進行状況バーを含むステータステキストを、完全な MiniMessage 形式で表示します。
  • ダッシュボードメニュー — ディメンション内のすべてのマシンを、状態、エネルギー、リンク状態とともに一覧表示するメニュー。
  • 永続化 — 設置されたマシン、インベントリ、エネルギー、進行状況は、Machine Data Artifact に保存されます。

インストール​

  1. BTC ビルド(Paper または Folia 上の BTC Core)で TypeWriter をインストールします。
  2. Machine が依存する拡張機能をインストールします。Quest、RPGBundle(RPG Core)、BTC Sky、BTCMobs、GuiAndDialogs(共通の GUI レイヤー)です。
  3. 任意: 定義が FURNITURE または CUSTOM_BLOCK の見た目を使う場合は CraftEngine を、プレースホルダーを使うには MiniPlaceholders をインストールします。
  4. Machine の JAR を plugins/Typewriter/extensions/ に置き、サーバーを再起動します。
  5. レッドストーンのコンパレーター出力と完了パルスは、BTC Core がレッドストーンの発信を提供している場合にのみ動作します。

はじめに​

鉄鉱石をインゴットに精錬するかまどを作成します。

  1. TypeWriter の Web パネルで static ページを開き、Machine Data Artifact を追加します。設置されたすべてのマシンを保存します。その後で artifactId を変更しないでください。保存されたマシンが失われます。
  2. 同じページに Machine Definition を追加します。name を付け、processingType は SMELTING のままにします。
  3. storageRef に、手順 1 のアーティファクトを設定します。
  4. recipes に、1 つのレシピを追加します。inputMaterial を IRON_ORE、outputMaterial を IRON_INGOT、outputAmount を 1、cookTime を 200(ティック。つまり 10 秒)にします。マシンが燃料を燃やす必要がある場合は、fuelCost を 1 以上のままにします。
  5. fuelTypes に、burnTime と fuelValue を持つ COAL を追加します。
  6. spawnItem に、プレイヤーがマシンを作るために設置するアイテムを設定します。定義には spawnItem または vanillaBlock が必要で、ないとパブリッシュ時に拒否されます。
  7. 任意: 島ごとのコピー数を制限するには、perIslandLimit を設定します。
  8. パブリッシュします。自分の島にアイテムを設置すると、ホログラムとともにマシンが現れ、右クリックでメニューが開きます。
バニラのブロックを変換する

vanillaBlock(たとえば BREWING_STAND)を設定すると、定義がそのバニラのブロックを引き継ぎます。設置すると、代わりにマシンが作られます。バニラの変換は、設置制限の警告の対象外です。上限を設けると、バニラのブロックにも上限がかかってしまうためです。

仕組み​

マシンは、定義(エントリ)とインスタンス(ワールドに設置されたコピー)からなります。定義は実行時に変化することはなく、各インスタンスが、自身のインベントリ、エネルギーの充電量、進行状況を保持します。

定義のモデル​

Machine Definition のすべてのフィールドは、次のグループのいずれかに属します。

グループフィールド制御する内容
タイプprocessingType, behaviorsマシンが何をするか。behaviors は任意で、空の場合はタイプから導出されます。
スロットinputSlots, outputSlots, hasFuelSlot, upgradeSlots, essenceSlots, filterSlots, shearsSlots, maxPerSlotインベントリのレイアウト。マシンのレイアウトは 54 スロットまでです。
レシピと燃料recipes, fuelTypes何が入り、何が出てくるか、どれくらい時間がかかり、何が必要か。
エネルギーと液体energyCapacity, energyGenerationPerTick, liquidTankCapacity, liquidFuelNameプールへの寄与と、液体の扱い。
進行tiers, allowedUpgrades, upgradeSpecs恒久的なティアと、取り外し可能なモジュール。
見た目spawnItem, visualType, furnitureId, customBlockId, alignWithPlayerYaw, hologram*アイテム、モデル、ホログラム。
設置machineLimit, perIslandLimit, islandLimitUpgradeKey, dimensionScope, vanillaBlock誰が、どこに、何台まで設置できるか。
オートメーションhopperInterval, hopperTransferAmount, redstoneMode, ejectWhenPowered, redstoneComparatorOutput, redstonePulseOnComplete, redstonePulseTicksホッパーとレッドストーン。
永続化storageRef, guiStorageRefインスタンスと STORAGE の内容が保存される場所。

処理タイプ​

ファミリータイプ
recipes で動くレシピマシンSMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC
生産GENERATOR(入力なし。時間とともにレシピの出力を生産します。エネルギーコストは任意)
ストレージとロジスティクスSTORAGE, SORTING(各フィルタースロットが 1 つの面を担当)、CONVEYOR(方向のあるベルト)
範囲マシンVACUUM(vacuumRange)、SHEARING(shearRange、shearInterval、shearsSlots)
エネルギーENERGY_CELL, ENERGY_GENERATOR, CHARGING(chargeables、chargeRatePerSecond)
エンティティASSEMBLER(assemblerMode が SPAWN または COLLECT、assemblerEntityType、assemblerMobId、assemblerIngredients、assemblerEnergyCost、assemblerInterval、assemblerRange、spawnerUpgrades)、MOB_GRINDING(grinder* のフィールド)、EXPERIENCE_TANK(experienceCapacity)
特殊CONTROL_PANEL(panelOpenCommand / panelAltCommand を実行します。拾い上げることはできません)、TRANSMUTATION(アイテムの最も高いエンチャントを、経験値の瓶と引き換えに本へ移します)

SMELTING と AUTO_CRAFTING は、レシピが宣言されていない場合、バニラのレシピにフォールバックします。レシピが 0 件の、その他のすべてのレシピマシンは、アイテムを受け付けたまま、永久に待機状態になります。拡張機能は、パブリッシュ時に警告をログに出力します。

エネルギーと液体​

エネルギーは、ENERGY_CELL マシンに蓄えられます。島のディメンションのプールは、リンクされたセルの合計です。ENERGY_GENERATOR マシンがそこに供給し、消費側はそこから引き出します。マシンは、設置されるとすぐに、そのディメンションのグリッドに参加します。Machine Link ボタン(またはダッシュボード)で、グリッドから外したり、再び接続したりできます。オーバーワールドのセルが、ネザーのマシンに供給することはありません。

液体タンクも同じように動作します。リンクされたマシンは、そのディメンションのすべてのタンクに到達でき、リンクされていないマシンは、自身のタンクだけが見えます。レシピは、liquidInputName/liquidInputAmount と liquidOutputName/liquidOutputAmount で、液体を消費または生産します。

ティアとアップグレードモジュール​

  • ティア(tiers)は恒久的です。各ティアは、それを解放する BTC Sky のリサーチノード(researchNode)を指定し、速度、収量、エネルギーの倍率、幸運の確率、追加スロットを設定します。ティアは昇順で列挙してください。解放された最も高いものが、島にあるそのマシンのすべてのコピーに適用されます。researchNode が空のティアは、拒否されます。
  • アップグレードモジュール(upgradeSpecs)は、アップグレードスロットに入れるアイテムです。itemId は BTC のアイテム ID(推奨)で、material はフォールバックです。その type(SPEED、YIELD、ENERGY_EFFICIENCY、FORTUNE、RANGE、FILTER、CAPACITY、LIQUID_FUEL)は、allowedUpgrades に列挙されている場合にのみ有効です。
  • ティアとモジュールは、掛け合わされます。

メニュー​

Machine Menu は、共通の GUI 拡張機能のレイアウト(layoutPool、mainLayoutId、inventoryRows)で作られた GUI です。buttonType が Machine のボタンであるレイアウトのアイテムは、ライブデータで埋められます。

ボタンタイプ効果
MACHINE_OPEN, MACHINE_SMELT, MACHINE_COLLECT, MACHINE_STATUS, MACHINE_FUEL標準的なマシンのアクションとステータス表示。
MACHINE_LINKマシンを、ディメンションのグリッドにリンクする、またはリンクを解除します。
MACHINE_PICKUP開いているマシンを削除し、アイテムとして返します。
NAV_BACK, NAV_CLOSE戻る、または閉じる。
MACHINE_GRID_INFOディメンションの概要: マシン数、蓄えられたエネルギー、容量、生産量、消費量、収支。
MACHINE_ENTRYタグ付きスロットごとに、ディメンション内の 1 つのマシン。左クリックでホログラムを切り替え、右クリックでグリッドへのリンクを切り替えます。
MACHINE_LIST_ARROWマシンリストのスクロール矢印。ページのカウンター付きです。

さらに 2 つのエントリが、セットを完成させます。Open Machine GUI は、定義をメニューのタイトルとサイズに結び付けますが、現在のコードでは、トリガーされてもそのアクションは何もしません。マシンは、右クリックでメニューを開きます。Machine Position Variable は、閲覧者自身の、指定した定義のマシンの、そのディメンション内の位置を返すため、1 つの NPC エントリで、各島のマシンを追従できます。

ダッシュボードが表示するラベル(状態、リンク、ホログラム)は、Machine Dashboard Wording から取得されます。スクロールと、開くコマンドは、Machine Dashboard Command から取得されます。

コマンド​

コマンド説明
/typewriter machine give登録されているすべてのマシンを一覧表示します。
/typewriter machine give <machine>ID または名前の一部(アクセントと大文字小文字は無視されます)で指定したマシンのアイテムを、自分に与えます。
/typewriter machine liquide見ているマシン(6 ブロック以内)が保持している液体を表示します。
/typewriter machine liquide <liquid> <millibuckets>対象のマシンに液体を注ぎます。テスト用のツールです。プレイヤーの操作でタンクを満たすことはできません。

/machine のツリーは、TypeWriter のコマンドの下に登録されるため、/typewriter machine …(エイリアス /tw machine …)と入力します。そのすべてに machine.admin が必要です。エントリは、トップレベルのコマンドとして、さらにコマンドを登録できます。

コマンド説明
/<commandName> scroll <delta>、resetダッシュボードのリストをスクロールする、または巻き戻します。デフォルトの名前は machines です。
/<commandName> dashboarddashboardMenuId で指定されたメニューを開きます。
/<commandName> link <instanceId>、hologram <instanceId>マシンのグリッドへのリンクまたはホログラムを切り替えます。ダッシュボードのスロットが使います。
Machine Test Command の /<commandName>criteria が一致すれば、その triggers を発火します。デフォルトの名前は machine-test です。
Machine Test Platform Command の /<commandName>、clear、bench今いる場所にマシンのショーケースを作成する、それを削除する、または loadbench_* のワールドを用意します。デフォルトの名前は machine-test-platform です。

権限​

権限許可される内容
machine.admin/typewriter machine コマンド。
machine.protection.bypass島の所有権、建築フラグ、制限を無視して、どこでもマシンを設置、破壊、操作します。

プレースホルダー​

TypeWriter を通じて提供される、machine エクスパンションの MiniPlaceholders のタグです。<instance> は、設置されたマシンの ID、<slot> は論理スロットの番号(デフォルトは 0)です。

プレースホルダー返す値
<machine_input:instance:slot>入力スロットにアイテムがあれば true。
<machine_input_name:instance:slot>入力アイテムの素材名。
<machine_input_amount:instance:slot>入力スロットの数量。
<machine_output:instance:slot>出力スロットにアイテムがあれば true。
<machine_output_name:instance:slot>出力アイテムの素材名。
<machine_output_amount:instance:slot>出力スロットの数量。
<machine_tier:instance>アクティブなティアの名前。
<machine_dimension>プレイヤーが立っているディメンションの、読みやすい名前。
<machine_grid_count>, <machine_grid_active>, <machine_grid_stalled>ディメンション内のマシン、稼働中のマシン、停止中のマシン。
<machine_energy_stored>, <machine_energy_capacity>ディメンションの、蓄えられたエネルギーと総容量。
<machine_energy_produced>, <machine_energy_consumed>, <machine_energy_balance>毎秒の、生産、消費、正味のエネルギー。

プレイヤー向けのプレースホルダーは、プレイヤーがいない場合(コンソール)は、空の値を返します。

ホログラムのメッセージでは、%machine%、%tier%、%energy%、%bar%、%percent%、%time_left% が使えます。

エントリ​

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

アクション2
コマンド3
変数1
アーティファクト1
マニフェスト2
その他のエントリー1

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

定義がパブリッシュ時に拒否される。 サーバーログを確認してください。no way to obtain this machine は、spawnItem も vanillaBlock も設定されていないことを、tier[n].researchNode is blank は、ティアにリサーチノードがないことを、the machine layout needs N slots, maximum is 54 は、スロットが多すぎることを意味します。

マシンがアイテムを受け付けるが、動かない。 recipes のリストが空のレシピマシン(たとえば MIXING、GRINDING、BREWING)には、バニラへのフォールバックがありません。バニラのレシピを使うのは、SMELTING と AUTO_CRAFTING だけです。

設置が拒否される。 メッセージは Machine Protection Config から取得されます。マシンは、自分の BTC Sky の島にある必要があり、建築フラグが必要で、プレイヤー、島、ディメンションの制限と dimensionScope が適用されます。CONTROL_PANEL には、ディメンション内に安定化クリスタルが必要です。machine.protection.bypass を持つスタッフは、すべてのチェックをスキップします。

マシンが、リンクされていない、またはエネルギーがないと表示する。 同じディメンションに ENERGY_CELL と ENERGY_GENERATOR のマシンが必要で、マシンがリンクされている必要があります(リンクボタンを使います)。プールがディメンションをまたぐことはありません。

アップグレードモジュールが何も変えない。 その type が allowedUpgrades に含まれている必要があり、CAPACITY が動作するのは、STORAGE、EXPERIENCE_TANK、ENERGY_CELL だけです。LIQUID_FUEL には liquidFuelName が必要です。

ティアが適用されない。 researchNode は BTC Sky のリサーチノードの ID と一致している必要があり、島がそれを解放している必要があります。

メニューが空で開く、または開かない。 mainLayoutId を、layoutPool の ID と照らし合わせてください。一致しない場合、ログにプールの ID が示されます。

家具やカスタムブロックの見た目が失敗する。 FURNITURE と CUSTOM_BLOCK には、CraftEngine と、既存の furnitureId または customBlockId が必要です。

関連する拡張機能​

  • BTC Sky — マシンが依存する、島、所有権、リサーチ、ディメンション。