ねじを巻け!!

いつか思い出すために記事を書いています。

Super Factory Manager(SFM) の使い方(Minecraft MOD 1.20.1)

 この記事では、Minecraft の MOD「Super Factory Manager」の使い方を説明します。

 使用する環境の本体バージョンは1.20.1です。

 このMODは本体バージョン1.12.2版などもリリースされていますが、1.18以前の古いバージョンのものは機能が非常に限られているとの情報があります。筆者は1.20.1版のみ直接確認しており他の本体バージョンについてはわかりませんが、可能であればより新しい本体バージョンの環境での利用をおすすめします。

 

 

Super Factory Manager では何ができるのか

 このMODは、一つのブロックに指示することで、大量の機械やインベントリへの搬出入をおこなえるようになります。

 工業MODや難易度の高いModpackで遊んでいると、複数の機械を(大量に)並べて設置することがあります。バニラでも数百とは言わずとも十数個のかまどを一列に並べて、多量のアイテムを一度に製錬することがあると思います。

 この製錬ラインを作る場合に、何が必要でしょうか。かまどで製錬する場合は「製錬するアイテム」「燃料」「かまどで製錬されたアイテム」を移動するための物流が必要で、ホッパーやホッパー付きトロッコとレール、MODで追加された導管を使う必要があります。MODで追加される電動のかまどを使用する場合でも、燃料の代わりに電力ケーブルを接続する必要があります。すべてのホッパーは向きに気を付けて接続するしなければなりませんし、導管の搬出入設定も一つ一つ実施しなければなりません。

 数個程度の機械であればすべて手作業でも問題ありませんが、数十個と機械を並べてすべて手作業で設定するのは苦痛ですし、間違いも発生しかねません。Mekanismの機械の場合は「設定カード」というアイテムで同じ種類の機械の搬出入設定をコピーペーストすることができますが、導管にはできません。コンフィグレーターを使ってシフトを押しながら導管を右クリックして搬出入設定をポチポチする作業を何回もするのはかなりつらい作業です。

 Super Factory Manager では、このアイテムの搬出入や電力の送信を、一括管理することができます。一度プログラムを設定してしまえば、関連する機械全てに同じ動作を適用できるため、機械を追加設置しても大きな追加作業は生まれません。また、電力やアイテム、液体など異なる種類の材料などをまとめて送ることも可能です。これにより、通常は導管などを通すために間隔をあけて設置せざるを得なかった機械群を、隙間なく詰めて壁のように設置することもできます。

 このMODを使って、スマートな製造・加工ラインを建設しましょう。

 なおSuper Factory Managerでは、プログラミングを使用して搬出入の指示を出します。プログラミングといっても簡単で理解しやすいものなので、怖がらずに挑戦してみてください。コードはコピーアンドペーストが可能で、ゲーム内画面に直接貼り付けることもできます。

 

MODで追加されるもの

 まずはこのMODで追加されるものを紹介します。

Facoty Manager(ファクトリーマネジャー)

Factory Manager

 輸送ネットワークの根幹となるブロックです。一つのネットワーク内に一つだけ必要です。

 なお材料に含まれる黒いブロックは後述の「Invneory Cable」です。チェストは普通の木製のチェストで問題ありません。

Inventory Cable(インベントリケーブル)

Inventory Cable

 ファクトリーマネジャーと各種の機械やインベントリ(チェストや樽など)を繋ぐケーブルです。降るブロックサイズですが、他のMODで追加されるような導管と同じ役割を持っていると考えてください。ただし、これ一つでアイテムや液体からガス、電力まで何でも転送できるうえ、向きは関係なく、機械やインベントリと接して設置していれば機能します。個別の搬出入設定は接続される各機械側とプログラムで対応するため、インベントリケーブルでの搬出入の設定はありません。

 材料のチェストはこちらも普通の木製のチェストで問題ありません。

Factory Manager Program Disk(ファクトリーマネジャープログラムディスク)

Factory Manager Program Disk

 プログラムを記録しておくためのアイテムです。ファクトリーマネジャーを使ってプログラムを書き込みます。

Label Gun(ラベルガン)

Label Gun

 ネットワークの機械やインベントリを設定するために使用します。後述しますがプログラム上で設定したインベントリや機械(変数)がどこにあたるのかを、このラベルガンを使って指定します。

Network Tool(ネットワークツール)

Network Tool

 ネットワークがどのように設定されているかを確認することができます。作成は必須ではありません。

Water Tank(水タンク)

Water Tank

 このブロックに接して2つ以上の水源を設置することで、無限水源として機能します。電源不要です。Thermal Expansionシリーズで追加される「水生成器」と同じです。

 最大で1,000mB/tickの水を搬出できます。作成は必須ではありません。製造ラインなどで必要な場合には使ってもいいでしょう。

 

基本的な操作と流れ

 文字だけで基本的な操作を最初に記載します。文字だけで理解できる場合はこの手順で進めてください。画像付きの詳しい解説は下にあります。
 なおプログラムの実行に電力は不要です。

  1.  まずはファクトリーマネジャーと製造ラインなどで必要な機械、インベントリを設置し、すべてをファクトリーマネジャー本体に接して設置するか、直接接しない場合はインベントリケーブルを使って接続してください。
  2. ファクトリーマネジャーに新しく作成したプログラムディスクを挿入して、左側の「Edit」ボタンから、もしくは Ctrl + E を押してプログラムを作成、保存します。
  3. ラベルガンを持って、設定したファクトリーマネジャーに向かってシフト右クリックをします。「Pullued labels from the manager.」とメッセージが表示されればokです。
  4. ラベルガンを空に向かって右クリックすると、プログラムに書き込んだ変数(機械やインベントリ)の名前のボタンが表示されます。
    一つ選ぶと画面が閉じられるので、該当するブロックをラベルガンで右クリックします。すると対応するブロックがフィルターされて赤紫色に光ります。同じ変数のブロックであれば同じように指定をします。
    この作業を他の変数分繰り返して、すべての機械、インベントリの変数を設定します。
  5. 全て設定し終えたら、ラベルガンを持って、ファクトリーマネジャーを右クリックします。すると「Pushed labels to the manager.」と表示されますので完了です。
  6. プログラム通りに指示が実行されます。

 

詳しいチュートリアル

 ここからは、画像付きの詳しいチュートリアルを始めます。

 

はじめに(共通の手順)

 まずは、お好きな位置にファクトリーマネジャーを設置してください。

ファクトリーマネジャーを設置

 設置したら右クリックでGUIを開いてください。

GUIを開いた状態

プログラムディスクを入れると左側にボタンが表示される

 あとはプログラムを作成して、各機械を設定します。

 この後の手順は各ライン、やりたいこと別に異なります。何をしたらいいかわからない場合には、そのまま読み進めてください。

 

サンプルコードについて

 いきなりプログラムを書けと言われても、言語も指定されていない状況で普通はどうしたらいいかわからないでしょう。

 ファクトリーマネジャーを新しいプログラムディスクを挿入すると、画面左側にいくつかボタンが表示されます。このうち、「View examples」のボタンを押すか、 Ctrl + Shift + E を押すことで、サンプルを見ることができます。このサンプルコードはコピーアンドペーストが可能で、自分のラインにそのまま使うこともできます。

View exapmlesを押してみた

 たくさんのコードが並んでいますが、注意すべきは全てがサンプルコードではないということです。

 例えば1行3列目の「Changelog」は、プログラムではなくこのMOD自体の更新履歴をゲーム内で確認できるようにしているものです。これ自体に機能があるわけではありません。4行1列目の「thanks」も同様に、MOD作者による謝辞が記載されているだけです。1行5列目の「Forget」は『FOREGET』というコマンドの使い方についてを記載したものです。これ自体ですぐに使えるものではありません。

 また、サンプルコードの中にはそのままでは機能しないものもありました。ご自身の目的に合わせてサンプルコードを修正しなければならない場合があります。

 

コード1-1 単純なアイテムの移動

一連の手順

 まずはサンプルコードを利用して、「樽から別の樽へアイテムを送信する」というプログラムを作成しましょう。

 「View exapmles」から「A simple program」を選択すると、以下の画面が表示されます。行番号が表示されていない場合は、左下の「#」のボタンを押すと行番号の表示非表示を切り替えられますので、好みに応じて切り替えてください。

A simple program
NAME "A simple program"

