Mineuniverse
Mods
Redstone Dynamometer

Redstone Dynamometer

MOD
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.
by BeansNToast
Download Claim this project
60 downloads
0 likes
Updated Oct 14, 2026
0 hypes
Automation Energy Energy, Fluid, and Item Transport Redstone Technology
Advertisement Remove ads with Premium →

Redstone Dynamometer

Original concept by u/SuperMario69Kraft on Reddit (r/minecraftsuggestions) - https://www.reddit.com/r/minecraftsuggestions/comments/1u0eybs/. Built by BeansNToast.

A blast-resistant sensor block that converts FORCE into analog redstone. The target block's sibling: the target block measures accuracy, the dynamometer measures force. One block, three senses, documented 0-15 curves.

The block

  • Redstone Dynamometer - obsidian-armored body, slime-cushioned top, gauge dial on every side. Obsidian-grade blast resistance (1200): it never breaks from explosions. Mines quickly with any pickaxe and always drops itself (it is a redstone component, not a wall block).
  • Recipe (the OP's, including his post-thread revision): top row 3 obsidian; middle row iron ingot, redstone dust, iron ingot; bottom row slimeball, echo shard, slimeball. The echo shard replaced the original bottom-center iron ingot at the author's request (2026-06-10) for the sculk-tech kinship.
  • Found in the Redstone Blocks creative tab.

The 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.

1. Fall impact (top face)

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

2. Explosion (anywhere near it)

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.

3. Projectile (any face)

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)

Version support

Two jars, one per version line (this repo's standard policy):

Jar Targets Toolchain Tested on
Dynamometer-1.0.0.jar 1.21.11 Java 21 (class 65), remap Loom, Mojang mappings Fabric dedicated server 1.21.11
Dynamometer-1.0.0-26.1.jar 26.1 - 26.1.2 Java 25 (class 69), non-remap Loom Fabric dedicated server 26.1.2

The 1.21 jar declares 1.21.11 only: the mod hooks Entity.checkFallDamage and ServerExplosion.explode, whose shapes changed inside the 1.21.x line (fall distance went float to double at 1.21.5), so earlier patches are not claimed without a test pass. Requires Fabric API on both lines.

Honest gaps

  • Projectile sensing is code-verified only. Fall and explosion sensing were proven headless on a dedicated server (falling block lands -> signal fires and lights an adjacent lamp; TNT 3 blocks away -> reading fires and the block survives). Nobody has shot the block in a real client yet.
  • Not visually verified in a graphical client (textures, dial, creative tab placement).
  • Comparator read-out is implemented via the standard analog-output hook but was not exercised headless; the lamp test proves the weak-power path.
  • Author approval: GRANTED 2026-06-10, verbatim quote in docs/permission.md; the echo-shard recipe revision in this build is his own request.

Building

# 1.21.x jar
cd fabric
$env:JAVA_HOME = 'C:\Program Files\Java\jdk-25'; .\gradlew build --no-daemon

# 26.1.x jar
cd fabric26
$env:JAVA_HOME = 'C:\Program Files\Java\jdk-25'; .\gradlew build --no-daemon

textures.py regenerates the 16x16 art into both resource trees plus preview.png; gen_logo.py renders logo.png and the in-jar icons.

License

MIT (see LICENSE). All art is original.

Dynamometer-1.0.0-26.1.jar
MC Fabric, 26.1, 26.1.1, 26.1.2
Release 2026-06-12 Get
Dynamometer-1.0.0.jar
MC Fabric, 1.21.11
Release 2026-06-12 Get

More from BeansNToast

Advertisement Remove ads with Premium →

You Might Also Like