マインクラフトのレッドストーン回路でマルチプレクサー

今回は、マインクラフトで組み合わせ回路のマルチプレクサーを作りました。2bitの信号を切り替えるだけですが、マインクラフトでは単純に回路図をレッドストーン回路で実現すると、1つ1つのブロックが多いため最適化する必要があるのが分かりました。

logisimで作ったマルチプレクサーの回路図
マインクラフトでマルチプレクサーを実装

画面キャプチャーのように、2ビットの切り替えだけでも何も考えずにブロックを配置するとこの大きさです。マインクラフトは、レッドストーンは15個分の信号しか伝わらないため、大きくすればするほどリピーターで調整する必要があります。

16ビットのマルチプレクサーを作るとなると、ブロックの並べ方をしっかり学ばないといけないようです。

 

マインクラフトのレッドストーンでXOR回路

マインクラフトのレッドーストーンで排他的論理和のXOR回路を作成しました。

 

http://minecraft.gamepedia.com/File:StandardLogicGates.png

 

今回作成した排他的論理和XOR回路

マインクラフトでは、レッドストーンとブロックを繋げてさらにレッドストーントーチを置くことでNOT回路になります。そして高低差をうまく使うことで小さなサイズで、XOR回路を作る事が可能です。

一度Logisimで、回路図を書いてみました。レッドストーン回路はどこが接続されているのかわかりづらいですが、以下のような回路図にしてしまうと分かりやすいです。また、XOR回路の出力にNOT回路を付けるとXNOR回路になります。

 


マインクラフトのBlockクラスのgetItemDroppedのテスト方法

マインクラフト1.11.2のModding(モド開発)のチュートリアルをやっていて問題なく実装はできたけどテストする方法が分からない場面に出くわしました。

テストが難しいケース

ワールド作成時にクリエイティブモードにすると、ブロックなどはドロップせずに消滅してしまいます。そのためこのモードでは、ブロックのドロップなどのテストができません。その場合サバイバルモードにすればよいのですが、ブロック強度がダイアモンドと同等にした場合、ダイアモンドのツルハシ(Pickaxe)がないため、ゲームで入手しなければなりません。また、サバイバルモードの場合、自作ブロックがないため見つける方法がありません。

解決方法

このような場合は、サバイバルモードで、チートコマンドを使ってツルハシとブロックを入手するのが良いです。

ダイアモンドのツルハシの入手方法

チート可能にしておいて、/を入力するとチャット欄が表示されるので、以下を入力します。diamond_ぐらいまで入力してタブキーを押すと補完候補が出てきます。

http://gamehackerblast.com/post-16636/

 

自作ブロック生成方法

まずは、F3キーでデバッグ情報を表示して、XYZまたはBlockで座標を確認します。次に、/setblockコマンドでブロック出現先を指定し、以下のようにminecraft:で既存のブロックを指定するか、modidを入力してタブキーで補完するかでブロックが指定できます。

以下は、tutというmodidで、tut_blockという自作ブロックのコマンド例です。

これで、作成したブロックを出現させることができます。あとは、getItemDroppedのコード内にブレイクポイントを立てて実行すあれば補足できます。

自作ブロックを/setblockコマンドで出現させたところ

以下は、ダイアのつるはしで殴って、ブロックをアイテムに変えたところです。この時に、Block#getItemDroppedが呼び出され、ブロックがソースコードで指定したアイテムに変わります。

 

ソースコード

ソースコード自体は、難しいことはしていません。