moving minecart once hopper has items, and then becomes empty

Here's a rough outline of what I want

Empty cart stays still under an empty hopper

Hopper gets x items in it, the cart stays still

Once the hopper has emptied all its items into the cart, the cart runs backwards and forwards along the track, putting its items into hoppers below it, once the hopper is empty, it stops again underneath the empty hopper

Is something like this currently possible? I have it at the moment that the cart always moves, except when the hopper has items, which works, but when the cart is empty the noise annoys me and the other people in the area.

I tried putting a detector rail underneath the hopper so I could tell when the cart is there, but that then powers the hopper so its items don't drop into the cart.


Solution 1:

From your description it sounds like you are most concerned with testing the contents of a hopper that is filling a minecart (either a chest minecart or a hopper minecart) and performing an action based on its empty or full state. This is good because it is quite easy to test, as opposed to testing the contents of the cart itself.

Since you mention in a comment that you are basically building off of my previous design, but adding an automatic option to send the minecart instead of pressing a button, I'll show you how to modify it accordingly:

enter image description here

After adding a hopper above the cart, add a comparator which powers a redstone torch. This will turn on when the hopper empties. This signal then powers a rising edge detector circuit that consists of a dropper feeding another hopper, which in turn feeds back into the dropper. Place a single item in the dropper. A comparator tests the contents of the hopper, and a repeater feeds the signal into the powered rail. Whenever the feeding hopper empties, the rail powers and sends the cart along.

Solution 2:

So the biggest problem comes from the fact that in order to get a Comparator signal from a Storage or Hopper Minecart, the Minecart needs to be resting on detector rail.*

Hopper Minecarts and Comparator outputs

Obviously this is a problem, since you can't cause the Minecart to move using detector rail. For this you need a block swapper. The traditional ultra simple design doesn't seem to work anymore, so instead, you need to use some control circuitry. Luckily, I found a design on YouTube purpose built for block swappers:

You'll be swapping detector rail and powered rail in a horizontal fashion, like so:
rail block swapper

Notice the redstone torch behind the centre piston. It isn't obvious from the video that it's required.

Next we need to work out the wiring to trigger the block swapper. I did this to your specs which were basically (in psuedocode)

if(!cart.empty() && hopper.empty())
    block_swapper.trigger();

This isn't really ideal, since the cart can be full even if there's items left in the hopper. You would need to add || cart.full() to the above if statement to make it more useable.

Now, there's one more thing. You don't want to keep the Minecart racing back and forth after you send it off. In order to accomplish this, you need to trigger the block swapper a second time to replace the detector rail after the Minecart leaves. I accomplished this with a delay circuit like so: Block Swapper reset circuit

Finally, during my testing, I discovered that Storage Minecarts don't seem to work. They aren't being filled by the hopper, and I'm not sure why I'm guessing it's because there's a powered detector rail beneath it. Hopper Minecarts work just fine. Also, I've created an MCEdit schematic file that you can get here that contains the system shown in these images. It doesn't include the full cart detection logic either. Implementation of that is left to the reader.

*This was tested with the 1.8 snapshots. I don't know if this was always the behaviour, or was recently introduced.

Solution 3:

Really it isn't that hard. All you need to do is something like this:

enter image description here

The initial signal to start the cart can come from a comparator connected to the inputting hopper. After that the cart will continue until it is empty. Total delay is 3 ticks. The last repeater is just to prevent the redstone from connecting to the button. Underneath the cart is a powered rail.