* Initial code changes * Make it compile * Small inlining * Make less detectable by anticheats and fix keepalive during configuration * Fix keepalive edge case * Properly switch inbound protocol in server listener * Add flow control * Make toggling automatic keepalive work in another way * Remove ping pong packets again * Address review * Handle keepalive in configuration * Only spawn keepalive after login is acknowledged * Prevent very unlikely race conditions with keepalive being switched during a task * Add debug log for packet serialization and state switching * Add one more debug print * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/Session.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/protocol/MinecraftProtocol.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/protocol/MinecraftProtocol.java Co-authored-by: chris <github@onechris.mozmail.com> * Mark packet as nonnull * Fix outbound writing race conditions * Ensure packets are always sent on the event loop This replicates the same approach Mojang uses in their networking code. * Reduce log verbosity * Put errors into debug * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/tcp/TcpClientSession.java Co-authored-by: chris <github@onechris.mozmail.com> * Add comment to always running in event loop * Handle auto read earlier to prevent race conditions * Make instance dynamic * Revert "Make instance dynamic" This reverts commit |
||
---|---|---|
.github/workflows | ||
buildSrc | ||
example | ||
gradle | ||
protocol | ||
.editorconfig | ||
.gitignore | ||
build.gradle.kts | ||
gradlew | ||
gradlew.bat | ||
Jenkinsfile | ||
jitpack.yml | ||
LICENSE.txt | ||
lombok.config | ||
README.md | ||
settings.gradle.kts |
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.