Mekanism 核分裂炉で発電③ 核分裂炉の作成

前回↓

damepo9696.hatenablog.com

核分裂炉を組み立てて動かしてみる

核分裂炉シリーズ記事

素材

核分裂炉筐体

反応炉窓

核分裂炉ポート

核分裂炉燃料の部品

制御棒の部品

組み立て

筐体を設置

5 * 5 * 5の立方体を核分裂炉筐体で作る(中は空洞)
また、立方体の真ん中の部分(3 * 3)は反応炉窓核分裂炉ポートを使ってもよい
核分裂炉ポートは最低4つつけておこう

燃料棒

立方体の内部に核分裂炉燃料の部品を設置する
積み上げる高さは2ブロックにする

その後上部に制御棒の部品を敷き詰める

最後に核分裂炉筐体反応炉窓で蓋をして完成
右クリックでGUIを開ければOK

燃料の供給と廃棄物の処理

水と燃料の供給

核分裂炉ポートから水と核分裂燃料を入れる
水は大量に供給しないと核分裂炉が崩壊してしまうので注意

蒸気と核廃棄物の排出

核分裂炉ポートから蒸気と核廃棄物を排出する
ポートをコンフィギュレーターで右クリックして色を変えると出入りする物の種類を変更できる
緑が水と燃料黄色が核廃棄物水色が蒸気

核廃棄物の処理

核廃棄物は太陽中性子反応機でポロニウム
ポロニウムは加圧反応室でポロニウムペレット使用済み核燃料にできる


ポロニウムペレットはMekanismのエンドコンテンツで使用するので集めておこう
核廃棄物からはプルトニウムペレットも生成できるが、ポロニウムペレットほどは消費しないのでそちらを優先で

使用済み核燃料の処理

使用済み核燃料は利用手段がないので放射性廃棄物バレルに入れて処分する
バレル内の燃料は時間経過で少しずつ消滅していくので安全な場所に置いておこう
ちなみに上下からしか搬入できないので注意

蒸気の利用

核分裂炉を動かすと大量の蒸気が生成されるので工業用タービンを使って発電しよう
詳細についてはまた次回

Mekanism 核分裂炉で発電② 燃料の生産

前回:↓

damepo9696.hatenablog.com

今回は核分裂炉を動かすための燃料について解説

核分裂炉シリーズ記事

必要な燃料と冷媒


前回説明した通り、核分裂炉を動かすには核分裂燃料冷媒が必要になる
冷媒に関しては電動ポンプ等で水を供給してやるだけでいいけれど、核分裂燃料は結構面倒な工程を経て生産する必要がある

※冷媒にナトリウムを使う方法もあるが水を使う方が楽だしおすすめ
※効率を求めるならナトリウムもあり

核分裂燃料の生産

図解

必要な素材と加工装置をまとめたので参照あれ

できあがった燃料は化学タンクにでも溜めておこう
この時点ではただの燃料なので放射漏れについては特に心配しなくてよい

Mekanism 核分裂炉で発電① 発電のプロセスの説明

Mekanismの核分裂炉を使って発電する方法の解説
今回触れる内容は核分裂炉でどうやって発電するかの概説まで
核分裂炉の組み立て等はまた次回

Minecraft version 1.18.2

※単純に発電したいだけなら核融合 + 工業用タービンでやった方が安全だし効率的
核分裂炉はプルトニウムポロニウムを生産するのがメイン

核分裂炉シリーズ記事

核分裂炉でできることと発電方法

核分裂炉の役割

核分裂炉は冷却材(水orナトリウム)と核分裂燃料蒸気核廃棄物に変換する
大量の蒸気を生成するだけであって発電できるわけではないことに注意

変換レートとしては↓

水1,000mB → 蒸気1,000mB
核分裂燃料1mB → 核廃棄物1mB

発電方法

工業用タービン核分裂炉で生成した蒸気を送り込んで発電する

核廃棄物

核分裂炉は蒸気のほかに核廃棄物も生成する
これを放置すると半径5チャンク(?)を汚染しプレイヤー含めたMOBが常時ダメージを受け続けるようになってしまう