EVERY 20 TICKS DO
    -- on their own, input statements do nothing
    -- there is no item buffer
    INPUT FROM a

    -- all the magic happens here
    OUTPUT TO b
END

 これは、一連の指示のプログラムです。その指示内容は「20ティック(1秒)毎に『a』から『b』へアイテムを送る」です。いろいろ他にも書かれていますが、これらは後で説明します。

 まずはこれをそのまま使ってみます。下の「完了」ボタンを押すと、いま挿入しているプログラムディスクへ、このプログラムがそのまま書き込まれます。また、プログラムをコピーして、一度「キャンセル」を押したあと最初の画面に戻り、「Edit」ボタンを押してペーストすることも可能です。

 

 コードが問題なく書き込まれると、ファクトリーマネジャーのプログラムディスクを入れるスロットの横に「!」が表示されます。これはプログラムに何か問題やエラーがあるため実行できないということです。

 エラーの原因は、『a』と『b』がわからない(定義されていない)からです。今回は「『a』から『b』へアイテムを送る」と指示をしましたが、その『a』と『b』が何を指しているのかは、まだ示していません。そのため『a』と『b』がどこのインベントリを意味しているか分からないため、どこからどこへアイテムを送るべきか定まらず、エラー表示が出ています。

 そこで、『a』と『b』にあたるインベントリとして樽をひとつずつ設置して、ラベルガンを使って『a』と『b』を指定します。

樽を設置
黒いブロックはインベントリケーブル

 ファクトリーマネジャーの左に隣接して一つ目の樽を設置しました。二つ目の樽はファクトリーマネジャーから2ブロック離して設置しました。この間を黒いインベントリケーブルを使って接続しています。これでファクトリーマネジャーのあるネットワークに二つの樽が接続されました。

 次に、ラベルガンを持ってファクトリーマネジャーをシフト右クリックします。

ラベルガンでシフト右クリック

 上の図のように「Pulled labels from the manager.」と表示が出れば、プログラムの情報がラベルガンに反映されたことがわかります。

 続いて、ラベルガンを何もないところに向かって右クリックしてください。すると以下の画面になります。

ラベルガンを空に向かって右クリック

 「a (0)」と「b (0)」が表示されていれば問題ありません。

 ラベルガンで、プログラムで指定したインベントリがワールド上のどれに該当するのかを指定します。

 まずは『a』のインベントリを指定するため、「a (0)」のボタンを押してください。すると画面が元に戻ります。ラベルガンを持ったまま、今回は左側の樽に向かって右クリックをしてください。

ラベルガンで『a』のインベントリを指定

 すると対象の樽が赤紫色にフィルター掛けされます。

 続いて、同じように『b』のインベントリを指定します。右側の樽を『b』として指定してください。

『b』の樽も指定

 『a』と『b』のそれぞれを指定出来たら、最後にラベルガンを持ってファクトリーマネジャーを右クリックしてください。

最後の右クリック

 「Pushed labels to the manager.」とメッセージが表示されたら、ラベルガンで指定した内容がプログラムへ反映されました。準備完了です。

 

 あとは左側の『a』の樽に好きなアイテムを入れてみてください。右側の『b』の樽へと高速で移動されます。

 コード1-1の手順は以上となります。

 

コードの解説

 今回使用したコード(サンプルからコピーアンドペーストしただけのもの)は以下です。

NAME "A simple program"

EVERY 20 TICKS DO
    -- on their own, input statements do nothing
    -- there is no item buffer
    INPUT FROM a

    -- all the magic happens here
    OUTPUT TO b
END

 これらが何を意味しているのか、一行、ないし一部分ずつ見てゆきます。

NAME "A simple program"

 最初にプログラムの名前を設定しています。「プログラムディスク」のアイテム名はここで設定した名前と同じものになります。

