BileTools
Hot-load plugin workflow for fast development iteration
BileTools was built to remove the slow loop of:
compile -> stop server -> replace jar -> start server -> retest.
Drop/update jars directly in your plugins folder and let BileTools handle loading/reloading so you can keep testing without full restarts every cycle.
IMPORTANT (Development Use Only)
BileTools intentionally manipulates plugin loading internals (classloaders, command maps, listeners, plugin provider storage, etc).
This is for dev/test servers. Do not run this in production.
Core Features
- Manual plugin management: load, unload, reload (similar to PlugMan flow).
- Auto hot-drop: new jars added to `/plugins` are detected and loaded automatically.
- Auto reload on jar change: recompiling over an existing jar triggers automatic reload.
- Safer file-write handling: retries hot-drop while jar copy is still incomplete (prevents transient ZIP read failures).
- Backup/library flow: plugin jars are archived so install/uninstall workflows don’t lose artifacts.
- Paper/Purpur runtime compatibility paths: supports runtime loading for many modern paper-plugin.yml plugins after server startup.
How It Works (Under The Hood)
- 1) Detect + stabilize: watches plugin jars, schedules load/reload, and waits/retries if the jar is mid-copy.
- 2) Descriptor parsing: reads `plugin.yml` or `paper-plugin.yml` (with compatibility conversion when needed).
- 3) Dependency-aware load: resolves missing depend/softdepend first, and can replace an already-loaded plugin by name.
- 4) Primary runtime load: tries Bukkit/Paper plugin manager load path first.
- 5) Paper fallback path: if runtime loading is blocked for a Paper plugin, BileTools uses compatibility strategies:
- Paper runtime internals provider path
- Shim jar fallback (generated compatibility jar for runtime loading) - 6) Lifecycle handling: avoids double-calling `onLoad()` on modern Paper/Purpur and validates that the plugin actually enabled.
- 7) Cleanup on unload: removes registrations/listeners/lookup tracking and attempts Paper-side provider cleanup to reduce duplicate provider conflicts.
Commands
- /bile (root; alias of `/biletools`)
- /bile load
- /bile unload
- /bile reload
- /bile install [version]
- /bile uninstall
- /bile library [plugin]
Permission
- bile.use
Compatibility
- Minecraft: 1.20.x+
- Java: 21+
- Recommended server software: Paper / Purpur
- Note: Standard plugin.yml jars are generally easiest. Some plugins still cannot be safely hot-reloaded due to their own internal state/design.
Found an error or weird behavior? Report it in Discord immediately so it can be fixed ASAP.
Discord: discord.gg/3xxPTpT