毎日がマイクラ日和☆

マイクラにおける建築や、自分で作った装置などを紹介しています。主にJava版。

【マインクラフト#10】ドロッパーが連続で動作しないのはJava版の準接続のせい?!

トップ画像

おはようございます、こんにちは、こんばんは!

管理人のゆーです<(_ _)>

 

#9にてT型フリップフロップ回路を使った隠し部屋をご紹介しました。

micra-biyori.com

ドロッパーを使ったT型フリップフロップ回路を作るにあたって、Java版では上手く動作しない作り方があったのです。

 

色々調べてみた結果、Java版特有の準接続のせいではないかなーという考えに至りました。

 

また、#4で自動回収養蜂場を作った際にも、準接続が起こってディスペンサーが連射できないパターンをご紹介しました。

micra-biyori.com

 

今回は、準接続のせいでドロッパーやディスペンサーが連続で動作してくれなかった事例のご紹介と、どのように信号が流れて準接続が起こったのか、詳細に書いてみたいと思います。

 

自分の備忘録も兼ねて(;^ω^)

 

 

準接続とは

「ドロッパーやディスペンサー、ピストン、粘着ピストンといった機械部品について、その部品の真上のブロック(空を含む)に動力が与えられているときに、ブロック更新を検知する仕組み」と言えば正しいでしょうか...。

 

例えば、ピストンの場合。

ピストンの2マス上にレッドストーンブロックを設置しているため、ピストンの真上に動力が与えられています。

ピストンの2マス上にレッドストーンブロックを設置している

でもピストンに直接動力が与えられているわけでは無いので、ピストンは動作していませんよね。

この状態で、ピストンの横にブロックを置いてみます。

ピストンの横にブロックを置いた様子

ブロック更新を検知して、ピストンが動きました。

 

ピストンの真上に動力が与えられている間、再度ブロック更新を検知することはできません。

上の画像の状態から、石ブロック→レッドストーンブロックの順に壊すと、なんとピストンは元に戻りません。

ピストンが元に戻っていない

この時、レッドストーンブロックを壊した(準接続を解除した)ので、ピストンの真上に動力が与えられていない状態になっています。

そして再度ブロックを隣に置くと、ブロック更新を検知してピストンがもとに戻ります。

ピストンがもとに戻った様子

準接続を解除した状態で再度ブロック更新を検知しないと、ピストンは再度準接続によるブロック更新の検知をしません。

 

この他にも、以下のような動力の伝え方がされているときも、準接続は起こります。

準接続が起こる場合

準接続が起こる場合

 

ドロッパーやディスペンサーが連続で動作してくれなかった事例

T型フリップフロップ回路

#9にてT型フリップフロップ回路を作ったのですが、「どのような作りにしようか...」と悩んでいる過程で、以下の回路は(Java版では)上手く動作してくれないことがわかりました。

上手く動作してくれなかった回路

ドロッパーは出力口が向かい合うように置いています。

 

画像の状態では、下のドロッパーにアイテムが入っているため、コンパレーターの先に動力が伝わり、ランプが点いています。

 

統合版の場合の動作(期待する動作のとおり動く)

準接続が起こらない統合版の場合は、以下のような流れになるかと思います。

  1. ボタンを押す
  2. 下のドロッパーが稼働し、下のドロッパー内のアイテムが上に移動する
  3. 下のドロッパー内のアイテムが消えたので、ランプが消える
  4. もう一度ボタンを押す
  5. 下のドロッパーに動力が伝わる(アイテムが入っていないので空打ち)
  6. 下のドロッパーが動力源ブロックになり、隣接している上のドロッパーが稼働する
  7. 上のドロッパー内のアイテムが、下のドロッパーに移動する
  8. 動力が伝わり、ランプが点く

 

Java版の場合の動作(準接続が起こっている)

以下の画像の状態で、もう既に準接続が起こる条件が揃っています。

準接続が起こる状態

下のドロッパーにアイテムが入っているため、コンパレーターとレッドストーンダストを通して(コンパレーターの上のブロックが動力源ブロックになり)、上のドロッパーに動力が伝わっている状態です。

 

これって、先ほど記載した接続が起こる以下の条件

「ドロッパーやディスペンサー、ピストン、粘着ピストンといった機械部品について、その部品の真上のブロック(空を含む)に動力が与えられているとき」

を満たしています。

 

1回目、ボタンを押すと、下のドロッパーの隣に置いたレッドストーンダストに動力が伝わります。

これをドロッパーがブロック更新として検知することで、ドロッパーが稼働します。

(信号のON、OFFもブロック更新になるみたいですね。)

 

ボタンによる動力もドロッパーに伝わりますが、おそらく準接続によるドロッパーの稼働とほぼ同時のため、ドロッパーは一度しか稼働していないように思われます。

 

準接続が起こっているとは言え、下のドロッパーが稼働することでアイテムは上のドロッパーに移動するため、ランプは消えました。

ランプが消えた状態


2回目、ボタンを押すと、上のドロッパー内のアイテムが下のドロッパーに移動し、再度ランプが点きます。

ランプが点いた様子

 何やら正しい動きをしているように思えますが、これ以降正しく動作しなくなります。

ボタンを押しても、下のドロッパーがうんともすんとも言いません。

 

多分ですが、2回目のボタンを押したとき(アイテムを上のドロッパーから下に移動するとき)に以下のような問題があるのかと思います。

 

  1. 2回目のボタンを押す
  2. 下のドロッパーが動力源ブロックになり、上のドロッパーが稼働する
  3. 上のドロッパー内のアイテムが下のドロッパーに移動する
  4. 下のドロッパーから動力が発生し、準接続が起こる条件が成立
  5. ボタンがOFFになることで、下のドロッパーに隣接しているレッドストーンがOFFになったことを下のドロッパーがブロック更新として検知する(準接続が起こった)

 

一度準接続によるブロック更新の検知が起こったので、準接続を解除するまでは、下のドロッパーは動かなくなる...という理屈なのではないかと考えました。

 

解決法

上記の考えが正しいとすると、上に記載したような問題が起こるのは、ボタンが押されてからOFFになるまでに数秒かかることです。

 

ドロッパーに伝える動力が一瞬なら、このような不具合は起こらないのではないか...と思い、ボタンではなく、一瞬だけ信号を送れるオブザーバーで動力を与えてみました。

ボタンの代わりにオブザーバーを置いてみた

オブザーバーの前のピストンを動かすごとに、ドロッパーに動力が伝わります。

 

案の定、この回路はT型フリップフロップ回路としてちゃんと動作してくれました。

 

自動回収養蜂場で使った回路

#4では、以下のような回路を使いました。

クロック回路で、ディスペンサーが連射するようにしています。

自動回収養蜂場で使った回路

画像で示した部分には、透過ブロックであるハーフブロックを使っているので、準接続は起こりません。

 

仮にここを以下の画像のように、不透過ブロックを使うと準接続が起こります。

準接続が起こる回路

クロック回路を繋いでもディスペンサーは連射してくれず、最初の1回しか動きません。

 

「準接続とは」で記載しましたが、準接続を解除した状態で再度ブロック更新を検知することで、2回目の準接続によるブロック更新の検知ができるからです。

準接続によるブロック更新の検知を繰り返しているだけなので、最初の1回しか検知しないのだと思われます。

 

最後に

ちょっと長くなってしまいました(;^ω^)

「準接続って何?!」と思われてる方や、「ドロッパーやディスペンサーが連続で動作しないんだけどどうして?」と悩まれてる方のお役に立ててましたら幸いです(^^♪

 

最後まで見ていただきありがとうございました<(_ _)>