
Redstone Dynamometer
The target block measures accuracy. This one measures force. Falls, explosions and projectile hits become analog redstone 0-15, on curves you can actually build with.
Original concept by u/SuperMario69Kraft on Reddit (r/minecraftsuggestions) - https://www.reddit.com/r/minecraftsuggestions/comments/1u0eybs/. Built by BeansNToast.
How hard did it hit? Vanilla redstone can tell you THAT something happened. The Redstone Dynamometer tells you how hard.
Build damage-test dummies that score your traps. Explosion minigames that know a charged creeper from a firecracker. An elytra landing pad that rates your crash. A mob grinder that sorts drops by drop height. One block reads all of it and answers in analog redstone.
Three senses, one gauge:
- Fall impact. Anything that lands on top gets read, players, mobs, anvils, falling sand. Two blocks of fall per signal level, 30 blocks pegs the needle at 15. And it reads RAW fall distance, so you can cover the sensor with slime, hay or carpet and the measurement stays honest. It even reads through one full cover block, so your pressure floor can look like a normal floor.
- Explosions. Any blast nearby registers its true power: creeper 6, TNT 8, charged creeper 12, wither spawn 14. The block itself is obsidian-grade and never breaks, park it next to the crater and read the blast that made it.
- Projectiles. Shoot any face and the impact speed becomes signal: full bow shot 6, crossbow bolt 7, trident 8, snowball 3. The harder it flies, the higher it reads.
Every reading is a clean pulse, weak power on all sides, strong power down through the floor, and a comparator holds the measured value for the whole pulse. Vanilla-friendly semantics: if you know pressure plates and target blocks, you already know how to wire this.
The numbers above are the defaults. Pulse length, per-sense toggles and all three curve factors live in one small config file.
Crafted the way the original suggestion drew it, right down to the author's own revision: three obsidian over iron and redstone, slime cushions on the corners, and an echo shard at the heart, because force sensing is cousin to sculk tech.
Two downloads, one per version line: a 1.21.11 jar and a 26.1.x jar. Fabric API required.
The numbers
Three senses
Each detection emits a redstone pulse (default 10 ticks). Output is pressure-plate-shaped: weak power to all six neighbors, strong power into the block below, and a comparator reads the measured value for the pulse duration. Like the vanilla target block, a second hit during a pulse updates the strength but does not extend the window.
Fall impact
Anything landing on top: players, mobs, armor stands, falling sand, anvils. The sensor reads RAW fall distance, not fall damage, so damage modifiers cannot skew it - and it reads through ONE cover block (carpet, slab, or a full block) sitting on the sensor, exactly as the original suggestion asks. Cover it in slime or hay: same reading.
signal = clamp(floor(fallDistance / 2), 1, 15)
| Fall distance | Signal |
|---|---|
| 0-3 blocks | 1 |
| 6 blocks | 3 |
| 10 blocks | 5 |
| 20 blocks | 10 |
| 30+ blocks | 15 |
Explosion
Any blast within power x 2 blocks of the sensor takes a reading. The
signal encodes the explosion's POWER, independent of distance:
signal = clamp(round(explosionPower x 2), 1, 15)
| Source | Power | Signal |
|---|---|---|
| Ghast fireball / wither skull | 1 | 2 |
| Creeper | 3 | 6 |
| TNT | 4 | 8 |
| Bed / respawn anchor (wrong dimension) | 5 | 10 |
| Charged creeper / end crystal | 6 | 12 |
| Wither spawn | 7 | 14 |
The dynamometer itself always survives the blast.
Projectile
A projectile striking any face produces a velocity-based force estimate:
- Arrows and bolts:
signal = clamp(ceil(impactSpeed x 2), 1, 15)- the same speed-times-base-damage formula vanilla arrows use. Full-charge bow is 6, crossbow bolt is 7. (Reads kinetic energy: Power enchantments do not change the reading.) - Trident: flat 8, its vanilla impact damage.
- Everything else (snowballs, eggs, pearls, fireballs, wind charges):
clamp(ceil(impactSpeed x 2), 1, 15); a snowball reads about 3. A fireball that explodes also produces a separate explosion reading.
Config
config/dynamometer.json (generated on first run):
| Key | Default | Meaning |
|---|---|---|
pulse_ticks | 10 | output pulse length in game ticks |
fall_enabled / explosion_enabled / projectile_enabled | true | per-sense toggles |
fall_divisor | 2.0 | fall curve: floor(fallDistance / divisor) |
explosion_factor | 2.0 | explosion curve: round(power x factor) |
explosion_range_multiplier | 2.0 | reading range: power x multiplier blocks |
projectile_velocity_factor | 2.0 | projectile curve: ceil(speed x factor) |
log_detections | false | INFO-log every reading (contraption debugging) |
