Run Basalt plugins on JVM servers and proxies. One Lua project, both distributions.
Basalt Bridge is a compatibility layer written in Kotlin that runs Basalt's Lua plugins on Bukkit, Spigot, Paper, Velocity and BungeeCord through Luak.
It provides two ways to distribute a plugin: install Bridge on a server or proxy and load Basalt packages, or use its Gradle integration to build a platform jar and a native Basalt package from the same Lua project.
| Language | Kotlin, running on the JVM |
| Lua runtime | Luak |
| Server platforms | Bukkit, Spigot, Paper |
| Proxy platforms | Velocity, BungeeCord |
| Distribution | Platform .jar and native .bspkg or .bppkg packages |
| Build integration | Gradle |
| License | GPL-3.0-only |
Design stage. This repository currently contains the initial documentation and license. The platform adapters, package loader and Gradle integration are not implemented yet. The workflows below describe the intended behavior. Build commands, Maven coordinates and supported platform versions will be documented once they are available.
Bridge is intended to install as a plugin on the host server or proxy:
- Place the Bridge jar for your platform in
plugins/. - Start the server or proxy to initialize Bridge.
- Drop your Basalt packages into Bridge's package directory.
- Restart to validate and load the plugins through Luak.
Server plugins use .bspkg; proxy plugins use .bppkg. Bridge maps their Basalt API calls to the
host platform. The package directory and Java requirements will be defined with the first implementation.
| Host | Package |
|---|---|
| Bukkit, Spigot, Paper | .bspkg |
| Velocity, BungeeCord | .bppkg |
| Basalt Server, without Bridge | .bspkg |
| Basalt Proxy, without Bridge | .bppkg |
Server and proxy plugins target different APIs. Supporting both requires code for each target; renaming a package does not convert it. API coverage will be documented per platform and feature.
The planned Gradle integration keeps Lua sources, resources and plugin metadata in one project and produces two artifacts for the selected target:
- A
.jarwith the adapter and metadata required by the JVM platform. - A
.bspkgfor Basalt Server or a.bppkgfor Basalt Proxy.
Whether the jar bundles the runtime or requires a shared Bridge installation is still to be decided. The Gradle configuration and tasks will be documented when implemented. Native packages must preserve Basalt's package format and API contracts, so they run directly on Basalt Server or Basalt Proxy without adding a JVM dependency to either product.
Basalt Server and Basalt Proxy define the native APIs Bridge will adapt. Kiln verifies and packages their native plugins.
Luak provides the Lua interpreter and compiler in Kotlin. Mawu integrates Lua sources into Gradle projects and packages them for Luak. It is a reference for the build integration; adopting it as a Bridge dependency is still under evaluation.
Bridge runs Basalt plugins on JVM platforms. Running Java plugins inside Basalt's native products is handled by their integrations with Shim.
GPL-3.0-only. See LICENSE.