EVERY 20 TICKS DO

 これより下に記載するプログラムが、どの間隔で稼働するか設定します。ここでは20ティック毎、つまり1秒毎に1回動作することが指定されています。

 「20」の数字を小さくすることで、技術上はこれより短い間隔で動作させる設定をすることも可能ですが、間隔を短くすると動作が不安定になりやすいそうです。1回あたりの最大輸送スピードはかなり速い(少なくとも1種類のアイテムで樽1つ分27スタックであれば1回の動作で運びきる)ので、必要なければこれ以上間隔を短くしないほうが良いようです。

    -- on their own, input statements do nothing
    -- there is no item buffer

 ここでは、メモが記載されています。HTMLの「コメントアウト」と同じで、Super Factory Managerのプログラムの場合は頭にハイフンを二つ置くことで、それ以降の文はプログラム自体には影響しないようになっているようです。

 「on their own, input statements do nothing」(入力文だけでは何もしない)とあるのは、下の「INPUT FROM a」に関する説明です。「INPUT」というコマンドだけでは何も起こらず、更にその下の「OUTPUT」というコマンドと合わせて使うことで初めて機能することが示唆されています。

 「there is no item buffer」(アイテムバッファは無い)とあるのは、ファクトリーマネジャー本体が持つアイテムバッファ、一時的に保管しておく場所やインベントリは無いという意味です。『a』から『b』にアイテムを送るときにその間にバッファは無いため、『b』のインベントリに空きがなければ『a』からアイテムが送り出されることはないということです。

    INPUT FROM a

 『a』のインベントリから、アイテムを取り出すという意味です。「INPUT」とありますがファクトリーマネジャー自体がインベントリを持っているわけではないので、「ファクトリーマネジャーのネットワーク経路に取り込む(+この後それをOUTPUTする)」というような意味です。

    -- all the magic happens here

 「all the magic happens here」というのは、プログラムの核心がここ(つまりこの下の「OUTPUT」)にあるという意味です。

    OUTPUT TO b

 ここでは『b』のインベントリへとアイテムを送り出すという意味です。プログラムの核心がここにあるというのは、この「OUTPUT」までがなければプログラム全体が動かないという意味です。(繰り返しになりますが)「INPUT」は「OUTPUT」までセットで使われることで機能し、それ単体では機能しません。また「OUTPUT」とありますがファクトリーマネジャーの内部にインベントリを持っていてそこから搬出されるわけではなく、『a』から直接、ファクトリーマネジャーのネットワークを経由して『b』へと送られています。

END

 本プログラムはここまでで書いていること以上で終わり、という意味です。

 特に指定が無い場合は、20ティック毎にこの動作が繰り返されます。『a』のインベントリにあるアイテムは、『b』のインベントリに余裕がある限り送られ続けます。

 

コード1-2 アイテムを送る数を指定する

 コード1-1では、特にアイテムを送る数を指定していませんでした。実はプログラム上では、「最大のスピードで送れるだけ送る」という指示になっていました。

 実際のケースでは1度に送るアイテムの数を指定したい場合もあると思います。そこで、ここでは個数を指定します。

 1-1のコードを編集して使います。ファクトリーマネジャーのGUIを開いて、「Edit」ボタンから編集画面を開きます。

コード 1-2
NAME "A simple program 1-2"

EVERY 20 TICKS DO
    -- on their own, input statements do nothing
    -- there is no item buffer
    INPUT 1 FROM a

    -- all the magic happens here
    OUTPUT TO b
END

 6行目の「INPUT」と「FROM」の間に「1」を追加しました。これにより、20ティック毎に1個ずつ、アイテムが送られます。

 『a』の樽に適当なアイテムを複数入れてみてください。1-1のコードでは数スタックが一気に送られましたが、1-2のコードでは1秒ごとに1個ずつ送られることがわかります。

 

コード1-3 送るアイテムを指定する

 送るアイテムを指定したい場合もあると思います。今回は「石」だけを送るように指定します。

コード 1-3
NAME "A simple program 1-3"

EVERY 20 TICKS DO

    -- on their own, input statements do nothing
    -- there is no item buffer
    INPUT stone FROM a

    -- all the magic happens here
    OUTPUT TO b
END

 6行目の「INPUT」と「FROM」の間に「stone」を追加しました。これにより、石だけが送られ、それ以外のアイテムは送られないプログラムになりました。

時系列は(右)→(左)
石だけが送られる

 図だとわかりにくいですが、『a』のインベントリからは石だけが送られて金インゴットは残っています。

 

コード1-4 送るアイテムを除外指定する

 アイテムを除外して指定したい場合があると思います。今回は「丸石」だけ除外指定します。

コード 1-4
NAME "A simple program 1-4"

