Quickstart
The recommended path is bootstrap-first: use the platform bootstrap helper, keep
the returned runtime handle, and close it when the platform shuts down. Every
platform has one (BukkitBootstrap, BungeeBootstrap, VelocityBootstrap,
FabricBootstrap, NeoForgeBootstrap).
If most of your logic lives directly in magicutils-core, keep the platform
entrypoint thin and move the shared services behind MagicRuntime.
That does not mean common should call forPlugin(...) or forMod(...).
Those bootstrap helpers stay in the platform module, which then hands the
runtime into shared code.
Bukkit/Paper
BukkitBootstrap wires Platform, ConfigManager, Logger,
LanguageManager, Messages, and an optional CommandRegistry.
Fabric
FabricBootstrap sets up the shared services early, while actual command
registration still happens inside Fabric's Brigadier callback.
Velocity
VelocityBootstrap creates a managed LoggerCore, registers shutdown cleanup,
and can wire the Velocity command registry for you.
NeoForge
NeoForge is bootstrap-first too, via NeoForgeBootstrap.forMod(...). Pass a
supplier for the current MinecraftServer so the runtime can resolve it lazily.
See NeoForge for options and manual wiring as an alternative.
Using The Runtime Handle
Every buildRuntime() call returns MagicRuntime, which exposes the shared
services as typed components:
Use named resources and config bindings when you want runtime-managed clients or other reloadable services.
Core / Common Logic
If your plugin or mod is mostly shared logic plus a thin platform bootstrap,
keep the common layer built around MagicRuntime and platform-agnostic
services.
See Core / Common Logic for the recommended split between platform glue and shared code.
Next Steps
- Pick the modules you need from the Modules section.
- Use the platform pages for more detailed bootstrap notes.
- Use the Core / Common Logic page for shared/common module structure.
- Read the Runtime guide for
MagicRuntime, managed resources, and config bindings. - Use the Migration guide if you are moving from older manual wiring examples.
- See the HTTP client page for
MagicRuntime-bound profiles.