核廃棄物は放射性廃棄物バレルというアイテムに入れることで安全に保管できるほか、
プルトニウムペレットなどを生成することも可能(その場合でも最終的に使用済み核廃棄物が出来てしまうので処分する必要がある)

まとめ

核分裂炉を使った発電のおおまかな流れをまとめると以下の通り

MonsterHunterRise SunBreak 金冠集め

発売以降ちまちまと遊んでいるサンブレイク
今日ようやくヌシの最大最小金冠をコンプリートしたので記念のスクショ


傀異討究クエはサイズ固定なので報酬的に旨味のない上位クエ連戦せざるを得ないのがつらかった

でもライズ産のはまだバルファルクが残ってるという(既に79頭も狩ってる)
肉質的に業鎧狂化奮闘で大化けした双剣を活かしにくいので蓄撃ダーティやザリエラでやってるけど3~4分かかってしまうので効率も悪い

ThermalExpansion 自動釣り装置を作る

ThermalExpansion5の水資源投網機を使った自動釣り装置の解説

クラフト

水資源投網機

木材×4、青銅の歯車×1、ガラス×2、釣り竿×1、レッドストーン自律機構×1

設置

OK

周りに十分な量の水源がある場所に設置する
正しく設置できている場合は真ん中にある緑色のランプが光る

NG

水資源投網機の前にブロックがあるなど正しく設置できていない場合はランプが暗くなる

入手できるアイテムとベイト

通常時に入手できるアイテム

タラ、サケ、フグ、クマノミの4種

深海アクア・チャウ

レシピは小麦、ビートルート、スライムボール、鉛のナゲット

プリズマリンやスポンジ、稀にトライデントなどが入手できる
アイテムを釣り上げる度に消費していくので大量に用意しよう

ラクタ収集網

骨や革などを入手できる
こちらは深海アクア・チャウと異なり消費しない

ThermalInnovation ブラックスボア(電動ドリル)を作る

1.18.2のThermaliInnovationで追加されるドリルを最大限強化したので過程をメモ
1.12.2以前とは少し変わってるので注意

目次

本体の作成

まずはドリル本体であるフラックスボアを作成する
ドリルヘッド×1、鉄×2、金の歯車×1、錫の歯車×2、レッドストーンフラックスコイル×1

これだけでもRFを充電すれば普通に採掘できるが、一度に1ブロックしか壊せずスピードも遅い

アップグレードの準備

各種アップグレードを施す前段階として統合コンポーネントというアイテムの取り付けが必要になる
最大の効果を発揮するレゾナント統合コンポーネントを作成するまでのレシピは↓

ハーデント統合コンポーネント

インバーインゴット×4、ガラス×2、レッドストーン×2、金の歯車×1

インバーインゴット

鉄の粉×2、ニッケルの粉×1で作成したインバーの粉を精錬して入手

レインフォースド統合コンポーネント

エレクトラムインゴット×4、ネザークォーツ×2、シグナルムの歯車×1、ハーデント統合コンポーネント×1

エレクトラムインゴット

金の粉×1,銀の粉×1でエレクトラムの粉を作成して精錬

シグナルムインゴット

銅の粉×3、銀の粉×1、レッドストーン×4でシグナルムの粉を作成して精錬

レゾナント統合コンポーネント

エンダリウムインゴット×4、強化ガラス×2、ルミウムの歯車×2、レインフォースド統合コンポーネント×1

エンダリウムインゴット

鉛の粉×3,ダイヤモンドの粉×1、エンダーパール×2でエンダリウムの粉を作成して精錬

ミウムインゴット

錫の粉×3,銀の粉×1、グロウストーンダスト×2でルミウムの粉を作成して精錬

強化ガラス

誘導加熱炉でネザークォーツ、黒曜石、砂を精錬

誘導加熱炉

溶鉱炉×1、砂×2、マシンフレーム×1、インバーの歯車×2、レッドストーンフラックスコイル×1

コンポーネントの取り付け

鍛冶職人の作業台を使ってフラックスボア統合コンポーネントを取り付ける
GUIを開いてスロットにフラックスボアを置き、左下のボタンを押してモード:オーグメントに切り替える
右上のスロットに統合コンポーネントを置いて取り付け完了

