WorldEngine exposes a small Bukkit service API for other plugins:
- Service interface:
cc.modlabs.worldengine.api.WorldEngineApi - Convenience accessor:
cc.modlabs.worldengine.WorldEngine.api
import cc.modlabs.worldengine.WorldEngine
val worldEngine = Bukkit.getPluginManager().getPlugin("WorldEngine") as? WorldEngine
?: return
val api = worldEngine.api
// Load or create world (same behavior as /world <name>)
val world = api.getOrLoadWorld("event_world") ?: return
// Teleport player to world spawn
api.teleportToWorldSpawn(player, world)
// Create world with a preset generator
val flatGenerator = api.resolveChunkGenerator("flat")
api.createWorld("flat_event", flatGenerator)
// Copy world asynchronously-ish on main thread callback
api.scheduleWorldCopy(world, "event_world_backup") { result ->
result.onSuccess { copied ->
player.sendMessage("Copied world: ${copied.name}")
}.onFailure { error ->
player.sendMessage("Copy failed: ${error.message}")
}
}import cc.modlabs.worldengine.api.WorldEngineApi;
import org.bukkit.Bukkit;
import org.bukkit.plugin.RegisteredServiceProvider;
RegisteredServiceProvider<WorldEngineApi> registration =
Bukkit.getServicesManager().getRegistration(WorldEngineApi.class);
if (registration == null) {
return;
}
WorldEngineApi api = registration.getProvider();
var world = api.getOrLoadWorld("event_world");
if (world != null) {
api.teleportToWorldSpawn(player, world);
}- API methods are designed to mirror existing command/startup features.
- Permission enforcement is not automatic for API callers; handle authorization in your plugin.
- Built-in generator ids are
empty,flat, andocean.
WorldEngine is published to ModLabs Nexus.
repositories {
maven("https://nexus.modlabs.cc/repository/maven-mirrors/")
}
dependencies {
compileOnly("cc.modlabs.worldengine:WorldEngine:<version>")
}