From 241b75a244fb24471f1c31eae5e372c82bec6718 Mon Sep 17 00:00:00 2001 From: Saad Nadeem Date: Sun, 30 Aug 2026 05:24:19 -0400 Subject: [PATCH 1/5] feat: SDL support --- .../polysprint/client/PolySprintClient.kt | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt b/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt index fafca93..ee7c29c 100644 --- a/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt +++ b/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt @@ -21,6 +21,9 @@ package org.polyfrost.polysprint.client import com.mojang.blaze3d.platform.InputConstants import net.minecraft.client.KeyMapping import net.minecraft.client.Minecraft +//? if >= 26.3 { +/*import org.lwjgl.sdl.SDLMouse +*///?} else import org.lwjgl.glfw.GLFW import org.polyfrost.oneconfig.api.commands.v1.CommandManager import org.polyfrost.oneconfig.api.event.v1.eventHandler @@ -142,17 +145,26 @@ object PolySprintClient { private fun KeyMapping.isPhysicallyDown(): Boolean { val key = InputConstants.getKey(saveString()) return when (key.type) { + //? if >= 26.3 { + /*InputConstants.Type.KEYBOARD + *///?} else InputConstants.Type.KEYSYM, InputConstants.Type.SCANCODE -> - //? if <1.21.10 - //InputConstants.isKeyDown(Minecraft.getInstance().window.window, key.value) - //? if >=1.21.10 + //? if >= 26.3 { + /*InputConstants.isKeyDown(key.value) + *///?} elif >= 1.21.10 { InputConstants.isKeyDown(Minecraft.getInstance().window, key.value) + //?} else { + /*InputConstants.isKeyDown(Minecraft.getInstance().window.window, key.value) + *///?} InputConstants.Type.MOUSE -> - //? if <1.21.10 - //GLFW.glfwGetMouseButton(Minecraft.getInstance().window.window, key.value) == GLFW.GLFW_PRESS - //? if >=1.21.10 + //? if >= 26.3 { + /*key.value > 0 && (SDLMouse.SDL_GetMouseState(null, null) and (1 shl (key.value - 1))) != 0 + *///?} elif >= 1.21.10 { GLFW.glfwGetMouseButton(Minecraft.getInstance().window.handle(), key.value) == GLFW.GLFW_PRESS + //?} else { + /*GLFW.glfwGetMouseButton(Minecraft.getInstance().window.window, key.value) == GLFW.GLFW_PRESS + *///?} else -> false } From d9273ce5211d28d3b20ba6aa7f7cdd924abc4918 Mon Sep 17 00:00:00 2001 From: Saad Nadeem Date: Thu, 3 Sep 2026 02:37:40 -0400 Subject: [PATCH 2/5] chore: bump oneconfig --- build.gradle.kts | 4 +--- stonecutter.properties.toml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index abe9b99..7979b3f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -64,9 +64,7 @@ dependencies { } implementation("org.polyfrost:polyui:${sc.properties.get("deps.polyui")}") - for (module in arrayOf("fabric-command-api-v2", "fabric-lifecycle-events-v1")) { - modImplementation(fabricApi.module(module, fapiversion)) - } + modImplementation("net.fabricmc.fabric-api:fabric-api:$fapiversion") testImplementation("org.junit.jupiter:junit-jupiter:${sc.properties.get("deps.junit")}") testImplementation("net.fabricmc:fabric-loader-junit:$loaderversion") diff --git a/stonecutter.properties.toml b/stonecutter.properties.toml index 7d16250..76370a6 100644 --- a/stonecutter.properties.toml +++ b/stonecutter.properties.toml @@ -4,7 +4,7 @@ mod.group = "org.polyfrost" mod.version = "1.2.2" deps.fabric_loader = "0.19.3" -deps.oneconfig = "1.1.4" +deps.oneconfig = "1.1.12" deps.polyui = "2.1.7" deps.junit = "6.1.3" From 16238c85b9a9a47629c9229ab55319ed12e28a51 Mon Sep 17 00:00:00 2001 From: Saad Nadeem Date: Sun, 2 Aug 2026 22:20:43 -0400 Subject: [PATCH 3/5] feat(legacy): build setup --- .github/workflows/gradle.yml | 2 +- build.gradle.kts | 47 ++++++++++++++++--- mappings/feather-overrides.tiny | 18 +++++++ settings.gradle.kts | 3 +- src/main/resources/polysprint.ct | 2 +- .../polyfrost/polysprint/test/MixinTest.kt | 14 ++++++ src/test/resources/log4j2.xml | 1 + stonecutter.gradle.kts | 29 +++++++++++- stonecutter.properties.toml | 6 +++ 9 files changed, 111 insertions(+), 11 deletions(-) create mode 100644 mappings/feather-overrides.tiny create mode 100644 src/test/resources/log4j2.xml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index f7a6343..9e5371d 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -30,7 +30,7 @@ jobs: strategy: fail-fast: false matrix: - version: ["1.21.1", "1.21.4", "1.21.5", "1.21.8", "1.21.10", "1.21.11", "26.1", "26.2"] + version: ["1.8.9", "1.21.1", "1.21.4", "1.21.5", "1.21.8", "1.21.10", "1.21.11", "26.1", "26.2"] steps: - uses: actions/checkout@v6 diff --git a/build.gradle.kts b/build.gradle.kts index 7979b3f..5fefd50 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,33 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat +import net.ornithemc.ploceus.api.PloceusGradleExtensionApi import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("dev.kikugie.loom-back-compat") id("org.jetbrains.kotlin.jvm") version "2.4.10" + id("net.fabricmc.fabric-loom-remap") version "1.17-SNAPSHOT" apply false + id("ploceus") version "1.17.4" apply false id("dev.deftu.gradle.bloom") version "0.2.0" id("me.modmuss50.mod-publish-plugin") version "2.2.0" } +val isOrnithe = stonecutter.current.version == "1.8.9" +val ploceus = if (isOrnithe) { + pluginManager.apply("net.fabricmc.fabric-loom-remap") + pluginManager.apply("ploceus") + + configurations.configureEach { + exclude(group = "org.lwjgl.lwjgl") + } + + extensions.getByType().apply { + setIntermediaryGeneration(2) + } +} else { + null +} + val modid: String = sc.properties["mod.id"] val modname: String = sc.properties["mod.name"] val modversion: String = sc.properties["mod.version"] @@ -16,7 +35,7 @@ val mcversion: String = sc.current.version val versionrange: String = sc.properties["mod.mc_compat"] val loaderversion: String = sc.properties["deps.fabric_loader"] val oneconfigversion: String = sc.properties["deps.oneconfig"] -val fapiversion: String = sc.properties["deps.fabric_api"] +val loader = if (isOrnithe) "ornithe" else "fabric" version = "$modversion+$mcversion" base.archivesName = modid @@ -26,7 +45,7 @@ val requiredJava: JavaVersion = when { sc.current.parsed >= "1.20.5" -> JavaVersion.VERSION_21 sc.current.parsed >= "1.18" -> JavaVersion.VERSION_17 sc.current.parsed >= "1.17" -> JavaVersion.VERSION_16 - else -> JavaVersion.VERSION_1_8 + else -> JavaVersion.VERSION_25 } val compatibleVersions: List = sc.properties.rawOrNull("mod", "mc_releases") @@ -46,6 +65,9 @@ repositories { name = "Sonatype Snapshots" content { includeGroup("net.kyori") } } + maven("https://maven.cloverclient.com/releases") { + content { includeGroup("pl.tomgirl") } + } strictMaven("https://maven.deftu.dev/releases", "Deftu", "dev.deftu") strictMaven("https://maven.terraformersmc.com/", "TerraformersMC", "com.terraformersmc") strictMaven("https://maven.fabricmc.net/", "FabricMC", "net.fabricmc") @@ -55,16 +77,29 @@ repositories { dependencies { minecraft("com.mojang:minecraft:$mcversion") - loomx.applyMojangMappings() + if (isOrnithe) { + mappings(ploceus!!.layeredMappings { + mappings("net.ornithemc:feather-gen2:$mcversion+build.${sc.properties["feather_build"] as String}:v2") { + containsUnpick() + } + mappings(rootProject.file("mappings/feather-overrides.tiny")) + }) + testCompileOnly("net.ornithemc.osl-gen2:entrypoints:${sc.properties["deps.osl_entrypoints"] as String}") + } else { + loomx.applyMojangMappings() + } modImplementation("net.fabricmc:fabric-loader:$loaderversion") - modImplementation("org.polyfrost.oneconfig:$mcversion-fabric:$oneconfigversion") + modImplementation("org.polyfrost.oneconfig:$mcversion-$loader:$oneconfigversion") for (module in arrayOf("commands", "config", "config-impl", "events", "internal", "ui", "utils", "hud")) { implementation("org.polyfrost.oneconfig:$module:$oneconfigversion") } implementation("org.polyfrost:polyui:${sc.properties.get("deps.polyui")}") - modImplementation("net.fabricmc.fabric-api:fabric-api:$fapiversion") + if (!isOrnithe) { + val fapiversion: String = sc.properties["deps.fabric_api"] + modImplementation("net.fabricmc.fabric-api:fabric-api:$fapiversion") + } testImplementation("org.junit.jupiter:junit-jupiter:${sc.properties.get("deps.junit")}") testImplementation("net.fabricmc:fabric-loader-junit:$loaderversion") @@ -192,7 +227,7 @@ publishMods { changelog = changelogs type = STABLE - modLoaders.add("fabric") + modLoaders.add(loader) dryRun = modrinthId == null || modrinthToken == null diff --git a/mappings/feather-overrides.tiny b/mappings/feather-overrides.tiny new file mode 100644 index 0000000..1795c40 --- /dev/null +++ b/mappings/feather-overrides.tiny @@ -0,0 +1,18 @@ +tiny 2 0 intermediary named +c net/minecraft/client/Minecraft net/minecraft/client/Minecraft + m (Lnet/minecraft/unmapped/C_85740840;)V m_52715402 setScreen +c net/minecraft/unmapped/C_23708450 net/minecraft/client/KeyMapping + m ()Z m_70603120 isDown +c net/minecraft/unmapped/C_76792751 net/minecraft/client/Options + f Lnet/minecraft/unmapped/C_23708450; f_50204069 keySprint + f Lnet/minecraft/unmapped/C_23708450; f_89071996 keyShift + f Lnet/minecraft/unmapped/C_23708450; f_94470987 keyJump +c net/minecraft/unmapped/C_57778754 net/minecraft/client/player/LocalPlayer + f I f_61582337 sprintTriggerTime +c net/minecraft/unmapped/C_88014908 net/minecraft/client/multiplayer/ClientPacketListener +c net/minecraft/unmapped/C_06007608$C_36868821 net/minecraft/world/level/GameType + m (Lnet/minecraft/unmapped/C_81721916;)V m_88990945 updatePlayerAbilities +c net/minecraft/unmapped/C_74425583 net/minecraft/world/entity/LivingEntity + m ()V m_11642923 aiStep +c net/minecraft/unmapped/C_81721916 net/minecraft/world/entity/player/Abilities + f Z f_63336874 instabuild diff --git a/settings.gradle.kts b/settings.gradle.kts index c8c1774..61fb4d8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,7 @@ pluginManagement { mavenCentral() gradlePluginPortal() maven("https://maven.fabricmc.net/") + maven("https://maven.ornithemc.net/releases") maven("https://maven.kikugie.dev/releases") { name = "KikuGie Releases" } maven("https://maven.kikugie.dev/snapshots") { name = "KikuGie Snapshots" } maven("https://maven.deftu.dev/releases") @@ -22,7 +23,7 @@ plugins { stonecutter { create(rootProject) { - versions("1.21.1", "1.21.4", "1.21.5", "1.21.8", "1.21.10", "1.21.11", "26.1", "26.2") + versions("1.8.9", "1.21.1", "1.21.4", "1.21.5", "1.21.8", "1.21.10", "1.21.11", "26.1", "26.2") vcsVersion = "26.2" } diff --git a/src/main/resources/polysprint.ct b/src/main/resources/polysprint.ct index 643b400..f6f16d8 100644 --- a/src/main/resources/polysprint.ct +++ b/src/main/resources/polysprint.ct @@ -1,4 +1,4 @@ classTweaker v1 official -#? if < 26.2 +#? if < 26.2 && > 1.8.9 #accessible method net/minecraft/client/Minecraft isMultiplayerServer ()Z diff --git a/src/test/kotlin/org/polyfrost/polysprint/test/MixinTest.kt b/src/test/kotlin/org/polyfrost/polysprint/test/MixinTest.kt index c26f7ca..de34103 100644 --- a/src/test/kotlin/org/polyfrost/polysprint/test/MixinTest.kt +++ b/src/test/kotlin/org/polyfrost/polysprint/test/MixinTest.kt @@ -1,7 +1,12 @@ package org.polyfrost.polysprint.test +//? if > 1.8.9 import net.minecraft.SharedConstants import net.minecraft.server.Bootstrap +//? if = 1.8.9 { +/*import net.fabricmc.loader.api.FabricLoader +import net.ornithemc.osl.entrypoints.api.ModInitializer +*///?} import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.Test @@ -16,8 +21,17 @@ class MixinTest { @JvmStatic @BeforeAll fun setupEnvironment() { + //? if > 1.8.9 { SharedConstants.tryDetectVersion() Bootstrap.bootStrap() + //?} else { + /*FabricLoader.getInstance().invokeEntrypoints( + ModInitializer.ENTRYPOINT_KEY, + ModInitializer::class.java, + ModInitializer::init, + ) + Bootstrap.init() + *///?} } } diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml new file mode 100644 index 0000000..e403921 --- /dev/null +++ b/src/test/resources/log4j2.xml @@ -0,0 +1 @@ + diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts index 8e54cba..cda34ca 100644 --- a/stonecutter.gradle.kts +++ b/stonecutter.gradle.kts @@ -4,8 +4,33 @@ plugins { stonecutter active "26.2" /* [SC] DO NOT EDIT */ -stonecutter tasks { - order("publishModrinth") +stonecutter { + tasks { + order("publishModrinth") + } + + parameters { + replacements { + string(eval(current.version, "= 1.8.9")) { + replace( + "com.mojang.blaze3d.platform.InputConstants", + "org.polyfrost.oneconfig.internal.legacy.InputConstants" + ) + replace( + "net.minecraft.server.Bootstrap", + "net.minecraft.Bootstrap" + ) + replace( + "net.minecraft.client.player.KeyboardInput", + "net.minecraft.client.entity.living.player.KeyboardInput" + ) + replace( + "net.minecraft.world.entity.Entity", + "net.minecraft.entity.Entity" + ) + } + } + } } stonecutter parameters { diff --git a/stonecutter.properties.toml b/stonecutter.properties.toml index 76370a6..1df5732 100644 --- a/stonecutter.properties.toml +++ b/stonecutter.properties.toml @@ -12,6 +12,12 @@ loomx.loom_version = "1.17-SNAPSHOT" publish.modrinth = "i9xRThb3" +["1.8.9"] +mod.mc_compat = "1.8.9" +mod.mc_releases = ["1.8.9"] +feather_build = 1 +deps.osl_entrypoints = "0.6.1+mc13w16a-mc1.14.4" + ["1.21.1"] mod.mc_compat = "1.21.1" mod.mc_releases = ["1.21.1"] From 61284808e5235e0ca17e5934c9abec917517d821 Mon Sep 17 00:00:00 2001 From: Saad Nadeem Date: Sun, 2 Aug 2026 22:53:49 -0400 Subject: [PATCH 4/5] feat(legacy): port mixins --- .../polysprint/mixins/Mixin_DisableWTap.java | 1 + .../polysprint/mixins/Mixin_SetFlyBoost.java | 34 +++++++++++++++++++ .../mixins/Mixin_SprintKeyDown.java | 8 +++++ .../mixins/Mixin_StickyKeyBindingSetter.java | 9 +++++ .../polysprint/mixins/Mixin_ToggleSprint.java | 10 ++++-- .../mixins/event/Mixin_RideEvent.java | 21 ++++++++++++ 6 files changed, 81 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_DisableWTap.java b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_DisableWTap.java index 8a930c5..3ee5b78 100644 --- a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_DisableWTap.java +++ b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_DisableWTap.java @@ -30,6 +30,7 @@ public abstract class Mixin_DisableWTap { @Shadow protected int sprintTriggerTime; + //~ if = 1.8.9 'tick' -> 'aiStep' @Inject(method = "tick", at = @At("HEAD")) private void polysprint$disableDoubleTap(CallbackInfo ci) { if (PolySprintConfig.isEnabled() && PolySprintConfig.getDisableWTapSprint()) { diff --git a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SetFlyBoost.java b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SetFlyBoost.java index 1501040..568646e 100644 --- a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SetFlyBoost.java +++ b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SetFlyBoost.java @@ -19,12 +19,18 @@ package org.polyfrost.polysprint.mixins; import com.mojang.authlib.GameProfile; +//? if > 1.8.9 { import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.AbstractClientPlayer; //? if =1.21.1 //import net.minecraft.client.player.Input; //? if >1.21.1 import net.minecraft.client.player.ClientInput; +//?} else { +/*import net.minecraft.client.entity.living.player.ClientPlayerEntity; +import net.minecraft.client.entity.living.player.Input; +import net.minecraft.world.World; +*///?} import net.minecraft.client.player.LocalPlayer; import org.polyfrost.polysprint.client.PolySprintConfig; import org.polyfrost.polysprint.client.SprintState; @@ -34,6 +40,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//? if > 1.8.9 { @Mixin(LocalPlayer.class) public abstract class Mixin_SetFlyBoost extends AbstractClientPlayer { //? if =1.21.1 @@ -85,3 +92,30 @@ public Mixin_SetFlyBoost(ClientLevel level, GameProfile profile) { } } } +//?} else { +/*@Mixin(LocalPlayer.class) +public abstract class Mixin_SetFlyBoost extends ClientPlayerEntity { + @Shadow public Input input; + + public Mixin_SetFlyBoost(World world, GameProfile profile) { + super(world, profile); + } + + @Inject(method = "aiStep", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/living/player/Input;tick()V", shift = At.Shift.AFTER)) + private void polysprint$modifyFlightSpeed(CallbackInfo ci) { + if (!SprintState.isFlyBoostEnabled()) { + return; + } + + final float base = 0.05f; + + if (!SprintState.isFlyBoosting()) { + this.abilities.setFlySpeed(base); + return; + } + + float boost = PolySprintConfig.getFlyBoostAmount(); + this.abilities.setFlySpeed(base * boost); + } +} +*///?} diff --git a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SprintKeyDown.java b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SprintKeyDown.java index a7079ce..b08ceba 100644 --- a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SprintKeyDown.java +++ b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_SprintKeyDown.java @@ -18,6 +18,7 @@ package org.polyfrost.polysprint.mixins; +//? if > 1.8.9 { //? if <1.21.5 { /*import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; @@ -39,3 +40,10 @@ public class Mixin_SprintKeyDown { } *///?} } +//?} else { +/*import net.minecraft.SharedConstants; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(SharedConstants.class) +public abstract class Mixin_SprintKeyDown {} +*///?} diff --git a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_StickyKeyBindingSetter.java b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_StickyKeyBindingSetter.java index 7ea4cd0..f7c306a 100644 --- a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_StickyKeyBindingSetter.java +++ b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_StickyKeyBindingSetter.java @@ -18,6 +18,7 @@ package org.polyfrost.polysprint.mixins; +//? if > 1.8.9 { import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; @@ -65,3 +66,11 @@ private void onSetDown(boolean bl, CallbackInfo ci) { ci.cancel(); } } +//?} else { +/*import net.minecraft.SharedConstants; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(SharedConstants.class) +public abstract class Mixin_StickyKeyBindingSetter { +} +*///?} diff --git a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_ToggleSprint.java b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_ToggleSprint.java index 4559f88..4ab740f 100644 --- a/src/main/java/org/polyfrost/polysprint/mixins/Mixin_ToggleSprint.java +++ b/src/main/java/org/polyfrost/polysprint/mixins/Mixin_ToggleSprint.java @@ -18,7 +18,7 @@ package org.polyfrost.polysprint.mixins; -//? if >1.21.1 { +//? if > 1.21.1 || = 1.8.9 { import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.minecraft.client.KeyMapping; @@ -30,16 +30,22 @@ import org.spongepowered.asm.mixin.injection.At; //?} import net.minecraft.client.player.KeyboardInput; +//? if = 1.8.9 +//import net.minecraft.client.player.LocalPlayer; import org.spongepowered.asm.mixin.Mixin; +//~ if = 1.8.9 'KeyboardInput' -> 'LocalPlayer' @Mixin(KeyboardInput.class) public class Mixin_ToggleSprint { - //? if >1.21.1 { + //? if >1.21.1 || = 1.8.9 { @Unique private boolean polysprint$isToggleActive = false; // On 1.21.1 KeyboardInput#tick has no keySprint.isDown() call and Mixin_SprintKeyDown handles it instead + //? if > 1.8.9 { @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/KeyMapping;isDown()Z", ordinal = 6)) + //?} else + //@WrapOperation(method = "aiStep", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/KeyMapping;isDown()Z")) private boolean setSprintState(KeyMapping instance, Operation original) { boolean vanilla = original.call(instance); if (Minecraft.getInstance().player == null) return vanilla; diff --git a/src/main/java/org/polyfrost/polysprint/mixins/event/Mixin_RideEvent.java b/src/main/java/org/polyfrost/polysprint/mixins/event/Mixin_RideEvent.java index 2b36def..ad7816f 100644 --- a/src/main/java/org/polyfrost/polysprint/mixins/event/Mixin_RideEvent.java +++ b/src/main/java/org/polyfrost/polysprint/mixins/event/Mixin_RideEvent.java @@ -20,6 +20,10 @@ import net.minecraft.client.Minecraft; import net.minecraft.world.entity.Entity; +//? if = 1.8.9 { +/*import net.minecraft.world.entity.LivingEntity; +import org.polyfrost.oneconfig.api.event.v1.events.Event; +*///?} import org.polyfrost.oneconfig.api.event.v1.EventManager; import org.polyfrost.polysprint.client.SprintStateEvent; import org.spongepowered.asm.mixin.Mixin; @@ -28,8 +32,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +//~ if = 1.8.9 'Entity' -> 'LivingEntity' @Mixin(Entity.class) public abstract class Mixin_RideEvent { + //? if > 1.8.9 { @Inject(method = "startRiding(Lnet/minecraft/world/entity/Entity;)Z", at = @At("HEAD")) private void onMount(Entity entity, CallbackInfoReturnable cir) { //noinspection ConstantConditions @@ -45,4 +51,19 @@ private void onDismount(CallbackInfo ci) { EventManager.INSTANCE.post(new SprintStateEvent.End(SprintStateEvent.Type.RIDE)); } } + //?} else { + /*@Inject(method = "startRiding(Lnet/minecraft/entity/Entity;)V", at = @At("HEAD")) + private void onMount(Entity entity, CallbackInfo ci) { + if ((Object) this == Minecraft.getInstance().player) { + Event event; + if (entity != null) { + event = new SprintStateEvent.Start(SprintStateEvent.Type.RIDE); + } else { + event = new SprintStateEvent.End(SprintStateEvent.Type.RIDE); + } + + EventManager.INSTANCE.post(event); + } + } + *///?} } From 97c9a8007fd3e80f1c3e1b615774168833496ca3 Mon Sep 17 00:00:00 2001 From: Saad Nadeem Date: Mon, 3 Aug 2026 01:14:14 -0400 Subject: [PATCH 5/5] feat(legacy): port client --- .../polysprint/client/PolySprintClient.kt | 15 ++++++++++++++- .../polysprint/client/PolySprintConfig.kt | 18 ++++++++++++++++++ .../polyfrost/polysprint/client/SprintState.kt | 3 +++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt b/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt index ee7c29c..4011422 100644 --- a/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt +++ b/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintClient.kt @@ -23,7 +23,7 @@ import net.minecraft.client.KeyMapping import net.minecraft.client.Minecraft //? if >= 26.3 { /*import org.lwjgl.sdl.SDLMouse -*///?} else +*///?} elif > 1.8.9 import org.lwjgl.glfw.GLFW import org.polyfrost.oneconfig.api.commands.v1.CommandManager import org.polyfrost.oneconfig.api.event.v1.eventHandler @@ -33,6 +33,11 @@ import org.polyfrost.oneconfig.api.hud.v1.HudManager import org.polyfrost.oneconfig.utils.v1.dsl.createScreen import org.polyfrost.polysprint.PolySprintConstants import org.polyfrost.polysprint.client.isFlyBoostEnabled +//? if = 1.8.9 { +/*import org.polyfrost.oneconfig.internal.legacy.KeyCodes +import org.lwjgl.input.Keyboard +import org.lwjgl.input.Mouse +*///?} object PolySprintClient { var isSprintHeld = false @@ -143,6 +148,7 @@ object PolySprintClient { fun isKeyPhysicallyDown(key: KeyMapping): Boolean = key.isPhysicallyDown() private fun KeyMapping.isPhysicallyDown(): Boolean { + //? if > 1.8.9 { val key = InputConstants.getKey(saveString()) return when (key.type) { //? if >= 26.3 { @@ -168,5 +174,12 @@ object PolySprintClient { else -> false } + //?} else { + /*return if (keyCode < 0) { + Mouse.isButtonDown(keyCode + 100) + } else { + keyCode > 0 && Keyboard.isKeyDown(keyCode) + } + *///?} } } diff --git a/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintConfig.kt b/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintConfig.kt index f09fe7f..59eec95 100644 --- a/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintConfig.kt +++ b/src/main/kotlin/org/polyfrost/polysprint/client/PolySprintConfig.kt @@ -179,11 +179,14 @@ object PolySprintConfig : Config( } fun syncTogglesFromVanilla(persist: Boolean = false) { + //? if > 1.8.9 { syncToggleSprintFromVanilla(persist) syncToggleSneakFromVanilla(persist) + //?} } fun syncToggleSprintFromVanilla(persist: Boolean = false) { + //? if > 1.8.9 { val options = Minecraft.getInstance().options ?: return val vanillaToggleSprint = options.toggleSprint().get() val changed = toggleSprint != vanillaToggleSprint @@ -193,9 +196,11 @@ object PolySprintConfig : Config( if (persist && changed) { save() } + //?} } fun syncToggleSneakFromVanilla(persist: Boolean = false) { + //? if > 1.8.9 { val options = Minecraft.getInstance().options ?: return val vanillaToggleSneak = options.toggleCrouch().get() val changed = toggleSneak != vanillaToggleSneak @@ -205,39 +210,52 @@ object PolySprintConfig : Config( if (persist && changed) { save() } + //?} } private fun syncToggleSprintToVanilla() { + //? if > 1.8.9 { val options = Minecraft.getInstance().options ?: return options.toggleSprint().set(toggleSprint) options.save() + //?} } private fun syncToggleSneakToVanilla() { + //? if > 1.8.9 { val options = Minecraft.getInstance().options ?: return options.toggleCrouch().set(toggleSneak) options.save() + //?} } fun resyncSprintKeyState() { + //? if > 1.8.9 { val options = Minecraft.getInstance().options ?: return (options.keySprint as StickyKeyBindingSetter).`polySprint$toggle`(toggleSprintState) + //?} } fun resyncSneakKeyState() { + //? if > 1.8.9 { val options = Minecraft.getInstance().options ?: return (options.keyShift as StickyKeyBindingSetter).`polySprint$toggle`(toggleSneakState) + //?} } fun invertToggleSprintState() { toggleSprintState = !toggleSprintState + //? if > 1.8.9 { (Minecraft.getInstance().options.keySprint as StickyKeyBindingSetter).`polySprint$toggle`(PolySprintConfig.toggleSprintState) + //?} save() } fun invertToggleSneakState() { toggleSneakState = !toggleSneakState + //? if > 1.8.9 { (Minecraft.getInstance().options.keyShift as StickyKeyBindingSetter).`polySprint$toggle`(PolySprintConfig.toggleSneakState) + //?} save() } } diff --git a/src/main/kotlin/org/polyfrost/polysprint/client/SprintState.kt b/src/main/kotlin/org/polyfrost/polysprint/client/SprintState.kt index 6ccfbae..479fdf4 100644 --- a/src/main/kotlin/org/polyfrost/polysprint/client/SprintState.kt +++ b/src/main/kotlin/org/polyfrost/polysprint/client/SprintState.kt @@ -108,7 +108,10 @@ fun isFlyBoostEnabled(): Boolean { return PolySprintConfig.isEnabled && PolySprintConfig.toggleFlyBoost && + //? if > 1.8.9 { !client.isMultiplayerServer() + //?} else + //client.isLocalServer } fun isFlyBoostUsingSprintKey(): Boolean {