マインクラフト

森の洋館の1Fの階段横ですが、スペースがあまってるので書見台を使ったポーション製造機を作りました。

階段横には自動販売機があるイメージなので作ってみました。階段の裏はチェストの大部屋になっていて機械を置く場所がないので地下に設置しました。書見台を使った選択回路はこのサイトの別ページで解説しています。

自分の敷地内に移築した森の洋館です。

階段横にポーション製造機を設置。取り出し口もあります。

書見台からは本のページをめくると裏からそれぞれ違う強度のレッドストーン信号が出ます。
それを利用して、作るポーションを選択しています。

書見台の上のボタンを押すと、醸造が始まり、出来上がると横の取り出し口から取り出せます。
作ったのは森の洋館の階段横ですが、階段スペースの裏は大きいチェスト部屋になっており、1Fに回路は作れませんでした。
そのため、必要な回路は階段裏のスペースと地下に作ってあります。

まずは回路の説明です。大きくは以下のブロックに分けて説明します。

  • ポーションや効果の選択部分
  • ポーションの製造
  • その他

■ポーションや効果の選択部分

ポーションや効果の選択部分は、書見台を使ってどのポーションを作るかを選択します。選択したポーションの材料をホッパー経由で醸造台まで運びます。
書見台の選択回路は作り方はこのウェブサイトの別ページ(書見台の選択回路)で説明しています。私が考えたのではなくて、海外の方が作ってるredstone系の配布ワールドがあるのでそれを見て作りを調べました。

下の画像は書見台の選択回路です。
書見台に乗せてる「本と羽ペン」の本の表示ページ数により後ろからレッドストーンの信号が出ます。
地下に回路を作りたかったので、コンパレーターから出力されている信号を、信号の強度を変更せずに信号を延長しています。やり方はコンパレーターの出力の先にレッドストーンパウダー1つ(2つ以上はだめ)か不透過ブロックを付けます。
不透過ブロックにコンパレータをつなげるか、真下にレッドストーンパウダーを1つおいて真下へ信号を伝えることもできます。やり方はコンパレーターの先に不透過ブロックを置き、不透過ブロックの真下にレッドストーンパウダーを置きます。レッドストーンパウダーを置いたブロックにコンパレータをつけて、先に不透過ブロックを置くか、上にレッドストーンパウダーを1つだけおくのを繰り返します。横への延長はコンパレーターの先に不透過ブロックかコンパレーターを置いてつなげます。リピーター、またはレッドストーンパウダーを2つ以上おいて信号を延長すると書見台から出てる信号強度が変わってしまいます。

書見台から出てる信号を分岐させて、信号強度により、選択している部分に対応するリピーターへレッドストーン信号が入らないようにします。右のリピーターですが、下から数えて2個目のリピーターへの信号がOFFになっています(本で選択しているのは2ページ目)。

信号が左と右へ分岐し、ぐるっとまわって分岐したものが再び合流する箇所で、選択した部分のレッドストーン信号だけ入らないようになっています。下の画像は別ワールドで回路を作ってみたところの検証画像です(1ページ目選択時と8ページ目選択時)。

リピーターの先にはトーチがあります。そしてトーチの反対側にもレッドストーン信号が入っています。
下の画像でいえば、書見台の本の選択ページに対応する信号が左からはいります(選択しているのがOFF)。
右からはボタンを押したときのレッドストーン信号の反転したものが入っています。ボタンを押すと右側のレッドストーン信号は一瞬オフになります。書見台の本で選択していないページの信号は左からON、右は一瞬OFFのあとONになりますが、左から信号が入っているのでトーチの点灯状態は変化しません。選択しているページの信号は左はOFF、右は一瞬OFFのあとONになるのでトーチの点灯状態は一瞬かわります。トーチの上にはドロッパーがあるので、上においてあるホッパーへアイテムが出てきます。

ポーションの効果をつけるためのアイテムは別のドロッパーから出しています。
どのドロッパーからアイテムを出すかは、さきほどのアイテムの仕組みと一緒です。
トーチの下に大釜がおいてあり、中に水がいれてあります。ピストンでON/OFFを切り替えてます。
全部選択していないので、全部コンパレーターへ信号は入ってる状態です(こっちはコンパレーターですが、リピーターでもよいです)。

■ポーションの製造
ポーションの製造部分はこのサイトの別ページ(ポーション製造機)で解説しています。
動き方と条件は以下のようになっています。

  1. 材料の投入
  2. 水入り瓶の投入
  3. 最後の材料が醸造台に入ったかを検出し、20秒のタイマーを開始
  4. 3のタイマーが終わったら1秒ちょっとの短いタイマーを開始
  5. 4のタイマーが終わったら醸造台の真下にあるホッパーへのレッドストーン信号の解除

