From 1fbc96b8057b7a716a55ed9270c8a239f3b0fd20 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Sat, 21 Oct 2023 16:08:11 +0200 Subject: [PATCH] Abstract platform code, build tasks and resources / fixed loading on all versions :tm: --- build.gradle | 7 +- buildSrc/build.gradle | 2 +- ...radle => viaforge.base-conventions.gradle} | 18 ---- .../viaforge.conflicting-conventions.gradle | 7 ++ ...adle => viaforge.forge-conventions.gradle} | 10 +- .../groovy/viaforge.modern-conventions.gradle | 6 ++ .../groovy/viaforge.shadow-conventions.gradle | 21 +++++ gradle.properties | 4 +- .../viaforge/common/PlatformFields.java | 17 +--- .../viaforge/common/ViaForgeCommon.java | 91 +++++++++++++++++++ .../protocolhack/ViaForgeVLInjector.java | 2 +- .../ViaForgeVLLegacyPipeline.java | 2 +- .../protocolhack/ViaForgeVLLoader.java | 9 +- .../main/resources/META-INF/mods.toml | 0 .../src => src}/main/resources/mcmod.info | 0 .../src => src}/main/resources/pack.mcmeta | 0 viaforge-mc112/build.gradle | 5 +- .../de/florianmichael/viaforge/ViaForge.java | 40 -------- .../florianmichael/viaforge/ViaForge112.java | 20 ++-- .../viaforge/gui/GuiProtocolSelector.java | 7 +- .../viaforge/mixin/impl/MixinGuiMainMenu.java | 5 +- .../mixin/impl/MixinNetworkManager.java | 4 +- .../mixin/impl/MixinNetworkManager_5.java | 14 +-- .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../main/resources/mixins.viaforge-mc112.json | 2 +- viaforge-mc114/build.gradle | 3 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge114.java | 40 ++++++++ .../viaforge/gui/GuiProtocolSelector.java | 6 +- .../viaforge/mixin/MixinMainMenuScreen.java | 6 +- .../mixin/MixinMultiplayerScreen.java | 4 +- .../viaforge/mixin/MixinNetworkManager.java | 3 +- .../viaforge/mixin/MixinNetworkManager_1.java | 34 +++++++ .../viaforge/mixin/MixinNetworkManager_5.java | 44 --------- .../viaforge/mixin/MixinServerListScreen.java | 3 - .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../main/resources/mixins.viaforge-mc114.json | 2 +- viaforge-mc114/src/main/resources/pack.mcmeta | 6 -- viaforge-mc115/build.gradle | 3 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge115.java | 41 +++++++++ .../viaforge/gui/GuiProtocolSelector.java | 7 +- .../viaforge/mixin/MixinMainMenuScreen.java | 6 +- .../mixin/MixinMultiplayerScreen.java | 4 +- .../viaforge/mixin/MixinNetworkManager.java | 3 +- .../viaforge/mixin/MixinNetworkManager_1.java | 34 +++++++ .../viaforge/mixin/MixinNetworkManager_5.java | 44 --------- .../viaforge/mixin/MixinServerListScreen.java | 3 - .../src/main/resources/META-INF/mods.toml | 17 ---- .../main/resources/mixins.viaforge-mc115.json | 2 +- viaforge-mc115/src/main/resources/pack.mcmeta | 6 -- viaforge-mc116/build.gradle | 4 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge116.java | 41 +++++++++ .../viaforge/gui/GuiProtocolSelector.java | 7 +- .../viaforge/mixin/MixinMainMenuScreen.java | 5 +- .../mixin/MixinMultiplayerScreen.java | 3 - .../viaforge/mixin/MixinNetworkManager.java | 3 +- .../viaforge/mixin/MixinNetworkManager_1.java | 34 +++++++ .../viaforge/mixin/MixinNetworkManager_5.java | 44 --------- .../viaforge/mixin/MixinServerListScreen.java | 4 +- .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../src/main/resources/META-INF/mods.toml | 17 ---- .../main/resources/mixins.viaforge-mc116.json | 2 +- viaforge-mc116/src/main/resources/pack.mcmeta | 6 -- viaforge-mc117/build.gradle | 5 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge117.java | 41 +++++++++ .../viaforge/gui/GuiProtocolSelector.java | 7 +- .../viaforge/mixin/MixinConnection.java | 3 +- .../viaforge/mixin/MixinConnection_1.java | 16 +--- .../mixin/MixinDirectJoinServerScreen.java | 4 +- .../mixin/MixinJoinMultiplayerScreen.java | 4 +- .../viaforge/mixin/MixinTitleScreen.java | 5 +- .../protocolhack/ViaForgeVLInjector.java | 34 ------- .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../src/main/resources/META-INF/mods.toml | 17 ---- .../main/resources/mixins.viaforge-mc117.json | 2 +- viaforge-mc117/src/main/resources/pack.mcmeta | 6 -- viaforge-mc118/build.gradle | 5 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge118.java | 41 +++++++++ .../viaforge/gui/GuiProtocolSelector.java | 7 +- .../viaforge/mixin/MixinConnection.java | 3 +- .../viaforge/mixin/MixinConnection_1.java | 16 +--- .../mixin/MixinDirectJoinServerScreen.java | 4 +- .../mixin/MixinJoinMultiplayerScreen.java | 4 +- .../viaforge/mixin/MixinTitleScreen.java | 5 +- .../protocolhack/ViaForgeVLInjector.java | 34 ------- .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../src/main/resources/META-INF/mods.toml | 17 ---- .../main/resources/mixins.viaforge-mc118.json | 2 +- viaforge-mc118/src/main/resources/pack.mcmeta | 6 -- viaforge-mc119/build.gradle | 5 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge119.java | 23 +++-- .../viaforge/gui/GuiProtocolSelector.java | 7 +- .../viaforge/mixin/MixinConnection.java | 3 +- .../viaforge/mixin/MixinConnection_1.java | 16 +--- .../mixin/MixinDirectJoinServerScreen.java | 4 +- .../mixin/MixinJoinMultiplayerScreen.java | 4 +- .../viaforge/mixin/MixinTitleScreen.java | 5 +- .../protocolhack/ViaForgeVLInjector.java | 34 ------- .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../src/main/resources/META-INF/mods.toml | 17 ---- .../main/resources/mixins.viaforge-mc119.json | 2 +- viaforge-mc119/src/main/resources/pack.mcmeta | 6 -- viaforge-mc120/build.gradle | 5 +- .../de/florianmichael/viaforge/ViaForge.java | 42 --------- .../florianmichael/viaforge/ViaForge120.java | 41 +++++++++ .../viaforge/gui/GuiProtocolSelector.java | 6 +- .../viaforge/mixin/MixinConnection.java | 3 +- .../viaforge/mixin/MixinConnection_1.java | 16 +--- .../mixin/MixinDirectJoinServerScreen.java | 4 +- .../mixin/MixinJoinMultiplayerScreen.java | 4 +- .../viaforge/mixin/MixinTitleScreen.java | 5 +- .../protocolhack/ViaForgeVLInjector.java | 34 ------- .../ViaForgeVLLegacyPipeline.java | 59 ------------ .../protocolhack/ViaForgeVLLoader.java | 45 --------- .../src/main/resources/META-INF/mods.toml | 17 ---- .../main/resources/mixins.viaforge-mc120.json | 2 +- viaforge-mc120/src/main/resources/pack.mcmeta | 6 -- 128 files changed, 639 insertions(+), 1724 deletions(-) rename buildSrc/src/main/groovy/{florianmichael.viaforge.base-conventions.gradle => viaforge.base-conventions.gradle} (60%) create mode 100644 buildSrc/src/main/groovy/viaforge.conflicting-conventions.gradle rename buildSrc/src/main/groovy/{florianmichael.viaforge.forge-conventions.gradle => viaforge.forge-conventions.gradle} (86%) create mode 100644 buildSrc/src/main/groovy/viaforge.modern-conventions.gradle create mode 100644 buildSrc/src/main/groovy/viaforge.shadow-conventions.gradle rename viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java => src/main/java/de/florianmichael/viaforge/common/PlatformFields.java (65%) create mode 100644 src/main/java/de/florianmichael/viaforge/common/ViaForgeCommon.java rename {viaforge-mc114/src/main/java/de/florianmichael/viaforge => src/main/java/de/florianmichael/viaforge/common}/protocolhack/ViaForgeVLInjector.java (95%) rename {viaforge-mc115/src/main/java/de/florianmichael/viaforge => src/main/java/de/florianmichael/viaforge/common}/protocolhack/ViaForgeVLLegacyPipeline.java (96%) rename {viaforge-mc115/src/main/java/de/florianmichael/viaforge => src/main/java/de/florianmichael/viaforge/common}/protocolhack/ViaForgeVLLoader.java (82%) rename {viaforge-mc114/src => src}/main/resources/META-INF/mods.toml (100%) rename {viaforge-mc112/src => src}/main/resources/mcmod.info (100%) rename {viaforge-mc112/src => src}/main/resources/pack.mcmeta (100%) delete mode 100644 viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge.java rename viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java => viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge112.java (60%) delete mode 100644 viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge.java create mode 100644 viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge114.java create mode 100644 viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java delete mode 100644 viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java delete mode 100644 viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc114/src/main/resources/pack.mcmeta delete mode 100644 viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge.java create mode 100644 viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge115.java create mode 100644 viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java delete mode 100644 viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java delete mode 100644 viaforge-mc115/src/main/resources/META-INF/mods.toml delete mode 100644 viaforge-mc115/src/main/resources/pack.mcmeta delete mode 100644 viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge.java create mode 100644 viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge116.java create mode 100644 viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java delete mode 100644 viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java delete mode 100644 viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc116/src/main/resources/META-INF/mods.toml delete mode 100644 viaforge-mc116/src/main/resources/pack.mcmeta delete mode 100644 viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge.java create mode 100644 viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge117.java rename viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java => viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java (64%) delete mode 100644 viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java delete mode 100644 viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc117/src/main/resources/META-INF/mods.toml delete mode 100644 viaforge-mc117/src/main/resources/pack.mcmeta delete mode 100644 viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge.java create mode 100644 viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge118.java rename viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java => viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java (64%) delete mode 100644 viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java delete mode 100644 viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc118/src/main/resources/META-INF/mods.toml delete mode 100644 viaforge-mc118/src/main/resources/pack.mcmeta delete mode 100644 viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge.java rename viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java => viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge119.java (59%) rename viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java => viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java (64%) delete mode 100644 viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java delete mode 100644 viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc119/src/main/resources/META-INF/mods.toml delete mode 100644 viaforge-mc119/src/main/resources/pack.mcmeta delete mode 100644 viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge.java create mode 100644 viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge120.java rename viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java => viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java (64%) delete mode 100644 viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java delete mode 100644 viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java delete mode 100644 viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java delete mode 100644 viaforge-mc120/src/main/resources/META-INF/mods.toml delete mode 100644 viaforge-mc120/src/main/resources/pack.mcmeta diff --git a/build.gradle b/build.gradle index eb9a8f9..39bf09b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,8 @@ plugins { - id "base" + id "java" + id "viaforge.base-conventions" +} + +dependencies { + compileOnly "io.netty:netty-all:4.0.20.Final" } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index fd839b0..4609984 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -17,6 +17,6 @@ repositories { dependencies { implementation "com.github.johnrengelman:shadow:7.1.2" - implementation "net.minecraftforge.gradle:ForgeGradle:5.1.+" + implementation "net.minecraftforge.gradle:ForgeGradle:5.+" implementation "org.spongepowered:mixingradle:0.7-SNAPSHOT" } diff --git a/buildSrc/src/main/groovy/florianmichael.viaforge.base-conventions.gradle b/buildSrc/src/main/groovy/viaforge.base-conventions.gradle similarity index 60% rename from buildSrc/src/main/groovy/florianmichael.viaforge.base-conventions.gradle rename to buildSrc/src/main/groovy/viaforge.base-conventions.gradle index a57dd44..c56f176 100644 --- a/buildSrc/src/main/groovy/florianmichael.viaforge.base-conventions.gradle +++ b/buildSrc/src/main/groovy/viaforge.base-conventions.gradle @@ -1,14 +1,7 @@ plugins { id "java-library" - id "com.github.johnrengelman.shadow" } -archivesBaseName = project.maven_name -version = maven_version + "-" + project.mc_version -group = maven_group - -compileJava.options.encoding = "UTF-8" - configurations { include implementation.extendsFrom(include) @@ -31,14 +24,3 @@ dependencies { include "net.raphimc:ViaLoader:${project.vialoader_version}" } - -processResources { - inputs.property "version", project.version - - - for (final def file in ["mcmod.info", "META-INF/mods.toml"]) { - filesMatching(file) { - expand "version": project.version - } - } -} diff --git a/buildSrc/src/main/groovy/viaforge.conflicting-conventions.gradle b/buildSrc/src/main/groovy/viaforge.conflicting-conventions.gradle new file mode 100644 index 0000000..9d5c087 --- /dev/null +++ b/buildSrc/src/main/groovy/viaforge.conflicting-conventions.gradle @@ -0,0 +1,7 @@ +plugins { + id "viaforge.shadow-conventions" +} + +shadowJar { + exclude("META-INF/services/**") +} diff --git a/buildSrc/src/main/groovy/florianmichael.viaforge.forge-conventions.gradle b/buildSrc/src/main/groovy/viaforge.forge-conventions.gradle similarity index 86% rename from buildSrc/src/main/groovy/florianmichael.viaforge.forge-conventions.gradle rename to buildSrc/src/main/groovy/viaforge.forge-conventions.gradle index 8abe1b2..56a9d0f 100644 --- a/buildSrc/src/main/groovy/florianmichael.viaforge.forge-conventions.gradle +++ b/buildSrc/src/main/groovy/viaforge.forge-conventions.gradle @@ -1,6 +1,7 @@ plugins { id "net.minecraftforge.gradle" id "org.spongepowered.mixin" + id "viaforge.shadow-conventions" } minecraft { @@ -32,10 +33,12 @@ sourceSets.main.resources { } dependencies { - include "org.spongepowered:mixin:${mixin_version}" + include "org.spongepowered:mixin:0.8.3" include "org.slf4j:slf4j-api:${project.slf4j_version}" - annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor" + annotationProcessor "org.spongepowered:mixin:0.8.3:processor" + + include project(":") } mixin { @@ -53,6 +56,8 @@ jar { "Implementation-Timestamp": new Date().format("yyyy-MM-dd"-"HH:mm:ssZ"), "TweakClass": "org.spongepowered.asm.launch.MixinTweaker", "TweakOrder": "0", + "FMLCorePluginContainsFMLMod": "true", + "FMLCorePlugin": "de.florianmichael.viaforge.mixin.MixinLoader", "MixinConfigs": "mixins.${maven_name}.json", "ForceLoadAsMod": "true" ) @@ -65,7 +70,6 @@ shadowJar { duplicatesStrategy DuplicatesStrategy.EXCLUDE exclude("META-INF/maven/**") - exclude("META-INF/services/**") exclude("META-INF/versions/**") } diff --git a/buildSrc/src/main/groovy/viaforge.modern-conventions.gradle b/buildSrc/src/main/groovy/viaforge.modern-conventions.gradle new file mode 100644 index 0000000..5107b42 --- /dev/null +++ b/buildSrc/src/main/groovy/viaforge.modern-conventions.gradle @@ -0,0 +1,6 @@ +plugins { + id "viaforge.forge-conventions" + id "viaforge.conflicting-conventions" +} + +java.toolchain.languageVersion = JavaLanguageVersion.of(17) diff --git a/buildSrc/src/main/groovy/viaforge.shadow-conventions.gradle b/buildSrc/src/main/groovy/viaforge.shadow-conventions.gradle new file mode 100644 index 0000000..de0c20f --- /dev/null +++ b/buildSrc/src/main/groovy/viaforge.shadow-conventions.gradle @@ -0,0 +1,21 @@ +plugins { + id "com.github.johnrengelman.shadow" + id "viaforge.base-conventions" +} + +archivesBaseName = project.maven_name +version = maven_version + "-" + project.mc_version +group = maven_group + +compileJava.options.encoding = "UTF-8" + +processResources { + inputs.property "version", project.version + + + for (final def file in ["mcmod.info", "META-INF/mods.toml"]) { + filesMatching(file) { + expand "version": project.version + } + } +} diff --git a/gradle.properties b/gradle.properties index c9b72eb..3f93857 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,5 +15,5 @@ viarewind_version=3.0.3-SNAPSHOT snake_yml_version=2.2 # Misc Libraries -slf4j_version=2.0.9 -mixin_version=0.8.5 \ No newline at end of file +slf4j_version=2.0.7 +mixin_version=0.8.3 \ No newline at end of file diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/src/main/java/de/florianmichael/viaforge/common/PlatformFields.java similarity index 65% rename from viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java rename to src/main/java/de/florianmichael/viaforge/common/PlatformFields.java index 5a30719..06ceb81 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ b/src/main/java/de/florianmichael/viaforge/common/PlatformFields.java @@ -15,20 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package de.florianmichael.viaforge.protocolhack; +package de.florianmichael.viaforge.common; -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; +import java.util.function.Supplier; -public class ViaForgeVLInjector extends VLInjector { +public interface PlatformFields { - @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; - } + int getGameVersion(); - @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; - } + Supplier isSingleplayer(); } diff --git a/src/main/java/de/florianmichael/viaforge/common/ViaForgeCommon.java b/src/main/java/de/florianmichael/viaforge/common/ViaForgeCommon.java new file mode 100644 index 0000000..b68ec10 --- /dev/null +++ b/src/main/java/de/florianmichael/viaforge/common/ViaForgeCommon.java @@ -0,0 +1,91 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge.common; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.connection.UserConnectionImpl; +import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; +import de.florianmichael.viaforge.common.protocolhack.ViaForgeVLInjector; +import de.florianmichael.viaforge.common.protocolhack.ViaForgeVLLegacyPipeline; +import de.florianmichael.viaforge.common.protocolhack.ViaForgeVLLoader; +import io.netty.channel.Channel; +import io.netty.channel.socket.SocketChannel; +import net.raphimc.vialoader.ViaLoader; +import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; +import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; +import net.raphimc.vialoader.netty.CompressionReorderEvent; +import net.raphimc.vialoader.util.VersionEnum; + +public class ViaForgeCommon { + private static ViaForgeCommon manager; + + private final PlatformFields platform; + private VersionEnum targetVersion; + + public ViaForgeCommon(PlatformFields platform) { + this.platform = platform; + } + + public static void init(final PlatformFields platform) { + if (manager != null) { + return; // Already initialized, ignore it then :tm: + } + final VersionEnum version = VersionEnum.fromProtocolId(platform.getGameVersion()); + if (version == VersionEnum.UNKNOWN) { + throw new IllegalArgumentException("Unknown version " + platform.getGameVersion()); + } + + manager = new ViaForgeCommon(platform); + manager.setTargetVersion(version); + + ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); + } + + public void inject(final Channel channel) { + if (channel instanceof SocketChannel && targetVersion != getNativeVersion()) { + final UserConnection user = new UserConnectionImpl(channel, true); + new ProtocolPipelineImpl(user); + + channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, targetVersion)); + } + } + + public void reorderCompression(final Channel channel) { + channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + } + + public VersionEnum getNativeVersion() { + return VersionEnum.fromProtocolId(platform.getGameVersion()); + } + + public VersionEnum getTargetVersion() { + return targetVersion; + } + + public void setTargetVersion(VersionEnum targetVersion) { + this.targetVersion = targetVersion; + } + + public PlatformFields getPlatform() { + return platform; + } + + public static ViaForgeCommon getManager() { + return manager; + } +} diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLInjector.java similarity index 95% rename from viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java rename to src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLInjector.java index 5a30719..fbb2ec4 100644 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ b/src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLInjector.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package de.florianmichael.viaforge.protocolhack; +package de.florianmichael.viaforge.common.protocolhack; import net.raphimc.vialoader.impl.viaversion.VLInjector; import net.raphimc.vialoader.netty.VLLegacyPipeline; diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLLegacyPipeline.java similarity index 96% rename from viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java rename to src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLLegacyPipeline.java index 37da249..50776ae 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ b/src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLLegacyPipeline.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package de.florianmichael.viaforge.protocolhack; +package de.florianmichael.viaforge.common.protocolhack; import com.viaversion.viaversion.api.connection.UserConnection; import net.raphimc.vialoader.netty.VLLegacyPipeline; diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLLoader.java similarity index 82% rename from viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java rename to src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLLoader.java index 2158ad3..908271e 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ b/src/main/java/de/florianmichael/viaforge/common/protocolhack/ViaForgeVLLoader.java @@ -15,14 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package de.florianmichael.viaforge.protocolhack; +package de.florianmichael.viaforge.common.protocolhack; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.version.VersionProvider; import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.raphimc.vialoader.impl.viaversion.VLLoader; public class ViaForgeVLLoader extends VLLoader { @@ -34,8 +33,8 @@ public class ViaForgeVLLoader extends VLLoader { Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { @Override public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); + if (connection.isClientSide() && !ViaForgeCommon.getManager().getPlatform().isSingleplayer().get()) { + return ViaForgeCommon.getManager().getTargetVersion().getVersion(); } return super.getClosestServerProtocol(connection); diff --git a/viaforge-mc114/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml similarity index 100% rename from viaforge-mc114/src/main/resources/META-INF/mods.toml rename to src/main/resources/META-INF/mods.toml diff --git a/viaforge-mc112/src/main/resources/mcmod.info b/src/main/resources/mcmod.info similarity index 100% rename from viaforge-mc112/src/main/resources/mcmod.info rename to src/main/resources/mcmod.info diff --git a/viaforge-mc112/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta similarity index 100% rename from viaforge-mc112/src/main/resources/pack.mcmeta rename to src/main/resources/pack.mcmeta diff --git a/viaforge-mc112/build.gradle b/viaforge-mc112/build.gradle index cef1597..7f84c48 100644 --- a/viaforge-mc112/build.gradle +++ b/viaforge-mc112/build.gradle @@ -1,6 +1,5 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.forge-conventions" } minecraft { @@ -8,5 +7,5 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:1.12.2-14.23.5.2860" + minecraft "net.minecraftforge:forge:1.12.2-14.23.5.2859" } diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index b099486..0000000 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_12_2; - - public static VersionEnum targetVersion = VersionEnum.r1_12_2; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge112.java similarity index 60% rename from viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java rename to viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge112.java index 5a30719..b97fa4e 100644 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/ViaForge112.java @@ -15,20 +15,24 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package de.florianmichael.viaforge.protocolhack; +package de.florianmichael.viaforge; -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.client.Minecraft; +import net.minecraft.realms.RealmsSharedConstants; -public class ViaForgeVLInjector extends VLInjector { +import java.util.function.Supplier; + +public class ViaForge112 implements PlatformFields { + public final static ViaForge112 PLATFORM = new ViaForge112(); @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; + public int getGameVersion() { + return RealmsSharedConstants.NETWORK_PROTOCOL_VERSION; } @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; + public Supplier isSingleplayer() { + return () -> Minecraft.getMinecraft().isSingleplayer(); } } diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 67190ff..ae0e418 100644 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -18,7 +18,7 @@ package de.florianmichael.viaforge.gui; import com.mojang.realmsclient.gui.ChatFormatting; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; @@ -85,7 +85,7 @@ public class GuiProtocolSelector extends GuiScreen { @Override protected void elementClicked(int i, boolean b, int i1, int i2) { - ViaForge.targetVersion = VersionEnum.SORTED_VERSIONS.get(i); + ViaForgeCommon.getManager().setTargetVersion(VersionEnum.SORTED_VERSIONS.get(i)); } @Override @@ -100,9 +100,10 @@ public class GuiProtocolSelector extends GuiScreen { @Override protected void drawSlot(int i, int i1, int i2, int i3, int i4, int i5, float v) { + final VersionEnum targetVersion = ViaForgeCommon.getManager().getTargetVersion(); final VersionEnum version = VersionEnum.SORTED_VERSIONS.get(i); - drawCenteredString(mc.fontRenderer,(ViaForge.targetVersion.getVersion() == version.getVersion() ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + version.getName(), width / 2, i2, -1); + drawCenteredString(mc.fontRenderer,(targetVersion == version ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + version.getName(), width / 2, i2, -1); } } } diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinGuiMainMenu.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinGuiMainMenu.java index 4d6022c..67fba1b 100644 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinGuiMainMenu.java +++ b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinGuiMainMenu.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.mixin.impl; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge112; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.*; import org.spongepowered.asm.mixin.Mixin; @@ -32,7 +33,7 @@ public class MixinGuiMainMenu extends GuiScreen { public void hookViaForgeButton(CallbackInfo ci) { buttonList.add(new GuiButton(1337, 5, 6, 98, 20, "ViaForge")); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge112.PLATFORM); } @Inject(method = "actionPerformed", at = @At("RETURN")) diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager.java index 08f5278..687b54a 100644 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager.java +++ b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager.java @@ -17,9 +17,9 @@ */ package de.florianmichael.viaforge.mixin.impl; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.NetworkManager; -import net.raphimc.vialoader.netty.CompressionReorderEvent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -33,6 +33,6 @@ public class MixinNetworkManager { @Inject(method = "setCompressionThreshold", at = @At("RETURN")) public void reorderPipeline(int p_setCompressionTreshold_1_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager_5.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager_5.java index 0e8b573..17eddbf 100644 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager_5.java +++ b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/mixin/impl/MixinNetworkManager_5.java @@ -17,13 +17,8 @@ */ package de.florianmichael.viaforge.mixin.impl; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -34,11 +29,6 @@ public class MixinNetworkManager_5 { @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } + ViaForgeCommon.getManager().inject(channel); } } diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index fff5f73..0000000 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getMinecraft().isSingleplayer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc112/src/main/resources/mixins.viaforge-mc112.json b/viaforge-mc112/src/main/resources/mixins.viaforge-mc112.json index 077170a..c42e383 100644 --- a/viaforge-mc112/src/main/resources/mixins.viaforge-mc112.json +++ b/viaforge-mc112/src/main/resources/mixins.viaforge-mc112.json @@ -3,7 +3,7 @@ "minVersion": "0.7.5", "compatibilityLevel": "JAVA_8", "package": "de.florianmichael.viaforge.mixin.impl", - "refmap": "mixins.viaforge.refmap.json", + "refmap": "mixins.viaforge-mc112.refmap.json", "mixins": [ "MixinNetworkManager", "MixinNetworkManager_5", diff --git a/viaforge-mc114/build.gradle b/viaforge-mc114/build.gradle index 8c9808a..be06926 100644 --- a/viaforge-mc114/build.gradle +++ b/viaforge-mc114/build.gradle @@ -1,6 +1,5 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.forge-conventions" } minecraft { diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index d3ba472..0000000 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_14_4; - - public static VersionEnum targetVersion = VersionEnum.r1_14_4; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge114.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge114.java new file mode 100644 index 0000000..f318b74 --- /dev/null +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/ViaForge114.java @@ -0,0 +1,40 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge; + +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.client.Minecraft; +import net.minecraft.util.SharedConstants; +import net.minecraftforge.fml.common.Mod; + +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge114 implements PlatformFields { + public final static ViaForge114 PLATFORM = new ViaForge114(); + + @Override + public int getGameVersion() { + return SharedConstants.getCurrentVersion().getProtocolVersion(); + } + + @Override + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().hasSingleplayerServer(); + } +} diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 4b6611b..87b4d10 100644 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.gui; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.button.Button; @@ -87,14 +87,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { drawCenteredString(Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? TextFormatting.GREEN.toString() : TextFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? TextFormatting.GREEN.toString() : TextFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } } } diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java index ece29e6..9e2801a 100644 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java @@ -17,13 +17,13 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge114; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.MainMenuScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -40,6 +40,6 @@ public class MixinMainMenuScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20,"ViaForge", b -> GuiProtocolSelector.open(minecraft))); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge114.PLATFORM); } } diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java index b059506..b1b0c9f 100644 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge114; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.MultiplayerScreen; import net.minecraft.client.gui.screen.Screen; @@ -38,7 +38,5 @@ public class MixinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20,"ViaForge", b -> GuiProtocolSelector.open(minecraft))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java index ca36f19..a9dd995 100644 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.NetworkManager; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinNetworkManager { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_setCompressionTreshold_1_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java new file mode 100644 index 0000000..86826ed --- /dev/null +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java @@ -0,0 +1,34 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge.mixin; + +import de.florianmichael.viaforge.common.ViaForgeCommon; +import io.netty.channel.Channel; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(targets = "net.minecraft.network.NetworkManager$1", remap = false) +public class MixinNetworkManager_1 { + + @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) + private void onInitChannel(Channel channel, CallbackInfo ci) { + ViaForgeCommon.getManager().inject(channel); + } +} diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java deleted file mode 100644 index 7dde3b2..0000000 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.mixin; - -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; -import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(targets = "net.minecraft.network.NetworkManager$5", remap = false) -public class MixinNetworkManager_5 { - - @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) - private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } - } -} diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java index 2609743..2a4fe88 100644 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java +++ b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java @@ -17,7 +17,6 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ServerListScreen; @@ -38,7 +37,5 @@ public class MixinServerListScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20,"ViaForge", b -> GuiProtocolSelector.open(minecraft))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index 2158ad3..0000000 --- a/viaforge-mc114/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc114/src/main/resources/mixins.viaforge-mc114.json b/viaforge-mc114/src/main/resources/mixins.viaforge-mc114.json index e160baf..e24d7dd 100644 --- a/viaforge-mc114/src/main/resources/mixins.viaforge-mc114.json +++ b/viaforge-mc114/src/main/resources/mixins.viaforge-mc114.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinNetworkManager", - "MixinNetworkManager_5", + "MixinNetworkManager_1", "MixinMainMenuScreen", "MixinMultiplayerScreen", "MixinServerListScreen" diff --git a/viaforge-mc114/src/main/resources/pack.mcmeta b/viaforge-mc114/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc114/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -} diff --git a/viaforge-mc115/build.gradle b/viaforge-mc115/build.gradle index 8fef129..e8a9dd3 100644 --- a/viaforge-mc115/build.gradle +++ b/viaforge-mc115/build.gradle @@ -1,6 +1,5 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.forge-conventions" } minecraft { diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index c8b3107..0000000 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_15_2; - - public static VersionEnum targetVersion = VersionEnum.r1_15_2; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge115.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge115.java new file mode 100644 index 0000000..29757b0 --- /dev/null +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/ViaForge115.java @@ -0,0 +1,41 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge; + +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.client.Minecraft; +import net.minecraft.util.SharedConstants; +import net.minecraftforge.fml.common.Mod; + +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge115 implements PlatformFields { + + public final static ViaForge115 PLATFORM = new ViaForge115(); + + @Override + public int getGameVersion() { + return SharedConstants.getCurrentVersion().getProtocolVersion(); + } + + @Override + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().hasSingleplayerServer(); + } +} diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 4b6611b..7bf7d2c 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.gui; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge115; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.button.Button; @@ -87,14 +88,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { drawCenteredString(Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? TextFormatting.GREEN.toString() : TextFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? TextFormatting.GREEN.toString() : TextFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } } } diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java index ece29e6..163864b 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java @@ -17,13 +17,13 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge115; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.MainMenuScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -40,6 +40,6 @@ public class MixinMainMenuScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20,"ViaForge", b -> GuiProtocolSelector.open(minecraft))); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge115.PLATFORM); } } diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java index b059506..87fe1c6 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge115; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.MultiplayerScreen; import net.minecraft.client.gui.screen.Screen; @@ -38,7 +38,5 @@ public class MixinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20,"ViaForge", b -> GuiProtocolSelector.open(minecraft))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java index ca36f19..a9dd995 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.NetworkManager; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinNetworkManager { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_setCompressionTreshold_1_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java new file mode 100644 index 0000000..86826ed --- /dev/null +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java @@ -0,0 +1,34 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge.mixin; + +import de.florianmichael.viaforge.common.ViaForgeCommon; +import io.netty.channel.Channel; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(targets = "net.minecraft.network.NetworkManager$1", remap = false) +public class MixinNetworkManager_1 { + + @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) + private void onInitChannel(Channel channel, CallbackInfo ci) { + ViaForgeCommon.getManager().inject(channel); + } +} diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java deleted file mode 100644 index 7dde3b2..0000000 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.mixin; - -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; -import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(targets = "net.minecraft.network.NetworkManager$5", remap = false) -public class MixinNetworkManager_5 { - - @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) - private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } - } -} diff --git a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java index 2609743..2a4fe88 100644 --- a/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java +++ b/viaforge-mc115/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java @@ -17,7 +17,6 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ServerListScreen; @@ -38,7 +37,5 @@ public class MixinServerListScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20,"ViaForge", b -> GuiProtocolSelector.open(minecraft))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc115/src/main/resources/META-INF/mods.toml b/viaforge-mc115/src/main/resources/META-INF/mods.toml deleted file mode 100644 index b5beba3..0000000 --- a/viaforge-mc115/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader="javafml" -loaderVersion="[1,)" - -license="GPL-3.0 license" -issueTrackerURL="https://github.com/ViaVersion/ViaForge/issues" -showAsResourcePack=false - -[[mods]] -modId="viaforge" -version="${version}" -displayName="ViaForge" -displayURL="https://github.com/FlorianMichael" -credits="FlorianMichael/EnZaXD and all ViaVersion/ViaForge contributors" -authors="FlorianMichael/EnZaXD" -description=''' - Client-side Implementation of ViaVersion, ViaBackwards and ViaRewind for Legacy Minecraft Forge - ''' \ No newline at end of file diff --git a/viaforge-mc115/src/main/resources/mixins.viaforge-mc115.json b/viaforge-mc115/src/main/resources/mixins.viaforge-mc115.json index 9a47e38..f4fe648 100644 --- a/viaforge-mc115/src/main/resources/mixins.viaforge-mc115.json +++ b/viaforge-mc115/src/main/resources/mixins.viaforge-mc115.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinNetworkManager", - "MixinNetworkManager_5", + "MixinNetworkManager_1", "MixinMainMenuScreen", "MixinMultiplayerScreen", "MixinServerListScreen" diff --git a/viaforge-mc115/src/main/resources/pack.mcmeta b/viaforge-mc115/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc115/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -} diff --git a/viaforge-mc116/build.gradle b/viaforge-mc116/build.gradle index 3f943c1..454feb3 100644 --- a/viaforge-mc116/build.gradle +++ b/viaforge-mc116/build.gradle @@ -1,6 +1,6 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.forge-conventions" + id "viaforge.conflicting-conventions" } minecraft { diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index d2e2dae..0000000 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_16_4tor1_16_5; - - public static VersionEnum targetVersion = VersionEnum.r1_16_4tor1_16_5; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge116.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge116.java new file mode 100644 index 0000000..cccee29 --- /dev/null +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/ViaForge116.java @@ -0,0 +1,41 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge; + +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.client.Minecraft; +import net.minecraft.util.SharedConstants; +import net.minecraftforge.fml.common.Mod; + +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge116 implements PlatformFields { + + public final static ViaForge116 PLATFORM = new ViaForge116(); + + @Override + public int getGameVersion() { + return SharedConstants.getProtocolVersion(); + } + + @Override + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().hasSingleplayerServer(); + } +} diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 2166830..2051f87 100644 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -18,7 +18,8 @@ package de.florianmichael.viaforge.gui; import com.mojang.blaze3d.matrix.MatrixStack; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge116; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.button.Button; @@ -88,14 +89,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(MatrixStack p_230432_1_, int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { drawCenteredString(p_230432_1_, Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? TextFormatting.GREEN.toString() : TextFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? TextFormatting.GREEN.toString() : TextFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } } } diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java index 47d795a..aa2a1d4 100644 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMainMenuScreen.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge116; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.MainMenuScreen; import net.minecraft.client.gui.screen.Screen; @@ -40,6 +41,6 @@ public class MixinMainMenuScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20, new StringTextComponent("ViaForge"), b -> GuiProtocolSelector.open(minecraft))); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge116.PLATFORM); } } diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java index d10e2df..66135d2 100644 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinMultiplayerScreen.java @@ -17,7 +17,6 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.MultiplayerScreen; import net.minecraft.client.gui.screen.Screen; @@ -38,7 +37,5 @@ public class MixinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20, ITextComponent.nullToEmpty("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this)))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java index ca36f19..a9dd995 100644 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.NetworkManager; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinNetworkManager { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_setCompressionTreshold_1_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java new file mode 100644 index 0000000..86826ed --- /dev/null +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java @@ -0,0 +1,34 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge.mixin; + +import de.florianmichael.viaforge.common.ViaForgeCommon; +import io.netty.channel.Channel; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(targets = "net.minecraft.network.NetworkManager$1", remap = false) +public class MixinNetworkManager_1 { + + @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) + private void onInitChannel(Channel channel, CallbackInfo ci) { + ViaForgeCommon.getManager().inject(channel); + } +} diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java deleted file mode 100644 index 7dde3b2..0000000 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_5.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.mixin; - -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; -import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(targets = "net.minecraft.network.NetworkManager$5", remap = false) -public class MixinNetworkManager_5 { - - @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) - private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } - } -} diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java index f344dc9..b5f429f 100644 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java +++ b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/mixin/MixinServerListScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge116; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ServerListScreen; @@ -38,7 +38,5 @@ public class MixinServerListScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addButton(new Button(5, 6, 98, 20, ITextComponent.nullToEmpty("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this)))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index 2158ad3..0000000 --- a/viaforge-mc116/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc116/src/main/resources/META-INF/mods.toml b/viaforge-mc116/src/main/resources/META-INF/mods.toml deleted file mode 100644 index b5beba3..0000000 --- a/viaforge-mc116/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader="javafml" -loaderVersion="[1,)" - -license="GPL-3.0 license" -issueTrackerURL="https://github.com/ViaVersion/ViaForge/issues" -showAsResourcePack=false - -[[mods]] -modId="viaforge" -version="${version}" -displayName="ViaForge" -displayURL="https://github.com/FlorianMichael" -credits="FlorianMichael/EnZaXD and all ViaVersion/ViaForge contributors" -authors="FlorianMichael/EnZaXD" -description=''' - Client-side Implementation of ViaVersion, ViaBackwards and ViaRewind for Legacy Minecraft Forge - ''' \ No newline at end of file diff --git a/viaforge-mc116/src/main/resources/mixins.viaforge-mc116.json b/viaforge-mc116/src/main/resources/mixins.viaforge-mc116.json index 5c58f31..ebd2aa4 100644 --- a/viaforge-mc116/src/main/resources/mixins.viaforge-mc116.json +++ b/viaforge-mc116/src/main/resources/mixins.viaforge-mc116.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinNetworkManager", - "MixinNetworkManager_5", + "MixinNetworkManager_1", "MixinMainMenuScreen", "MixinMultiplayerScreen", "MixinServerListScreen" diff --git a/viaforge-mc116/src/main/resources/pack.mcmeta b/viaforge-mc116/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc116/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -} diff --git a/viaforge-mc117/build.gradle b/viaforge-mc117/build.gradle index 588e154..c829268 100644 --- a/viaforge-mc117/build.gradle +++ b/viaforge-mc117/build.gradle @@ -1,10 +1,7 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.modern-conventions" } -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - minecraft { mappings channel: "official", version: "1.17.1" } diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index 2969a2e..0000000 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_17_1; - - public static VersionEnum targetVersion = VersionEnum.r1_17_1; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge117.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge117.java new file mode 100644 index 0000000..ef04d5e --- /dev/null +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/ViaForge117.java @@ -0,0 +1,41 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge; + +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.SharedConstants; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.common.Mod; + +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge117 implements PlatformFields { + + public final static ViaForge117 PLATFORM = new ViaForge117(); + + @Override + public int getGameVersion() { + return SharedConstants.getProtocolVersion(); + } + + @Override + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().hasSingleplayerServer(); + } +} diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 1aeb6d5..74316a3 100644 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -18,7 +18,8 @@ package de.florianmichael.viaforge.gui; import com.mojang.blaze3d.vertex.PoseStack; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge117; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; @@ -88,14 +89,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(PoseStack p_230432_1_, int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { drawCenteredString(p_230432_1_, Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } @Override diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java index 0b96b18..ca933b2 100644 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.Connection; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinConnection { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_129485_, boolean p_182682_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java similarity index 64% rename from viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java rename to viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java index 73d505f..9988dd8 100644 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java @@ -17,28 +17,18 @@ */ package de.florianmichael.viaforge.mixin; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.network.Connection$1", remap = false) -public class MixinNetworkManager_1 { +public class MixinConnection_1 { @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } + ViaForgeCommon.getManager().inject(channel); } } diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java index 68758ec..a66512d 100644 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge117; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.DirectJoinServerScreen; @@ -39,7 +39,5 @@ public class MixinDirectJoinServerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button(5, 6, 98, 20, new TextComponent("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this)))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java index 55a9158..3840d83 100644 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge117; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -39,7 +39,5 @@ public class MixinJoinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button(5, 6, 98, 20, new TextComponent("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this)))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java index 7c7ed7e..a99a893 100644 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java +++ b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge117; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -40,6 +41,6 @@ public class MixinTitleScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button(5, 6, 98, 20, new TextComponent("ViaForge"), b -> GuiProtocolSelector.open(minecraft))); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge117.PLATFORM); } } diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java deleted file mode 100644 index 5a30719..0000000 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; - -public class ViaForgeVLInjector extends VLInjector { - - @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; - } - - @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; - } -} diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index 2158ad3..0000000 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc117/src/main/resources/META-INF/mods.toml b/viaforge-mc117/src/main/resources/META-INF/mods.toml deleted file mode 100644 index b5beba3..0000000 --- a/viaforge-mc117/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader="javafml" -loaderVersion="[1,)" - -license="GPL-3.0 license" -issueTrackerURL="https://github.com/ViaVersion/ViaForge/issues" -showAsResourcePack=false - -[[mods]] -modId="viaforge" -version="${version}" -displayName="ViaForge" -displayURL="https://github.com/FlorianMichael" -credits="FlorianMichael/EnZaXD and all ViaVersion/ViaForge contributors" -authors="FlorianMichael/EnZaXD" -description=''' - Client-side Implementation of ViaVersion, ViaBackwards and ViaRewind for Legacy Minecraft Forge - ''' \ No newline at end of file diff --git a/viaforge-mc117/src/main/resources/mixins.viaforge-mc117.json b/viaforge-mc117/src/main/resources/mixins.viaforge-mc117.json index 6d251b8..3434ecd 100644 --- a/viaforge-mc117/src/main/resources/mixins.viaforge-mc117.json +++ b/viaforge-mc117/src/main/resources/mixins.viaforge-mc117.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinConnection", - "MixinNetworkManager_1", + "MixinConnection_1", "MixinTitleScreen", "MixinJoinMultiplayerScreen", "MixinDirectJoinServerScreen" diff --git a/viaforge-mc117/src/main/resources/pack.mcmeta b/viaforge-mc117/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc117/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -} diff --git a/viaforge-mc118/build.gradle b/viaforge-mc118/build.gradle index 601761f..b4265cf 100644 --- a/viaforge-mc118/build.gradle +++ b/viaforge-mc118/build.gradle @@ -1,10 +1,7 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.modern-conventions" } -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - minecraft { mappings channel: "official", version: "1.18.2" } diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index 2b27f54..0000000 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_18_2; - - public static VersionEnum targetVersion = VersionEnum.r1_18_2; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge118.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge118.java new file mode 100644 index 0000000..b828b61 --- /dev/null +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/ViaForge118.java @@ -0,0 +1,41 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge; + +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.SharedConstants; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.common.Mod; + +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge118 implements PlatformFields { + + public final static ViaForge118 PLATFORM = new ViaForge118(); + + @Override + public int getGameVersion() { + return SharedConstants.getProtocolVersion(); + } + + @Override + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().hasSingleplayerServer(); + } +} diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 1aeb6d5..f2b6eca 100644 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -18,7 +18,8 @@ package de.florianmichael.viaforge.gui; import com.mojang.blaze3d.vertex.PoseStack; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge118; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; @@ -88,14 +89,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(PoseStack p_230432_1_, int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { drawCenteredString(p_230432_1_, Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } @Override diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java index 0b96b18..ca933b2 100644 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.Connection; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinConnection { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_129485_, boolean p_182682_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java similarity index 64% rename from viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java rename to viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java index 73d505f..9988dd8 100644 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java @@ -17,28 +17,18 @@ */ package de.florianmichael.viaforge.mixin; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.network.Connection$1", remap = false) -public class MixinNetworkManager_1 { +public class MixinConnection_1 { @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } + ViaForgeCommon.getManager().inject(channel); } } diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java index 68758ec..637f290 100644 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge118; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.DirectJoinServerScreen; @@ -39,7 +39,5 @@ public class MixinDirectJoinServerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button(5, 6, 98, 20, new TextComponent("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this)))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java index 55a9158..85363da 100644 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge118; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -39,7 +39,5 @@ public class MixinJoinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button(5, 6, 98, 20, new TextComponent("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this)))); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java index 7c7ed7e..686720f 100644 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java +++ b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge118; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -40,6 +41,6 @@ public class MixinTitleScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button(5, 6, 98, 20, new TextComponent("ViaForge"), b -> GuiProtocolSelector.open(minecraft))); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge118.PLATFORM); } } diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java deleted file mode 100644 index 5a30719..0000000 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; - -public class ViaForgeVLInjector extends VLInjector { - - @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; - } - - @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; - } -} diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index 2158ad3..0000000 --- a/viaforge-mc118/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc118/src/main/resources/META-INF/mods.toml b/viaforge-mc118/src/main/resources/META-INF/mods.toml deleted file mode 100644 index b5beba3..0000000 --- a/viaforge-mc118/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader="javafml" -loaderVersion="[1,)" - -license="GPL-3.0 license" -issueTrackerURL="https://github.com/ViaVersion/ViaForge/issues" -showAsResourcePack=false - -[[mods]] -modId="viaforge" -version="${version}" -displayName="ViaForge" -displayURL="https://github.com/FlorianMichael" -credits="FlorianMichael/EnZaXD and all ViaVersion/ViaForge contributors" -authors="FlorianMichael/EnZaXD" -description=''' - Client-side Implementation of ViaVersion, ViaBackwards and ViaRewind for Legacy Minecraft Forge - ''' \ No newline at end of file diff --git a/viaforge-mc118/src/main/resources/mixins.viaforge-mc118.json b/viaforge-mc118/src/main/resources/mixins.viaforge-mc118.json index c63f167..784a78c 100644 --- a/viaforge-mc118/src/main/resources/mixins.viaforge-mc118.json +++ b/viaforge-mc118/src/main/resources/mixins.viaforge-mc118.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinConnection", - "MixinNetworkManager_1", + "MixinConnection_1", "MixinTitleScreen", "MixinJoinMultiplayerScreen", "MixinDirectJoinServerScreen" diff --git a/viaforge-mc118/src/main/resources/pack.mcmeta b/viaforge-mc118/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc118/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -} diff --git a/viaforge-mc119/build.gradle b/viaforge-mc119/build.gradle index b636be6..8728924 100644 --- a/viaforge-mc119/build.gradle +++ b/viaforge-mc119/build.gradle @@ -1,10 +1,7 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.modern-conventions" } -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - minecraft { mappings channel: "official", version: "1.19.4" } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index a69d0e2..0000000 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_19_4; - - public static VersionEnum targetVersion = VersionEnum.r1_19_4; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge119.java similarity index 59% rename from viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java rename to viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge119.java index 5a30719..95dd3bf 100644 --- a/viaforge-mc112/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/ViaForge119.java @@ -15,20 +15,27 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package de.florianmichael.viaforge.protocolhack; +package de.florianmichael.viaforge; -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.SharedConstants; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.common.Mod; -public class ViaForgeVLInjector extends VLInjector { +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge119 implements PlatformFields { + + public final static ViaForge119 PLATFORM = new ViaForge119(); @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; + public int getGameVersion() { + return SharedConstants.getProtocolVersion(); } @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().isSingleplayer(); } } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index c68ba92..c83377f 100644 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -18,7 +18,8 @@ package de.florianmichael.viaforge.gui; import com.mojang.blaze3d.vertex.PoseStack; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge119; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; @@ -87,14 +88,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(PoseStack p_230432_1_, int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { drawCenteredString(p_230432_1_, Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } @Override diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java index 0b96b18..ca933b2 100644 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.Connection; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinConnection { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_129485_, boolean p_182682_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java similarity index 64% rename from viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java rename to viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java index 73d505f..9988dd8 100644 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java @@ -17,28 +17,18 @@ */ package de.florianmichael.viaforge.mixin; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.network.Connection$1", remap = false) -public class MixinNetworkManager_1 { +public class MixinConnection_1 { @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } + ViaForgeCommon.getManager().inject(channel); } } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java index 12d4c01..b6d0e1d 100644 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge119; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.DirectJoinServerScreen; @@ -38,7 +38,5 @@ public class MixinDirectJoinServerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button.Builder(Component.literal("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this))).bounds(5, 6, 98, 20).build()); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java index 8b0a6dc..3a1c7a3 100644 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge119; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -38,7 +38,5 @@ public class MixinJoinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button.Builder(Component.literal("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this))).bounds(5, 6, 98, 20).build()); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java index 9fc048d..a929c3c 100644 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java +++ b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge119; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -39,6 +40,6 @@ public class MixinTitleScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button.Builder(Component.literal("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this))).bounds(5, 6, 98, 20).build()); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge119.PLATFORM); } } diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java deleted file mode 100644 index 5a30719..0000000 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; - -public class ViaForgeVLInjector extends VLInjector { - - @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; - } - - @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; - } -} diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index 2158ad3..0000000 --- a/viaforge-mc119/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc119/src/main/resources/META-INF/mods.toml b/viaforge-mc119/src/main/resources/META-INF/mods.toml deleted file mode 100644 index b5beba3..0000000 --- a/viaforge-mc119/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader="javafml" -loaderVersion="[1,)" - -license="GPL-3.0 license" -issueTrackerURL="https://github.com/ViaVersion/ViaForge/issues" -showAsResourcePack=false - -[[mods]] -modId="viaforge" -version="${version}" -displayName="ViaForge" -displayURL="https://github.com/FlorianMichael" -credits="FlorianMichael/EnZaXD and all ViaVersion/ViaForge contributors" -authors="FlorianMichael/EnZaXD" -description=''' - Client-side Implementation of ViaVersion, ViaBackwards and ViaRewind for Legacy Minecraft Forge - ''' \ No newline at end of file diff --git a/viaforge-mc119/src/main/resources/mixins.viaforge-mc119.json b/viaforge-mc119/src/main/resources/mixins.viaforge-mc119.json index 0f54953..2e4b244 100644 --- a/viaforge-mc119/src/main/resources/mixins.viaforge-mc119.json +++ b/viaforge-mc119/src/main/resources/mixins.viaforge-mc119.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinConnection", - "MixinNetworkManager_1", + "MixinConnection_1", "MixinTitleScreen", "MixinJoinMultiplayerScreen", "MixinDirectJoinServerScreen" diff --git a/viaforge-mc119/src/main/resources/pack.mcmeta b/viaforge-mc119/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc119/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -} diff --git a/viaforge-mc120/build.gradle b/viaforge-mc120/build.gradle index fab1902..aee776b 100644 --- a/viaforge-mc120/build.gradle +++ b/viaforge-mc120/build.gradle @@ -1,10 +1,7 @@ plugins { - id "florianmichael.viaforge.base-conventions" - id "florianmichael.viaforge.forge-conventions" + id "viaforge.modern-conventions" } -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - minecraft { mappings channel: "official", version: "1.20.2" } diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge.java deleted file mode 100644 index 103817b..0000000 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge; - -import de.florianmichael.viaforge.protocolhack.ViaForgeVLInjector; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLoader; -import net.minecraftforge.fml.common.Mod; -import net.raphimc.vialoader.ViaLoader; -import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl; -import net.raphimc.vialoader.impl.platform.ViaRewindPlatformImpl; -import net.raphimc.vialoader.util.VersionEnum; - -@Mod("viaforge") -public class ViaForge { - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_20_2; - - public static VersionEnum targetVersion = VersionEnum.r1_20_2; - - private static boolean loaded; - - public static void initViaVersion() { - if (loaded) return; - - ViaLoader.init(null, new ViaForgeVLLoader(), new ViaForgeVLInjector(), null, ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new); - loaded = true; - } -} diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge120.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge120.java new file mode 100644 index 0000000..8caa4cf --- /dev/null +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/ViaForge120.java @@ -0,0 +1,41 @@ +/* + * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge + * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.florianmichael.viaforge; + +import de.florianmichael.viaforge.common.PlatformFields; +import net.minecraft.SharedConstants; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.common.Mod; + +import java.util.function.Supplier; + +@Mod("viaforge") +public class ViaForge120 implements PlatformFields { + + public final static ViaForge120 PLATFORM = new ViaForge120(); + + @Override + public int getGameVersion() { + return SharedConstants.getProtocolVersion(); + } + + @Override + public Supplier isSingleplayer() { + return () -> Minecraft.getInstance().isSingleplayer(); + } +} diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java index 2932c8d..87be5b4 100644 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/gui/GuiProtocolSelector.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.gui; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.common.ViaForgeCommon; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -86,14 +86,14 @@ public class GuiProtocolSelector extends Screen { @Override public boolean mouseClicked(double p_231044_1_, double p_231044_3_, int p_231044_5_) { - ViaForge.targetVersion = versionEnum; + ViaForgeCommon.getManager().setTargetVersion(versionEnum); return super.mouseClicked(p_231044_1_, p_231044_3_, p_231044_5_); } @Override public void render(GuiGraphics p_230432_1_, int p_230432_2_, int p_230432_3_, int p_230432_4_, int p_230432_5_, int p_230432_6_, int p_230432_7_, int p_230432_8_, boolean p_230432_9_, float p_230432_10_) { p_230432_1_.drawCenteredString(Minecraft.getInstance().font, - (ViaForge.targetVersion.getVersion() == versionEnum.getVersion() ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); + (ViaForgeCommon.getManager().getTargetVersion() == versionEnum ? ChatFormatting.GREEN.toString() : ChatFormatting.DARK_RED.toString()) + versionEnum.getName(), width / 2, p_230432_3_, -1); } @Override diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java index 0b96b18..ca933b2 100644 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viaforge.mixin; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; import net.minecraft.network.Connection; import net.raphimc.vialoader.netty.CompressionReorderEvent; @@ -33,6 +34,6 @@ public class MixinConnection { @Inject(method = "setupCompression", at = @At("RETURN")) public void reorderPipeline(int p_129485_, boolean p_182682_, CallbackInfo ci) { - channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE); + ViaForgeCommon.getManager().reorderCompression(channel); } } diff --git a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java similarity index 64% rename from viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java rename to viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java index 73d505f..9988dd8 100644 --- a/viaforge-mc117/src/main/java/de/florianmichael/viaforge/mixin/MixinNetworkManager_1.java +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinConnection_1.java @@ -17,28 +17,18 @@ */ package de.florianmichael.viaforge.mixin; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.connection.UserConnectionImpl; -import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; -import de.florianmichael.viaforge.ViaForge; -import de.florianmichael.viaforge.protocolhack.ViaForgeVLLegacyPipeline; +import de.florianmichael.viaforge.common.ViaForgeCommon; import io.netty.channel.Channel; -import io.netty.channel.socket.SocketChannel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.network.Connection$1", remap = false) -public class MixinNetworkManager_1 { +public class MixinConnection_1 { @Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false) private void onInitChannel(Channel channel, CallbackInfo ci) { - if (channel instanceof SocketChannel && ViaForge.targetVersion != ViaForge.NATIVE_VERSION) { - final UserConnection user = new UserConnectionImpl(channel, true); - new ProtocolPipelineImpl(user); - - channel.pipeline().addLast(new ViaForgeVLLegacyPipeline(user, ViaForge.targetVersion)); - } + ViaForgeCommon.getManager().inject(channel); } } diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java index 12d4c01..5ef680a 100644 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinDirectJoinServerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge120; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.DirectJoinServerScreen; @@ -38,7 +38,5 @@ public class MixinDirectJoinServerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button.Builder(Component.literal("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this))).bounds(5, 6, 98, 20).build()); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java index 8b0a6dc..3ba722c 100644 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinJoinMultiplayerScreen.java @@ -17,7 +17,7 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge120; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -38,7 +38,5 @@ public class MixinJoinMultiplayerScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button.Builder(Component.literal("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this))).bounds(5, 6, 98, 20).build()); - - ViaForge.initViaVersion(); } } diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java index 9fc048d..f86d8e6 100644 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java +++ b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/mixin/MixinTitleScreen.java @@ -17,7 +17,8 @@ */ package de.florianmichael.viaforge.mixin; -import de.florianmichael.viaforge.ViaForge; +import de.florianmichael.viaforge.ViaForge120; +import de.florianmichael.viaforge.common.ViaForgeCommon; import de.florianmichael.viaforge.gui.GuiProtocolSelector; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; @@ -39,6 +40,6 @@ public class MixinTitleScreen extends Screen { public void hookViaForgeButton(CallbackInfo ci) { addRenderableWidget(new Button.Builder(Component.literal("ViaForge"), b -> minecraft.setScreen(new GuiProtocolSelector(this))).bounds(5, 6, 98, 20).build()); - ViaForge.initViaVersion(); + ViaForgeCommon.init(ViaForge120.PLATFORM); } } diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java deleted file mode 100644 index 5a30719..0000000 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLInjector.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import net.raphimc.vialoader.impl.viaversion.VLInjector; -import net.raphimc.vialoader.netty.VLLegacyPipeline; - -public class ViaForgeVLInjector extends VLInjector { - - @Override - public String getDecoderName() { - return VLLegacyPipeline.VIA_DECODER_NAME; - } - - @Override - public String getEncoderName() { - return VLLegacyPipeline.VIA_ENCODER_NAME; - } -} diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java deleted file mode 100644 index 37da249..0000000 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLegacyPipeline.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.netty.VLLegacyPipeline; -import net.raphimc.vialoader.util.VersionEnum; - -public class ViaForgeVLLegacyPipeline extends VLLegacyPipeline { - - public ViaForgeVLLegacyPipeline(UserConnection user, VersionEnum version) { - super(user, version); - } - - @Override - protected String decompressName() { - return "decompress"; - } - - @Override - protected String compressName() { - return "compress"; - } - - @Override - protected String packetDecoderName() { - return "decoder"; - } - - @Override - protected String packetEncoderName() { - return "encoder"; - } - - @Override - protected String lengthSplitterName() { - return "splitter"; - } - - @Override - protected String lengthPrependerName() { - return "prepender"; - } -} diff --git a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java b/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java deleted file mode 100644 index 2158ad3..0000000 --- a/viaforge-mc120/src/main/java/de/florianmichael/viaforge/protocolhack/ViaForgeVLLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package de.florianmichael.viaforge.protocolhack; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.version.VersionProvider; -import com.viaversion.viaversion.protocols.base.BaseVersionProvider; -import de.florianmichael.viaforge.ViaForge; -import net.minecraft.client.Minecraft; -import net.raphimc.vialoader.impl.viaversion.VLLoader; - -public class ViaForgeVLLoader extends VLLoader { - - @Override - public void load() { - super.load(); - - Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() { - @Override - public int getClosestServerProtocol(UserConnection connection) throws Exception { - if (connection.isClientSide() && !Minecraft.getInstance().hasSingleplayerServer()) { - return ViaForge.targetVersion.getVersion(); - } - - return super.getClosestServerProtocol(connection); - } - }); - } -} diff --git a/viaforge-mc120/src/main/resources/META-INF/mods.toml b/viaforge-mc120/src/main/resources/META-INF/mods.toml deleted file mode 100644 index b5beba3..0000000 --- a/viaforge-mc120/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,17 +0,0 @@ -modLoader="javafml" -loaderVersion="[1,)" - -license="GPL-3.0 license" -issueTrackerURL="https://github.com/ViaVersion/ViaForge/issues" -showAsResourcePack=false - -[[mods]] -modId="viaforge" -version="${version}" -displayName="ViaForge" -displayURL="https://github.com/FlorianMichael" -credits="FlorianMichael/EnZaXD and all ViaVersion/ViaForge contributors" -authors="FlorianMichael/EnZaXD" -description=''' - Client-side Implementation of ViaVersion, ViaBackwards and ViaRewind for Legacy Minecraft Forge - ''' \ No newline at end of file diff --git a/viaforge-mc120/src/main/resources/mixins.viaforge-mc120.json b/viaforge-mc120/src/main/resources/mixins.viaforge-mc120.json index 35aeca5..7e146fd 100644 --- a/viaforge-mc120/src/main/resources/mixins.viaforge-mc120.json +++ b/viaforge-mc120/src/main/resources/mixins.viaforge-mc120.json @@ -5,7 +5,7 @@ "package": "de.florianmichael.viaforge.mixin", "mixins": [ "MixinConnection", - "MixinNetworkManager_1", + "MixinConnection_1", "MixinTitleScreen", "MixinJoinMultiplayerScreen", "MixinDirectJoinServerScreen" diff --git a/viaforge-mc120/src/main/resources/pack.mcmeta b/viaforge-mc120/src/main/resources/pack.mcmeta deleted file mode 100644 index 646ce57..0000000 --- a/viaforge-mc120/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "description": "ViaForge", - "pack_format": 6 - } -}