ユーティリティ V3.1 v1.2.0

Electric Workstations — 鍛冶炉や焚き火を燃料ではなく電力で動かす(当サイト作者の自作MOD)

アダプターを作業台の隣に置いて通電すると、その作業台が燃料を消費しなくなる。当サイトの運営者が作った MOD のため、実装の詳細まで解説する。

詳細解説

これは当サイトの運営者(toshi dev)が作った MOD です。 他の MOD と同じ基準で紹介しますが、実装の内部まで説明できる点が他と違います。

何を解決するか

バニラの 7DTD では、作業台と電力網が完全に別系統で、両者を橋渡しするものがない。ソーラーパネルを何枚並べても鍛冶炉は薪を燃やす。この MOD はその橋を 1 ブロックで追加する。

Electric Workstation Adapter を作業台(鍛冶炉・焚き火・化学ステーション)の隣に置いて通電すると、通電中はその作業台が燃料を消費しなくなる。

仕組み

アダプターは普通の通電ブロックで、隣接して電力を受けているだけでよい。MOD は作業台の燃焼タイマーを継ぎ足し続けるため、バニラのコードからは「燃料がある」と見えて通常どおり動く。

クラフト処理そのものは一切再実装していない。 完了判定・品質・経験値・産出はすべてバニラのコードに任せている。これがオーバーホール MOD と競合しない理由。

離席時間の精算

ここが実装上いちばん面倒だった部分。TileEntityWorkstation.UpdateTick はチャンクがロードされた最初の tick に経過時間をまとめて渡すが、実際に見えている燃料の量で上限を掛ける。

elapsed = (GameTimer.ticks - lastTickTime) / 20
capped  = Min(elapsed, BurnTotalTimeLeft)    ← この上限

電化した作業台は燃料スロットが空なので、BurnTotalTimeLeft は MOD が最後に継ぎ足した分(既定 30 秒)しかない。何もしなければ、何日離れていても 30 秒しか進まない。

そこでバニラが上限を計算する前に燃焼時間を与えて枠を広げ、精算そのものはバニラにやらせている。既定で 6 時間を上限にしているのは、1 週間放置した鍛冶炉が 1 tick で全部終わらないようにするため。余った分は後で回収するので、MOD を外しても燃え続ける状態は残らない。

電化していない作業台は素通しする。バニラが正しく精算するため、手を出す必要がない。

導入条件

項目
ゲームバージョン V3(V3.1.0 b14 でビルド・テスト)
EAC 無効化が必須(Harmony を使うコード MOD)
Harmony V3 に同梱の 0_TFP_Harmony を使う
解放 Electrician 25
設定 config.xml で変更可能(再ビルド不要)

専用サーバーではサーバー側にだけ入れる。参加者は何も導入しなくてよい。 クライアントが作業台の状態を書き換えるとサーバーの同期と衝突して炎がちらつくため、ホスト以外では動作しないようにしてある(ConnectionManager.IsServer はシングルプレイとリッスンホストでも true になるので、そちらは通常どおり動く)。

オプション

ElectricAppliances という追加ダウンロードがある。純粋な XML のみで DLL もアセットも無く、クライアントには何も要らない。 電気コンロ 2 種・壁掛けオーブン・電子レンジ・コーヒーメーカーの 5 種を追加し、バニラの焚き火レシピを約 30% の時間で調理する。

導入方法

サーバー(またはホスト)の Mods フォルダに展開する。参加者側の導入は不要。 DLL を使うため EAC を無効化する。設定は config.xml で変更できる。キッチン家電を追加したい場合は ElectricAppliances を別途入れる(こちらは XML のみ)。

スクリーンショット

スクリーンショットは準備中です

ユーザー Tips

Electric Workstations に関する Tips やアドバイスの投稿機能は準備中です。

将来的に Firebase Auth と連携して実装予定