初期状態として、醸造台はブレイズパウダーが少量入ってる状態です。
そして、醸造台の真下にホッパーがあり、このホッパーへレッドストーン信号が入っています。
左から横のホッパーに信号を入れてます。この中には水入り瓶がはいっています。
醸造台の前にコンパレータがあります。また醸造台の真上にあるホッパーの横にもコンパレーターを置いてます。ポーションで必要な材料が流れてきて、醸造台と醸造台の真上のホッパーに材料が入ります。醸造台の真上のホッパーに一番最初の材料が入ると材料が通過しますが、そのときもコンパレーターが反応します。

一瞬コンパレーターから信号が出るのも避けたいですが、一定時間以上ホッパーに材料があるのを検出することにしました。
下の画像でやっています。向かい合わせのホッパーの上にレッドストーンブロックがあり、信号が入ると一瞬だけ粘着ピストンが右から左へ動きます。
左のホッパーにアイテムが一定の数以上たまったときにだけ先の回路に信号を伝えたいので、コンパレーターの横にコンパレーターを置いて、その根元にホッパーを置いて、中にアイテムを入れておきます。コンパレータの先っぽの赤にランプがついているので差分モードにしてます。アイテムの数が一定(雪の玉が5個)入ると反応するようにしています。この先はトーチで信号を反転させてから、水入り瓶を入れてるホッパーに信号を伝えてます。

醸造台の上のホッパーの中身を検出する回路はタイマーとかを設置していたら置くスペースがなくなってしまったので、コンパレーターの出力を信号強度を変えずに延長してまげて、地下へもっていってます。地下へもっていって先ほどのタイマー回路にいれてます。

■その他
醸造台の中のポーションが完成したら、ホッパーでドロッパーへアイテムを流します。
ドロッパーの中にアイテムが入ったらクロック回路でドロッパーからアイテムを出して、ソウルサンドと水を使ったものでアイテムを1Fへ送ります。
ドロッパーのクロック回路。


アイテムは、水で流して取り出し口まで運びます。途中に看板と氷塊ブロックを置いて水流を調整しています。

マインクラフト

マインクラフトのレッドストーン回路で、いろいろなものから選択して動作したい回路があるとします。例えばポーションの作成時の材料選択や、額縁と矢を使ったシェルカーボックスの選択回路があります。

額縁を使った選択

書見台に「本と羽ペン」をセットしたもので、本をめくると表示しているページに応じた信号を出すことができます。
書見台はバージョン1.14で追加されたもので、昔からはなかったものです。レッドストーンの選択回路として、詳しく解説してるサイトはあんまりないかもしれません。
本には1~15ページを作っておき、下の画像は1ページ目を表示した状態でボタンを押したところです。

書見台を使った回路

下の画像は、本のページ15を表示した状態でボタンを押したところです(一番奥のランプが光ってます)。

ドロッパーを使ってボタンを押すたびに、アイテムを送り、ドロッパーの中身を検出するのを作ったこともありますが、ずれたりするのでうまくいきませんでした。この方式なら、本のページで選択しておいてボタンを押すだけです。
普通に作成すると、書見台のページ数に応じたレッドストーン信号が出るので、15ページの本だと1~15の距離に応じたレッドストーン信号が出ます。15ページ目を表示した場合は、1~15のすべてのレッドストーンランプが光ってしまいますので工夫が必要です。

1ページ目を表示してるときは手前から1番目のランプだけを、15ページ目を表示している場合は15番目のランプだけを表示したいです。

海外の方が作ってるレッドストーンギミックの部屋があります。そこから回路を抜き出してみました。

上側のレッドストーン信号回路と、下側(レッドストーンブロックがあるほう)があります。また画像では表示してませんがさらに上側にもレッドストーンが通ってるレッドストーンパウダーの回路があります。
画像の真ん中の赤い線は、書見台から出た信号をコンパレーターが拾い、1番目から14番目のリピーターまで信号を伝えてます。15番目のリピーターは光ってませんのでそこまで信号は伝わってません。これは本の15ページ目を表示しているところです。画像の下側にもレッドストーン信号が流れてます。15番目のリピーターがくっついてるブロックの1つ手前まで信号が伝わってます。左のコンパレーターの一つ先まで信号が伝わってる状態です。

本を1ページ目で表示してるところです。
右の真ん中から伸びてるレットストーン信号は右のリピーターに到達してません。下側から流れていくレッドストーン信号は、右から2番目のリピーターから右から15番目のリピーターまで通っています。点灯させたいランプのところだけ、リピーターに信号が伝わってない状態になってます。

