【Minecraft】サボテン自動収穫機の効率検証
はじめに
Java 版の Minecraft 1.20.4 において、効率の良いサボテンの自動収穫機構を作るための検証を行いました。
前提: サボテンの性質と自動収穫機の基本
サボテンは砂の上にのみ植えることのできる植物です。
ただし、サボテンの隣りに何かのブロックがあると植えることはできません。また、サボテンの隣りに何かのブロックを設置するとサボテンは破壊され、アイテム化します。
サボテンは時間が経つと成長し、一段上に伸びます。この時、成長したサボテンの隣りにブロックがあった場合、成長直後に自動的に破壊されます。
自動収穫機構は、このサボテンの性質を利用しています。
また、サボテンには、ぶつかったアイテムを消滅させる性質もあります。
つまり、自動収穫機構の効率を上げるためには、アイテム化したサボテンがサボテンブロックになるべくぶつからないように回収する必要があります。
アイテム化したサボテンは、水流を使って集め、ホッパーで回収します。
施設を大型化する場合は、サボテンを植える層を上へ上へと積み上げるのが一般的です。
検証のポイント
検証にあたり、次の4つのポイントが重要と考えました。
サボテンのレイアウト
サボテンをアイテム化させる障害ブロックの種類
砂を乗せる土台ブロックの種類
積層化する時の水流の位置
サボテンのレイアウト
サボテンを密集させすぎると、アイテム化した時に隣りのサボテンにぶつかって消滅してしまいます。
逆にサボテンの量を減らしすぎると、そもそもの収穫量が減ってしまいます。
そのため、適度なレイアウトを選ぶことが重要です。
サボテンをアイテム化させる障害ブロックの種類
サボテンを破壊するため、植えたサボテンの隣りの上の段に障害ブロックを配置します。
この障害ブロックの当たり判定が大きければ、アイテム化したサボテンが隙間に落ちにくくなります。逆に小さければ、アイテム化したサボテンが隣りのサボテンにぶつかりやすくなります。
よく使われる障害ブロックは、糸や開いたフェンスゲート、ガラス板、フェンス、石壁です。
糸や開いたフェンスゲートには、当たり判定がありません。
ガラス板は、当たり判定が小さいです。
フェンスは、中くらいの当たり判定です。
石壁は、当たり判定が大きいです。
砂を乗せる土台ブロックの種類
積層化する場合、サボテンを植える砂を乗せるための土台となるブロックを置く必要があります。
土台の当たり判定が大きければ、アイテム化したサボテンが土台に当たりやすくなります。
これにより、上から降ってきたアイテムが土台に当たることで下のサボテンにぶつかりにくくなる可能性や、逆に、破壊されて飛んだアイテムが土台に当たることで飛距離が減って下のサボテンにぶつかりやすくなる可能性があります。
また、障害ブロックと土台ブロックがくっついてしまうと、アイテムが下に落ちる隙間が減ってしまいます。
これらを考慮し、糸、ハーフブロック(上付き)、葉っぱを土台として使います。
積層化する時の水流の位置
一般的に、土台、砂、サボテン、障害ブロック、の4段をひとまとまりとして、上下に層を重ねて施設を大型化します。
その際、一番下の層だけに水流を流して上の層は隙間からアイテムを落とすだけにする方式と、各層に水流を流して特定の穴からアイテムを落とす方式があります。
一番下の層だけに水流を流す方式は、作成が簡単で資材が少なくて済みますが、一方、アイテムがひっかかったり下の層のサボテンにぶつかって消えたりするリスクがあります。
各層に水流を流す方式は、アイテムを無駄なく回収できますが、一方、設計が複雑で資材が多く必要になります。
レイアウトと障害ブロックについての検証
前段のポイントを踏まえ、レイアウトと障害ブロックを変えた10個の施設を作成してしばらく放置し、各施設の収穫量とサボテン1個あたりの平均収穫量を比較しました。
検証結果
密集させたレイアウトよりも、格子状に隙間を空けたレイアウトの方が、施設あたりの収穫量もサボテン1個あたりの平均収穫量も多い
障害ブロックとしてはガラス板が優秀
格子状に障害ブロックで区切るレイアウトが群を抜いて優秀
積層についての検証
レイアウトと障害ブロック、及び、土台や水流の位置を変えた10個の施設を作成してしばらく放置し、各施設の収穫量とサボテン1個あたりの平均収穫量を比較しました。
検証結果
最後に表示した、各層に水を流し、格子状にガラス板で仕切ったレイアウトで、土台をハーフブロックにした物が、施設あたりの収穫量もサボテン1個あたりの平均収穫量も最も優秀でした。
格子状に障害ブロックで仕切ったレイアウトは単一の層としては優秀ですが、各層の水流なしで単純に重ねて隙間から下にアイテムを落とす構造だと、下の障害ブロックにひっかかってしまうことがあり、ロスになります。
各層に水を流し、水源の場所と穴の位置を工夫することで、このロスを無くせるということだと思います。
市松模様のレイアウトは、層を重ねてもやはりほかのレイアウトには敵いませんでした。
隣りのサボテンにぶつかって消える量を、積層の物量でカバーすることはできないということだと思います。
土台は、ハーフブロック > 糸 > 葉っぱ の順で優秀でした。
糸ではアイテムが飛びすぎ、葉っぱでは飛ばなさすぎ、ということだと思われます。
結論
各層に水を流し、格子状にガラス板で仕切ったレイアウトで、土台をハーフブロックにした物が、施設あたりの収穫量もサボテン1個あたりの平均収穫量も優秀でした。
次回は、この検証を基に、サボテン自動収穫機を作ります。