Nukkit
Cloudburst Nukkit - Nuclear-Powered Minecraft: Bedrock Edition Server Software
Top Related Projects
Custom server software for Minecraft: Bedrock, built from scratch in PHP, C and C++
A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
BungeeCord, the 6th in a generation of server portal suites. Efficiently proxies and maintains connections and transport between multiple Minecraft servers.
Quick Overview
Nukkit is an open-source Minecraft: Bedrock Edition server software written in Java. It aims to provide a high-performance, customizable server platform for Minecraft: Bedrock Edition, allowing server owners to create and manage their own Minecraft servers with enhanced features and plugin support.
Pros
- High performance and efficient resource usage
- Extensive plugin support for customization and extended functionality
- Cross-platform compatibility (Windows, Linux, macOS)
- Active development and community support
Cons
- Limited compatibility with some Minecraft: Bedrock Edition features
- Smaller plugin ecosystem compared to other server software
- May require more technical knowledge to set up and manage
- Potential stability issues with certain plugins or configurations
Code Examples
Here are a few examples of how to use Nukkit's API in plugin development:
- Creating a simple plugin:
public class MyPlugin extends PluginBase {
@Override
public void onEnable() {
getLogger().info("MyPlugin has been enabled!");
}
@Override
public void onDisable() {
getLogger().info("MyPlugin has been disabled!");
}
}
- Registering a command:
public class MyCommand extends Command {
public MyCommand(String name) {
super(name);
}
@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
sender.sendMessage("Hello from MyCommand!");
return true;
}
}
// In your plugin's onEnable method:
this.getServer().getCommandMap().register("myplugin", new MyCommand("mycommand"));
- Listening for events:
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
player.sendMessage("Welcome to the server, " + player.getName() + "!");
}
// In your plugin's onEnable method:
this.getServer().getPluginManager().registerEvents(this, this);
Getting Started
To get started with Nukkit:
- Download the latest Nukkit JAR file from the releases page.
- Create a new directory for your server and place the JAR file inside.
- Run the server using the command:
java -jar nukkit-1.0-SNAPSHOT.jar
- Configure the server by editing the
server.properties
file. - To develop plugins, set up a Java development environment and add Nukkit as a dependency.
- Create a new Java class extending
PluginBase
and implement your plugin logic. - Compile your plugin and place the resulting JAR file in the server's
plugins
folder.
For more detailed information, refer to the Nukkit documentation and API documentation.
Competitor Comparisons
Custom server software for Minecraft: Bedrock, built from scratch in PHP, C and C++
Pros of PocketMine-MP
- More extensive plugin ecosystem and community support
- Better documentation and resources for developers
- Faster update cycle to support new Minecraft features
Cons of PocketMine-MP
- Generally lower performance compared to Nukkit
- Less compatibility with vanilla Minecraft features
- Steeper learning curve for new developers
Code Comparison
PocketMine-MP (PHP):
<?php
namespace pocketmine\entity;
use pocketmine\nbt\tag\CompoundTag;
class Entity extends Location implements EntityIds, Metadatable {
public function __construct(Level $level, CompoundTag $nbt){
// Entity initialization
}
}
Nukkit (Java):
package cn.nukkit.entity;
import cn.nukkit.level.format.FullChunk;
import cn.nukkit.nbt.tag.CompoundTag;
public abstract class Entity extends Location implements EntityIds, Metadatable {
public Entity(FullChunk chunk, CompoundTag nbt) {
// Entity initialization
}
}
Both projects aim to create Minecraft: Bedrock Edition servers, but they differ in implementation languages and design philosophies. PocketMine-MP offers a more extensive plugin ecosystem and faster updates, while Nukkit generally provides better performance and closer vanilla compatibility. The code structures are similar, reflecting their shared purpose, but PocketMine-MP uses PHP while Nukkit is written in Java.
A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
Pros of Geyser
- Enables cross-platform play between Bedrock and Java editions
- Actively maintained with frequent updates
- Large community support and extensive documentation
Cons of Geyser
- May introduce latency due to protocol translation
- Some Java-specific features might not work perfectly on Bedrock
Code Comparison
Geyser (Java):
@Override
public void translate(GeyserSession session, Packet packet) {
ItemStack itemStack = ((InventoryTransactionPacket) packet).getActions().get(0).getToItem();
session.getInventory().setItem(0, itemStack);
}
Nukkit (Java):
@Override
public boolean onItemHeld(Player player, Item item) {
PlayerItemHeldEvent event = new PlayerItemHeldEvent(player, item);
this.getServer().getPluginManager().callEvent(event);
return !event.isCancelled();
}
Geyser focuses on translating packets between Bedrock and Java editions, while Nukkit implements server-side logic for a Minecraft server. Geyser's code deals with protocol translation, whereas Nukkit handles game events and server management.
The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
Pros of Paper
- Better performance and optimization for large servers
- More frequent updates and active development
- Extensive plugin ecosystem and compatibility with Bukkit/Spigot plugins
Cons of Paper
- Limited to Java Edition servers only
- Higher resource requirements compared to Nukkit
Code Comparison
Paper (Java):
@Override
public void onEnable() {
getLogger().info("Paper plugin enabled!");
// Paper-specific API usage
this.getServer().getPluginManager().registerEvents(new MyListener(), this);
}
Nukkit (Java):
@Override
public void onEnable() {
this.getLogger().info("Nukkit plugin enabled!");
// Nukkit-specific API usage
this.getServer().getPluginManager().registerEvents(new MyListener(), this);
}
Both projects use Java, but their APIs and implementation details differ. Paper focuses on optimizing Java Edition servers, while Nukkit aims to provide a lightweight server for Bedrock Edition. Paper offers better performance for large-scale Java servers, whereas Nukkit excels in resource efficiency and cross-platform support. The choice between them depends on the target platform (Java vs. Bedrock) and specific server requirements.
BungeeCord, the 6th in a generation of server portal suites. Efficiently proxies and maintains connections and transport between multiple Minecraft servers.
Pros of BungeeCord
- More established and widely used in the Minecraft server community
- Better support for Java Edition servers and plugins
- Extensive documentation and community resources
Cons of BungeeCord
- Limited support for Bedrock Edition servers
- Higher resource consumption compared to Nukkit
- Steeper learning curve for new server administrators
Code Comparison
BungeeCord (Java):
public class ExamplePlugin extends Plugin {
@Override
public void onEnable() {
getProxy().getPluginManager().registerListener(this, new ExampleListener());
}
}
Nukkit (Java):
public class ExamplePlugin extends PluginBase {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new ExampleListener(), this);
}
}
Both examples show similar plugin initialization, but Nukkit's API is more focused on Bedrock Edition compatibility. BungeeCord uses getProxy()
for server access, while Nukkit uses getServer()
. The event registration process is also slightly different between the two platforms.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Introduction
Nukkit is nuclear-powered server software for Minecraft Bedrock Edition. It has a few key advantages over other server software:
- Written in Java, Nukkit is faster and more stable.
- Having a friendly structure, it's easy to contribute to Nukkit's development and rewrite plugins from other platforms into Nukkit plugins.
Nukkit is under improvement yet, we welcome contributions.
Links
Compile Nukkit
git clone https://github.com/CloudburstMC/Nukkit
cd Nukkit
./gradlew shadowJar
The compiled JAR can be found in the target/
directory.
Note: You don't need to compile Nukkit yourself if you don't intend to modify the code.
Running
Simply run java -jar nukkit-1.0-SNAPSHOT.jar
.
Plugin API
Information on Nukkit's API can be found at the wiki.
Docker
Running Nukkit in Docker (17.05+ or higher).
Build image from the source,
docker build -t nukkit .
Run once to generate the nukkit-data
volume, default settings, and choose language,
docker run -it -p 19132:19132/udp -v nukkit-data:/data nukkit
Docker Compose
Use docker-compose to start server on port 19132
and with nukkit-data
volume,
docker-compose up -d
Kubernetes & Helm
Validate the chart:
helm lint charts/nukkit
Dry run and print out rendered YAML:
helm install --dry-run --debug nukkit charts/nukkit
Install the chart:
helm install nukkit charts/nukkit
Or, with some different values:
helm install nukkit \
--set image.tag="arm64" \
--set service.type="LoadBalancer" \
charts/nukkit
Or, the same but with a custom values from a file:
helm install nukkit \
-f helm-values.local.yaml \
charts/nukkit
Upgrade the chart:
helm upgrade nukkit charts/nukkit
Testing after deployment:
helm test nukkit
Completely remove the chart:
helm uninstall nukkit
Top Related Projects
Custom server software for Minecraft: Bedrock, built from scratch in PHP, C and C++
A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
BungeeCord, the 6th in a generation of server portal suites. Efficiently proxies and maintains connections and transport between multiple Minecraft servers.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot