* Improve pipeline This simplifies all pipeline code and ensures some listeners like the sizer are always present. The code already assumed that the sizer is always there and thus causes issues. The sizer can be deactivated still now and has pretty much no performance losses from this. The profit from this PR is that there is less logic with modifying the PR and thus developers interacting with the channel can assume specific things about the order and placements of elements in the pipeline. This will be useful once ViaVersion is supported, and it is expected that certain elements always are in the pipeline and don't change. My plan is to also always have an encryption and compression handler in the pipeline that is controlled via AttributeKeys from netty, but for that first #828 needs to be merged. So this PR only completes the goal partially, but that's fine. PR is ready for review like it is right now. * Revert some stuff * Fix channel race condition * Fix closing race condition * Prevent client race conditions. * Fix test failure, idk how, idk why, but it works now * Address review * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/BuiltinFlags.java Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/BuiltinFlags.java Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/BuiltinFlags.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/tcp/TcpServer.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/BuiltinFlags.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/BuiltinFlags.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/tcp/TcpServer.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/tcp/TcpServer.java Co-authored-by: chris <github@onechris.mozmail.com> * Update protocol/src/main/java/org/geysermc/mcprotocollib/network/tcp/TcpServer.java Co-authored-by: chris <github@onechris.mozmail.com> --------- Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com> Co-authored-by: chris <github@onechris.mozmail.com> |
||
---|---|---|
.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.