EVERY 20 TICKS DO
    -- on their own, input statements do nothing
    -- there is no item buffer
    INPUT EXCEPT cobblestone FROM a

    -- all the magic happens here
    OUTPUT TO b
END
時系列は(右)→(左)
丸石だけは除外しているので送られずに残されている

 『a』のインベントリから、丸石以外のアイテムは送られましたが丸石は残されました。

コード1-5 送るアイテムを正規表現で指定する

 名前に「インゴット」が含まれるアイテムを全て送る場合には、以下のようにします。なおプログラムの機能に影響のないコメントアウトは取り除きました。

コード 1-5-a
NAME "A simple program 1-5-a"

EVERY 20 TICKS DO

	INPUT ".*ingot.*" FROM a

	OUTPUT TO b

END

コード 1-5-b
NAME "A simple program 1-5-b"

EVERY 20 TICKS DO

	INPUT *ingot* FROM a

	OUTPUT TO b

END

 コード 1-5-a も 1-5-b も機能は同じで、名前に「ingot」が含まれるアイテムが送られます。「".*(ここにアイテム名を入力).*"」「*(ここにアイテム名を入力)*」のようにすれば指定できます。

 違いは5行目が「".*ingot.*"」「*ingot*」かです。二つのアスタリスクで囲むだけの方が簡単なので、MOD作者は後者を好んでいるそう。好きな方を選択すればよいでしょう。

 

コード1-6 送るアイテムをタグを使って指定する

 タグを使ってアイテムを指定することも可能です。今回は羊毛を送りたいので「minecraft:wool」というタグを利用します。このタグを指定するには以下のようにします。

コード 1-6
NAME "A simple program 1-6"

EVERY 20 TICKS DO

	INPUT WITH #minecraft:wool FROM a
	INPUT WITH TAG minecraft:wool FROM a
	INPUT WITH TAG #minecraft:wool FROM a

	OUTPUT TO b

END

 タグを指定するには「WITH #(ここにタグを入力)」「WITH TAG(ここにタグを入力)」「WITH TAG #(ここにタグを入力)」を使います。

 上のコード例ではINPUT文が三つありますが、すべて同じことを意味しています。実際に使用する場合はどれか一つで構いません。

minecraft:wool」のタグを持つ羊毛だけが移動した

 

コード2 かまどライン

 Super Factory Manager を使って、かまどでの製錬ラインを構築してみましょう。

設置から稼働まで

 必要なものは以下です。

  • かまど 複数個(今回は4つ)
  • ファクトリーマネジャー 1つ
  • プログラムディスク 1つ
  • インベントリケーブル 複数個
  • インベントリ(樽など) 3つ

 今回は下の図のように設置しました。

設置状況

 左側に樽を置いていますが、これはそれぞれ「完成品を入れる樽」「燃料を入れる樽」「製錬されるものを入れる樽」に用途が分かれています。また、すべてのブロックの裏側にインベントリケーブルを設置しています。白いブロックの代わりとしてインベントリケーブルを設置したり、各ブロックの上に設置しても問題ありません。

 

 コードは「View example」のなかに「Furnace Manager」というものがあります。これを利用します。

Furnace Managerのコード
name "Furnace Manager"

every 20 ticks do
    input from "to be smelted"
    output 8 to each furnace top side

    FORGET

    input from fuel
    output retain 1 to each furnace bottom side

    FORGET

    input from furnace bottom side
    output to results

end

 これまでのコードでは大文字だったものが小文字になっていたり、「"」が付いている箇所と付いていない箇所がありますが、機能の上でそこは大きな問題ではありません。

 コードを確認したら、「完了」ボタンを押すことで現在のプログラムディスクに同じコードが書き込まれます。

 続いて、各機械やインベントリを設定します。ラベルガンを持ってファクトリーマネジャーをシフト右クリックして、さらに何もないところに向かって右クリックすると、以下の画像のようになると思います。

ラベルガン

 もし、「fuel」「furnace」「results」「to be smelted」の他に、例えば「a」や「b」といったボタンが残っている場合は、以前の設定がラベルガンに残っている状態です。その場合は、右の「clear」ボタンを押してラベルガンの情報をリセットしてから、再度ファクトリーマネジャーシフト右クリックしてください。

 正しく情報をラベルガンに適用出来たら、各機械とインベントリを設定します。今回は少し見にくいですが、以下の画像のように設定しました。「furnace」は各かまど、「results」は完成品を入れる樽、「fuel」は燃料を入れる樽、「to be smelted」は製錬されるアイテムを入れる樽です。