奥にもレッドストーン信号が通っています。
奥側はトーチで信号を反転させていて、ボタンを押すと一瞬消えます。
手前側は光らせたい部分だけ、レッドストーンが来てない状態です。
レッドストーンランプの下にはトーチがあり、信号が来てない場合は光ります。
つまり、裏側のレッドストーンがボタンを押すと一瞬レッドストーン信号がONからOFFになりトーチが光ります。
手前側は光らせたいところだけレッドストーン信号がオフになってるので、裏側のレッドストーン信号がOFFになった瞬間だけ、トーチが光ります。ほかのトーチは、レッドストーン信号が来てるのでトーチは光りません。これが指定したところのランプだけを光らせる仕組みになっています。

右のトーチの裏にボタンがあります。書見台の本のページにしたがってレッドストーン信号が伝わります。レッドストーンブロックの上と前にコンパレーターがあります。そのコンパレーターに上から信号が入ってます。コンパレーターは先端をクリックしてあり、減算モードになってます。

奥側です。レッドストーン信号が通っています。下にはトーチに信号を伝えるためのリピーターが並んでます。

下に並べておいてあるトーチにレッドストン信号が入ってきており、ボタンを押すとONからOFFになります。
手前側のほうは、光らせたいところだけレッドストーン信号が来てないので、トーチに伝わる信号が一瞬OFFになることでトーチがONになります。

これを使って、ランプの代わりにドロッパーを置いて、ドロッパーの放出先にホッパーを置いておけば、指定のアイテムを出すことができます。ポーション製造機に使えそうです。

VRChat,VRCSDK3,マインクラフト

マインクラフトをUnityとかVRChatのワールドへ取り込む方法をメモします。

◆ 必要なもの
マインクラフト (Java 版)
mineways
blender
MCPrep(blenderのプラグイン)

1. 取り込みたいマインクラフトのワールドを整備します
2. mineways を起動します。jmc2obj でもできると思いますがためしてません
3. マインクラフトのワールドを開き、取り込む範囲と高さ、深さを指定します

4. ファイルメニューから「Open Level」を指定し、一覧からマインクラフトのワールドを指定します。

5. 左クリックで移動し、右ボタンを押してドラッグすると範囲を選択できます

6. ファイルメニューから「Export for Rendering」を指定し、ファイルへ出力します。

7. 出力
オプションが出てきます。
左の列は出力時のマテリアル設定です。デフォルトで良いと思います。
真ん中の列は、出力された3dモデルの指定でまとめるか、タイプごとに分割するかの指定です。
とりあえず下記の画像のオプションにします。

ファイルを出力すると、obj と mat 、それとテクスチャの画像ファイルが出力されます。

8. blender によるファイルの調整
blender を起動します。
MCprep という blender のプラグインが入ってなければ有効にします。
編集メニューの「プリファレンス」を開き、アドオンタブを指定し、画面上のインストールボタンをクリックします。
MCprep を別途ダウンロードし、zip ファイルを指定します。
Object:MCprep のチェックを有効にします。

blender の余計なものを削除します。選択して「x」メニューから削除を選びます。消すのは立方体とライトとカメラです。
ファイルメニューの「インポート」からWavefront (.obj)を指定してminewaysで出力したファイルをインポートします。

「N」キーを押して、右にタブでてきたタブメニューから「MCprep」を指定します。
Prop Material ボタンを押し、OK を押すと取り込んだモデルにテクスチャが入ります。
これを blender 形式で保存します。

9. UNITY への取り込み

任意のプロジェクトを作成し、ディレクトリに出力したblenderファイルとテクスチャをドラッグ・ドロップします。

右クリックメニューから「Create」→「Material」マテリアルを新たに作成します。
作成したマテリアルを選択して、プロパティの「Metalic」を0にします。また、画面上の□ Albedo にテクスチャの(minecraft_flat-RGBA.png)をドラッグします。
テクスチャ(minecraft_flat-RGBA.png)を選択し「Aplha is Transparency」のチェックを入れます。
下のほうのFilter Modeの箇所の設定を「Point (no filter)」にしてApplyを押して反映します。
マテリアルを再び選択して、Rendering Modeを「cutout」にします。
ヒエラルキーにblenderのファイルをドロップし、シーンに追加します。
blenderのファイルをヒエラルキーにドロップした状態では真っ白ですが、展開してオブジェクトにマテリアルをドラッグして割り当てます。
テクスチャが表示されるので、全部に指定します。
アニメーションはされないですが、たいまつの形や、窓の透明部分も反映されていると思います。