ピストン式丸石製造機で、オブザーバーとピストンを組み合わせてレッドストーン回路を作りました。オブザーバーで更新を検知する場所をピストンで押し出す場合は、そのままつなげてしまうとうまくいきません。今回は、そのあたりの工夫などを紹介してみます。
ピストン式丸石製造機の記事はこちらです。
オブザーバーとピストンでクロック回路に
丸石製造機では、丸石の生成をオブザーバーで検知して、生成された丸石をピストンで押し出すという仕組みにしていました。
丸石製造機のオブザーバーとピストン。
オブザーバーとピストンを上の画像のような位置関係で設置する場合、そのまま回路をつなげてしまうとうまくいきません。なぜなら、オブザーバーは丸石の生成を検知するだけでなく、ピストンの伸長も検知して信号を発してしまうからです。
例えばカボチャの成長をオブザーバーで検知して、ピストンでアイテム化することを考えた場合も、単純に次のような形でブロックを設置してしまうとうまくいきません。
オブザーバーとピストンがレッドストーンでつながっています。
カボチャが生成されるとオブザーバーが信号を発し、ピストンを動かします。カボチャはピストンによって押し出されてアイテム化しますが、オブザーバーはそのピストンの動きも検知してしまうので、再び信号を出します。するとピストンが動いて、オブザーバーが検知して・・と、ピストンがずっと動き続けることになってしまいます。
ガチャガチャとうるさいクロック回路です。
オブザーバーが検知する空間をピストンで押し出したい場合は、この問題を解決するための工夫が必要です。丸石製造機では粘着ピストンによって回路を遮断する方法を使いました。
オブザーバーとピストンの組み合わせ方1
丸石製造機の回路はこんな感じになっています。
わかりやすいように上の画像では粘着ピストンの前のブロックを取り除いています。オブザーバーが発した信号は、下のレッドストーンで二方向に分けられ、粘着ピストンと上の丸石押し出し用ピストンに伝えられます。
上のピストンへの信号は、リピーターを挟んでいるぶん少し遅延しています。また、粘着ピストンへも信号が伝わっていて、少しだけ粘着ピストンが伸びている時間を長くしてくれています。
OFFの時。
ONの時。
粘着ピストンは信号が伝わるとブロックを押し出して、上への回路を遮断します。この遮断によって、丸石押し出し用ピストンの動きでオブザーバーが発する信号を上へ伝えないようにしています。
段差部分にブロックを設置してみます。
この画像をよく見ると、段差部分にブロックを設置したときにブロックの側面のレッドストーンが消えて、回路が切断されていることがわかります。
ただ、信号が伝わるタイミングなども結構微妙なようで、たまに回路が遮断されずクロック動作になってしまうことがあります。そのときはリピーターの遅延をいったん大きくしてからもう一度最初の状態に戻すと、元に戻すことができました。
リピーターをもう一個追加しても動かすことができます。
上の画像は粘着ピストンへ信号を伝えるレッドストーンをリピーターに置き換えて、上側のリピーターを遅延3(2回右クリック)に、下のリピーターを遅延2(1回右クリック)に設定しています。この形でも動作させることができました。粘着ピストンが伸びている時間が長くなるので、しっかり遮断している感があります。じっくり試してはいないですが、もしかしたらこちらのほうが安定するのかもしれません。
組み合わせ方2
丸石を上へ持ち上げるためのレッドストーン回路には、オブザーバーと粘着ピストン、そしてレッドストーンブロックを使用しています。
粘着ピストンの奥にあるのはオブザーバーです。
オブザーバーの信号を、直接粘着ピストンに伝えています。信号が伝わった粘着ピストンは、伸びて1マス先のレッドストーンブロックを引き寄せます。するとレッドストーンに信号が伝わるので、下のピストンが伸びます。ピストンが伸びると、オブザーバーはそのピストンの動きを検知して再び信号を出します。粘着ピストンはもう一度伸びてレッドストーンブロックを押し出しますが、このときレッドストーンブロックは引き戻されず剥がれてしまいます。
粘着ピストンについていたブロックも、
ピストンが動くと剥がれて、引き戻されません。
オブザーバーがON信号を発するのはほんの一瞬なので、粘着ピストンの動きが早くなりすぎてブロックがピストンから引き剥がされてしまいます。その性質を利用して、一回だけON信号が伝わるように回路を作っています。
レッドストーンブロックをオブザーバーにしてもできます。
オブザーバーは自分自身がピストンで押されたり引っ張られたりしたときも信号を出すので、レッドストーンの代わりにオブザーバーを置いても同じように動かすことができます。
組み合わせ方3
次は丸石を横に押し出す回路です。
オブザーバーが発した信号は、粘着ピストンの下のブロックからリピーターと粘着ピストンに伝えられています。リピーターの先は段差になっていて、粘着ピストンがブロックを引き寄せたときだけ回路がつながるようになっています。
オブザーバーがブロックを検知→粘着ピストンが伸びてブロックを引き寄せ、回路がつながる&リピーターによって少し遅延して信号が伝わる→ピストンが伸びる→オブザーバーが検知→粘着ピストンがブロックを押し出して回路を遮断&ブロックが引き剥がされてその位置にとどまる→ピストンへは信号が伝わらない、という感じ。最初に紹介した回路と同じような仕組みです。
下方向への信号の伝達
横に押し出すピストンへの信号は、上から下に順に伝えられています。
上の画像左上から右に信号が伝えられ、右端に到達したら一段下がって左端まで伝えられ、また一段下がって・・が下まで続きます。
ピストンは斜め上から動力を受け取ることができます。
ピストンは真後ろのブロックからだけでなく斜め上のブロックからも信号を受け取ることができるので、ピストンの後ろに設置するブロックは1マスおきでも、全てのピストンに信号を伝えることができます。
折り返し地点の回路。
折り返し地点にはリピーターを使用しています。上にレッドストーンが置かれたブロックは、レッドストーンにON信号が伝わったときに信号源となります。そのブロックにリピーターを逆向きに設置することで、下へ伝える信号を取り出しています。
ハーフブロック・階段ブロックで隙間を通す
下へ信号を伝える回路の途中で、普通のブロックを置くと回路が遮断されてしまう部分がありました。そこは階段ブロックを使って、回路を遮断せずに下へ伝えています。
問題の場所。
普通のブロックを置いてしまうと下への回路が遮断されてしまう場所で、逆さの階段を使用しています。逆さの階段ブロックは、上の面は普通のブロックと同じように使えて、かつ下に隙間をあけることができます。この隙間のおかげで、回路が遮断されずに下に続いています。このブロックはハーフブロックに変更しても大丈夫です。