設定

 設定できたら、ラベルガンをファクトリーマネジャーに向かって右クリックすると、反映されます。あとは製錬されるアイテムを入れる樽と燃料を入れる樽にそれぞれアイテムを入れると自動で作業が始まり、完成品を入れる樽に完成品が入れられます。

各樽の様子
(左)resultsの樽 (中)fuelの樽 (右)to be smeltedの樽
コードの解説

 以下では、使用したコードがそれぞれどのような働きをしているのか、コメントアウトを追加する形で説明します。

name "Furnace Manager"
--プログラムの名前を「Furnace Manager」とする every 20 ticks do
--20ティック毎に1回動作する input from "to be smelted" output 8 to each furnace top side
--「to be smelted」からそれぞれの「furnace」へ8個アイテムを送る
--アイテムは「furnace」に対して上から入れる FORGET --上で指定したinputとoutputの情報をここで一度「忘れる」
--上で指定した情報を引き継がないという意味
--上で指定した情報は残っているので問題ない
--もしここで「FORGET」しない場合どうなるかは後述
input from fuel output retain 1 to each furnace bottom side --「fuel」からそれぞれの「furnace」へアイテムを送る
--「furnace」には1個だけ「fuel」からのアイテムがあるようにする
--アイテムは「furnace」に対して下から入れる
FORGET
--上で指定したinputとoutputの情報をここで一度「忘れる」

  input from furnace bottom side output to results --「Furnave」の下からアイテムを取り出して「results」へ送る
end
--ここでプログラムは終わり

 もし「FORGET」を使わない場合、その前後のinputとoutputの情報が引き継がれることになります。今回の例では「製錬されるものを送る指示」と「燃料を送る指示」が混線してしまい、製錬されるものが燃料のスロットに入れられたり、燃料が製錬されるもののスロットに入れられてしまう可能性があります。こうなることを防ぐため、「FORGET」を使って、それ以降にinputとoutputの指示を引き継がないようにしています。

 かまどの燃料は下から入れています。バニラの仕様としてかまどの燃料は側面か下面から入れることができます。「bottom side」の代わりに、例えば「east side」でも問題なく燃料が投入されます。

 かまどの燃料のoutput文に「retain」が使われています。これを使用することで、かまどには常に燃料が一つだけ投入されるように制限でき、余分に燃料を投入しないようになっています。

 

コード3 送電

 インベントリケーブルは電気を送ることもできます。

 以下のように、左のエネルギーキューブ(a)から右のエネルギーキューブ(b)へ、電気を送るプログラムを作成しました。

設置状況

エネルギーキューブの設定(左右同じ)

コード「electricity transmission」
name "electricity transmission"

every 20 ticks do

 input forge_energy:: from a bottom side

 output forge_energy:: to b top side

end

ラベルガンでの設定

 問題なく設定が完了すれば、aのキューブからbのキューブへと電力が移動します。Mekanismの究極エネルギーキューブは満充電で約102MFEの容量がありますが、これでも充電は一瞬で移動します。

 Mekanismの機械は各側面の搬出入設定を細かく切り替えられるものが多いです。もしうまく動作しない場合は、搬出入の設定とプログラム側の設定がきちんと対応しているか確認してください。

 

コード4 Mekanismエチレンガス製造ライン

 実用的な例として、Mekanismの加圧反応室を並べて、エチレンと基質の製造ラインを作成します。加圧反応室は「水の搬入」「水素ガスの搬入」「バイオ燃料の搬入」「製造した基質の搬出」「エチレンガスの搬出」「電力」と要求されるものが多く、工夫しないと機械6面を全て使うことになります。そのため複数の加圧反応室を並べると、導管で大変なことになります。

 Mekanismだけで対応する場合は、1面からアイテムや液体、ガス、電力など複数種類を搬出できる「量子もつれ転送機」を使用してラインを整理して並べることができます。ほかにもEnder IOの複数種類の導管をまとめられる機能を使うこともできます。

 今回は SuperFactory Managerを使って、このラインを構築してみましょう。

