Convert Figma logo to code with AI

CloudburstMC logoNukkit

Cloudburst Nukkit - Nuclear-Powered Minecraft: Bedrock Edition Server Software

1,273
429
1,273
122

Top Related Projects

Custom server software for Minecraft: Bedrock, built from scratch in PHP, C and C++

4,994

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.

10,924

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:

  1. 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!");
    }
}
  1. 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"));
  1. 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:

  1. Download the latest Nukkit JAR file from the releases page.
  2. Create a new directory for your server and place the JAR file inside.
  3. Run the server using the command: java -jar nukkit-1.0-SNAPSHOT.jar
  4. Configure the server by editing the server.properties file.
  5. To develop plugins, set up a Java development environment and add Nukkit as a dependency.
  6. Create a new Java class extending PluginBase and implement your plugin logic.
  7. 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.

4,994

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.

10,924

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

nukkit

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