MCPcopy Index your code
hub / github.com/ViaVersion/ViaVersion

github.com/ViaVersion/ViaVersion @5.10.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 5.10.0 ↗ · + Follow
7,483 symbols 24,826 edges 1,084 files 908 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ViaVersion

Latest Release Build Status Discord

Allows the connection of higher client versions to lower server versions - it works on any platform you can think of.

The base ViaVersion jar runs on Paper and Velocity. We also have projects integrating ViaVersion to run on Fabric, Forge, Bungee, Sponge, or as a standalone proxy to join from basically any client version on any server version from the past decade. See HERE for an overview of the different Via* projects.

Note that ViaVersion will be able to run best on either Paper servers or through ViaFabricPlus due to having direct access to client/server state and more extensive API.

Supported Versions:

Table (https://ci.viaversion.com/userContent/images/T.png)

User Docs: https://docs.viaversion.com

Snapshot support

ViaVersion will only be released a few days after a Minecraft update unless the protocol changes of the update were trivial. If you want early-access, usually days or even weeks before the final release, you can subscribe to either:

  • GitHub Sponsors ( preferred option. Use the /verify command on this Discord after), or alternatively
  • Patreon (see the highest tier and make sure to link Patreon to your Discord account under Settings->Connections) This also includes access to a private repository with the code, which will be pushed to the public repository after the given delay on a Minecraft update.

Releases/Dev Builds

You can find official releases in the following places:

  • Hangar (for our plugins): https://hangar.papermc.io/ViaVersion/ViaVersion
  • Modrinth (for our mods): https://modrinth.com/mod/viaversion
  • GitHub: https://github.com/ViaVersion/ViaVersion/releases

Dev builds for all of our projects are on our Jenkins server:

  • Jenkins: https://ci.viaversion.com

ViaVersion as a Dependency

JavaDocs: https://jd.viaversion.com

Maven:

<repository>
    <id>viaversion-repo</id>
    <url>https://repo.viaversion.com</url>
</repository>
<dependency>
    <groupId>com.viaversion</groupId>
    <artifactId>viaversion-api</artifactId>
    <version>[5.0.0,6.0.0)</version>
    <scope>provided</scope>
</dependency>

Gradle:

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

dependencies {
    compileOnly("com.viaversion:viaversion-api:VERSION") // Replace the version
}

If you need access to the existing protocol or platform implementations, use the parent artifact viaversion. Please note the differences in licensing.

Note: If you want to make your own platform implementation of ViaVersion (and additional addons), take a look at the documentation.

Building

After cloning this repository, build the project with Gradle by running ./gradlew build and take the created jar out of the build/libs directory.

You need JDK 17 or newer to build ViaVersion.

Mapping Files

Mapping files are generated and managed in our Mappings repository. The generated mapping output is stored here.

Resources

License

The entirety of the API directory is licensed under the MIT License; see licenses/MIT.md for details.

Everything else, unless explicitly stated otherwise, is licensed under the GNU General Public License v3, including the end-product as a whole; see licenses/GPL.md for details.

Special thanks to all our Contributors.

Extension points exported contracts — how you extend this code

StorableObject (Interface)
Dummy interface used to explicitly identify objects storable in user connections. @see UserConnection#get(Class) @see U [49 …
api/src/main/java/com/viaversion/viaversion/api/connection/StorableObject.java
IdRewriteFunction (Interface)
(no doc) [33 implementers]
common/src/main/java/com/viaversion/viaversion/rewriter/IdRewriteFunction.java
GitCommandParameters (Interface)
(no doc)
build-logic/src/main/kotlin/extensions.kt
ClientboundPacketType (Interface)
Interface to be implemented by server outgoing packet types. [19 implementers]
api/src/main/java/com/viaversion/viaversion/api/protocol/packet/ClientboundPacketType.java
BlockEntityHandler (Interface)
(no doc) [23 implementers]
common/src/main/java/com/viaversion/viaversion/protocols/v1_12_2to1_13/provider/BlockEntityProvider.java
ServerboundPacketType (Interface)
Interface to be implemented by server incoming packet types. [15 implementers]
api/src/main/java/com/viaversion/viaversion/api/protocol/packet/ServerboundPacketType.java
ConnectionHandler (Interface)
(no doc) [12 implementers]
common/src/main/java/com/viaversion/viaversion/protocols/v1_12_2to1_13/blockconnections/ConnectionHandler.java
PlatformTask (Interface)
@param task type [9 implementers]
api/src/main/java/com/viaversion/viaversion/api/platform/PlatformTask.java

Core symbols most depended-on inside this repo

put
called by 1511
api/src/main/java/com/viaversion/viaversion/api/protocol/Protocol.java
passthrough
called by 1344
api/src/main/java/com/viaversion/viaversion/api/protocol/packet/PacketWrapper.java
map
called by 1089
api/src/main/java/com/viaversion/viaversion/api/protocol/remapper/PacketHandlers.java
add
called by 1042
api/src/main/java/com/viaversion/viaversion/api/protocol/ProtocolPipeline.java
write
called by 964
api/src/main/java/com/viaversion/viaversion/api/minecraft/codec/Ops.java
get
called by 720
common/src/main/java/com/viaversion/viaversion/protocols/v1_20_5to1_21/storage/EfficiencyAttributeStorage.java
read
called by 711
api/src/main/java/com/viaversion/viaversion/api/type/ByteBufReader.java
user
called by 611
common/src/main/java/com/viaversion/viaversion/rewriter/entitydata/EntityDataHandlerEvent.java

Shape

Method 6,242
Class 943
Interface 162
Enum 127
Function 9

Languages

Java100%
Kotlin1%

Modules by API surface

common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/ComponentRewriter1_20_5.java187 symbols
api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java76 symbols
common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java75 symbols
common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java61 symbols
common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java46 symbols
common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java46 symbols
common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java45 symbols
api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java45 symbols
common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java44 symbols
common/src/main/java/com/viaversion/viaversion/protocols/v1_21to1_21_2/rewriter/RecipeRewriter1_21_2.java44 symbols
common/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java42 symbols
api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java41 symbols

For agents

$ claude mcp add ViaVersion \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact