Two suggestions that may help you make it smaller.
1. The last subtraction doesn't actually do anything. It takes a random input of 0-15 and produces an output of 0-15.
2. Comparators have the property that if they are measuring the fullness of a container through a powered block, they only output the fullness of the container, not the signal strength of the block — unless the block is at signal strength 15. Take the first hopper (the one closest to the initial torch) and fill it to signal strength 7. Now replace its piston with a block with a torch on top under a block between the hopper and comparator. Replace the initial torch and comparator with a block so that the 7-hopper is now the originating signal for the whole line. Now that slice chooses whether the initial signal strength is 7 or 15, without needing the initial torch sticking off the side.
Inputs at lime wool. Output at pink wool. Cauldron has had one bottle removed (so its comparator outputs signal strength 2). Droppers under hoppers each have one stackable item in them. The circuit on the right is one version of a "1-Detector", a useful circuit in analog builds.
When an input turns on, it pushes the dropper's item up into the hopper, which subtracts 1 from the cauldron's output. When no inputs are on, the 1-detector gets 2 so stays off. When one input is on, it gets 1 and turns on. When more than one inputs are on, the 1-detector gets 0 and turns off again.
There are a number of ways to compact this depending on the shape of the space you have, the direction the inputs are coming from, etc.
Input at lime wool. Output at pink wool. Signal strength 15 to light blue wool to turn off the clock (which actually leaves its output on -- add pulse limiter to output to fix if desired).
Stores the input signal strength in the comparator loop in the middle, then uses that to re-pulse a fader pulse extender (whose duration depends on the initial signal strength). You can change the input signal strength at any time, will change the next clock cycle.
Since 1.9, comparators can take side input from redstone blocks. So the comparator is not outputting a signal because its side signal (15) is greater than its rear signal (3), which is normal behavior for comparators in comparison mode.
You can do this with command blocks by using clone commands to move a block of redstone from input to input (one command block move the whole space one block to the right, moving the block of redstone to a new input, and a second command block moves the "overflow" back to the beginning). FIll up the extra moved space with stone or something to avoid light changes.
You can do this in survival by building a loop of hoppers disabled by powered redstone dust on top. Each time you press the button, a pulse limiter lets the redstone dust turn off briefly allowing an item to move one hopper.
Take your output from the block of redstone instead.
The comparators only turn off briefly when the clock reverses direction, so they will only produce a brief pulse, so they won't "change the state" of a lamp for more than a couple ticks.
Add a 2-tick repeater between the pulse limiter torch and the output torch.
The solid block over the pulse limiter torch is causing it to "short". The torch powers the block above it, the block powers the dust behind it, which turns the torch off too quickly to affect the output torch. A 2-tick repeater will smooth that out.
Something else you could do is not run the dust over that block, but instead let it run into another block with a torch on its side (like the "flat" version here). Then you wouldn't need another repeater.
Can you put a slab or carpet below the button, allowing you to hide the floor block under it? Then you can use a piston or dropper as the floor block, and update it with a clock of some sort so that it notices when the button is pressed above it.
0
Two suggestions that may help you make it smaller.
1. The last subtraction doesn't actually do anything. It takes a random input of 0-15 and produces an output of 0-15.
2. Comparators have the property that if they are measuring the fullness of a container through a powered block, they only output the fullness of the container, not the signal strength of the block — unless the block is at signal strength 15. Take the first hopper (the one closest to the initial torch) and fill it to signal strength 7. Now replace its piston with a block with a torch on top under a block between the hopper and comparator. Replace the initial torch and comparator with a block so that the 7-hopper is now the originating signal for the whole line. Now that slice chooses whether the initial signal strength is 7 or 15, without needing the initial torch sticking off the side.
0
input -> sticky piston (facing observer) -> observer (output/arrow towards piston) -> empty space -> observer (output/arrow facing away from piston) -> output
0
Two observers facing each other with a piston to pull them apart.
0
Inputs at lime wool. Output at pink wool. Cauldron has had one bottle removed (so its comparator outputs signal strength 2). Droppers under hoppers each have one stackable item in them. The circuit on the right is one version of a "1-Detector", a useful circuit in analog builds.
When an input turns on, it pushes the dropper's item up into the hopper, which subtracts 1 from the cauldron's output. When no inputs are on, the 1-detector gets 2 so stays off. When one input is on, it gets 1 and turns on. When more than one inputs are on, the 1-detector gets 0 and turns off again.
There are a number of ways to compact this depending on the shape of the space you have, the direction the inputs are coming from, etc.
2
Input at lime wool. Output at pink wool. Signal strength 15 to light blue wool to turn off the clock (which actually leaves its output on -- add pulse limiter to output to fix if desired).
Stores the input signal strength in the comparator loop in the middle, then uses that to re-pulse a fader pulse extender (whose duration depends on the initial signal strength). You can change the input signal strength at any time, will change the next clock cycle.
0
Redstone dust has no delay. However, if you have multiple paths then race conditions can be difficult to debug.
0
Since 1.9, comparators can take side input from redstone blocks. So the comparator is not outputting a signal because its side signal (15) is greater than its rear signal (3), which is normal behavior for comparators in comparison mode.
0
Instead of running your redstone directly into the lamp, run it into a solid block adjacent to the lamp.
0
You can do this with command blocks by using clone commands to move a block of redstone from input to input (one command block move the whole space one block to the right, moving the block of redstone to a new input, and a second command block moves the "overflow" back to the beginning). FIll up the extra moved space with stone or something to avoid light changes.
You can do this in survival by building a loop of hoppers disabled by powered redstone dust on top. Each time you press the button, a pulse limiter lets the redstone dust turn off briefly allowing an item to move one hopper.
0
Could you use a pressure plate? An item can be summoned on it with a very precise time to despawn.
0
Take your output from the block of redstone instead.
The comparators only turn off briefly when the clock reverses direction, so they will only produce a brief pulse, so they won't "change the state" of a lamp for more than a couple ticks.
0
Add a 2-tick repeater between the pulse limiter torch and the output torch.
The solid block over the pulse limiter torch is causing it to "short". The torch powers the block above it, the block powers the dust behind it, which turns the torch off too quickly to affect the output torch. A 2-tick repeater will smooth that out.
Something else you could do is not run the dust over that block, but instead let it run into another block with a torch on its side (like the "flat" version here). Then you wouldn't need another repeater.
0
Can you put a slab or carpet below the button, allowing you to hide the floor block under it? Then you can use a piston or dropper as the floor block, and update it with a clock of some sort so that it notices when the button is pressed above it.
0
youtube: "dropper elevator"
0
That's just B = A AND NOT X