Skip to content

VolmitSoftware/BileTools

Repository files navigation

BileTools

Tools for making garbage

What the hell does this do?

  • Any plugin jar files modified while loaded (maven compile or export or even drag/drop) are automatically reloaded. So now all you have to do is smack the run button and bam, its already in the game without reloading, dragging or really doing anything. Psst... Works best with multiple monitors.
  • New Plugins are hot-dropped into the server when they are added to the plugins folder
  • It's basically plugman also. You can unload load and reload plugins.

Compatibility

Runtime Support Notes
Paper Primary Public PluginManager load path; hot-unload remains best-effort
Purpur Primary Paper-family (same load/unload paths)
Leaf Primary Paper-family fork; treated like Paper
Folia Supported folia-supported: true; GlobalRegionScheduler only; hot-reload is best-effort
Canvas Supported Folia fork; same regionized scheduling rules as Folia
Spigot Best-effort paper-plugin.yml-only jars are rejected; dual-descriptor jars load through plugin.yml; compiled against Paper 26.2
  • plugin.yml api-version: 26.2
  • Compile target: Paper API 26.2 (see gradle/libs.versions.toml)
  • Runtime JVM: Java 25+
  • Lifecycle mutations always run on the global/main thread (never on PluginOps / network threads)
  • On Folia/Canvas, player sounds/messages that touch entities are routed through the entity scheduler

Folia / Canvas caveats

  • Third-party plugins without folia-supported: true may still fail when hot-loaded
  • Plugin reload on regionized servers is inherently riskier than on single-threaded Paper/Spigot
  • Classic Bukkit.getScheduler() is never used on Folia/Canvas (it throws UnsupportedOperationException)
  • Runtime hot-load preserves required/optional dependency discovery, but cannot recreate Paper's startup provider graph; missing BEFORE, AFTER, and OMIT dependencies are loaded first so the public PluginManager can validate the target plugin

Watcher filters (config.yml)

  • watcher.ignore — plugin names that auto hot-drop/reload/unload will skip (defaults include LuckPerms, Vault, ProtocolLib, …)
  • watcher.only — if non-empty, only these plugins are auto-managed (allowlist mode)
  • Manual /bile load|unload|reload always bypasses ignore/only
  • watcher.coalesce-window-ticks — batch nearby jar changes into one dependency-aware reload flush
  • lifecycle.health-check — fail reload if plugin is not actually enabled/registered after enable
  • observability.log-timings — log unload/load/reload phase timings

About

Tools for making garbage

Topics

Resources

License

GPL-3.0, WTFPL licenses found

Licenses found

GPL-3.0
LICENSE.md
WTFPL
license.txt

Stars

50 stars

Watchers

4 watching

Forks

Packages

 
 
 

Contributors

Languages