/MinimalMinecraftClient

A minimal client implementation for Minecraft

Primary LanguageJavaMIT LicenseMIT

Minimal Minecraft Client

A minimal client implementation for Minecraft 1.19.2 (protocol version 760).

Features:

  • Authenticated server login
  • Server list pings
  • Offline mode servers
  • Packet encryption and compression
  • Lightweight (no dependencies)

Requires:

  • Java 11+

Usage

Javadocs

Maven
<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
<dependency>
    <groupId>com.github.OfficialDonut</groupId>
    <artifactId>MinimalMinecraftClient</artifactId>
    <version>Tag</version>
</dependency>
Gradle
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
dependencies {
    implementation 'com.github.OfficialDonut:MinimalMinecraftClient:Tag'
}

Examples

See full examples in src/test.

Keep Alive Packets

Account account = ...
Client client = new Client();
InboundPacket packet = client.login(account, "localhost", 25565);

if (packet.getPacketID() == 2) { // login sucess packet
    while (true) {
        packet = client.receive();
        switch (packet.getPacketID()) {
            case 0x20: // keep alive
                long id = packet.readLong();
                OutboundPacket keepAlivePacket = new OutboundPacket(0x12);
                keepAlivePacket.writeLong(id);
                client.send(keepAlivePacket);
                break;
            case 0x19: // disconnect
                System.out.println("Disconnected: " + packet.readString());
                return;
        }
    }
}

Server List Ping

Client client = new Client();
InboundPacket packet = client.ping("localhost", 25565);
if (packet.getPacketID() == 0) { // status response
    System.out.println("Status: " + packet.readString());
}

License

This project is licensed under the MIT License.