Skip to content

These docs describe Bloom 0.1.0, a pre-release. APIs may change before 1.0, and Bloom is not on Maven Central yet (see Installation).

Compatibility

Supported Minecraft versions, Java requirements, capabilities per version, and what has actually been tested.

Versions

Supported Minecraft versions and how each was verified
MinecraftServerJavaBloomVerified by
1.7.10CraftBukkit, Spigot, PaperSpigot8Supportedlegacy adaptertested-real-server PaperSpigot 1.7.10, unit-testsNo titles or action bars (1.7 protocol).
1.8 - 1.8.9CraftBukkit, Spigot, PaperSpigot8Supportedlegacy adaptertested-real-server PaperSpigot 1.8.8, compile-verified 1.8.8, unit-testsTitles via Spigot API, action bars via reflection.
1.9 - 1.21.0any-Not supported—No adapter yet. Bloom refuses to start with an explanation.
1.21.1 - 1.21.11Paper and forks21Supportedmodern adaptertested-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.xPaper and forks25Supportedmodern adaptertested-real-server Paper 26.3, compile-verified 26.3Same adapter as 1.21.
newer than 26.3.xPaper25+Opt-in, untestedmodern adapter—Only with BloomOptions.allowNewerUntestedVersions(true); Bloom logs a warning.
anyFolia-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:

Platform capabilities by server family
Capability1.7.101.8.xPaper 1.21+ / 26.x
ADVENTURE_TEXT, MINIMESSAGE, HEX_COLORSnonoyes
MiniMessage subset (converted)yesyesfull MiniMessage
ACTION_BARnoprobedyes
TITLESnoprobedyes
TITLE_TIMINGSnonoyes
BOSS_BARnonoyes
COMPONENT_INVENTORY_TITLESno (32 chars)no (32 chars)yes
PERSISTENT_DATA_CONTAINERnonoyes
ITEM_NBT_TAGSprobedprobedno (uses PDC)
ITEM_FLAGSnoyesyes
UNBREAKABLE_ITEMSprobedyesyes
CUSTOM_MODEL_DATAnonoyes
LEGACY_DATA_VALUESyesyesno

"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:

JavaView source
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

APIWithout the capability
Messenger.actionBar, Messenger.titleFollows the unsupported feature policy: skip with one warning (default), chat fallback, or throw
Messenger.bossBarReturns a bar whose isFunctional() is false, or throws with THROW
ItemBuilder.customModelData, .unbreakable, .flagsSkipped with one warning, or throws with THROW
Items.setData, custom itemsThrows UnsupportedCapabilityException: identification must not silently fail
Menu titles over 32 characters on 1.7/1.8Truncated with one warning

Java

ArtifactBytecodeNeeds
Every module except bloom-modernJava 8Java 8+
bloom-modernJava 21Java 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:

Java
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.