A library for communication with a Minecraft client/server.
Find a file
Alex 148cd197c2
Fix/write race condition ()
* Restore old codec behaviour to solve autoread disconnect race conditions.

* Move all uses of PacketProtocol to MinecraftProtocol

Also removes the unsafe cast in the sending event. A modern instanceof cast should be used instead.

* Do never manually call exceptionCaught

This better handles disconnecting.

* Readd some of the disconnect packet fixes

* Switch back encryption and compression too

* Fix retaining read issues

* Prevent encoding memory leak

* Remove useless generics

* Remove wrapper exceptions

* Readd DecoderException and EncoderException
2025-03-16 18:18:28 +01:00
.github/workflows Let's *actually* run on feature branches 2024-11-28 00:32:12 +08:00
buildSrc Disable code signing for Jitpack () 2024-06-02 01:16:19 -07:00
example Fix/write race condition () 2025-03-16 18:18:28 +01:00
gradle 1.21.2 release () 2024-12-12 09:11:01 +08:00
protocol Fix/write race condition () 2025-03-16 18:18:28 +01:00
.editorconfig Add .editorconfig () 2024-05-08 14:44:49 +01:00
.gitignore Migrate to gradle, fix examples () 2023-12-19 13:01:53 -05:00
build.gradle.kts Move package/license to GeyserMC, gradle conventions and submodules () 2024-01-11 12:21:23 -05:00
gradlew Migrate to gradle, fix examples () 2023-12-19 13:01:53 -05:00
gradlew.bat Migrate to gradle, fix examples () 2023-12-19 13:01:53 -05:00
Jenkinsfile Fix Javadocs 2024-05-13 22:29:24 -04:00
jitpack.yml Create jitpack.yml () 2023-12-22 19:32:29 -08:00
LICENSE.txt Move package/license to GeyserMC, gradle conventions and submodules () 2024-01-11 12:21:23 -05:00
lombok.config Remove unused exceptions, use java 9+ features and checkerframework, other cleanup () 2024-01-04 13:04:25 -05:00
README.md Update javadoc link in readme 2025-01-13 16:33:47 +00:00
settings.gradle.kts Replace MCAuth with RK_01 MinecraftAuth () 2024-06-17 13:23:42 -07:00

MCProtocolLib

MCProtocolLib is a simple library for communicating with Minecraft clients and servers. It allows developers to build custom bots, clients, or servers for Minecraft with ease.

Example Code

See the example folder for sample usage.

Adding as a Dependency

MCProtocolLib builds are published to the Open Collaboration repository. Follow the below steps to add MCProtocolLib as a dependency to your project.

Maven

Add the Repository

<repositories>
    <repository>
        <id>opencollab</id>
        <url>https://repo.opencollab.dev/main/</url>
    </repository>
</repositories>

Add the Dependency

<dependency>
    <groupId>org.geysermc.mcprotocollib</groupId>
    <artifactId>protocol</artifactId>
    <version>(version here)</version>
</dependency>

Gradle (Groovy DSL)

Add the Repository

repositories {
    maven { 
        name 'opencollab'
        url 'https://repo.opencollab.dev/main/'
    }
}

Add the Dependency

dependencies {
    implementation 'org.geysermc.mcprotocollib:protocol:(version here)'
}

Gradle (Kotlin DSL)

Add the Repository

repositories {
    maven("https://repo.opencollab.dev/main/") {
        name = "opencollab"
    }
}

Add the Dependency

dependencies {
    implementation("org.geysermc.mcprotocollib:protocol:(version here)")
}

Snapshots

To use snapshot builds, switch the URL to https://repo.opencollab.dev/maven-snapshots/.

Javadocs

You can find the Javadocs for MCProtocolLib on opencollab.

Building the Source

MCProtocolLib uses Gradle to manage dependencies. To build the source code, run ./gradlew clean build in the project root directory.

Support and Development

Please join the GeyserMC Discord server and visit the #mcprotocollib channel for discussion and support for this project.

License

MCProtocolLib is licensed under the MIT license.