41eccedb93
This basically makes MinecraftCodec stateless and removes unused APIs. The MinecraftCodecHelper has a state for an unused registry API, which is not needed at all. Developers can just send their own registry as seen in ServerListener. These only exist because there was an attempt at allowing multi-version support inside MinecraftCodecHelper, but that's not gonna be necessary if ViaVersion support gets added to MCPL. The option to add back logic for multi-version support is fully open for the future. I didn't remove MinecraftCodecHelper being instance-based, so it's fully possible to readd the multi-version logic back in the future. Just level events and sounds being dynamic is not enough for multi-version support and thus should be removed to streamline the API. This also removes many workarounds from the code that cause possible inconsistency. Often the MinecraftCodecHelper gets initialized in the tests with empty parameters. This removes them as parameters and removes the need to provide them by moving them to the object itself. PacketCodecs were also improved to decrease the inheritance issues and streamline the code flow and remove the UnsupportedOperationExceptions being needed. BufferedPacket was also removed since it's useless for Minecraft. |
||
---|---|---|
.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/maven-releases/</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/maven-releases/'
}
}
Add the Dependency
dependencies {
implementation 'org.geysermc.mcprotocollib:protocol:(version here)'
}
Gradle (Kotlin DSL)
Add the Repository
repositories {
maven("https://repo.opencollab.dev/maven-releases/") {
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.