ガーデンドローンステーション
alaindustrial:garden_drone_station
概要
ガーデンドローンステーションは 1×1 のドックブロック(ロボット掃除機のベースステーションのようなもので)、 そこからドローンが離陸し、ステーション周囲半径 4 ブロックの範囲を巡回します。ドローンはエンティティでなく、 ステーション自体の が描画するオブジェクトです — 見た目も動きも飛行装置のように 見えますが、物理的には常にステーションブロックに「属し」、その領域を離れることはできません。
プレイヤーはステーションに種と骨粉を入れ、EU/FE を接続します — あとはドローンが自ら農場を維持します: 空いている土を耕し、適切な土の上の空きマスに種を蒔き、未成熟の作物を骨粉で成長させ、下の土を耕せなく している草や茂みを刈り取り、成熟した収穫物をそのまま出力スロットへ運びます(ワールド内に ItemEntity は発生しません)。計画されていたが未実装の 「作物自動管理」(crop_matron)と「収穫機」(crop_harvester)を置き換えます — 2 つではなく 1 つの ブロックで、メカニクスの重複なしに。
エネルギー
| 項目 | 値 |
|---|---|
| 役割 | バッファ付き消費者 |
| バッファ(EU/FE) | 4000() |
| 最大入力(EU/FE/ティック) | 32(LV) |
| 最大出力(EU/FE/ティック) | n/a(放出しない) |
| 動作あたりの EU/FE | 8() |
ステーションはすべての稼働面で通常の消費者としてエネルギーネットワークに接続します。EU/FE は 実際に実行された動作 — 1 マスの耕起、植え付け、施肥、収穫、除草 — に対してのみ引き落とされ、 電気ヒーターのパターンに倣います:アイドル(範囲内にやることがない — 種/肥料切れ、または全マスがすでに対処済み)は 0 EU/FE で、ステーションはスリープに入り でアイドルスリープに入り、無駄にエネルギーを消費せず、ネットワークの寄生吸い口にもなりません。
加工
ステーションは加工レシピシステムを使いません — 代わりに、(目標が見つかった)各飛行で、 範囲内の 1 マスに対する 5 つの動作のいずれか 1 つを実行します。
| 項目 | 値 |
|---|---|
| レシピタイプ | なし(レシピ型機械でない) |
| 飛行あたりの動作 | 1(1 動作 = 1 マス) |
| 自動取出し | はい(収穫物は直接ステーションの出力スロットへ) |
クワは 3 動作のツールです。 耕起、収穫、除草はクワスロットから耐久値 1 を消費し、クワなしでは実行できません: 動作で消費されるが必須でないツールは、プレイヤーに分かりにくいものです。植え付けと施肥はクワを 必要としません。
クワは使い切ると — スロットが空になります。 ステーションが最後の耐久値を消費すると、クワは 壊れてスロットから消えます — プレイヤー手中と同じように、破壊音とパーティクル付き。これは化粧でなく、 自動化の条件です — 空のスロットはホッパーから新しいクワを受け付け、農場は無人で稼働します。摩耗は バニラ経路のため、耐久(Unbreaking)エンチャントが考慮されます:エンチャントされたクワはステーション でも手中と同じ寿命を持ちます。すでに壊れたクワはスロットが受け付けません — さもなければ永遠に スロットを占拠するでしょう。
動作の優先順位(この順序でチェックされ、最初に合致したものを実行):
- 収穫 — 範囲内の成熟した作物のマス(クワと、ブロックされていない出力が必須)。
- 植え付け —
#minecraft:supports_cropsの土の上の空きマス + スロットに適切な種がある。 - 施肥 — 未成熟作物のマス + スロットに骨粉がある。
- 除草 — 雑草タグの草または茂み(クワと、ブロックされていない出力が必須)。
- 耕起 — 上に何もないバニラの土または草ブロックのマス(クワ必須。耕地に変える)。
この順序により、「農場は自らを維持する」ことが切れ目なく保証されます:耕起が最後の動作でなければ、 プレイヤーが農場を広げた最初の瞬間に約束が崩れていました。除草がその直前にあるのは、耕すべき土の 上のマスをふさいでいるのがまさに雑草だからです。
除草()。 ドローンは、そのままでは下の土をいつまでも耕せなくする野生の植物を刈り取ります。 これがなければ、沼地やサバンナの畑は永遠に草だらけのままです。雑草とは # タグのブロックです:背の低い草と背の高い草、シダと大きなシダ、 枯れ木、茂み、ホタルの茂み、背の低い枯れ草と背の高い枯れ草、落ち葉、そして(ゲームに存在する場合は) 赤色の低木。リストはタグであってブロックのクラスではありません:ゲーム内の植物は作物も本 Mod の コクサギスや支柱も含めてすべて同じクラスで、クラスで判定すれば農場そのものを除草してしまいます。 決して触れないもの: 花、苗木、葉、キノコ、ツタ(プレイヤーが植えたか残したもの)、そしてドローンが 作物として収穫するもの — 作物、コクサギスとその根、支柱。タグはデータパックで拡張できます。
- コスト — 他の動作と同じく、クワの耐久値 1 と EU/FE。これはバニラからの 意図的な逸脱です: プレイヤーの手ではクワは草で摩耗しませんが、ここでは除草のたびに耕起や収穫と 同じくツールを使う作業になります。
- 2 ブロックの植物(背の高い草、大きなシダ)は 1 回の動作で丸ごと取り除かれます:対象は常に 下半分で — ドロップを出すのは下半分だけ — 上半分も一緒に消えます。
- ドロップ — ハサミなしで手で壊したときに植物が出すもの(草からは 8 回に 1 回小麦の種、枯れ木からは 棒、ホタルの茂みはそれ自体、落ち葉)— はステーションの出力スロットに入り、ワールドに
ItemEntityは 現れません。植物はバニラと同じ破壊音とパーティクルを出します。 - 何も落とさない雑草もあるが、それでも除草する()。 茂み、背の低い枯れ草、背の高い枯れ草は ハサミなしでは何も落としません(26.3 のルートテーブルではハサミかシルクタッチが条件)。草とシダも 8 回に 7 回は何も落としません。刈るのはドロップのためではなく、耕すための空いたマスのためで、クワの耐久値は 1 マスにつき 1 回だけ消費されます。
- 出力がブロックされると、収穫と同じく除草も止まります — 下の「出力のブロック」を参照。常に何かを 落とす雑草(ホタルの茂み、落ち葉)は出力を埋めることがあり、そういう畑のステーションは中身を空ける 必要があります。
出力のブロック()。 成熟した作物や雑草のドロップが出力スロットに入らない場合、作物や雑草は その場に残り、クワも EU/FE も消費されず、ステーションは出力がブロックされたことを記憶します。その間は 収穫も除草も行わず、ドローンはそうしたマスへ飛びません — この修正までは、状態「稼働中」のまま同じ成熟 作物へ延々と飛び続けていました。4 つのスロットすべてがフルスタックのときは、試すまでもなく出力がブロック されます(何も入らないため)。植え付け、施肥、耕起は続きます。それらにも仕事がなく、範囲内に行き場のない成熟作物か雑草があれば、画面には 「出力が満杯」と表示されます(手入れの済んだ農場ではブロックは何も止めていないため、状態は「手入れ完了」か 「資材切れ」のままです)(「資材切れ」と同じ琥珀色 — プレイヤーが直すものだからです。種スロットが 空のときは「出力が満杯」が優先されます。優先度が最も高い動作である収穫を止めているからです)。出力 スロットから何かが取り出されると — 手で、Shift クリックで、ホッパーやパイプで — ブロックはすぐ解除されます。 ステーションは出力内のアイテム数をブロック時のスナップショットと比べるので、どの取り出し方でも両ローダーで 同じように働きます。スリープ中のステーションは次の完全なティックで気づき、遅くとも 40 ティック後です。代償: 一度失敗すると、別のマスのドロップならまだ入る場合でもステーションは空けられるのを待ちます — ランダムな ドロップを事前に当てるには、ルートテーブルを余分に振る必要があるからです。状態はステーションと一緒に 保存されます。この修正より前に保存したワールドは出力が開いた状態で読み込まれ、最初の失敗で再び ブロックされます。1 マスのドロップが空の出力にすら入らない場合(4 スタック超)は取り出すものがないため、 ステーションはそのブロックをアイドル時に自分で解除し、40 ティックに 1 回再試行します。
植え付けの土はバニラのタグであってブロックではない()。 植え付け(および 範囲キャッシュのマス選別)は #minecraft:supports_crops に含まれる任意のブロックを土と みなします — 作物自身がブロックの上に立てるかを判断するのと同じタグです。そのため ドローンと作物は「何を土とみなすか」で食い違いません:Farmer's Delight の rich soil farmland(およびこのタグに追加された任意のモッドの土)を、ドローンはネイティブの 農地と同じように世話します — 外来 id を知る一行もないままに。耕起はこのタグに従い ません:バニラの耕地に変えられるのはバニラの土と草だけで、外来の土をドローンが掘り 返すことは決してありません — rich soil はプレイヤーが骨粉で得たものであり、ステーションが それを破壊してはなりません。
飛行。 動作は目標選択の瞬間でなく、ドローン到着時 に起きます:ドローンは経路 1 ブロックあたり = 11 ティックの速度でマスへ飛び、そこで初めて作業します。 腕は MIN_FLIGHT_TICKS = 26 ティックより短くなりません — さもなければ隣接マスを目が気づくより 早く横切ることになります。ドックへの帰路は目標への往路と同じ時間で、さらに LANDING_PAUSE_TICKS = 6 ティックだけドローンは処理済みマスに留まります(下記参照)。そのため 1 サイクル「動作」は 最低 58 ティック(≈2.9 秒)で、ティックではありません:ステーションは瞬間でなく機械のテンポで 農場を手入れします。これがなければ全農場を数ティックで処理してしまい — 視覚的に機械が作業している のでなくテレポートと読めるものでした。到着時、タスクは 再検証 されます:飛行中にワールドが 変わり得るため(プレイヤーが手で収穫、ピストンがブロックを動かす)、目標は信頼でなく再検証されます。
飛行音。 ドローンが空中にある間、静かなループするプロペラ音が聞こえ、それは ドローン自体から 発生します — 音源がステーションに固定でなく、ドローンと一緒に移動します。これが正しい姿です: ドローンは数ブロック離れ、頭上を直通し、着陸場からの羽音であればエラーと読めるでしょう。可聴範囲 8 ブロック、音量 0.22 — モッドで最低です:これは自らプレイヤーの元へ来る唯一の音で、ほぼ全稼働サイクル 鳴り続ける唯一の音です。ドック上と、ドローンが処理済みマスに留まるティックでは静寂です。
耕起音。 ドローンはマスを耕す際、プレイヤーが手でクワを使うのと同じバニラのクワ音 (minecraft:item.hoe.till)を — 同じ音量、同じピッチで — 出します。クワ固有の音があるのは耕起だけです: 明確なバニラ基準があるのは耕起のみで、植え付け、施肥、収穫には基準がありません。除草は、植物そのものが 壊れるときの音で鳴ります。
作業を終えると、ドローンは マスに 6 ティック留まり、それから戻り始めます。この一時停止がなければ 動作と帰路の腕が同じティックに始まっていました:ドローンが農場に触れて離れるのが 1 フレーム内で、 それは機械が作業しているのでなく跳ね返るように読めました。一時停止は遠端にのみあります — ドックに あれば動作が起きるティアをずらすことで、すべてのテストシナリオが数えるまさにそのティックです。
走査範囲。 ステーション周囲の半径 4 ブロック()は、標準的な 9×9 の畑 (2 × 4 + 1)ちょうど 1 面です:ドックはその中心に立ち、どの隅にも届きます。これは 第 1 ティア の ドローンで、その 1 面を世話します — 次のティアには伸びしろが残ります:複数の畑を同時に、あるいは 1 面より広い範囲へ。範囲内の目標リストは キャッシュ され、範囲内のブロック更新で無効化 されます。キャッシュの完全再構築は = 20 ティックに 1 回以下です。 範囲内の任意の位置へ触れる前に level.isLoaded のチェックが必須 — ステーションは未ロードチャンクの 同期読み込みを強制しません。
作物の成熟度 は 大鎌 から再利用される共通の述語で決まります(収穫準備ができている かを決める同じクラス — カボチャ/スイカの茎、サボテン/サトウキビの基部、ベリーの低木、バニラの CropBlock は両方の場所で同じように処理され、エッジケースの乖離リスクなし)。
施肥 は標準的なバニラの BonemealableBlock インターフェース(トレリス が 綿用に使うのと同じ 3 つのメソッド)経由で適用されます — 効果は手動の骨粉と同一ですが、プレイヤーや クリックを模倣するパーティクルはありません。
プレイヤーなしの収穫。 ステーションは ServerPlayer 経由でブロックを壊しません(プレイヤーが いないため) — 代わりに server-side で成熟した作物のドロップを計算し、それを出力スロットに入れ、 完全に成功した場合にのみ作物ブロックを直接撤去します。その際 ItemEntity もブロック破壊イベントも 作成されません — ポンプが水源を枯渇させる際と同じ意識的な妥協です。
インベントリ
| スロット | 受け入れ | 数 |
|---|---|---|
| 種(0) | 該当作物の種タグ付きアイテム | スタックまで |
| 肥料(1) | minecraft:bone_meal | スタックまで |
| ドローン(6) | — これがないとステーションは動かない | 1 |
| クワ(7) | 任意のクワ(#minecraft:hoes)。耕起、収穫、除草で消費 | 1 |
| 出力 1–4(2–5) | ステーションによる自動挿入のみ(収穫物と除草のドロップ)。外部からの手動/自動挿入は不可 | 各スタックまで |
出力スロットが 1 つでなく 4 つ — 成熟した作物は 1 動作で複数タイプのアイテムを出すことがあるため (例:小麦は小麦本体と小麦の種を別々に)。モッドの機械基盤モデルで混合内容の単一スロットはサポート されていません。出力スロットへのドロップ挿入は 2 パス(「全スタックの容量をシミュレート → 完全成功時 のみ改変」)で、出力が満杯の際の収穫物の部分損失はありません。
インターフェース
- タイプ:container(ステーションの GUI)。
- 表示:エネルギーバッファ(バー)、種/肥料/出力スロット、画面上のステーション状態行(資源なし / 稼働中 / サイクル完了 / 電力なし / ドローンなし / 出力が満杯)。これを遠くから読めるようにするドローンモデルの 状態灯は計画中( 第 3 段階)で、まだ実装されていません。
ブロックの性質
ドックステーションは完全な立方体でありません:薄い 1×1 ブロックのスラブで、照光された着陸輪郭、 2 つの充電接点、四隅の黄色いランプを持ちます。ドローンはその上に で描かれ、 ステーションと別個の物理的当たり判定/ヒットボックスはありません。
| 項目 | 値 |
|---|---|
| 形状 | 低い高さのスラブ(完全な立方体でない。ブロック下半のオクルーダ) |
| 硬度 | 3.0 |
| 爆発耐性 | 6.0 |
| ツール | ツルハシ |
| NBT エネルギードロップ | なし(バッファ/インベントリ/ドローン状態は NBT アイテムドロップでなく ValueInput/ValueOutput 経由で保存) |
レシピ
- クラフト:(鉄/鋼の筐体、電子回路、 「中に集める」ホッパー、ネジとしての銅)。
- 加工レシピはありません — ステーションはアイテムを加工しません。
進行
- ティア:LV。
- 電源:任意の LV ソースから、例えば発電機。
- 置き換え(バックログ、コードなし):「作物自動管理」(
crop_matron)と「収穫機」(crop_harvester) 2 つの定置ブロックでなく 1 ブロックで同じ結果。 - 必要:クラフト用の電子回路(モッドの大部分の LV 機械と同様)。
関連項目
- スプリンクラー — 同じ畑に並ぶ隣人で、役割は重なりません。ステーションは一点働き:1マスに1アクション、骨粉とEUで支払い、耕し、植え、除草し、収穫します。スプリンクラーは受動的な範囲:土にも作物にも触れず、周囲で育つものすべてを速めるだけで、支払いは養液です。両者は並べて置くためのものです。
- 大鎌 — 再利用可能な作物成熟度述語の供給源。
- トレリス — モッド内の既存の
BonemealableBlockの先例。 - インキュベーター — インデックスでタグ検証するマルチスロットインベントリと 基盤より広い
ContainerDataの見本。 - ポンプ — リミット付き範囲走査の見本と、機械が自身のティックからプレイヤー なしでワールドブロックを変更する唯一の先例。
- 電気ヒーター — 「有用ティックでのみ EU/FE」(需要駆動)の見本。
クラフト
定型クラフト
▶
ガーデンドローンステーション