設置状況

 左から簡単に各機械の説明をします。

 電源は究極エネルギーキューブを設置し、キューブは外部電源から常に充電しています。ファクトリーマネジャーから直接送電することはできないので、外部電源からのバッファとしてエネルギーキューブを設置しています。サバイバルでの運用時には発電機などからこのキューブへ送電して、キューブに常に電源が供給されるようにしてください。

 樽は二つ用意しました。左の樽が、エチレンガスと基質の材料であるバイオ燃料を入れておくための樽です。右の樽は完成品の基質を入れるための樽です。

 化学タンクには完成したエチレンガスを保管します。エチレンガスはガス燃焼発電機で使用します。

 Water Tankは2つの水源に隣接しているので、無限水源として機能します。せっかくなのでSuper Factory Managerで追加されるものを使ってみました。

 電解分離機と加圧反応室はそれぞれ9台ずつ用意しました。実際の運用では電解分離機と加圧反応室の台数の割合は2:3ぐらいでも問題ない(水素の供給量が十分)ような印象です。機械の中でガスが余っている場合、機械の設定を「停止」とすれば稼働停止し、電力が無駄に消費されることはありません。今回は水素供給量に余裕を持たせた構成です。

 インベントリケーブルは全て機械の背後に繋げています。

エチレンガス・基質生産用のコード
name "Ethylene Substrate Line"

    every 20 ticks do
    
    --エネルギーキューブから電解分離機と加圧反応室へ送電 input forge_energy:: from Energy_Cube bottom side output forge_energy:: to each Pressurized_Reaction_Chamber top side output forge_energy:: to each Electrolytic_Separator top side forget
--水を水タンクから電解分離機と加圧反応室へ輸送 input fluid:: from Water_Tank bottom side output fluid:: to each Electrolytic_Separator east side output fluid:: to each Pressurized_Reaction_Chamber east side forget
--水素ガスを電解分離機から加圧反応室へ輸送 input gas:: from Electrolytic_Separator west side output gas:: to Pressurized_Reaction_Chamber east side forget
--バイオ燃料を樽から加圧反応室へ輸送 input from Bio_Fuel output to each Pressurized_Reaction_Chamber east side forget
--生産された基質を加圧反応室から樽へ輸送 input from Pressurized_Reaction_Chamber west side output to Substrate forget
--生産されたエチレンガスを加圧反応室から化学タンクへ輸送 input gas:: from Pressurized_Reaction_Chamber west side output gas:: to Ethylene_Tank top side end

 上ではコメントアウトも記載していますが、ゲーム内画面では入力していません。コメントアウトはプログラムの機能に影響は無いので、削除しても問題ありません。

ラベルガンでの設定

「ネットワークツール」を持つと
インベントリケーブルがどこに設置されているか可視化される

 プログラムとMekanismの機械側の搬出入設定にはご注意ください。電解分離機と加圧反応室は全てのアイテム、ガス、液体の搬入を画面の左側(東側)から、搬出を右側(西側)へと行うように設定し、それに対応するようにコードも書いています。実際に設置して使うときは、ワールドの向きにも気を使うか、上下の面だけを搬出入に使うとよいでしょう。

 電源用のエネルギーキューブの設定は、コード3 送電で提示したものと同じです。電解分離機と加圧反応室の搬出入設定は以下の通りです。

電解分離機の搬出入設定

加圧反応室の搬出入設定

 なお、Mekanismの機械の搬出入設定を同じ種類の別の機械にも適用したいときは、「設定カード」を使ってコピーアンドペーストすると便利です。シフト右クリックで機械の設定を設定カードに記録し、そのまま別の機械に右クリックすることで同じ設定を適用できます。

設定カードのレシピ

 

おわりに

 Super Factory Manager で何ができるのかは、おおよそこれで理解できたかと思います。ファクトリーマネジャーのプログラムではさらに複雑な操作も可能です。アイテム個数で条件制御したり、レッドストーン信号を受けて動作したり、レッドストーン信号を出すというプログラムにも対応しています。

 Applied Energistics 2 やRefined Storageなどの自動クラフト機構と併用する場合でも、特に同時並行作業で多くの機械を稼働させるときにチャンネル数の節約や負荷の低減に寄与します。コード例も参考にしながら、ぜひスマートな巨大工場を作ってみましょう。