Paper / FoliaJava 25Async-firstBigDecimal

Conduit

A modern Economy abstraction for Minecraft.

One interface, many backends, zero coupling between the plugins that spend money and the plugin that stores it. Async-first, BigDecimal-everywhere, UUID-native.

RewardPlugin.java
Conduit.whenProviderAvailable(Economy.class, economy ->
    economy.deposit(playerId, new BigDecimal("100.00"), "daily reward")
        .thenAccept(result -> result.ifSuccess(s ->
            getLogger().info("New balance: " + economy.format(s.newBalance())))));

Resolve the active economy, move money, and react to the typed result. Off the main thread, with no load-order races.

Async by default

Every operation returns a CompletableFuture. There is no blocking facade, so a database call never freezes the main thread.

BigDecimal everywhere

No double anywhere in the public API. Floating-point money drift is structurally impossible.

UUID-first

Accounts are keyed by UUID. Names change; UUIDs do not.

Capability-aware

Ask what a provider supports, structurally and via flags, before you call it. No UnsupportedOperationException surprises.

Typed results & events

Sealed EconomyResult cases, post-commit events, and synchronous pre-auth interceptors.

Not a Vault fork

Conduit is its own API under so.alaz.conduit. It does not shim, wrap, or pretend to be Vault.

Build on Conduit

Whether you are spending money in a plugin, implementing an economy backend, or bridging an existing one, the guides walk you through it.