Compatibility
Supported Minecraft versions, Java requirements, capabilities per version, and what has actually been tested.
Versions
| Minecraft | Server | Java | Bloom | Verified by |
|---|---|---|---|---|
| 1.7.10 | CraftBukkit, Spigot, PaperSpigot | 8 | Supportedlegacy adapter | tested-real-server PaperSpigot 1.7.10, unit-testsNo titles or action bars (1.7 protocol). |
| 1.8 - 1.8.9 | CraftBukkit, Spigot, PaperSpigot | 8 | Supportedlegacy adapter | tested-real-server PaperSpigot 1.8.8, compile-verified 1.8.8, unit-testsTitles via Spigot API, action bars via reflection. |
| 1.9 - 1.21.0 | any | - | Not supported | —No adapter yet. Bloom refuses to start with an explanation. |
| 1.21.1 - 1.21.11 | Paper and forks | 21 | Supportedmodern adapter | tested-real-server Paper 1.21.11, compile-verified 1.21.1, compile-verified 1.21.11, tested-mockbukkit 1.21.11Spigot/CraftBukkit 1.21 are not supported: the modern adapter needs Paper's Adventure API. |
| 26.1 - 26.3.x | Paper and forks | 25 | Supportedmodern adapter | tested-real-server Paper 26.3, compile-verified 26.3Same adapter as 1.21. |
| newer than 26.3.x | Paper | 25+ | Opt-in, untestedmodern adapter | —Only with BloomOptions.allowNewerUntestedVersions(true); Bloom logs a warning. |
| any | Folia | - | Not supported | —Regionised threading needs a dedicated scheduler adapter (planned). |
Updated 2026-10-13. “Supported” means Bloom starts and selects an adapter; the last column lists how that version has actually been verified so far.
Bloom uses these levels and never mixes them up:
- Supported: Bloom starts and selects an adapter.
- Compile-verified: the adapter's source compiled against that exact API version.
- Tested on MockBukkit: Bloom's integration suite ran against MockBukkit's implementation of that API.
- Tested on a real server: the self-test plugin ran on that server build and passed (
scripts/realserver). PaperSpigot 1.7.10 and 1.8.8 and Paper 1.21.11 and 26.3 have this status.
Capabilities
Some features only exist on some servers. Bloom reports them as capabilities:
| Capability | 1.7.10 | 1.8.x | Paper 1.21+ / 26.x |
|---|---|---|---|
| ADVENTURE_TEXT, MINIMESSAGE, HEX_COLORS | no | no | yes |
| MiniMessage subset (converted) | yes | yes | full MiniMessage |
| ACTION_BAR | no | probed | yes |
| TITLES | no | probed | yes |
| TITLE_TIMINGS | no | no | yes |
| BOSS_BAR | no | no | yes |
| COMPONENT_INVENTORY_TITLES | no (32 chars) | no (32 chars) | yes |
| PERSISTENT_DATA_CONTAINER | no | no | yes |
| ITEM_NBT_TAGS | probed | probed | no (uses PDC) |
| ITEM_FLAGS | no | yes | yes |
| UNBREAKABLE_ITEMS | probed | yes | yes |
| CUSTOM_MODEL_DATA | no | no | yes |
| LEGACY_DATA_VALUES | yes | yes | no |
"Probed" means the adapter checks at startup whether the feature works on this exact server build. The result is printed in the startup banner and available at runtime:
if (bloom.has(Capability.BOSS_BAR)) {
// Paper: show a boss bar
} else {
// 1.7 / 1.8: use the scoreboard or chat instead
}
MinecraftVersion version = bloom.platform().minecraftVersion();
if (version.isAtLeast(MinecraftVersion.V1_21_1)) {
// only reached on modern Paper
}What happens when a feature is missing
| API | Without the capability |
|---|---|
Messenger.actionBar, Messenger.title | Follows the unsupported feature policy: skip with one warning (default), chat fallback, or throw |
Messenger.bossBar | Returns a bar whose isFunctional() is false, or throws with THROW |
ItemBuilder.customModelData, .unbreakable, .flags | Skipped with one warning, or throws with THROW |
Items.setData, custom items | Throws UnsupportedCapabilityException: identification must not silently fail |
| Menu titles over 32 characters on 1.7/1.8 | Truncated with one warning |
Java
| Artifact | Bytecode | Needs |
|---|---|---|
Every module except bloom-modern | Java 8 | Java 8+ |
bloom-modern | Java 21 | Java 21+ (Paper 26.x itself needs Java 25) |
Java 8 compatibility is checked by running the test suites of bloom-api, bloom-common, bloom-config,
bloom-storage and bloom-testing on a real Java 8 runtime, not just by compiling for it.
Newer Paper versions
Paper versions newer than 26.3.x are refused by default. If you test your plugin on a newer version yourself, you can opt in:
Bloom.enable(this, BloomOptions.builder().allowNewerUntestedVersions(true).build());Bloom logs a warning on every start in this mode.
Not supported
- 1.9 to 1.21.0: no adapter. Adding one is possible without changing the API.
- Spigot or CraftBukkit 1.21+: the modern adapter needs Paper's Adventure API.
- Folia: its region threads need a different scheduler design.