Reformat the whole project

Also optimizes imports
This commit is contained in:
FlorianMichael 2025-01-02 21:21:32 +01:00
parent fbd5b31e86
commit 79fdfad3f7
No known key found for this signature in database
GPG Key ID: C2FB87E71C425126
138 changed files with 493 additions and 376 deletions

2
.github/FUNDING.yml vendored
View File

@ -1,3 +1,3 @@
github: FlorianMichael
custom: ["https://florianmichael.de/donate"]
custom: [ "https://florianmichael.de/donate" ]
ko_fi: rk_01

View File

@ -1,6 +1,6 @@
name: Bug Report
description: Report a bug in ViaFabricPlus
labels: [bug]
labels: [ bug ]
body:
- type: markdown

View File

@ -1,5 +1,5 @@
name: Build
on: [pull_request, push, workflow_dispatch]
on: [ pull_request, push, workflow_dispatch ]
jobs:
build:

View File

@ -1,7 +1,10 @@
# Contributing guidelines for the project
## Setting up a Workspace
ViaFabricPlus uses Gradle, to make sure that it is installed properly you can check [Gradle's website](https://gradle.org/install/).
ViaFabricPlus uses Gradle, to make sure that it is installed properly you can
check [Gradle's website](https://gradle.org/install/).
1. Clone the repository using `git clone https://github.com/ViaVersion/ViaFabricPlus`.
2. CD into the local repository.
3. Run `./gradlew genSources`.
@ -9,37 +12,47 @@ ViaFabricPlus uses Gradle, to make sure that it is installed properly you can ch
5. Run the mod.
## Update translation files
Translation files are located in `src/main/resources/assets/viafabricplus/lang/`. To update them, you need to do the following:
1. Copy the `en_us.json` file and rename it to the language code of the language you want to update (e.g. `de_de.json` for German)
Translation files are located in `src/main/resources/assets/viafabricplus/lang/`. To update them, you need to do the
following:
1. Copy the `en_us.json` file and rename it to the language code of the language you want to update (e.g. `de_de.json`
for German)
2. Translate all values in the file to the language you want to update
3. Do not change the keys of the values, only the values themselves
4. Do not change the formatting of the file (e.g. the spaces between the keys and values or the order of the keys)
5. Try to be consistent with Minecraft language files.
6. Take a look at UN's guidelines for Gender-inclusive language: https://www.un.org/en/gender-inclusive-language/guidelines.shtml
6. Take a look at UN's guidelines for Gender-inclusive
language: https://www.un.org/en/gender-inclusive-language/guidelines.shtml
7. Create a pull request and wait for it to be reviewed and merged.
8. You're done, congrats!
## Add a new feature or fix a bug
1. Create a new branch for your feature/bugfix (e.g. `feature/fix-xyz` or `fix/fix-xyz`)
2. Implement your feature/bugfix and make sure it works correctly
3. Clean your code and make sure it is readable and understandable (e.g. use proper variable names)
4. Use the Google java code style (https://google.github.io/styleguide/javaguide.html) and format your code accordingly
5. If you're changing API, make sure to update the documentation in the `docs` folder, add javadocs to your code and don't break backwards compatibility if not necessary
5. If you're changing API, make sure to update the documentation in the `docs` folder, add javadocs to your code and
don't break backwards compatibility if not necessary
6. Create a pull request and wait for it to be reviewed and merged.
7. You're done, congrats!
## Adding protocol new fixes - which are important and which aren't?
Protocol fixes are the core functionality of ViaFabricPlus, they make ViaFabricPlus stand out from all other existing
protocol translation platforms, and so it's even more important to keep them working.
When adding new fixes, you should always check if the fix is relevant for the current version of the game. If you're unsure,
When adding new fixes, you should always check if the fix is relevant for the current version of the game. If you're
unsure,
ask in the ViaVersion discord.
In general, you should only implement changes which could be detected by the server or are relevant for the gameplay.
In general, you should only implement changes which could be detected by the server or are relevant for the gameplay.
From experience, most changes are related to either movement or networking. If you contribute new fixes, please proof
your changes by showing that they are relevant and also by providing a game source diff. **It's important that fixes
are changing the actual change happend in the game and not just visual changes.**
## Maintaining the mod
See [MAINTAINING.md](docs/MAINTAINING.md) for more information on how to maintain the mod.

View File

@ -9,19 +9,24 @@
<a href="https://github.com/ViaVersion/ViaFabricPlus/actions/workflows/build.yml"><img src="https://github.com/ViaVersion/ViaFabricPlus/actions/workflows/build.yml/badge.svg?branch=main"></a>
#### Fabric mod to connect to EVERY Minecraft server version (Release, Beta, Alpha, Classic, Snapshots, Bedrock) with QoL fixes to the gameplay
</div>
# Why another protocol translator?
ViaFabricPlus implements the [ViaVersion projects](https://github.com/ViaVersion) into Fabric and provides tons of fixes to the existing protocol translation which can't be implemented in the original ViaVersion project.
ViaFabricPlus implements the [ViaVersion projects](https://github.com/ViaVersion) into Fabric and provides tons of fixes
to the existing protocol translation which can't be implemented in the original ViaVersion project.
These fixes consist of movement changes, block/entity collisions, rendering changes, and many more.
At the time of writing, ViaFabricPlus is the only mod that supports joining all Minecraft server versions down to the first multiplayer version while implementing
At the time of writing, ViaFabricPlus is the only mod that supports joining all Minecraft server versions down to the
first multiplayer version while implementing
legacy combat mechanics, movement, and rendering changes to make the gameplay feel more like the old days.
**On the other hand, ViaFabricPlus supports only the latest Minecraft client version, and only Fabric.**
If you need ViaFabricPlus for older versions of the game, you can use [ViaFabric](https://viaversion.com/fabric)
## Supported Server versions
- Release (1.0.0 - 1.21.4)
- Beta (b1.0 - b1.8.1)
- Alpha (a1.0.15 - a1.2.6)
@ -31,28 +36,36 @@ If you need ViaFabricPlus for older versions of the game, you can use [ViaFabric
- Bedrock Edition 1.21.50 ([Some features are missing](https://github.com/RaphiMC/ViaBedrock#features))
## How to (Users)
- [A detailed guide on how to install and use the mod](docs/USAGE.md)
- If you encounter any issues, please report them on either:
- [the issue tracker](https://github.com/ViaVersion/ViaFabricPlus/issues)
- [the ViaVersion Discord](https://discord.gg/viaversion)
- [the issue tracker](https://github.com/ViaVersion/ViaFabricPlus/issues)
- [the ViaVersion Discord](https://discord.gg/viaversion)
## How to (Developers)
- [Detailed guidelines for contributions as well as setting up a dev environment](CONTRIBUTING.md)
- [API and integration examples for developers](docs/DEVELOPER_API.md)
## ViaFabric
[ViaFabric](https://github.com/ViaVersion/ViaFabric) can be used for server-side purposes or when using older versions of the game.
[ViaFabric](https://github.com/ViaVersion/ViaFabric) can be used for server-side purposes or when using older versions
of the game.
### Does it work with ViaFabricPlus:
- No, ViaFabricPlus cannot be used with ViaFabric.
### Differences with ViaFabric:
https://github.com/ViaVersion/ViaFabric?tab=readme-ov-file#differences-with-viafabricplus
## Credits
Special thanks to all our [Contributors](https://github.com/ViaVersion/ViaFabricPllus/graphs/contributors).
## Disclaimer
It cannot be guaranteed that this mod is allowed on specific servers as it can possibly cause problems with anti-cheat plugins.\
It cannot be guaranteed that this mod is allowed on specific servers as it can possibly cause problems with anti-cheat
plugins.\
***(USE ONLY WITH CAUTION!)***

View File

@ -53,6 +53,7 @@ public abstract class AbstractSetting<T> {
}
public abstract void write(final JsonObject object);
public abstract void read(final JsonObject object);
public void onValueChanged() {

View File

@ -38,9 +38,11 @@ public class ButtonSetting extends AbstractSetting<Runnable> {
}
@Override
public void write(JsonObject object) {}
public void write(JsonObject object) {
}
@Override
public void read(JsonObject object) {}
public void read(JsonObject object) {
}
}

View File

@ -54,12 +54,12 @@ dependencies {
vvDependencies "com.viaversion:viaversion-common:5.2.1"
vvDependencies "com.viaversion:viabackwards-common:5.2.1"
vvDependencies "com.viaversion:viaaprilfools-common:4.0.0"
vvDependencies ("com.viaversion:vialoader:4.0.0") {
vvDependencies("com.viaversion:vialoader:4.0.0") {
exclude group: "com.google.guava", module: "guava"
exclude group: "org.slf4j", module: "slf4j-api"
}
vvDependencies "net.raphimc:ViaLegacy:3.0.7-SNAPSHOT"
vvDependencies ("net.raphimc:ViaBedrock:0.0.14-SNAPSHOT") {
vvDependencies("net.raphimc:ViaBedrock:0.0.14-SNAPSHOT") {
exclude group: "io.jsonwebtoken"
exclude group: "com.mojang", module: "brigadier"
}

View File

@ -1,112 +1,112 @@
plugins {
id "vfp.base-conventions"
id "vfp.base-conventions"
}
base {
archivesName = "ViaFabricPlus"
archivesName = "ViaFabricPlus"
}
loom {
accessWidenerPath = file("src/main/resources/viafabricplus.accesswidener")
accessWidenerPath = file("src/main/resources/viafabricplus.accesswidener")
}
configurations {
jij // jar in jar configuration
modJij // jar in jar configuration for mods
jij // jar in jar configuration
modJij // jar in jar configuration for mods
include.extendsFrom modJij
modImplementation.extendsFrom modJij
modCompileOnlyApi.extendsFrom modJij
include.extendsFrom modJij
modImplementation.extendsFrom modJij
modCompileOnlyApi.extendsFrom modJij
// Include VV dependencies as jij
jij.extendsFrom vvDependencies
// Include VV dependencies as jij
jij.extendsFrom vvDependencies
}
dependencies {
// Fabric API
modJij fabricApi.module("fabric-api-base", project.fabric_api_version)
modJij fabricApi.module("fabric-resource-loader-v0", project.fabric_api_version)
modJij fabricApi.module("fabric-networking-api-v1", project.fabric_api_version)
modJij fabricApi.module("fabric-command-api-v2", project.fabric_api_version)
modJij fabricApi.module("fabric-lifecycle-events-v1", project.fabric_api_version)
modJij fabricApi.module("fabric-particles-v1", project.fabric_api_version)
modJij fabricApi.module("fabric-registry-sync-v0", project.fabric_api_version)
// Fabric API
modJij fabricApi.module("fabric-api-base", project.fabric_api_version)
modJij fabricApi.module("fabric-resource-loader-v0", project.fabric_api_version)
modJij fabricApi.module("fabric-networking-api-v1", project.fabric_api_version)
modJij fabricApi.module("fabric-command-api-v2", project.fabric_api_version)
modJij fabricApi.module("fabric-lifecycle-events-v1", project.fabric_api_version)
modJij fabricApi.module("fabric-particles-v1", project.fabric_api_version)
modJij fabricApi.module("fabric-registry-sync-v0", project.fabric_api_version)
// Sub projects, since they are Fabric mods as well (mainly to access the game code) we have to first
// implement the namedElements (raw output) to compile against, then include the mappedElements into the output jar
implementation compileOnlyApi(project(path: ":viafabricplus-api", configuration: "namedElements"))
implementation compileOnlyApi(project(path: ":viafabricplus-api-legacy", configuration: "namedElements"))
implementation compileOnlyApi(project(path: ":viafabricplus-visuals", configuration: "namedElements"))
// Sub projects, since they are Fabric mods as well (mainly to access the game code) we have to first
// implement the namedElements (raw output) to compile against, then include the mappedElements into the output jar
implementation compileOnlyApi(project(path: ":viafabricplus-api", configuration: "namedElements"))
implementation compileOnlyApi(project(path: ":viafabricplus-api-legacy", configuration: "namedElements"))
implementation compileOnlyApi(project(path: ":viafabricplus-visuals", configuration: "namedElements"))
include project(":viafabricplus-api")
include project(":viafabricplus-api-legacy")
include project(":viafabricplus-visuals")
include project(":viafabricplus-api")
include project(":viafabricplus-api-legacy")
include project(":viafabricplus-visuals")
// Dependencies exclusively to the root mod
jij ("net.raphimc:MinecraftAuth:4.1.1") {
exclude group: "com.google.code.gson", module: "gson"
exclude group: "org.slf4j", module: "slf4j-api"
}
jij "net.lenni0451:Reflect:1.4.0"
jij("net.lenni0451:MCPing:1.4.2") {
exclude group: "com.google.code.gson", module: "gson"
}
jij("org.cloudburstmc.netty:netty-transport-raknet:1.0.0.CR3-SNAPSHOT") {
exclude group: "io.netty"
}
jij "de.florianmichael:Classic4J:2.1.1-SNAPSHOT"
// Dependencies exclusively to the root mod
jij("net.raphimc:MinecraftAuth:4.1.1") {
exclude group: "com.google.code.gson", module: "gson"
exclude group: "org.slf4j", module: "slf4j-api"
}
jij "net.lenni0451:Reflect:1.4.0"
jij("net.lenni0451:MCPing:1.4.2") {
exclude group: "com.google.code.gson", module: "gson"
}
jij("org.cloudburstmc.netty:netty-transport-raknet:1.0.0.CR3-SNAPSHOT") {
exclude group: "io.netty"
}
jij "de.florianmichael:Classic4J:2.1.1-SNAPSHOT"
// Only to compile against for the ModMenu integration
modCompileOnly "com.terraformersmc:modmenu:12.0.0"
// Only to compile against for the ModMenu integration
modCompileOnly "com.terraformersmc:modmenu:12.0.0"
// Fabric's jar in jar system doesn't support transitive dependencies, so we have to manually add them
afterEvaluate {
configurations.jij.incoming.resolutionResult.allDependencies.each {
dependencies.include(dependencies.implementation(dependencies.compileOnlyApi(it.requested.toString()) {
transitive = false
}))
}
}
// Fabric's jar in jar system doesn't support transitive dependencies, so we have to manually add them
afterEvaluate {
configurations.jij.incoming.resolutionResult.allDependencies.each {
dependencies.include(dependencies.implementation(dependencies.compileOnlyApi(it.requested.toString()) {
transitive = false
}))
}
}
}
processResources {
filesMatching("fabric.mod.json") {
expand(
"version": project.version,
"description": project.description,
"implVersion": "git-${project.name}-${project.version}:${latestCommitHash().get()}",
"mcVersion": mcVersion()
)
}
filesMatching("fabric.mod.json") {
expand(
"version": project.version,
"description": project.description,
"implVersion": "git-${project.name}-${project.version}:${latestCommitHash().get()}",
"mcVersion": mcVersion()
)
}
}
String mcVersion() {
if (project.supported_versions.isEmpty()) {
return project.minecraft_version
} else {
return project.supported_versions
}
if (project.supported_versions.isEmpty()) {
return project.minecraft_version
} else {
return project.supported_versions
}
}
Provider<String> latestCommitHash() {
return providers.exec {
commandLine = ["git", "rev-parse", "--short", "HEAD"]
}.standardOutput.getAsText().map(String::trim)
return providers.exec {
commandLine = ["git", "rev-parse", "--short", "HEAD"]
}.standardOutput.getAsText().map(String::trim)
}
jar {
// Rename the project's license file to LICENSE_<project_name> to avoid conflicts
from("LICENSE") {
rename {
"${it}_${project.archivesBaseName}"
}
}
// Rename the project's license file to LICENSE_<project_name> to avoid conflicts
from("LICENSE") {
rename {
"${it}_${project.archivesBaseName}"
}
}
}
idea {
module {
["run"].each {
excludeDirs << file("$it")
}
}
module {
["run"].each {
excludeDirs << file("$it")
}
}
}

View File

@ -1,14 +1,19 @@
# 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)
## How to include the mod as dependency
If you are targetting to only use the provided API, you should include the ```viafabricplus-api``` artifact. For including the internals use
If you are targetting to only use the provided API, you should include the ```viafabricplus-api``` artifact. For
including the internals use
```viafabricplus```. Including the internals will also provide the legacy compatibility layer.
### Gradle
```groovy
repositories {
mavenCentral()
@ -36,6 +41,7 @@ dependencies {
```
### Maven
```xml
<repositories>
<repository>
@ -62,10 +68,13 @@ dependencies {
```
## Using the API
Get the general API using ``ViaFabricPlus.getImpl()`` which will return a ``ViaFabricPlusBase`` interface reflecting API functions for mods to use.
Get the general API using ``ViaFabricPlus.getImpl()`` which will return a ``ViaFabricPlusBase`` interface reflecting API
functions for mods to use.
All functions provided there are safe to use and will most likely never be removed.
#### Example
```java
final ViaFabricPlusBase platform = ViaFabricPlus.getImpl();
```
@ -73,8 +82,10 @@ final ViaFabricPlusBase platform = ViaFabricPlus.getImpl();
## Using event callbacks
The API provides two event callbacks which can be used:
- ``LoadingCycleCallback`` fired in various loading stages of ViaFabricPlus such as config or settings loading.
- ``ChangeProtocolVersionCallback`` fired when the user changes the target version in the screen, or if the user joins a server with a different version.
- ``ChangeProtocolVersionCallback`` fired when the user changes the target version in the screen, or if the user joins a
server with a different version.
Event callbacks can be registered through the API:
@ -88,7 +99,8 @@ platform.registerOnChangeProtocolVersionCallback((oldVersion, newVersion) -> {
### Using the loading cycle callback
As your mod might load after ViaFabricPlus, you will need to register the loading cycle callback inside a `ViaFabricPlusLoadEntrypoint` marked as `viafabricplus`
As your mod might load after ViaFabricPlus, you will need to register the loading cycle callback inside a
`ViaFabricPlusLoadEntrypoint` marked as `viafabricplus`
in your `fabric.mod.json` file. The entrypoint also acts as `INITAL_LOAD` stage.
```java
@ -121,7 +133,8 @@ public class Example implements ViaFabricPlusLoadEntrypoint {
## More extensive API
For any version specific functionality, ViaFabricPlus provides common API functions. ViaFabricPlus uses [ViaVersion](https://github.com/ViaVersion/ViaVersion)
For any version specific functionality, ViaFabricPlus provides common API functions. ViaFabricPlus
uses [ViaVersion](https://github.com/ViaVersion/ViaVersion)
for protocol translation, so the ViaVersion API can be used as well.
### Getting the current target version

View File

@ -1,5 +1,7 @@
# Updating instructions for the project
These steps are the usual process for updating ViaFabricPlus to a new version of the game. If you're unsure about something, ask in the ViaVersion discord.
These steps are the usual process for updating ViaFabricPlus to a new version of the game. If you're unsure about
something, ask in the ViaVersion discord.
1. Update all upstream versions in `gradle.properties`. The main versions you need to update are:
- `minecraft_version`
@ -8,96 +10,118 @@ These steps are the usual process for updating ViaFabricPlus to a new version of
- `fabric_api_version`
- `supported_versions` (if necessary)
As well as the versions in the `dependencies` block in the `build.gradle` file.
2. Increment the version number in `gradle.properties` by at least a minor version (e.g. 1.0.0 -> 1.1.0)
3. Check all data dumps and diffs in the fixes/data package and update them if necessary, here is a list of some critical ones:
3. Check all data dumps and diffs in the fixes/data package and update them if necessary, here is a list of some
critical ones:
- `ResourcePackHeaderDiff` (add the new version at the top of the list)
- `ItemRegistryDiff` (add all new items/blocks added in the new version)
- `EntityDimensionDiff` (add entity dimension changes)
4. Update the `NATIVE_VERSION` field in the ProtocolTranslator class to the new version
5. Update protocol constants in the `ViaFabricPlusProtocol` class
-------------
6. Check all mixins in the injection package if they still apply correctly, here is a list of some critical ones:
- `MixinClientWorld#tickEntity` and `MixinClientWorld#tickPassenger`
- `MixinPlayer#getBlockBreakingSpeed`
7. mDecompile the game source code with the tool of your choice.
8. Try to compile the mod and start porting the code until all existing fixes are working again.
9. Diff the game code with the code of the previous version (e.g. using git) and implement all changes that could be relevant for ViaFabricPlus, those are:
9. Diff the game code with the code of the previous version (e.g. using git) and implement all changes that could be
relevant for ViaFabricPlus, those are:
- General logic changes (e.g. `if (a && b)` -> `if (b || a)`)
- Changes to the movement code (e.g. `player.yaw` -> `player.headYaw`)
- Networking changes (e.g. sending a new packet / changing the packet structure)
- Changes to visuals (e.g. animation changes)
- Note: ViaVersion already implements most gameplay related changes for us, but you should always check for edge-cases. Since ViaVersion
is primarily a server side plugin, it does not take care of client-side related / deeper changes. ViaFabricPlus often has to inject into
- Note: ViaVersion already implements most gameplay related changes for us, but you should always check for
edge-cases. Since ViaVersion
is primarily a server side plugin, it does not take care of client-side related / deeper changes. ViaFabricPlus
often has to inject into
ViaVersion code to improve funcitonality for the client.
**Read more about which fixes should be added [HERE](../CONTRIBUTING.md#adding-protocol-new-fixes---which-are-important-and-which-arent)**
- From experience, the following packages contain the usual important changes (mojang mappings):
- `net.minecraft`
- `net.minecraft.client`
- `net.minecraft.client.gui`
- `net.minecraft.client.multiplayer`
- `net.minecraft.client.player`
- `net.minecraft.util`
- `net.minecraft.world`
- `net.minecraft.world.entity`
- `net.minecraft.world.inventory`
- `net.minecraft.world.item`
- `net.minecraft.world.level`
- `net.minecraft.world.level.block`
**Read more about which fixes should be
added [HERE](../CONTRIBUTING.md#adding-protocol-new-fixes---which-are-important-and-which-arent)**
- While the following packages (mojang mappings) can be skipped completely (most of the time):
- `com.mojang`
- `net.minecraft.advancements`
- `net.minecraft.commands`
- `net.minecraft.data`
- `net.minecraft.gametest`
- `net.minecraft.realms`
- `net.minecraft.recipebook`
- `net.minecraft.references`
- `net.minecraft.resources`
- `net.minecraft.server`
- `net.minecraft.sounds`
- `net.minecraft.stats`
- `net.minecraft.tags`
- From experience, the following packages contain the usual important changes (mojang mappings):
- `net.minecraft`
- `net.minecraft.client`
- `net.minecraft.client.gui`
- `net.minecraft.client.multiplayer`
- `net.minecraft.client.player`
- `net.minecraft.util`
- `net.minecraft.world`
- `net.minecraft.world.entity`
- `net.minecraft.world.inventory`
- `net.minecraft.world.item`
- `net.minecraft.world.level`
- `net.minecraft.world.level.block`
10. Check the ViaVersion/upstream protocol implementation for issues and report them if necessary or if these issues can't be fixed,
without tons of work, implement a workaround in ViaFabricPlus.
- While the following packages (mojang mappings) can be skipped completely (most of the time):
- `com.mojang`
- `net.minecraft.advancements`
- `net.minecraft.commands`
- `net.minecraft.data`
- `net.minecraft.gametest`
- `net.minecraft.realms`
- `net.minecraft.recipebook`
- `net.minecraft.references`
- `net.minecraft.resources`
- `net.minecraft.server`
- `net.minecraft.sounds`
- `net.minecraft.stats`
- `net.minecraft.tags`
10. Check the ViaVersion/upstream protocol implementation for issues and report them if necessary or if these issues
can't be fixed,
without tons of work, implement a workaround in ViaFabricPlus.
11. Run the game and check all GUIs and other visuals for issues.
12. Clean your code and make sure it is readable and understandable, clientside fixes are sorted by their protocol versions, having
newer fixes at the top of the file.
12. Clean your code and make sure it is readable and understandable, clientside fixes are sorted by their protocol
versions, having
newer fixes at the top of the file.
-------------
13. Create a pull request and wait for it to be reviewed and merged.
14. You're done, congrats!
## Git branches
- `main`: The main branch, this is where all changes are merged into
- `dev`: Used for changes which needs reviewing by all developers, usually merged into `main` shortly after
- `update/*`: Update branches, these are used to port ViaFabricPlus to newer versions of the game
- `<version>`: Final release branches sorted by their Minecraft version (e.g. `1.8.9`, `1.16.5`, `1.17.1`, ...)
There are also older formats which aren't used anymore:
- `recode/*`: Recode branches, these are used to port ViaFabricPlus to newer versions of the game or rewrite big parts of the code
- `recode/*`: Recode branches, these are used to port ViaFabricPlus to newer versions of the game or rewrite big parts
of the code
- `backport/*`: Backport branches, these are used to backport newer ViaFabricPlus versions to older versions of the game
## Project structure
Every change made to the game is called a `feature`. Each feature has its package under both `features/` and `injection/mixin/features/`, organizing utility and mixin classes for easier project maintenance and porting
Every change made to the game is called a `feature`. Each feature has its package under both `features/` and
`injection/mixin/features/`, organizing utility and mixin classes for easier project maintenance and porting
Loading of features is done via `static` blocks and dummy `init` function called in the `FeaturesLoading` class.
## Versioning
The versioning should only be updated every release and should only have one update between each release.
- The versioning scheme is `major.minor.patch`, where:
- `major` is incremented when breaking changes are made
- `minor` is incremented when new features are added
- `patch` is incremented when bug fixes are made
This scheme is used as follows:
- `Major` versions are only incremented with breaking and fundamental changes to the existing codebase, such as migrating mappings
or refactoring the entire codebase.
- `Minor` versions are incremented when the mod gets ported to a new version of the game or when huge features are added /
upstream changes are implemented.
- `Major` versions are only incremented with breaking and fundamental changes to the existing codebase, such as
migrating mappings
or refactoring the entire codebase.
- `Patch` versions are incremented when bug fixes are made or small features are added, they are the usual version increment.
- `Minor` versions are incremented when the mod gets ported to a new version of the game or when huge features are
added /
upstream changes are implemented.
- `Patch` versions are incremented when bug fixes are made or small features are added, they are the usual version
increment.

View File

@ -1,33 +1,44 @@
# Usage for ViaFabricPlus
## Introduction
At the top left of the multiplayer screen is the ViaFabricPlus button, with it you can enter the main menu of the mod
At the top left of the multiplayer screen is the ViaFabricPlus button, with it you can enter the main menu of the mod
where you can change the settings and set the protocol version, the position of the button can be changed in the
Settings -> General -> multiplayer screen button orientation.
![](preview/multiplayer.png)
![](preview/protocol_selection.png)
In the Add/Edit Server screen there is a button where you can select a specific version for this server, when you ping or connect to this server,
In the Add/Edit Server screen there is a button where you can select a specific version for this server, when you ping
or connect to this server,
ViaFabricPlus will use the version set there, the versions are stored in the servers.dat too
![](preview/set_version_for_server.png)
If you don't want to specify a specific version anymore, you can simply press the button and select **"Cancel and reset"**.
If you don't want to specify a specific version anymore, you can simply press the button and select **"Cancel and reset"
**.
## Commands
You can use the ViaVersion commands with **/viafabricplus** or **/viaversion**, and a few classic only commands are also implemented:
You can use the ViaVersion commands with **/viafabricplus** or **/viaversion**, and a few classic only commands are also
implemented:
- **/viafabricplus settime <Time (Long)>** - Changes the Clientside World Time, available from: **c0.28-c0.30**
- **/viafabricplus listextensions** - Displays all classic protocol extensions, available in: **c0.30 CPE**
### Settings<br>
For users only the settings in the **General**, **Bedrock**, **Authentication** and **Visual** tab are relevant, the other settings are only for developers, you should not change the settings in the **Debug** tab if you don't know what you are doing.
For users only the settings in the **General**, **Bedrock**, **Authentication** and **Visual** tab are relevant, the
other settings are only for developers, you should not change the settings in the **Debug** tab if you don't know what
you are doing.
![](preview/settings-selection.png)
The settings are stored in the `settings.json` file. Account credentials for Bedrock/ClassiCube in `accounts.json`.
### Configuring the protocol translation libraries
To change the protocol translation settings/features you can look into the config folder. You can find 4 config files there depending on the platforms loaded:
To change the protocol translation settings/features you can look into the config folder. You can find 4 config files
there depending on the platforms loaded:
- `viaversion.yml` (ViaVersion)
- `viabackwards.yml` (ViaBackwards)
@ -35,31 +46,40 @@ To change the protocol translation settings/features you can look into the confi
- `viabedrock.yml` (ViaBedrock)
- `viaaprilfools.yml` (ViaAprilFools)
On it's first launch, ViaFabricPlus will generate the config files with proper default values. Don't touch the config files if you don't know what you are doing.
On it's first launch, ViaFabricPlus will generate the config files with proper default values. Don't touch the config
files if you don't know what you are doing.
## Debug HUD
The debug HUD can be enabled in the settings, it shows some useful information about the connection and the protocol translation.
The debug HUD can be enabled in the settings, it shows some useful information about the connection and the protocol
translation.
![](preview/debug_hud.png)
### Bedrock edition
Keep in mind that the Java -> Bedrock support is still in beta phase, and therefore many things are not implemented
yet and there is no guarantee that everything will work as it should.
To log in to a Bedrock account you can press the button **"Click to set account for Bedrock edition"** in the settings.
#### Bedrock Realms
If you have a Bedrock account set in the settings, you can view its Bedrock Realms in the "Server lists" screen (can be found at the left bottom of the main GUI).
If you have a Bedrock account set in the settings, you can view its Bedrock Realms in the "Server lists" screen (can be
found at the left bottom of the main GUI).
![](preview/bedrock_realms.png)
### ClassiCube and BetaCraft integration
In the main GUI there is a "Server lists" button where you can go to ClassiCube and BetaCraft server lists.
## BetaCraft
![](preview/betacraft_servers.png)
## ClassiCube
![](preview/classicube_servers.png)
For ClassiCube you need an account, which you can make on the official website (https://www.classicube.net/), in case ClassiCube requires MultiFactor, an extra GUI will open in ViaFabricPlus.
For ClassiCube you need an account, which you can make on the official website (https://www.classicube.net/), in case
ClassiCube requires MultiFactor, an extra GUI will open in ViaFabricPlus.
![](preview/classicube_login.png)

View File

@ -21,27 +21,27 @@
package com.viaversion.viafabricplus;
import com.viaversion.viafabricplus.api.ViaFabricPlusBase;
import com.viaversion.viafabricplus.api.entrypoint.ViaFabricPlusLoadEntrypoint;
import com.viaversion.viafabricplus.api.events.ChangeProtocolVersionCallback;
import com.viaversion.viafabricplus.api.ViaFabricPlusBase;
import com.viaversion.viafabricplus.api.events.LoadingCycleCallback;
import com.viaversion.viafabricplus.api.settings.SettingGroup;
import com.viaversion.viafabricplus.base.Events;
import com.viaversion.viafabricplus.base.overriding_jars.ClassLoaderPriorityUtil;
import com.viaversion.viafabricplus.base.sync_tasks.SyncTasks;
import com.viaversion.viafabricplus.features.FeaturesLoading;
import com.viaversion.viafabricplus.features.item.filter_creative_tabs.ItemRegistryDiff;
import com.viaversion.viafabricplus.features.item.negative_item_count.NegativeItemUtil;
import com.viaversion.viafabricplus.features.limitation.max_chat_length.MaxChatLength;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.injection.access.base.IServerInfo;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.translator.ItemTranslator;
import com.viaversion.viafabricplus.util.ChatUtil;
import com.viaversion.viafabricplus.base.sync_tasks.SyncTasks;
import com.viaversion.viafabricplus.save.SaveManager;
import com.viaversion.viafabricplus.screen.impl.ProtocolSelectionScreen;
import com.viaversion.viafabricplus.screen.impl.settings.SettingsScreen;
import com.viaversion.viafabricplus.settings.SettingsManager;
import com.viaversion.viafabricplus.features.FeaturesLoading;
import com.viaversion.viafabricplus.features.limitation.max_chat_length.MaxChatLength;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.util.ChatUtil;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;

View File

@ -24,14 +24,14 @@ package com.viaversion.viafabricplus.features;
import com.viaversion.viaaprilfools.api.AprilFoolsProtocolVersion;
import com.viaversion.viafabricplus.api.events.LoadingCycleCallback;
import com.viaversion.viafabricplus.base.Events;
import com.viaversion.viafabricplus.features.emulation.armor_hud.ArmorHudEmulation1_8;
import com.viaversion.viafabricplus.features.block.shape.CollisionShapes;
import com.viaversion.viafabricplus.features.classic.cpe_extension.CPEAdditions;
import com.viaversion.viafabricplus.features.emulation.armor_hud.ArmorHudEmulation1_8;
import com.viaversion.viafabricplus.features.emulation.recipe.Recipes1_11_2;
import com.viaversion.viafabricplus.features.entity.EntityDimensionDiff;
import com.viaversion.viafabricplus.features.entity.attribute.EnchantmentAttributesEmulation1_20_6;
import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2;
import com.viaversion.viafabricplus.features.networking.resource_pack_header.ResourcePackHeaderDiff;
import com.viaversion.viafabricplus.features.emulation.recipe.Recipes1_11_2;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.MinecraftClient;

View File

@ -62,7 +62,7 @@ public final class CPEAdditions {
}
public static ClientboundPacketsc0_30cpe createNewPacket(final ClassicProtocolExtension classicProtocolExtension, final int packetId, final BiConsumer<UserConnection, ByteBuf> packetSplitter) {
final ClientboundPacketsc0_30cpe packet = Enums.newInstance(ClientboundPacketsc0_30cpe.class, classicProtocolExtension.getName(), ClassicProtocolExtension.values().length, new Class[] { int.class, BiConsumer.class }, new Object[] { packetId, packetSplitter });
final ClientboundPacketsc0_30cpe packet = Enums.newInstance(ClientboundPacketsc0_30cpe.class, classicProtocolExtension.getName(), ClassicProtocolExtension.values().length, new Class[]{int.class, BiConsumer.class}, new Object[]{packetId, packetSplitter});
Enums.addEnumInstance(ClientboundPacketsc0_30cpe.class, packet);
CUSTOM_PACKETS.put(packetId, packet);

View File

@ -23,13 +23,13 @@ package com.viaversion.viafabricplus.features.emulation.armor_hud;
import com.viaversion.viafabricplus.ViaFabricPlus;
import com.viaversion.viafabricplus.visuals.ViaFabricPlusVisuals;
import com.viaversion.viafabricplus.visuals.settings.VisualSettings;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.protocols.v1_8to1_9.Protocol1_8To1_9;
import com.viaversion.viaversion.protocols.v1_8to1_9.data.ArmorTypes1_8;
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_9;
import com.viaversion.viafabricplus.visuals.settings.VisualSettings;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.item.ItemStack;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.features.emulation.recipe;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.entity.BannerPattern;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.BannerPatternsComponent;
@ -131,7 +131,8 @@ public final class AddBannerPatternRecipe extends SpecialCraftingRecipe {
}
}
}
if (!foundBaseItem || (!foundDye && ProtocolTranslator.getTargetVersion().newerThan(ProtocolVersion.v1_10))) matches = false;
if (!foundBaseItem || (!foundDye && ProtocolTranslator.getTargetVersion().newerThan(ProtocolVersion.v1_10)))
matches = false;
} else if (input.size() == pattern.getRecipePattern().length * pattern.getRecipePattern()[0].length()) {
DyeColor patternColor = null;
for (int i = 0; i < input.size(); i++) {

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.features.emulation.recipe;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.features.entity.attribute;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.features.entity.riding_offset;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityPose;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.features.footstep_particle;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
import net.minecraft.client.particle.*;
@ -35,7 +35,6 @@ import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import org.jetbrains.annotations.ApiStatus;
public final class FootStepParticle1_12_2 extends SpriteBillboardParticle {

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.features.interaction.r1_18_2_block_ack_emulation;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -21,10 +21,10 @@
package com.viaversion.viafabricplus.features.item.filter_creative_tabs;
import com.viaversion.vialoader.util.VersionRange;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.vialoader.util.VersionRange;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.item.Item;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.features.networking.resource_pack_header;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.GameVersion;
import net.minecraft.SaveVersion;
import net.minecraft.SharedConstants;

View File

@ -21,11 +21,11 @@
package com.viaversion.viafabricplus.features.world.item_picking;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.Protocol1_21_2To1_21_4;
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ServerboundPackets1_21_2;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;

View File

@ -29,9 +29,11 @@ public interface IClientConnection {
void viaFabricPlus$setupPreNettyDecryption();
ProtocolVersion viaFabricPlus$getTargetVersion();
void viaFabricPlus$setTargetVersion(final ProtocolVersion serverVersion);
UserConnection viaFabricPlus$getUserConnection();
void viaFabricPlus$setUserConnection(final UserConnection userConnection);
}

View File

@ -26,6 +26,7 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
public interface IMultiValueDebugSampleLogImpl {
ProtocolVersion viaFabricPlus$getForcedVersion();
void viaFabricPlus$setForcedVersion(final ProtocolVersion version);
}

View File

@ -26,12 +26,15 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
public interface IServerInfo {
ProtocolVersion viaFabricPlus$forcedVersion();
void viaFabricPlus$forceVersion(final ProtocolVersion version);
boolean viaFabricPlus$passedDirectConnectScreen();
void viaFabricPlus$passDirectConnectScreen(final boolean state);
ProtocolVersion viaFabricPlus$translatingVersion();
void viaFabricPlus$setTranslatingVersion(final ProtocolVersion version);
}

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.base.access;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IMultiValueDebugSampleLogImpl;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;

View File

@ -25,16 +25,16 @@ import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.injection.access.base.IMultiValueDebugSampleLogImpl;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.netty.ViaFabricPlusVLLegacyPipeline;
import com.viaversion.vialoader.netty.CompressionReorderEvent;
import com.viaversion.vialoader.netty.VLLegacyPipeline;
import com.viaversion.vialoader.netty.VLPipeline;
import com.viaversion.vialoader.netty.viabedrock.PingEncapsulationCodec;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.injection.access.base.IMultiValueDebugSampleLogImpl;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.netty.ViaFabricPlusVLLegacyPipeline;
import io.netty.bootstrap.AbstractBootstrap;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;

View File

@ -21,15 +21,15 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration;
import com.viaversion.viaversion.api.connection.ProtocolInfo;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.protocoltranslator.protocol.storage.BedrockJoinGameTracker;
import com.viaversion.viafabricplus.injection.ViaFabricPlusMixinPlugin;
import com.viaversion.viafabricplus.injection.access.base.bedrock.IChunkTracker;
import com.viaversion.viafabricplus.injection.access.base.bedrock.IRakSessionCodec;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.protocol.storage.BedrockJoinGameTracker;
import com.viaversion.viafabricplus.settings.impl.GeneralSettings;
import com.viaversion.viafabricplus.util.ChatUtil;
import com.viaversion.viaversion.api.connection.ProtocolInfo;
import com.viaversion.viaversion.api.connection.UserConnection;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.DebugHud;
import net.minecraft.util.Formatting;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.injection.access.base.IServerInfo;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.SharedConstants;
import net.minecraft.client.network.ServerInfo;
import net.minecraft.network.ClientConnection;

View File

@ -22,9 +22,9 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration;
import com.llamalad7.mixinextras.sugar.Local;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IServerInfo;
import com.viaversion.viafabricplus.save.impl.SettingsSave;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.network.ServerInfo;
import net.minecraft.nbt.NbtCompound;
import org.spongepowered.asm.mixin.Mixin;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration;
import com.viaversion.viaversion.connection.UserConnectionImpl;
import com.viaversion.viafabricplus.protocoltranslator.util.NoPacketSendChannel;
import com.viaversion.viaversion.connection.UserConnectionImpl;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import org.spongepowered.asm.mixin.Final;

View File

@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(value = ViaLegacyConfig.class, remap = false)
public abstract class MixinViaLegacyConfig {
@Inject(method = { "isLegacySkullLoading", "isLegacySkinLoading" }, at = @At("HEAD"), cancellable = true)
@Inject(method = {"isLegacySkullLoading", "isLegacySkinLoading"}, at = @At("HEAD"), cancellable = true)
private void replaceWithVFPSetting(CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(GeneralSettings.INSTANCE.loadSkinsAndSkullsInLegacyVersions.getValue());
}

View File

@ -22,11 +22,11 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration.bedrock;
import com.llamalad7.mixinextras.sugar.Local;
import com.viaversion.viafabricplus.save.SaveManager;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.save.SaveManager;
import com.viaversion.viaversion.api.connection.UserConnection;
import net.minecraft.network.ClientConnection;
import net.raphimc.minecraftauth.step.bedrock.StepMCChain;
import net.raphimc.minecraftauth.step.bedrock.session.StepFullBedrockSession;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration.bedrock;
import com.viaversion.viafabricplus.protocoltranslator.protocol.storage.BedrockJoinGameTracker;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viafabricplus.protocoltranslator.protocol.storage.BedrockJoinGameTracker;
import net.raphimc.viabedrock.protocol.packet.JoinPackets;
import net.raphimc.viabedrock.protocol.types.primitive.LongLEType;
import net.raphimc.viabedrock.protocol.types.primitive.StringType;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.base.integration.sync_tasks;
import com.viaversion.viafabricplus.base.sync_tasks.SyncTasks;
import com.viaversion.viafabricplus.base.sync_tasks.DataCustomPayload;
import com.viaversion.viafabricplus.base.sync_tasks.SyncTasks;
import net.minecraft.client.network.ClientCommonNetworkHandler;
import net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket;
import org.spongepowered.asm.mixin.Mixin;

View File

@ -21,10 +21,10 @@
package com.viaversion.viafabricplus.injection.mixin.base.ui;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IServerInfo;
import com.viaversion.viafabricplus.screen.impl.PerServerVersionScreen;
import com.viaversion.viafabricplus.settings.impl.GeneralSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.multiplayer.AddServerScreen;
import net.minecraft.client.gui.widget.ButtonWidget;

View File

@ -23,15 +23,14 @@ package com.viaversion.viafabricplus.injection.mixin.base.ui;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.viaversion.viafabricplus.save.SaveManager;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.classic4j.model.classicube.account.CCAccount;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.injection.access.base.IServerInfo;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.impl.provider.vialegacy.ViaFabricPlusClassicMPPassProvider;
import com.viaversion.viafabricplus.protocoltranslator.util.ProtocolVersionDetector;
import com.viaversion.viafabricplus.save.SaveManager;
import com.viaversion.viafabricplus.settings.impl.AuthenticationSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.classic4j.model.classicube.account.CCAccount;
import io.netty.channel.ChannelFuture;
import net.minecraft.client.gui.screen.multiplayer.ConnectScreen;
import net.minecraft.client.network.ServerInfo;

View File

@ -21,10 +21,10 @@
package com.viaversion.viafabricplus.injection.mixin.base.ui;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.settings.impl.GeneralSettings;
import com.viaversion.viafabricplus.util.ChatUtil;
import com.viaversion.viaversion.api.connection.UserConnection;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.DownloadingTerrainScreen;
import net.minecraft.client.gui.screen.Screen;

View File

@ -24,12 +24,12 @@ package com.viaversion.viafabricplus.injection.mixin.base.ui;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import com.viaversion.viafabricplus.settings.impl.BedrockSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.base.IServerInfo;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.screen.impl.ProtocolSelectionScreen;
import com.viaversion.viafabricplus.settings.impl.BedrockSettings;
import com.viaversion.viafabricplus.settings.impl.GeneralSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.widget.ButtonWidget;

View File

@ -42,7 +42,9 @@ import java.util.List;
@Mixin(MultiplayerServerListWidget.ServerEntry.class)
public abstract class MixinMultiplayerServerListWidget_ServerEntry {
@Shadow @Final private ServerInfo server;
@Shadow
@Final
private ServerInfo server;
@WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Lnet/minecraft/text/Text;)V"))
private void drawTranslatingState(MultiplayerScreen instance, Text text, Operation<Void> original) {

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.compat.ipnext;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Shadow;
@ -44,7 +44,7 @@ public abstract class MixinAutoRefillHandler_ItemSlotMonitor {
@Shadow
public int currentSlotId;
@Inject(method = { "checkHandle", "checkShouldHandle" }, at = @At("HEAD"), cancellable = true)
@Inject(method = {"checkHandle", "checkShouldHandle"}, at = @At("HEAD"), cancellable = true)
public void dontHandleOffhandSlot(CallbackInfo ci) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
if (currentSlotId == 45) ci.cancel();

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.compat.lithium;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -59,9 +59,11 @@ public abstract class MixinTextRenderer {
@Shadow
public abstract int getWidth(OrderedText text);
@Shadow public abstract boolean isRightToLeft();
@Shadow
public abstract boolean isRightToLeft();
@Shadow protected abstract int drawInternal(OrderedText text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumerProvider, TextRenderer.TextLayerType layerType, int backgroundColor, int light, boolean swapZIndex);
@Shadow
protected abstract int drawInternal(OrderedText text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumerProvider, TextRenderer.TextLayerType layerType, int backgroundColor, int light, boolean swapZIndex);
@Inject(method = "draw(Ljava/lang/String;FFIZLorg/joml/Matrix4f;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/client/font/TextRenderer$TextLayerType;II)I", at = @At("HEAD"), cancellable = true)
private void allowNewLines_String(String text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumers, TextRenderer.TextLayerType layerType, int backgroundColor, int light, CallbackInfoReturnable<Integer> cir) {

View File

@ -47,9 +47,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(PlayerEntity.class)
public abstract class MixinPlayerEntity extends LivingEntity {
@Shadow @Final private PlayerInventory inventory;
@Shadow
@Final
private PlayerInventory inventory;
@Shadow public abstract boolean canHarvest(BlockState state);
@Shadow
public abstract boolean canHarvest(BlockState state);
protected MixinPlayerEntity(EntityType<? extends LivingEntity> entityType, World world) {
super(entityType, world);

View File

@ -60,7 +60,7 @@ public abstract class MixinPaneBlock extends HorizontalConnectingBlock {
final VoxelShape northEastCornerShape = VoxelShapes.union(northShape, eastShape);
final VoxelShape southWestCornerShape = VoxelShapes.union(southShape, westShape);
viaFabricPlus$shape_r1_8 = new VoxelShape[] {
viaFabricPlus$shape_r1_8 = new VoxelShape[]{
VoxelShapes.empty(),
Block.createCuboidShape(h, (float) 0.0, h + 1, i, (float) 16.0, 16.0D), // south
Block.createCuboidShape(0.0D, (float) 0.0, h, i - 1, (float) 16.0, i), // west

View File

@ -29,7 +29,7 @@ import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(value = CommonBoss.class, remap = false)
public abstract class MixinCommonBoss {
@Redirect(method = { "<init>", "setHealth" }, at = @At(value = "INVOKE", target = "Lcom/google/common/base/Preconditions;checkArgument(ZLjava/lang/Object;)V"))
@Redirect(method = {"<init>", "setHealth"}, at = @At(value = "INVOKE", target = "Lcom/google/common/base/Preconditions;checkArgument(ZLjava/lang/Object;)V"))
private void ignoreHealthCheck(boolean expression, Object errorMessage) {
}

View File

@ -21,12 +21,12 @@
package com.viaversion.viafabricplus.injection.mixin.features.entity.metadata_handling;
import com.viaversion.viafabricplus.features.entity.metadata_handling.WolfHealthTracker1_14_4;
import com.viaversion.viaversion.protocols.v1_14_3to1_14_4.packet.ClientboundPackets1_14_4;
import com.viaversion.viaversion.protocols.v1_14_4to1_15.Protocol1_14_4To1_15;
import com.viaversion.viaversion.protocols.v1_14_4to1_15.rewriter.EntityPacketRewriter1_15;
import com.viaversion.viaversion.rewriter.EntityRewriter;
import com.viaversion.viaversion.rewriter.entitydata.EntityDataFilter;
import com.viaversion.viafabricplus.features.entity.metadata_handling.WolfHealthTracker1_14_4;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

View File

@ -22,8 +22,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.entity.pose;
import com.mojang.authlib.GameProfile;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.network.OtherClientPlayerEntity;
import net.minecraft.client.world.ClientWorld;

View File

@ -22,9 +22,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.entity.r1_8_boat;
import com.llamalad7.mixinextras.sugar.Local;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.features.entity.r1_8_boat.BoatRenderer1_8;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.render.entity.EntityRenderDispatcher;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.EntityRendererFactory;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.footstep_particle;
import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2;
import com.viaversion.viaversion.api.data.MappingDataBase;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.footstep_particle;
import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.ParticleIdMappings1_13;
import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2;
import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.ParticleIdMappings1_13;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;

View File

@ -21,10 +21,10 @@
package com.viaversion.viafabricplus.injection.mixin.features.footstep_particle;
import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2;
import com.viaversion.viaversion.api.data.FullMappingsBase;
import com.viaversion.viaversion.api.data.Mappings;
import com.viaversion.viaversion.api.data.ParticleMappings;
import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2;
import org.spongepowered.asm.mixin.Mixin;
import java.util.List;

View File

@ -22,15 +22,15 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.container_clicking;
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.injection.access.interaction.container_clicking.IScreenHandler;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.translator.ItemTranslator;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2;
import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.injection.access.interaction.container_clicking.IScreenHandler;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.translator.ItemTranslator;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.client.network.ClientPlayerInteractionManager;
@ -40,7 +40,10 @@ import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket;
import net.minecraft.screen.slot.SlotActionType;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.container_clicking;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.AbstractCraftingScreenHandler;
import net.minecraft.screen.CraftingScreenHandler;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.container_clicking;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.injection.access.interaction.container_clicking.IScreenHandler;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.ScreenHandler;
import org.spongepowered.asm.mixin.Mixin;

View File

@ -22,14 +22,14 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.r1_18_2_block_ack_emulation;
import com.viaversion.viafabricplus.base.sync_tasks.SyncTasks;
import com.viaversion.viafabricplus.injection.access.interaction.r1_18_2_block_ack_emulation.IClientPlayerInteractionManager;
import com.viaversion.viafabricplus.protocoltranslator.translator.BlockStateTranslator;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18;
import com.viaversion.viaversion.protocols.v1_18_2to1_19.Protocol1_18_2To1_19;
import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19;
import com.viaversion.viaversion.protocols.v1_18_2to1_19.rewriter.WorldPacketRewriter1_19;
import com.viaversion.viafabricplus.injection.access.interaction.r1_18_2_block_ack_emulation.IClientPlayerInteractionManager;
import com.viaversion.viafabricplus.protocoltranslator.translator.BlockStateTranslator;
import net.minecraft.block.BlockState;
import net.minecraft.client.MinecraftClient;
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.remove_fuel_slot;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.inventory.Inventory;
import net.minecraft.screen.slot.Slot;
import org.spongepowered.asm.mixin.Mixin;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.remove_offhand_slot;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.screen.AbstractCraftingScreenHandler;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.screen.ScreenHandlerType;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.interaction.replace_block_item_use_logic;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.impl.ViaFabricPlusMappingDataLoader;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerEntity;

View File

@ -22,7 +22,6 @@
package com.viaversion.viafabricplus.injection.mixin.features.item.cooldown;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.settings.impl.DebugSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.player.ItemCooldownManager;
import org.spongepowered.asm.mixin.Mixin;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.item.filter_creative_tabs;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.settings.impl.GeneralSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemGroups;
import net.minecraft.registry.RegistryWrapper;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.item.sword_blocking;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.SwordItem;

View File

@ -23,8 +23,8 @@ package com.viaversion.viafabricplus.injection.mixin.features.mouse_sensitivity;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.features.mouse_sensitivity.MouseSensitivity1_13_2;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.Mouse;
import net.minecraft.client.option.SimpleOption;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.mouse_sensitivity;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.features.mouse_sensitivity.MouseSensitivity1_13_2;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.option.GameOptionsScreen;

View File

@ -22,8 +22,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement;
import com.mojang.authlib.GameProfile;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.input.Input;
import net.minecraft.client.network.AbstractClientPlayerEntity;

View File

@ -35,7 +35,10 @@ import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.Slice;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.List;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.collision;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.HoneyBlock;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@ -32,7 +32,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(HoneyBlock.class)
public abstract class MixinHoneyBlock {
@Inject(method = { "method_65067", "method_65068" }, at = @At("HEAD"), cancellable = true)
@Inject(method = {"method_65067", "method_65068"}, at = @At("HEAD"), cancellable = true)
private static void simplifyVelocityComparisons(double d, CallbackInfoReturnable<Double> cir) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21)) {
cir.setReturnValue(d);

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.collision;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.SoulSandBlock;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.constants;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.render.entity.PlayerEntityRenderer;
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
import net.minecraft.entity.EntityPose;

View File

@ -21,13 +21,15 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.limitation;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import net.minecraft.entity.*;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(PlayerEntity.class)

View File

@ -40,7 +40,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(value = ClientPlayerEntity.class, priority = 2000)
public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity {
@Shadow public Input input;
@Shadow
public Input input;
public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) {
super(world, profile);

View File

@ -39,11 +39,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(value = ClientPlayerEntity.class, priority = 2000)
public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity {
@Shadow protected abstract boolean shouldStopSprinting();
@Shadow
protected abstract boolean shouldStopSprinting();
@Shadow protected abstract void sendSneakingPacket();
@Shadow
protected abstract void sendSneakingPacket();
@Shadow private boolean inSneakingPose;
@Shadow
private boolean inSneakingPose;
public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) {
super(world, profile);

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.water;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.impl.ViaFabricPlusMappingDataLoader;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.*;
import net.minecraft.fluid.FlowableFluid;
import net.minecraft.util.math.BlockPos;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.water;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.ItemEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.movement.water;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.SkeletonHorseEntity;
import net.minecraft.entity.passive.AbstractHorseEntity;

View File

@ -23,8 +23,8 @@ package com.viaversion.viafabricplus.injection.mixin.features.networking.disable
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
import com.viaversion.viafabricplus.ViaFabricPlus;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.visuals.settings.VisualSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
@ -45,7 +45,8 @@ import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.function.Function;
@Mixin(value = MultiplayerServerListWidget.ServerEntry.class, priority = 1001) // Apply after the mixin in the main project
@Mixin(value = MultiplayerServerListWidget.ServerEntry.class, priority = 1001)
// Apply after the mixin in the main project
public abstract class MixinMultiplayerServerListWidget_ServerEntry {
@Shadow

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.injection.mixin.features.networking.resource_pack_header;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.features.networking.resource_pack_header.ResourcePackHeaderDiff;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.GameVersion;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.networking.srv_resolving;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.network.Address;
import net.minecraft.client.network.AddressResolver;
import net.minecraft.client.network.AllowedAddressResolver;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.networking.srv_resolving;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.network.AllowedAddressResolver;
import net.minecraft.client.network.ServerAddress;
import org.spongepowered.asm.mixin.Final;

View File

@ -22,8 +22,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.remove_newer_screen_features;
import com.viaversion.viafabricplus.ViaFabricPlus;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.visuals.settings.VisualSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.entity.JigsawBlockEntity;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;

View File

@ -23,7 +23,6 @@ package com.viaversion.viafabricplus.injection.mixin.features.replace_blank_glyp
import com.viaversion.viafabricplus.features.replace_blank_glyph.BuiltinEmptyGlyph1_12_2;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.settings.impl.DebugSettings;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.font.*;
import org.spongepowered.asm.mixin.Mixin;
@ -38,9 +37,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(FontStorage.class)
public abstract class MixinFontStorage {
@Shadow private BakedGlyph blankBakedGlyph;
@Shadow
private BakedGlyph blankBakedGlyph;
@Shadow protected abstract BakedGlyph bake(RenderableGlyph c);
@Shadow
protected abstract BakedGlyph bake(RenderableGlyph c);
@Unique
private BakedGlyph viaFabricPlus$blankBakedGlyph1_12_2;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.sign_editor_reach;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen;
import org.spongepowered.asm.mixin.Final;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.world.always_tick_entities;
import com.viaversion.viafabricplus.settings.impl.DebugSettings;
import com.viaversion.viafabricplus.injection.access.world.always_tick_entities.IEntity;
import com.viaversion.viafabricplus.settings.impl.DebugSettings;
import net.minecraft.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.injection.mixin.features.world.remove_server_view_distance;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import net.minecraft.client.option.GameOptions;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -26,6 +26,15 @@ import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import com.viaversion.viafabricplus.base.Events;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.protocoltranslator.impl.command.ViaFabricPlusVLCommandHandler;
import com.viaversion.viafabricplus.protocoltranslator.impl.platform.ViaFabricPlusViaLegacyPlatformImpl;
import com.viaversion.viafabricplus.protocoltranslator.impl.platform.ViaFabricPlusViaVersionPlatformImpl;
import com.viaversion.viafabricplus.protocoltranslator.impl.viaversion.ViaFabricPlusVLInjector;
import com.viaversion.viafabricplus.protocoltranslator.impl.viaversion.ViaFabricPlusVLLoader;
import com.viaversion.viafabricplus.protocoltranslator.netty.ViaFabricPlusVLLegacyPipeline;
import com.viaversion.viafabricplus.protocoltranslator.protocol.ViaFabricPlusProtocol;
import com.viaversion.viafabricplus.protocoltranslator.util.NoPacketSendChannel;
import com.viaversion.vialoader.ViaLoader;
import com.viaversion.vialoader.impl.platform.ViaAprilFoolsPlatformImpl;
import com.viaversion.vialoader.impl.platform.ViaBackwardsPlatformImpl;
@ -40,15 +49,6 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionType;
import com.viaversion.viaversion.connection.UserConnectionImpl;
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
import com.viaversion.viafabricplus.protocoltranslator.protocol.ViaFabricPlusProtocol;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.protocoltranslator.impl.command.ViaFabricPlusVLCommandHandler;
import com.viaversion.viafabricplus.protocoltranslator.impl.platform.ViaFabricPlusViaLegacyPlatformImpl;
import com.viaversion.viafabricplus.protocoltranslator.impl.platform.ViaFabricPlusViaVersionPlatformImpl;
import com.viaversion.viafabricplus.protocoltranslator.impl.viaversion.ViaFabricPlusVLInjector;
import com.viaversion.viafabricplus.protocoltranslator.impl.viaversion.ViaFabricPlusVLLoader;
import com.viaversion.viafabricplus.protocoltranslator.netty.ViaFabricPlusVLLegacyPipeline;
import com.viaversion.viafabricplus.protocoltranslator.util.NoPacketSendChannel;
import io.netty.channel.Channel;
import io.netty.channel.ChannelOption;
import io.netty.util.AttributeKey;

View File

@ -21,11 +21,11 @@
package com.viaversion.viafabricplus.protocoltranslator.impl;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.data.MappingDataLoader;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.libs.gson.JsonElement;
import com.viaversion.viaversion.libs.gson.JsonObject;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import net.minecraft.block.Block;
import net.minecraft.registry.Registries;
@ -84,7 +84,8 @@ public final class ViaFabricPlusMappingDataLoader extends MappingDataLoader {
return null;
}
public record Material(boolean blocksMovement, boolean burnable, boolean liquid, boolean blocksLight, boolean replaceable, boolean solid) {
public record Material(boolean blocksMovement, boolean burnable, boolean liquid, boolean blocksLight,
boolean replaceable, boolean solid) {
}
}

View File

@ -21,11 +21,11 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.command;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.util.ChatUtil;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viaversion.api.command.ViaSubCommand;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.util.ChatUtil;
public interface VFPViaSubCommand extends ViaSubCommand {

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.command.classic;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viafabricplus.injection.access.base.IExtensionProtocolMetadataStorage;
import com.viaversion.viafabricplus.protocoltranslator.impl.command.VFPViaSubCommand;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import net.minecraft.util.Formatting;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.storage.ExtensionProtocolMetadataStorage;

View File

@ -21,8 +21,8 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.command.classic;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viafabricplus.protocoltranslator.impl.command.VFPViaSubCommand;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import net.minecraft.util.Formatting;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import net.raphimc.vialegacy.protocol.alpha.a1_0_16_2toa1_0_17_1_0_17_4.storage.TimeLockStorage;

View File

@ -21,14 +21,14 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.platform;
import com.viaversion.vialoader.impl.platform.ViaVersionPlatformImpl;
import com.viaversion.viaversion.configuration.AbstractViaConfig;
import com.viaversion.viaversion.libs.gson.JsonArray;
import com.viaversion.viaversion.libs.gson.JsonObject;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.injection.ViaFabricPlusMixinPlugin;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.protocoltranslator.impl.viaversion.ViaFabricPlusVLViaConfig;
import com.viaversion.vialoader.impl.platform.ViaVersionPlatformImpl;
import com.viaversion.viaversion.configuration.AbstractViaConfig;
import com.viaversion.viaversion.libs.gson.JsonArray;
import com.viaversion.viaversion.libs.gson.JsonObject;
import net.fabricmc.loader.api.FabricLoader;
import java.io.File;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.provider.viabedrock;
import com.viaversion.viafabricplus.protocoltranslator.netty.ViaFabricPlusVLLegacyPipeline;
import com.viaversion.vialoader.netty.VLPipeline;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.protocoltranslator.netty.ViaFabricPlusVLLegacyPipeline;
import io.netty.channel.Channel;
import net.raphimc.viabedrock.api.io.compression.ProtocolCompression;
import net.raphimc.viabedrock.netty.AesEncryptionCodec;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.provider.vialegacy;
import com.viaversion.viafabricplus.protocoltranslator.translator.ItemTranslator;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viafabricplus.protocoltranslator.translator.ItemTranslator;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.item.ItemStack;

View File

@ -21,11 +21,11 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.provider.vialegacy;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.settings.impl.AuthenticationSettings;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.classic4j.BetaCraftHandler;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.settings.impl.AuthenticationSettings;
import net.raphimc.vialegacy.protocol.classic.c0_28_30toa1_0_15.provider.ClassicMPPassProvider;
import net.raphimc.vialegacy.protocol.release.r1_2_4_5tor1_3_1_2.provider.OldAuthProvider;

View File

@ -21,9 +21,9 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.provider.vialegacy;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.injection.access.base.IClientConnection;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.connection.UserConnection;
import net.raphimc.vialegacy.protocol.release.r1_6_4tor1_7_2_5.provider.EncryptionProvider;
public final class ViaFabricPlusEncryptionProvider extends EncryptionProvider {

View File

@ -21,11 +21,11 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.provider.vialegacy;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viafabricplus.ViaFabricPlusImpl;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viafabricplus.settings.impl.AuthenticationSettings;
import com.viaversion.viafabricplus.util.ChatUtil;
import com.viaversion.viaversion.api.connection.UserConnection;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import net.raphimc.vialegacy.protocol.release.r1_2_4_5tor1_3_1_2.provider.OldAuthProvider;

View File

@ -21,10 +21,10 @@
package com.viaversion.viafabricplus.protocoltranslator.impl.provider.viaversion;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.protocol.version.BaseVersionProvider;
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
public final class ViaFabricPlusBaseVersionProvider extends BaseVersionProvider {

View File

@ -38,7 +38,7 @@ public final class ViaFabricPlusCommandArgumentsProvider extends SignableCommand
if (network != null) {
return SignedArgumentList.of(
network.getCommandDispatcher().parse(command, network.getCommandSource())).
network.getCommandDispatcher().parse(command, network.getCommandSource())).
arguments().stream().
map(function -> new Pair<>(function.getNodeName(), function.value())).
toList();

Some files were not shown because too many files have changed in this diff Show More