mirror of
https://github.com/ViaVersion/ViaFabricPlus.git
synced 2025-01-23 21:51:26 +01:00
4c12ab4ddb
Note that this commit still is quite broken and won't compile
5.2 KiB
5.2 KiB
Developer API
ViaFabricPlus provides events and various utility functions for other mods to interface with it. Note that including ViaFabricPlus in your project comes with some requirements:
- The target version is Java 17
- Fabric loom setup (As ViaFabricPlus is a Minecraft mod and has no API-only dependency like other projects)
Since the API is not exposed as standalone submodule (yet), functions that shouldn't be used are marked with
ApiStatus.Internal
. Further information about certain functions can be found in the Javadoc in the corresponding file.
How to include the mod as dependency
Gradle
repositories {
mavenCentral()
maven {
name = "ViaVersion"
url = "https://repo.viaversion.com"
}
maven {
name = "Lenni0451"
url = "https://maven.lenni0451.net/everything"
}
maven {
name = "Jitpack"
url = "https://jitpack.io"
content {
includeGroup "com.github.Oryxel"
}
}
}
dependencies {
modImplementation("com.viaversion:viafabricplus:x.x.x") // Get the latest version from releases
}
Maven
<repositories>
<repository>
<id>viaversion</id>
<url>https://repo.viaversion.com</url>
</repository>
<repository>
<id>lenni0451</id>
<url>https://maven.lenni0451.net/everything</url>
</repository>
<repository>
<id>jitpack</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.viaversion</groupId>
<artifactId>viafabricplus</artifactId>
<version>x.x.x</version> <!-- Get the latest version from releases -->
</dependency>
</dependencies>
Interacting with Events
ViaFabricPlus events are the intended way of interacting with the mod. Events are fired in various situations and are using the Fabric Event API.
Example
ChangeProtocolVersionCallback.EVENT.register((oldVersion, newVersion) -> {
System.out.println("Version changed to " + newVersion.getName());
});
List of events/callbacks
Callback class name | Description |
---|---|
ChangeProtocolVersionCallback | Called when the user changes the target version in the screen, or if you connect to a server for which a specific version has been selected, you disconnect, the event for the actual version is also called. |
DisconnectCallback | Called when the user disconnects from a server |
LoadCallback | Called at the earliest point ViaFabricPlus is injecting too |
LoadClassicProtocolExtensionCallback | Called when the classic server sends the protocol extensions (only in c0.30 CPE) |
PostGameLoadCallback | Called when Minecraft is finished with loading all its components |
PostViaVersionLoadCallback | Called when ViaVersion is loaded and ready to use |
RegisterSettingsCallback | Called after the default setting groups are loaded and before the setting config is loaded |
LoadSaveFilesCallback | Called before and after the save files are loaded |
Other API calls
ViaFabricPlus uses ViaVersion for protocol translation, so the ViaVersion API can be used.
The general API point for ViaFabricPlus specifics is ProtocolTranslator
// Get and change the current selected version
final ProtocolVersion version = ProtocolTranslator.getTargetVersion();
if (version == ProtocolVersion.v1_8) {
ProtocolTranslator.setTargetVersion(ProtocolVersion.v1_9);
}
// Gets the ViaVersion user connection object for raw packet sending using ViaVersion API
final UserConnection user = ProtocolTranslator.getPlayNetworkUserConnection();
if (user == null) {
// Mod not active
}