A protocol library for Minecraft that supports multiple versions. (Currently Bedrock Edition only)
// 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();
This can be done whilst the client is connected to a server however it cannot be to the connected server.
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.
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.
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();
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 - 1.17.11 |
bedrock-v465 | 1.17.30 - 1.17.34 |
bedrock-v471 | 1.17.40 - 1.17.41 |
bedrock-v475 | 1.18.0 |
bedrock-v486 | 1.18.10 |
bedrock-v503 | 1.18.30 |
bedrock-v527 | 1.19.0 |
bedrock-v534 | 1.19.10 |
bedrock-v544 | 1.19.20 |
bedrock-v545 | 1.19.21 |
bedrock-v554 | 1.19.31 |
bedrock-v557 | 1.19.40 |
bedrock-v560 | 1.19.50 |
<repositories>
<repository>
<id>powernukkit-snapshots</id>
<name>powernukkit-snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.powernukkit.protocol</groupId>
<artifactId>bedrock-v(VERSION)</artifactId>
<version>2.9.15-PN.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
- PowerNukkit - A bedrock first server software
- ProxyPass - Vanilla server man-in-the-middle proxy
- Geyser - A bridge between Bedrock and Java Edition
- BedrockConnect - Allow Xbox/Switch Bedrock clients to add and join servers
If you would like to add your project here, please create a pull request.