From f97d74964a9f798309760fee919661db92fbe6dd Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Sat, 13 May 2023 20:55:50 +0200 Subject: [PATCH 1/8] Updated Via* (1.20-pre1) and updated README --- README.md | 3 ++- gradle.properties | 4 ++-- .../mixin/fixes/viaversion/MixinProtocolVersion.java | 2 +- .../viafabricplus/mappings/PackFormatsMappings.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f3f8d7c8..c38d701c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ # Why another protocol translator? ViaFabricPlus is intended to replace [multiconnect](https://github.com/Earthcomputer/multiconnect), and it also promises more compactness and stability. ViaFabricPlus can do everything multiconnect could do, but supports more Minecraft versions (listed below) and has more protocol changes implemented. ### Supported Server versions -- Release (1.0.0 - 1.20 [23w14a]) +- Release (1.0.0 - 1.20 [1.20-pre1]) - Beta (b1.0 - b1.8.1) - Alpha (a1.0.15 - a1.2.6) - Classic (c0.0.15 - c0.30 including [CPE](https://wiki.vg/Classic_Protocol_Extension)) @@ -28,6 +28,7 @@ ViaFabricPlus is intended to replace [multiconnect](https://github.com/Earthcomp ## Known incompatibilities - ***[ViaFabric](https://github.com/ViaVersion/ViaFabric)*** - ***[multiconnect](https://github.com/Earthcomputer/multiconnect)*** +- ***[krypton](https://github.com/astei/krypton)*** ## List of all clientside related fixes
diff --git a/gradle.properties b/gradle.properties index e9aac868..5fea652e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,8 +19,8 @@ raknet_transport_version=1.0.0.CR1-SNAPSHOT classic4j_version=1.2.0 # viaversion (and required) libs -viaversion_version=4.7.0-23w18a-SNAPSHOT -viabackwards_version=4.7.0-23w18a-SNAPSHOT +viaversion_version=4.7.0-1.20-pre1-SNAPSHOT +viabackwards_version=4.7.0-1.20-pre1-SNAPSHOT snake_yml_version=2.0 # raphimc libs diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocolVersion.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocolVersion.java index 920395f5..9f14ccb8 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocolVersion.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocolVersion.java @@ -45,7 +45,7 @@ public abstract class MixinProtocolVersion { viafabricplus_remaps.put("1.16.4/5", new Pair<>("1.16.4-1.16.5", null)); viafabricplus_remaps.put("1.18/1.18.1", new Pair<>("1.18-1.18.1", null)); viafabricplus_remaps.put("1.19.1/2", new Pair<>("1.19.1-1.19.2", null)); - viafabricplus_remaps.put("1.20", new Pair<>("23w18a", null)); + viafabricplus_remaps.put("1.20", new Pair<>("1.20-pre1", null)); } @Redirect(method = "", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/protocol/version/ProtocolVersion;register(ILjava/lang/String;)Lcom/viaversion/viaversion/api/protocol/version/ProtocolVersion;")) diff --git a/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java b/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java index edf4952c..e2e2cede 100644 --- a/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java +++ b/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java @@ -32,7 +32,7 @@ public class PackFormatsMappings { private final static Map protocolMap = new HashMap<>(); public static void load() { - registerVersion(ProtocolVersion.v1_20, 15, "23w18a"); + registerVersion(ProtocolVersion.v1_20, 15, "1.20-pre1"); registerVersion(ProtocolVersion.v1_19_4, 13, "1.19.4"); registerVersion(ProtocolVersion.v1_19_3, 12, "1.19.3"); registerVersion(ProtocolVersion.v1_19_1, 9, "1.19.2"); From a1ed04d63459fd745e6c001c2e35f917db268034 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Sat, 13 May 2023 21:06:19 +0200 Subject: [PATCH 2/8] Exclude libraries --- build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 53ce20eb..843dd3f6 100644 --- a/build.gradle +++ b/build.gradle @@ -56,7 +56,11 @@ dependencies { libs "com.github.FlorianMichael:Classic4J:${project.classic4j_version}" libs "com.viaversion:viaversion:${project.viaversion_version}" - libs "com.viaversion:viabackwards-common:${project.viabackwards_version}" + libs ("com.viaversion:viabackwards-common:${project.viabackwards_version}") { + exclude group: "com.viaversion", module: "viaversion" + exclude group: "io.netty", module: "netty-all" + exclude group: "com.google.guava", module: "guava" + } libs "org.yaml:snakeyaml:${project.snake_yml_version}" libs ("net.raphimc:ViaLegacy:${project.vialegacy_version}") { From f54ac0c7857fb281b6241340b6cdf2c140dc1cb8 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Sun, 14 May 2023 20:59:58 +0200 Subject: [PATCH 3/8] Implemented MixinExtras --- build.gradle | 6 ++++++ gradle.properties | 1 + .../viafabricplus/ViaFabricPlus.java | 2 ++ .../MixinClientPlayNetworkHandler.java | 17 +++++++---------- .../mixin/fixes/minecraft/MixinInGameHud.java | 9 +++++---- .../fixes/minecraft/MixinMinecraftClient.java | 9 ++++----- .../MixinServerResourcePackProvider.java | 1 - .../minecraft/entity/MixinLivingEntity.java | 9 ++++----- 8 files changed, 29 insertions(+), 25 deletions(-) diff --git a/build.gradle b/build.gradle index 843dd3f6..b1d46da6 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,10 @@ group = project.maven_group configurations { implementation.extendsFrom libs api.extendsFrom libs + + implementation.extendsFrom bundleMod + include.extendsFrom bundleMod + annotationProcessor.extendsFrom bundleMod } allprojects { @@ -89,6 +93,8 @@ dependencies { } libs "net.lenni0451:Reflect:${project.reflect_version}" + bundleMod "com.github.LlamaLad7:MixinExtras:${project.mixin_extras_version}" + modImplementation "com.terraformersmc:modmenu:${project.mod_menu_version}" } diff --git a/gradle.properties b/gradle.properties index 5fea652e..a41c9dd0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,3 +36,4 @@ reflect_version=1.1.0 # other libs mod_menu_version=6.1.0-rc.4 netty_codec_http_version=4.1.90.Final +mixin_extras_version=0.2.0-beta.7 diff --git a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java index 7086d4be..2b3588e6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java +++ b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java @@ -19,6 +19,7 @@ package de.florianmichael.viafabricplus; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.llamalad7.mixinextras.MixinExtrasBootstrap; import de.florianmichael.viafabricplus.definition.ChatLengthCalculation; import de.florianmichael.viafabricplus.definition.v1_12_2.FontCacheFix; import de.florianmichael.viafabricplus.mappings.ItemReleaseVersionMappings; @@ -57,6 +58,7 @@ public class ViaFabricPlus { private final InformationSystem informationSystem = new InformationSystem(); public void init() { + MixinExtrasBootstrap.init(); PreLoadCallback.EVENT.invoker().onLoad(); // Classic Stuff diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java index cebb162e..0620837b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; +import com.llamalad7.mixinextras.injector.WrapWithCondition; import com.mojang.authlib.GameProfile; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import de.florianmichael.viafabricplus.ViaFabricPlus; @@ -109,11 +110,9 @@ public abstract class MixinClientPlayNetworkHandler { } } - @Redirect(method = "onPlayerSpawnPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/DownloadingTerrainScreen;setReady()V")) - public void moveDownloadingTerrainClosing(DownloadingTerrainScreen instance) { - if (ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(ProtocolVersion.v1_19)) { - instance.setReady(); - } + @WrapWithCondition(method = "onPlayerSpawnPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/DownloadingTerrainScreen;setReady()V")) + public boolean moveDownloadingTerrainClosing(DownloadingTerrainScreen instance) { + return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(ProtocolVersion.v1_19); } @Inject(method = "onPlayerPositionLook", at = @At("RETURN")) @@ -132,11 +131,9 @@ public abstract class MixinClientPlayNetworkHandler { return constant; } - @Redirect(method = "onPlayerList", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) - public void removeNewWarning(Logger instance, String s, Object o) { - if (ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(ProtocolVersion.v1_19_3)) { - instance.warn(s, o); - } + @WrapWithCondition(method = "onPlayerList", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) + public boolean removeWarning(Logger instance, String s, Object o) { + return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(ProtocolVersion.v1_19_3); } @Redirect(method = "onKeepAlive", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;Ljava/util/function/BooleanSupplier;Ljava/time/Duration;)V")) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java index 8765a516..a9c9c449 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import de.florianmichael.viafabricplus.base.settings.groups.VisualSettings; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.util.math.MatrixStack; @@ -63,10 +64,10 @@ public abstract class MixinInGameHud { // Moving down all remaining elements - @Redirect(method = "renderStatusBars", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/hud/InGameHud;scaledHeight:I", opcode = Opcodes.GETFIELD)) - private int moveHealthDown(InGameHud instance) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledHeight + 6; - return scaledHeight; + @ModifyExpressionValue(method = "renderStatusBars", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/hud/InGameHud;scaledHeight:I", opcode = Opcodes.GETFIELD)) + private int moveHealthDown(int originalValue) { + if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return originalValue + 6; + return originalValue; } @ModifyArg(method = "renderStatusBars", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/InGameHud;drawTexture(Lnet/minecraft/client/util/math/MatrixStack;IIIIII)V"), slice = @Slice( diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java index 90d7a6b9..fce63549 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; +import com.llamalad7.mixinextras.injector.WrapWithCondition; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; @@ -56,13 +57,11 @@ public abstract class MixinMinecraftClient implements IMinecraftClient { @Shadow @Nullable public abstract ClientPlayNetworkHandler getNetworkHandler(); - @Redirect(method = "doItemUse", + @WrapWithCondition(method = "doItemUse", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;interactItem(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;")), at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;resetEquipProgress(Lnet/minecraft/util/Hand;)V", ordinal = 0)) - private void redirectDoItemUse(HeldItemRenderer heldItemRenderer, Hand hand) { - if (ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_8) || !(player.getStackInHand(hand).getItem() instanceof SwordItem)) { - heldItemRenderer.resetEquipProgress(hand); - } + public boolean removeEquipProgressReset(HeldItemRenderer instance, Hand hand) { + return ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_8) || !(player.getStackInHand(hand).getItem() instanceof SwordItem); } @Redirect(method = "doItemUse", diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java index 2043b3c2..1667a1df 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java @@ -89,7 +89,6 @@ public class MixinServerResourcePackProvider { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_8)) { return instance; } - return instance.toLowerCase(locale); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java index f879e985..7136330b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; +import com.llamalad7.mixinextras.injector.WrapWithCondition; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.base.settings.groups.ExperimentalSettings; @@ -88,13 +89,11 @@ public abstract class MixinLivingEntity extends Entity { return movingDown; } - @Redirect(method = "travel", + @WrapWithCondition(method = "travel", slice = @Slice(from = @At(value = "FIELD", target = "Lnet/minecraft/entity/effect/StatusEffects;LEVITATION:Lnet/minecraft/entity/effect/StatusEffect;", ordinal = 0)), at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;onLanding()V", ordinal = 0)) - private void dontResetLevitationFallDistance(LivingEntity instance) { - if (ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_12_2)) { - instance.onLanding(); - } + private boolean dontResetLevitationFallDistance(LivingEntity instance) { + return ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_12_2); } @Redirect(method = "travel", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;isSprinting()Z", ordinal = 0)) From 8bf660f60c7940f12a294eaa60ff136504dc358a Mon Sep 17 00:00:00 2001 From: Fundi1330 <88210377+Fundi1330@users.noreply.github.com> Date: Mon, 15 May 2023 20:31:55 +0300 Subject: [PATCH 4/8] Update uk_ua.json --- src/main/resources/assets/viafabricplus/lang/uk_ua.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/viafabricplus/lang/uk_ua.json b/src/main/resources/assets/viafabricplus/lang/uk_ua.json index 475d1389..1bc35e37 100644 --- a/src/main/resources/assets/viafabricplus/lang/uk_ua.json +++ b/src/main/resources/assets/viafabricplus/lang/uk_ua.json @@ -12,6 +12,7 @@ "words.viafabricplus.online": "Онлайн режим", "words.viafabricplus.reset": "Зкинути", "words.viafabricplus.copy": "Зкопіювати код", + "words.viafabricplus.error": "Щось пішло не так! Спробуйте будь ласка пізніше", "general.viafabricplus.secret": "Показувати Супер Секретні Налаштування", "general.viafabricplus.extrainformation": "Показувати додаткову інформацію на екрані відладки", From 2a137cb4aab90e4cd2ff32cd97a59c78c37d0cb7 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Mon, 15 May 2023 20:27:07 +0200 Subject: [PATCH 5/8] Updated build code --- build.gradle | 41 ++++++++----------- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 1 - .../viafabricplus/ViaFabricPlus.java | 2 - 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/build.gradle b/build.gradle index b1d46da6..8aeaacd1 100644 --- a/build.gradle +++ b/build.gradle @@ -7,12 +7,8 @@ version = project.mod_version group = project.maven_group configurations { - implementation.extendsFrom libs - api.extendsFrom libs - - implementation.extendsFrom bundleMod - include.extendsFrom bundleMod - annotationProcessor.extendsFrom bundleMod + implementation.extendsFrom library + api.extendsFrom library } allprojects { @@ -55,47 +51,46 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + modImplementation "com.terraformersmc:modmenu:${project.mod_menu_version}" - libs "com.github.FlorianMichael:ViaLoadingBase:${project.vialoadingbase_version}" - libs "com.github.FlorianMichael:Classic4J:${project.classic4j_version}" + library "com.github.FlorianMichael:ViaLoadingBase:${project.vialoadingbase_version}" + library "com.github.FlorianMichael:Classic4J:${project.classic4j_version}" - libs "com.viaversion:viaversion:${project.viaversion_version}" - libs ("com.viaversion:viabackwards-common:${project.viabackwards_version}") { + library "com.viaversion:viaversion:${project.viaversion_version}" + library ("com.viaversion:viabackwards-common:${project.viabackwards_version}") { exclude group: "com.viaversion", module: "viaversion" exclude group: "io.netty", module: "netty-all" exclude group: "com.google.guava", module: "guava" } - libs "org.yaml:snakeyaml:${project.snake_yml_version}" + library "org.yaml:snakeyaml:${project.snake_yml_version}" - libs ("net.raphimc:ViaLegacy:${project.vialegacy_version}") { + library ("net.raphimc:ViaLegacy:${project.vialegacy_version}") { exclude group: "net.lenni0451.mcstructs", module: "text" } - libs "net.raphimc:ViaAprilFools:${project.viaaprilfools_version}" - libs ("net.raphimc:ViaBedrock:${project.viabedrock_version}") { + library "net.raphimc:ViaAprilFools:${project.viaaprilfools_version}" + library ("net.raphimc:ViaBedrock:${project.viabedrock_version}") { exclude group: "net.lenni0451.mcstructs", module: "text" exclude group: "io.jsonwebtoken", module: "jjwt-impl" exclude group: "io.jsonwebtoken", module: "jjwt-gson" } - libs ("net.raphimc:MinecraftAuth:${project.minecraftauth_version}") { + library ("net.raphimc:MinecraftAuth:${project.minecraftauth_version}") { exclude group: "com.google.code.gson", module: "gson" exclude group: "org.slf4j", module: "slf4j-api" } - libs("org.cloudburstmc.netty:netty-transport-raknet:${project.raknet_transport_version}") { + library("org.cloudburstmc.netty:netty-transport-raknet:${project.raknet_transport_version}") { exclude group: "io.netty", module: "netty-common" exclude group: "io.netty", module: "netty-buffer" exclude group: "io.netty", module: "netty-codec" exclude group: "io.netty", module: "netty-transport" } - libs ("net.lenni0451.mcstructs:text:${project.mcstructs_text_version}") { + library ("net.lenni0451.mcstructs:text:${project.mcstructs_text_version}") { exclude group: "com.google.code.gson", module: "gson" } - libs "net.lenni0451:Reflect:${project.reflect_version}" + library "net.lenni0451:Reflect:${project.reflect_version}" - bundleMod "com.github.LlamaLad7:MixinExtras:${project.mixin_extras_version}" - - modImplementation "com.terraformersmc:modmenu:${project.mod_menu_version}" + include implementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${project.mixin_extras_version}")) } processResources { @@ -118,10 +113,10 @@ java { } jar { - dependsOn configurations.libs + dependsOn configurations.library from { duplicatesStrategy = DuplicatesStrategy.EXCLUDE - configurations.libs.collect { + configurations.library.collect { zipTree(it) } } { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bdc9a83b..37aef8d3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index df583440..f7854b3c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,4 +8,3 @@ pluginManagement { gradlePluginPortal() } } - diff --git a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java index 2b3588e6..7086d4be 100644 --- a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java +++ b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java @@ -19,7 +19,6 @@ package de.florianmichael.viafabricplus; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.llamalad7.mixinextras.MixinExtrasBootstrap; import de.florianmichael.viafabricplus.definition.ChatLengthCalculation; import de.florianmichael.viafabricplus.definition.v1_12_2.FontCacheFix; import de.florianmichael.viafabricplus.mappings.ItemReleaseVersionMappings; @@ -58,7 +57,6 @@ public class ViaFabricPlus { private final InformationSystem informationSystem = new InformationSystem(); public void init() { - MixinExtrasBootstrap.init(); PreLoadCallback.EVENT.invoker().onLoad(); // Classic Stuff From 5a7147eaaff8125968f16a6fd191c35c086585cf Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Tue, 16 May 2023 14:08:07 +0200 Subject: [PATCH 6/8] Fixed incompatibility with ItemScroller --- .../MixinClientPlayerInteractionManager.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java index 844d1a92..2fd25929 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; +import com.llamalad7.mixinextras.injector.WrapWithCondition; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; @@ -29,7 +30,6 @@ import de.florianmichael.viafabricplus.injection.access.IScreenHandler; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.protocolhack.provider.viaversion.ViaFabricPlusHandItemProvider; import de.florianmichael.viafabricplus.protocolhack.usage.ItemTranslator; -import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; @@ -61,9 +61,12 @@ public abstract class MixinClientPlayerInteractionManager { @Final private MinecraftClient client; - @Shadow protected abstract ActionResult interactBlockInternal(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult); + @Shadow + protected abstract ActionResult interactBlockInternal(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult); - @Shadow @Final private ClientPlayNetworkHandler networkHandler; + @Shadow + @Final + private ClientPlayNetworkHandler networkHandler; @Unique private ItemStack viafabricplus_oldCursorStack; @@ -93,14 +96,15 @@ public abstract class MixinClientPlayerInteractionManager { if (type == SlotActionType.QUICK_CRAFT) return true; // quick move always uses empty stack for verification since 1.12 - if (type == SlotActionType.QUICK_MOVE && ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_11_1)) return true; + if (type == SlotActionType.QUICK_MOVE && ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_11_1)) + return true; // pickup with slot -999 (outside window) to throw items always uses empty stack for verification return type == SlotActionType.PICKUP && slot == -999; } - @Redirect(method = "clickSlot", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V")) - private void modifySlotClickPacket(ClientPlayNetworkHandler instance, Packet packet) { + @WrapWithCondition(method = "clickSlot", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V")) + private boolean modifySlotClickPacket(ClientPlayNetworkHandler instance, Packet packet) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_16_4) && packet instanceof ClickSlotC2SPacket clickSlot) { ItemStack slotItemBeforeModification; @@ -131,16 +135,15 @@ public abstract class MixinClientPlayerInteractionManager { try { clickSlotPacket.sendToServer(Protocol1_17To1_16_4.class); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } }); viafabricplus_oldCursorStack = null; viafabricplus_oldItems = null; - - return; + return false; } - - instance.sendPacket(packet); + return true; } @Redirect(method = "interactItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0), From 8efa9700c0929836c134b4c23c31b0dc4424d479 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Tue, 16 May 2023 20:20:59 +0200 Subject: [PATCH 7/8] fixed https://github.com/FlorianMichael/ViaFabricPlus/issues/99 --- .../definition/ChatLengthCalculation.java | 4 +++- .../MixinClientPlayerInteractionManager.java | 11 ++++------- .../mixin/fixes/minecraft/MixinStringHelper.java | 4 ++++ .../minecraft/packet/MixinChatMessageC2SPacket.java | 4 ++++ .../mixin/fixes/minecraft/screen/MixinChatScreen.java | 5 ++++- .../command/ViaFabricPlusViaCommandSender.java | 2 +- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java b/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java index 97ebcba5..7d13435d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java +++ b/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java @@ -44,7 +44,9 @@ public class ChatLengthCalculation { }); LoadClassicProtocolExtensionCallback.EVENT.register(classicProtocolExtension -> { - if (classicProtocolExtension == ClassicProtocolExtension.LONGER_MESSAGES) INSTANCE.maxLength = Short.MAX_VALUE * 2; + if (classicProtocolExtension == ClassicProtocolExtension.LONGER_MESSAGES) { + INSTANCE.maxLength = Short.MAX_VALUE * 2; + } }); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java index 2fd25929..816448dd 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java @@ -96,8 +96,7 @@ public abstract class MixinClientPlayerInteractionManager { if (type == SlotActionType.QUICK_CRAFT) return true; // quick move always uses empty stack for verification since 1.12 - if (type == SlotActionType.QUICK_MOVE && ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_11_1)) - return true; + if (type == SlotActionType.QUICK_MOVE && ProtocolHack.getTargetVersion().isNewerThan(ProtocolVersion.v1_11_1)) return true; // pickup with slot -999 (outside window) to throw items always uses empty stack for verification return type == SlotActionType.PICKUP && slot == -999; @@ -146,13 +145,11 @@ public abstract class MixinClientPlayerInteractionManager { return true; } - @Redirect(method = "interactItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0), + @WrapWithCondition(method = "interactItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0), slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;syncSelectedSlot()V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;sendSequencedPacket(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/client/network/SequencedPacketCreator;)V", ordinal = 0))) - private void redirectInteractItem(ClientPlayNetworkHandler clientPlayNetworkHandler, Packet packet) { - if (ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(ProtocolVersion.v1_17)) { - clientPlayNetworkHandler.sendPacket(packet); - } + private boolean redirectInteractItem(ClientPlayNetworkHandler instance, Packet packet) { + return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(ProtocolVersion.v1_17); } @Inject(method = "interactItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0, shift = At.Shift.BEFORE)) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java index 372f42ab..8e8bf882 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java @@ -18,6 +18,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; import de.florianmichael.viafabricplus.definition.ChatLengthCalculation; +import net.minecraft.client.MinecraftClient; import net.minecraft.util.StringHelper; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; @@ -28,6 +29,9 @@ public class MixinStringHelper { @ModifyConstant(method = "truncateChat", constant = @Constant(intValue = 256)) private static int expandChatLength(int constant) { + if (MinecraftClient.getInstance().isInSingleplayer()) { + return 256; + } return ChatLengthCalculation.INSTANCE.getMaxLength(); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java index 89021777..4427eb16 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java @@ -18,6 +18,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.packet; import de.florianmichael.viafabricplus.definition.ChatLengthCalculation; +import net.minecraft.client.MinecraftClient; import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -28,6 +29,9 @@ public class MixinChatMessageC2SPacket { @ModifyArg(method = "write", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketByteBuf;writeString(Ljava/lang/String;I)Lnet/minecraft/network/PacketByteBuf;")) public int modifyChatLength(int maxLength) { + if (MinecraftClient.getInstance().isInSingleplayer()) { + return 256; + } return ChatLengthCalculation.INSTANCE.getMaxLength(); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java index 8ab90be4..8384202e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java @@ -19,6 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen; import de.florianmichael.viafabricplus.definition.ChatLengthCalculation; import de.florianmichael.viafabricplus.base.settings.groups.VisualSettings; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.ChatHud; import net.minecraft.client.gui.hud.MessageIndicator; import net.minecraft.client.gui.screen.ChatScreen; @@ -37,7 +38,9 @@ public class MixinChatScreen { @Inject(method = "init", at = @At("RETURN")) public void changeChatLength(CallbackInfo ci) { - this.chatField.setMaxLength(ChatLengthCalculation.INSTANCE.getMaxLength()); + if (!MinecraftClient.getInstance().isInSingleplayer()) { + this.chatField.setMaxLength(ChatLengthCalculation.INSTANCE.getMaxLength()); + } } @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;getIndicatorAt(DD)Lnet/minecraft/client/gui/hud/MessageIndicator;")) diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusViaCommandSender.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusViaCommandSender.java index 56d3ef17..594b0b60 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusViaCommandSender.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusViaCommandSender.java @@ -33,7 +33,7 @@ public class ViaFabricPlusViaCommandSender implements ViaCommandSender { @Override public boolean hasPermission(String s) { - return source.hasPermissionLevel(4); + return true; } @Override From b09dd84019fc6fe30e62eb1de8815cc2f5210b1f Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Tue, 16 May 2023 20:22:36 +0200 Subject: [PATCH 8/8] Bump version --- gradle.properties | 2 +- .../fixes/minecraft/screen/MixinStructureBlockScreen_1.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index a41c9dd0..a33f4f44 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ loader_version=0.14.19 fabric_api_version=0.76.0+1.19.4 # viafabricplus -mod_version=2.7.1 +mod_version=2.7.2 maven_group=de.florianmichael archives_base_name=viafabricplus diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java index 949047a5..ea9b4102 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java @@ -36,6 +36,8 @@ public class MixinStructureBlockScreen_1 extends TextFieldWidget { @Inject(method = "charTyped(CI)Z", at = @At("HEAD"), cancellable = true) private void onCharTyped(char chr, int keyCode, CallbackInfoReturnable ci) { - if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_12_2)) ci.setReturnValue(super.charTyped(chr, keyCode)); + if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_12_2)) { + ci.setReturnValue(super.charTyped(chr, keyCode)); + } } }