取り付けに成功すると黒曜石も採掘可能になる

鍛冶職人の作業台

鉄×3、ガラス×2、作業台×1、木材×2、レッドストーンフラックスコイル×1

採掘範囲の強化

範囲拡張オーグメントを取り付けることで採掘範囲を広げられる

範囲拡張

鉄の歯車×2、錫×2、レッドストーン自律機構×1

これを取り付けると、Vキーで採掘範囲を切り替えられるようになる

SolidJSのユニットテスト環境構築

目次

はじめに

SolidJSのプロジェクトでユニットテストを書くための環境構築を行ったのでメモ

適当なディレクトリで↓を実行してプロジェクト作成

npm init solid@latest

モジュールのインストール

npm i -D @solidjs/testing-library  @testing-library/jest-dom @types/testing-library__jest-dom @vitest/coverage-c8 @vitest/ui jsdom vitest

コンフィグファイルの追加修正

package.json

testスクリプトを追加する

"scripts": {
    "dev": "solid-start dev",
    "build": "solid-start build",
    "start": "solid-start start",
    "test": "vitest" // 追加
  }

vitest.config.js

以下の内容のファイルを作成する

import solid from "solid-start/vite";
import { defineConfig } from "vitest/config";

export default defineConfig({
  plugins: [solid()],
  test: {
    deps: {
      registerNodeLoader: true,
      inline: [/solid-js/],
    },
    environment: "jsdom",
    globals: true,
    setupFiles: [
      "node_modules/@testing-library/jest-dom/extend-expect",
      "./setupVitest.js",
    ],
    transformMode: { web: [/\.[jt]sx?$/] },
  },
  resolve: {
    conditions: ["development", "browser"],
  },
});

setupVitest.js

以下の内容のファイルを作成する

import "@testing-library/jest-dom";

tsconfig.json

compilerOptions.types@testing-library/jest-domを追加する

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "node",
    "jsxImportSource": "solid-js",
    "jsx": "preserve",
    "strict": true,
    "types": [
      "solid-start/env",
      "@testing-library/jest-dom" // 追加
    ],
    "baseUrl": "./",
    "paths": {
      "~/*": [
        "./src/*"
      ]
    },
  }
}

ユニットテストを書く

テスト対象コンポーネント(Counter.tsx)

import { createSignal } from "solid-js";

export default function Counter() {
  const [count, setCount] = createSignal(0);
  return (
    <button class="increment" onClick={() => setCount(count() + 1)}>
      Clicks: {count()}
    </button>
  );
}

ユニットテスト(Counter.test.tsx)

import { fireEvent, render } from "@solidjs/testing-library";
import Counter from "./Counter";

describe("<Counter />", () => {
  it("increments value", async () => {
    // ボタンを押したときの挙動をチェック
    const { queryByRole, unmount } = render(() => <Counter />);
    const button = (await queryByRole("button")) as HTMLButtonElement;
    expect(button).toBeInTheDocument();
    expect(button).toHaveTextContent(/Clicks: 0/);
    fireEvent.click(button);
    expect(button).toHaveTextContent(/Clicks: 1/);
    unmount();
  });

  it("renders 1", () => {
    // スナップショットと一致するかチェック
    const { container, unmount } = render(() => <Counter />);
    expect(container).toMatchSnapshot();
    unmount();
  });
});

ユニットテスト実行

コマンド

npm test

スナップショット

テスト実行後、snapshots以下にスナップショットファイルが作成される

スナップショットが存在する際にtoMatchSnapshot()を呼び出すと、レンダリングされたコンポーネントとスナップショットとを比較して一致するかチェックする
※存在しない場合はスナップショットを新規作成するだけ

コンポーネントを変更してテストを実行すると、スナップショットとの差分が発生するのでテストには失敗する
↓ではボタンのテキストをClicksからクリックに変えて実行した

スナップショットファイルの更新

vitestのCLIでも言われている通りuキーを押せばスナップショットは更新される

また、vitestコマンドに-uオプションを追加することでも更新可能
※npm scripts実行時は↓

npm test -- -u

参考

github.com