Need help with Protocol?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

CloudburstMC
171 Stars 51 Forks Apache License 2.0 396 Commits 11 Opened issues

Description

A protocol library for Minecraft Bedrock Edition

Services available

!
?

Need anything else?

Contributors list

Protocol

License Build Status Discord

Introduction

A protocol library for Minecraft that supports multiple versions. (Currently Bedrock Edition only)

Links

Usage

Client

Creating a client
// This is the local address to bind to, not the remote one.
// If bound to 127.0.0.1 any incoming packets from outside your computer will not be received.
InetSocketAddress bindAddress = new InetSocketAddress("0.0.0.0", 12345);
BedrockClient client = new BedrockClient(bindAddress);

// Bind the port client.bind().join();

Pinging a Remote Server

This can be done whilst the client is connected to a server however it cannot be to the connected server.

java
InetSocketAddress addressToPing = new InetSocketAddress("play.nukkitx.com", 19132);
client.ping(addressToPing).whenComplete((pong, throwable) -> {
    if (throwable != null) {
        // Error occurred or timeout
        return;
    }
    // Pong received.
}).join(); // Join if you do not want this to be handled asynchronously.
Connecting to a Remote Server

A

BedrockClient
can only have one session per instance. If you need more, create extra instances.
InetSocketAddress addressToConnect = new InetSocketAddress("play.nukkitx.com", 19132);
client.connect(addressToConnect).whenComplete((session, throwable) -> {
    if (throwable != null) {
        // Unable to establish connection
        return;
    }
    // Connection established
    // Make sure to set the packet codec version you wish to use before sending out packets
    session.setPacketCodec(Bedrock_v389.V389_CODEC);
    // Add disconnect handler
    session.addDisconnectHandler((reason) -> System.out.println("Disconnected"));
    // Remember to set a packet handler so you receive incoming packets
    session.setPacketHandler(new FooBarPacketHandler());
    // Now send packets...
}).join(); // Join if you do not want this to be handled asynchronously.

Server

Creating a Server
InetSocketAddress bindAddress = new InetSocketAddress("0.0.0.0", 19132);
BedrockServer server = new BedrockServer(bindAddress);

BedrockPong pong = new BedrockPong(); pong.setEdition("MCPE"); pong.setMotd("My Server"); pong.setPlayerCount(0); pong.setMaximumPlayerCount(20); pong.setGameType("Survival"); pong.setProtocolVersion(Bedrock_v389.V389_CODEC.getProtocolVersion());

server.setHandler(new BedrockServerEventHandler() { @Override public boolean onConnectionRequest(InetSocketAddress address) { return true; // Connection will be accepted }

@Override
public BedrockPong onQuery(InetSocketAddress address) {
    return pong;
}

@Override
public void onSessionCreation(BedrockServerSession serverSession) {
    // Connection established
    // Add disconnect handler
    session.addDisconnectHandler((reason) -> System.out.println("Disconnected"));
    // Remember to set a packet handler so you receive incoming packets
    session.setPacketHandler(new FooBarPacketHandler());
    // By default, the server will use a compatible codec that will read any LoginPacket.
    // After receiving the LoginPacket, you need to set the correct packet codec for the client and continue. 
}

});

// Start server up server.bind().join();

Maven

Protocol Versions:

| Dependency | Minecraft Version | | :---: | :---: | | bedrock-v291 | 1.7.0 | | bedrock-v313 | 1.8.0 | | bedrock-v332 | 1.9.0 | | bedrock-v340 | 1.10.0 | | bedrock-v354 | 1.11.0 | | bedrock-v361 | 1.12.0 | | bedrock-v388 | 1.13.0 | | bedrock-v389 | 1.14.0 - 1.14.50 | | bedrock-v390 | 1.14.60 | | bedrock-v407 | 1.16.0 - 1.16.10 | | bedrock-v408 | 1.16.20 | | bedrock-v419 | 1.16.100 | | bedrock-v422 | 1.16.200 - 1.16.201 | | bedrock-v428 | 1.16.210 | | bedrock-v431 | 1.16.220 | | bedrock-v440 | 1.17.0 | | bedrock-v448 | 1.17.10 |

Repository:
    
        
            nukkitx-repo-release
            https://repo.nukkitx.com/maven-releases/
        
        
            nukkitx-repo-snapshot
            https://repo.nukkitx.com/maven-snapshots/
        
    
Dependencies:
    
        
            com.nukkitx.protocol
            bedrock-v(VERSION)
            2.9.2-SNAPSHOT
            compile
        
    

Projects Using This Library

If you would like to add your project here, please create a pull request.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.