Sueta

StormtrooperX

1.11.0

Make ranged mobs miss more - reduce accuracy of Skeletons, Strays, Pillagers, and Piglins

·Plugin
Tested MC versions
1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20, 1.21, 26.1, 26.2, 26.3

Make ranged mobs miss like they were trained by the Empire.
Per-mob accuracy tuning, per-player opt-out, zero setup. No client mod required.

Minecraft 1.18+ and 26.x Spigot Paper Purpur Folia Folia supported Server side License MIT


Why nerf ranged mobs?

Vanilla skeletons are snipers. They track you through a jungle canopy, lead their shots while you
sprint, and knock you off your half-finished build from thirty blocks out. That's fine for hardcore
players, and exhausting for everyone else.

StormtrooperX makes ranged mobs miss more. Every arrow a configured mob fires gets its direction
nudged by a random amount you control, per mob type. Skeletons, Strays, Bogged, Parched, Pillagers,
and Piglins go from marksmen to, well, stormtroopers. Projectile speed is untouched, so arrows still
fly, arc, and hit exactly as hard as vanilla; they just don't all hit you.

100% server-side. Players join with an ordinary vanilla client. There is nothing for them to
install: no resource pack, no mod. Drop the jar in plugins/ and it works.

✨ Features

  • 🎯 Per-mob accuracy control. Enable or disable each of the six supported mobs individually and
    give each its own accuracy value, from 0.0 (vanilla-perfect aim) to 1.0 (full stormtrooper).
  • 🏹 Physics stay vanilla. Only the direction of the shot is perturbed. Speed, arc, and damage
    are exactly what the mob would have dealt anyway.
  • 🙋 Player opt-out system. Purists can keep vanilla difficulty for themselves with
    /stormtrooperx optout, and come back with optin. Choices persist across relogs and restarts.
  • 🛡️ Admin tools. Manage other players' opt-out status, permission-aware tab completion, an
    in-game help subcommand, and live /stormtrooperx reload.
  • 💾 Persistent storage. Embedded H2 by default (zero setup), or shared MySQL with
    HikariCP pooling so opt-out choices follow players across a network.
  • 🧩 PlaceholderAPI support. %stormtrooperx_optout% resolves to true/false; great for
    scoreboards and menus. Optional soft dependency.
  • ⚡ Folia-ready & featherweight. Event-driven with no tick tasks, in-memory opt-out cache on
    the hot path, and all database I/O off the main thread.
  • 🔔 Update checker. A quiet startup notice when a new release is out. Can be disabled.
  • 🔓 Free & open source. MIT-licensed, with Sigstore build-provenance attestation and a
    CycloneDX SBOM on every release jar.

🎯 Perfect for

  • Survival & SMP servers. Take the edge off ranged mobs so casual players can actually enjoy
    night time, without touching melee difficulty.
  • Family-friendly & kids servers. Fewer cheap deaths from off-screen crossbow bolts.
  • Builders' servers. Stop skeleton snipers from turning every scaffold into a death trap.
  • Mixed-skill communities. The opt-out system means one server can serve both audiences: nerfed
    aim by default, vanilla aim for anyone who asks.

⌨️ Commands

Base command: /stormtrooperx (aliases /stx, /stormtrooper).

CommandPermissionWhat it does
/stormtrooperxstormtrooperx.useShow plugin info and version.
/stormtrooperx helpstormtrooperx.useList the subcommands you may use.
/stormtrooperx optoutstormtrooperx.optoutOpt out of the accuracy nerfs (always sets opted-out).
/stormtrooperx optinstormtrooperx.optoutOpt back in to the accuracy nerfs.
/stormtrooperx togglestormtrooperx.optoutFlip your opt-out state.
/stormtrooperx optout <player>stormtrooperx.optout.othersOpt out another online player (also optin <player>).
/stormtrooperx reloadstormtrooperx.adminReload the configuration.

🔑 Permissions

