ViaVersion addon to add support for some notable Minecraft snapshots
Go to file
dependabot[bot] b33becfa5b
Bump com.google.guava:guava from 33.2.1-jre to 33.3.1-jre in /common (#50)
Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.2.1-jre to 33.3.1-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 12:53:09 +01:00
.github Updated dependabot.yml 2024-11-04 12:49:51 +01:00
.idea/copyright Updated copyright: 2024 2024-01-01 02:33:14 +01:00
build-logic Release 3.0.4 2024-11-01 19:49:05 +01:00
bukkit [ci skip] Cleaned up gradle repo config 2024-09-05 01:15:32 +02:00
common Bump com.google.guava:guava from 33.2.1-jre to 33.3.1-jre in /common (#50) 2024-11-04 12:53:09 +01:00
fabric Release 3.0.4 2024-11-01 19:49:05 +01:00
gradle/wrapper Update Gradle Wrapper from 8.10.1 to 8.10.2 (#48) 2024-09-29 04:20:03 +02:00
sponge Define as Sponge plugin for ViaSponge 2024-10-03 19:05:58 +02:00
velocity Merge remote-tracking branch 'origin/main' 2024-09-05 01:15:46 +02:00
.gitattributes Initial commit 2023-01-14 14:24:21 +01:00
.gitignore Add gradle task to quickly test/debug code changes 2024-10-29 14:56:19 +01:00
build.gradle Define as Sponge plugin for ViaSponge 2024-10-03 19:05:58 +02:00
gradle.properties Bump version to 3.0.5-SNAPSHOT 2024-11-01 19:53:17 +01:00
gradlew Update Gradle Wrapper from 8.9 to 8.10. (#46) 2024-08-18 03:21:16 +02:00
gradlew.bat Update Gradle Wrapper from 8.9 to 8.10. (#46) 2024-08-18 03:21:16 +02:00
LICENSE Initial commit 2023-01-14 14:24:21 +01:00
README.md Cleanup 2024-10-28 11:37:41 +01:00
settings.gradle Define as Sponge plugin for ViaSponge 2024-10-03 19:05:58 +02:00

ViaAprilFools

ViaVersion addon to add support for some notable Minecraft snapshots.

ViaAprilFools itself runs on Paper and Velocity servers and can be implemented in any other platform which supports ViaVersion.

If you are looking to implement ViaAprilFools in your own software you can start by reading the Usage section.
If you just want to use ViaAprilFools yourself you can check out some projects which implement it in the Projects section.

Added Server protocols

  • 3D Shareware
  • 20w14infinite
  • Combat Test 8c

Added Client protocols

  • 3D Shareware
  • Combat Test 8c

Projects implementing ViaAprilFools

  • ViaProxy: Standalone proxy which uses ViaVersion to translate between Minecraft versions. Allows Minecraft 1.7+ clients to join to any version server.
  • ViaFabricPlus: Fabric mod for the latest Minecraft version with QoL fixes and enhancements to the gameplay.
  • ViaFabric: Client-side and server-side ViaVersion implementation for Fabric

Releases

Gradle/Maven

To use ViaAprilFools with Gradle/Maven you can use the ViaVersion maven server:

repositories {
    maven { url "https://repo.viaversion.com" }
}

dependencies {
    implementation("net.raphimc:viaaprilfools-common:x.x.x") // Get latest version from releases
}
<repositories>
    <repository>
        <id>viaversion</id>
        <url>https://repo.viaversion.com</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>net.raphimc</groupId>
        <artifactId>viaaprilfools-common</artifactId>
        <version>x.x.x</version> <!-- Get latest version from releases -->
    </dependency>
</dependencies>

Jar File

If you just want the latest jar file you can download it from GitHub Actions or the ViaVersion Jenkins.

Usage

ViaAprilFools requires you to have an already functional ViaVersion implementation for your platform. If you don't have one you can check out ViaLoader for an abstracted and simplified, but still customizable implementation. You can also go to the other ViaVersion repositories and look at their server and proxy implementations.

Base Implementation

ViaAprilFools platform implementation

To get started you should create a class which implements the ViaAprilFools platform interface. Here is an example:

public class ViaAprilFoolsPlatformImpl implements ViaAprilFoolsPlatform {

    public ViaAprilFoolsPlatformImpl() {
        this.init(this.getDataFolder());
    }

    @Override
    public Logger getLogger() {
        return Via.getPlatform().getLogger();
    }

    @Override
    public File getDataFolder() {
        return Via.getPlatform().getDataFolder();
    }

}

This is a very basic implementation which just uses the ViaVersion logger and data folder.

Loading the platform

After you have created your platform implementation you should load it in your ViaVersion implementation. Here is an example:

Via.getManager().addEnableListener(ViaAprilFoolsPlatformImpl::new);

Make sure to add the enable listener before the Via manager is initialized (((ViaManagerImpl) Via.getManager()).init();).

Note

If you want your platform to support the client protocols, you need the override the getClientProtocol function in your version provider:

@Override
public ProtocolVersion getClientProtocol(UserConnection connection) {
    final ProtocolVersion version = connection.getProtocolInfo().protocolVersion();
    if (version.getVersionType() == VersionType.SPECIAL) {
        return ProtocolVersion.getProtocol(VersionType.SPECIAL, version.getOriginalVersion());
    } else {
        return super.getClientProtocol(connection);
    }
}

There is also a VAFServerVersionProvider which can act as wrapper class instead.

Contact

If you encounter any issues, please report them on the issue tracker.
If you just want to talk or need help implementing ViaAprilFools feel free to join the ViaVersion Discord.