{"id":18574155,"url":"https://github.com/viaversion/viaaprilfools","last_synced_at":"2025-12-29T16:27:03.258Z","repository":{"id":144935123,"uuid":"588906548","full_name":"ViaVersion/ViaAprilFools","owner":"ViaVersion","description":"ViaVersion addon to add support for some notable Minecraft snapshots","archived":false,"fork":false,"pushed_at":"2024-05-17T17:24:56.000Z","size":695,"stargazers_count":13,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-18T14:54:03.323Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ViaVersion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"rk_01"}},"created_at":"2023-01-14T12:41:11.000Z","updated_at":"2024-05-27T11:59:48.111Z","dependencies_parsed_at":null,"dependency_job_id":"2e0ebe2b-7d71-4ba2-9e9e-9abccc7f7b64","html_url":"https://github.com/ViaVersion/ViaAprilFools","commit_stats":null,"previous_names":["viaversion/viaaprilfools"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ViaVersion%2FViaAprilFools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ViaVersion%2FViaAprilFools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ViaVersion%2FViaAprilFools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ViaVersion%2FViaAprilFools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ViaVersion","download_url":"https://codeload.github.com/ViaVersion/ViaAprilFools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223430212,"owners_count":17143625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T23:14:11.061Z","updated_at":"2025-12-29T16:27:03.199Z","avatar_url":"https://github.com/ViaVersion.png","language":"Java","readme":"# ViaAprilFools\nViaVersion addon to add support for some notable Minecraft snapshots.\n\nViaAprilFools itself runs on Paper and Velocity servers and can be implemented in any other platform which supports ViaVersion.\n\nIf you are looking to implement ViaAprilFools in your own software you can start by reading the [Usage](#usage) section.  \nIf you just want to use ViaAprilFools yourself you can check out some projects which implement it in the [Projects](#projects-implementing-viaaprilfools) section.\n\n### Added Server protocols\n- 3D Shareware\n- 20w14infinite\n- Combat Test 8c\n- 25w14craftmine\n\n### Added Client protocols\n- 3D Shareware\n- Combat Test 8c\n- 25w14craftmine\n\n### Projects implementing ViaAprilFools\n - [ViaProxy](https://github.com/ViaVersion/ViaProxy): Standalone proxy which uses ViaVersion to translate between Minecraft versions. Allows Minecraft 1.7+ clients to join to any version server.\n - [ViaFabricPlus](https://github.com/ViaVersion/ViaFabricPlus): Fabric mod for the latest Minecraft version with QoL fixes and enhancements to the gameplay.\n - [ViaFabric](https://github.com/ViaVersion/ViaFabric): Client-side and server-side ViaVersion implementation for Fabric\n\n## Releases\n### Gradle/Maven\nTo use ViaAprilFools with Gradle/Maven you can use the ViaVersion maven server:\n```groovy\nrepositories {\n    maven { url \"https://repo.viaversion.com\" }\n}\n\ndependencies {\n    implementation(\"com.viaversion:viaaprilfools-common:x.x.x\") // Get latest version from releases\n}\n```\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003eviaversion\u003c/id\u003e\n        \u003curl\u003ehttps://repo.viaversion.com\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.viaversion\u003c/groupId\u003e\n        \u003cartifactId\u003eviaaprilfools-common\u003c/artifactId\u003e\n        \u003cversion\u003ex.x.x\u003c/version\u003e \u003c!-- Get latest version from releases --\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n### Jar File\nIf you just want the latest jar file you can download it from [GitHub Actions](https://github.com/RaphiMC/ViaAprilFools/actions/workflows/build.yml) or the [ViaVersion Jenkins](https://ci.viaversion.com/view/All/job/ViaAprilFools/).\n\n## Usage\nViaAprilFools requires you to have an already functional ViaVersion implementation for your platform.\nIf you don't have one you can check out [ViaLoader](https://github.com/ViaVersion/ViaLoader) for an abstracted and simplified, but still customizable implementation.\nYou can also go to the other [ViaVersion](https://github.com/ViaVersion) repositories and look at their server and proxy implementations.\n\n### Base Implementation\n#### ViaAprilFools platform implementation\nTo get started you should create a class which implements the ViaAprilFools platform interface.\nHere is an example:\n```java\npublic class ViaAprilFoolsPlatformImpl implements ViaAprilFoolsPlatform {\n\n    public ViaAprilFoolsPlatformImpl() {\n        this.init(this.getDataFolder());\n    }\n\n    @Override\n    public Logger getLogger() {\n        return Via.getPlatform().getLogger();\n    }\n\n    @Override\n    public File getDataFolder() {\n        return Via.getPlatform().getDataFolder();\n    }\n\n}\n```\nThis is a very basic implementation which just uses the ViaVersion logger and data folder.\n\n#### Loading the platform\nAfter you have created your platform implementation you should load it in your ViaVersion implementation.\nHere is an example:\n```java\nVia.getManager().addEnableListener(ViaAprilFoolsPlatformImpl::new);\n```\nMake sure to add the enable listener before the Via manager is initialized (``((ViaManagerImpl) Via.getManager()).init();``).\n\n#### Note\nIf you want your platform to support the client protocols, you need the override the ``getClientProtocol`` function in your version provider:\n```java\n@Override\npublic ProtocolVersion getClientProtocol(UserConnection connection) {\n    final ProtocolVersion version = connection.getProtocolInfo().protocolVersion();\n    if (version.getVersionType() == VersionType.SPECIAL) {\n        return ProtocolVersion.getProtocol(VersionType.SPECIAL, version.getOriginalVersion());\n    } else {\n        return super.getClientProtocol(connection);\n    }\n}\n```\nThere is also a ``VAFServerVersionProvider`` which can act as wrapper class instead.\n\n## Contact\nIf you encounter any issues, please report them on the\n[issue tracker](https://github.com/ViaVersion/ViaAprilFools/issues).  \nIf you just want to talk or need help implementing ViaAprilFools feel free to join the ViaVersion\n[Discord](https://discord.gg/viaversion).\n","funding_links":["https://ko-fi.com/rk_01"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviaversion%2Fviaaprilfools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviaversion%2Fviaaprilfools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviaversion%2Fviaaprilfools/lists"}