PermissionDefaultGrants
stormtrooperx.useeveryoneAccess to the main command and help.
stormtrooperx.optouteveryoneOpt out of / back in to nerfs for yourself.
stormtrooperx.optout.othersopsManage other players' opt-out status.
stormtrooperx.adminopsReload and admin-only actions; also grants optout.others.

🚀 Quick start

  1. Download StormtrooperX and drop the .jar into plugins/.
  2. Restart your server. That's it: all six mobs are nerfed out of the box at accuracy 0.7, with
    no configuration required and no dependencies to install.
  3. Optional: tune per-mob accuracy in plugins/StormtrooperX/config.yml, then apply it live with
    /stormtrooperx reload.

⚙️ Configuration

StormtrooperX generates a fully commented config.yml in plugins/StormtrooperX/.

Per-mob tuning. Each mob gets an enabled flag and an accuracy value between 0.0 (perfect
vanilla aim, no nerf) and 1.0 (maximum chaos). Different projectile types can want different
values; crossbow bolts fly flatter than arrows.

Version-gated mobs, handled for you. Bogged (1.21+) and Parched (1.21.11+) are detected at
startup. On older servers they're simply skipped with a log line; nothing to configure, nothing
breaks.

Storage backends. Choose where opt-out preferences live:

  • h2 (default): embedded, file-based database; no external server to run.
  • mysql: external server with HikariCP pooling and optional SSL, so opt-out choices can be
    shared across a whole network of servers.

Automatic migration. Upgrading from an older release? The config migrates itself on startup;
your settings are preserved.

✅ Compatibility

  • Minecraft 1.18 – 26.1.x. Version-gated mobs activate automatically where available.
  • Spigot, Paper, Purpur, or any Spigot-based server. Folia is fully supported (1.20.4+,
    detected at runtime).
  • Java 17+ (CI-tested on Java 17, 21, and 25).
  • No required dependencies. PlaceholderAPI is an optional soft dependency.
  • Vanilla clients. No client-side mod or resource pack.

🛡️ Performance & safety

  • Event-driven only. One listener on the bow-shoot event; no tick tasks, no polling.
  • Cached hot path. The opt-out check is a lock-free in-memory lookup; the database is never
    touched during combat.
  • Never blocks the server thread. All database and network I/O runs async, through a
    Folia-aware scheduler.
  • Hardened MySQL. JDBC connection properties are allowlisted and URL-encoded, and risky
    Connector/J flags with RCE and file-read history are forced off at the pool layer.
  • Trustworthy builds. Every release ships a CycloneDX SBOM and a GitHub build-provenance
    attestation you can verify with gh attestation verify.

❓ FAQ

Do players need to install a mod or resource pack?

No. StormtrooperX is entirely server-side. Players connect with a normal vanilla client and
everything just works.

Does it change arrow damage or speed?

No. Only the direction of the shot is perturbed. Speed is explicitly preserved, so arcs, flight
time, and damage on hit are all exactly vanilla. A shot that connects hurts just as much; fewer of
them connect.

Can individual players keep vanilla mob accuracy?

Yes. Any player with stormtrooperx.optout (default: everyone) can run /stormtrooperx optout and
mobs will aim at them exactly as vanilla intended. The choice persists across relogs and restarts,
and admins can manage it for other players.

What happens with mobs my server version doesn't have?

They're skipped gracefully. Bogged needs 1.21+ and Parched needs 1.21.11+; on older servers
StormtrooperX logs a one-line notice and carries on with the mobs that exist.

Do I need to run a database server?

No. The default backend is embedded H2 and requires zero setup. MySQL is optional, for networks
that want opt-out preferences shared across multiple servers.

Does it work on Folia?

Yes. Folia (1.20.4+) is detected at runtime and fully supported; all async work goes through a
Folia-aware scheduler.


Source code & issue tracker: github.com/GooberCraft/StormtrooperX
Found a bug or have a feature request? Open an issue on GitHub. StormtrooperX is open source under MIT, a refactored and enhanced take on Stormtrooper by byteful.

Similar projects

Plugin →