diff --git a/build.gradle.kts b/build.gradle.kts index 167ecac..49f4f1c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,6 +55,7 @@ dependencies { runtimeOnly("org.joml:joml:1.10.2") runtimeOnly("org.anarres:jcpp:1.4.14") + modImplementation(files("vendor/mods/baritone-unoptimized-fabric-1.8.2.jar")) modRuntimeOnly(files("vendor/mods/iris-mc1.18.1-1.2.0-pre.jar")) modRuntimeOnly(files("vendor/mods/sodium-fabric-mc1.18.1-0.4.0-alpha6+build.14.jar")) modRuntimeOnly(files("vendor/mods/lazydfu-0.1.2.jar")) diff --git a/src/main/java/site/hackery/unknit/mixin/MixinFabricAbstractChanneledNetworkAddon.java b/src/main/java/site/hackery/unknit/mixin/MixinFabricAbstractChanneledNetworkAddon.java new file mode 100644 index 0000000..c17f3c4 --- /dev/null +++ b/src/main/java/site/hackery/unknit/mixin/MixinFabricAbstractChanneledNetworkAddon.java @@ -0,0 +1,15 @@ +package site.hackery.unknit.mixin; + +import net.fabricmc.fabric.impl.networking.AbstractChanneledNetworkAddon; +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(value = AbstractChanneledNetworkAddon.class, remap = false) +public class MixinFabricAbstractChanneledNetworkAddon { + @Inject(method = "sendInitialChannelRegistrationPacket", at = @At("HEAD"), cancellable = true, remap = false) + private void onSendRegistration(CallbackInfo ci) { + ci.cancel(); + } +} diff --git a/src/main/kotlin/codes/som/hibiscus/HibiscusMod.kt b/src/main/kotlin/codes/som/hibiscus/HibiscusMod.kt index b56e4fc..f4b6208 100644 --- a/src/main/kotlin/codes/som/hibiscus/HibiscusMod.kt +++ b/src/main/kotlin/codes/som/hibiscus/HibiscusMod.kt @@ -9,6 +9,7 @@ import codes.som.hibiscus.features.FeaturesRegistry import codes.som.hibiscus.features.combat.Criticals import codes.som.hibiscus.features.exploits.AntiGhost import codes.som.hibiscus.features.player.NoFallDamage +import codes.som.hibiscus.features.player.NoSprintingPacket import codes.som.hibiscus.gui.ImGuiScreen import codes.som.hibiscus.util.command.ChatCommandListener import codes.som.hibiscus.util.input.KeybindDispatcher @@ -69,5 +70,6 @@ object HibiscusMod : ModInitializer { features.getFeature().enabled = true features.getFeature().enabled = true features.getFeature().enabled = true + features.getFeature().enabled = true } } diff --git a/src/main/kotlin/codes/som/hibiscus/api/command/handler/CommandHandler.kt b/src/main/kotlin/codes/som/hibiscus/api/command/handler/CommandHandler.kt new file mode 100644 index 0000000..5adae9b --- /dev/null +++ b/src/main/kotlin/codes/som/hibiscus/api/command/handler/CommandHandler.kt @@ -0,0 +1,28 @@ +@file:Suppress("UNCHECKED_CAST") + +package codes.som.hibiscus.api.command.handler + +sealed interface CommandHandler { + fun handle(vararg args: Any?) +} + +fun interface CommandHandler0 : CommandHandler { + fun handle() + override fun handle(vararg args: Any?) { + handle() + } +} + +fun interface CommandHandler1 : CommandHandler { + fun handle(p1: A) + override fun handle(vararg args: Any?) { + handle(args[0] as A) + } +} + +fun interface CommandHandler2 : CommandHandler { + fun handle(p1: A, p2: B) + override fun handle(vararg args: Any?) { + handle(args[0] as A, args[1] as B) + } +} diff --git a/src/main/kotlin/codes/som/hibiscus/commands/CommandRegistry.kt b/src/main/kotlin/codes/som/hibiscus/commands/CommandRegistry.kt index 8065d9b..b4e9b17 100644 --- a/src/main/kotlin/codes/som/hibiscus/commands/CommandRegistry.kt +++ b/src/main/kotlin/codes/som/hibiscus/commands/CommandRegistry.kt @@ -6,6 +6,7 @@ import codes.som.hibiscus.api.command.CommandManager fun allCommandClasses(): Array<() -> Command> = arrayOf( ::Reload, ::Vclip, + ::Gamma, ) class CommandRegistry : CommandManager() { diff --git a/src/main/kotlin/codes/som/hibiscus/commands/Gamma.kt b/src/main/kotlin/codes/som/hibiscus/commands/Gamma.kt new file mode 100644 index 0000000..bb216b8 --- /dev/null +++ b/src/main/kotlin/codes/som/hibiscus/commands/Gamma.kt @@ -0,0 +1,13 @@ +package codes.som.hibiscus.commands + +import codes.som.hibiscus.api.command.Command +import codes.som.hibiscus.mc + +class Gamma : Command("gamma") { + init { + branch { gamma: Double -> + mc.options.gamma = gamma + Unit + } + } +} diff --git a/src/main/kotlin/codes/som/hibiscus/features/FeaturesRegistry.kt b/src/main/kotlin/codes/som/hibiscus/features/FeaturesRegistry.kt index 1502448..4c1c1fb 100644 --- a/src/main/kotlin/codes/som/hibiscus/features/FeaturesRegistry.kt +++ b/src/main/kotlin/codes/som/hibiscus/features/FeaturesRegistry.kt @@ -8,6 +8,7 @@ import codes.som.hibiscus.features.movement.Flight import codes.som.hibiscus.features.movement.Speed import codes.som.hibiscus.features.overlay.Overlay import codes.som.hibiscus.features.player.NoFallDamage +import codes.som.hibiscus.features.player.NoSprintingPacket import codes.som.hibiscus.features.visual.Freecam import codes.som.hibiscus.util.Resettable @@ -20,6 +21,7 @@ fun allFeatureClasses(): Array<() -> Feature> = arrayOf( ::Ghost, ::AntiGhost, ::Freecam, + ::NoSprintingPacket, ) class FeaturesRegistry : Resettable { diff --git a/src/main/kotlin/codes/som/hibiscus/features/overlay/Overlay.kt b/src/main/kotlin/codes/som/hibiscus/features/overlay/Overlay.kt index 6dd8a38..1ea1cc8 100644 --- a/src/main/kotlin/codes/som/hibiscus/features/overlay/Overlay.kt +++ b/src/main/kotlin/codes/som/hibiscus/features/overlay/Overlay.kt @@ -34,6 +34,7 @@ class Overlay : Feature("Overlay", FeatureCategory.OVERLAY) { ImGui.popStyleColor() } + hiddenInOverlay = true enabled = true } diff --git a/src/main/kotlin/codes/som/hibiscus/features/player/NoSprintingPacket.kt b/src/main/kotlin/codes/som/hibiscus/features/player/NoSprintingPacket.kt new file mode 100644 index 0000000..a9d6ee8 --- /dev/null +++ b/src/main/kotlin/codes/som/hibiscus/features/player/NoSprintingPacket.kt @@ -0,0 +1,22 @@ +package codes.som.hibiscus.features.player + +import codes.som.hibiscus.api.feature.Feature +import codes.som.hibiscus.api.feature.FeatureCategory +import codes.som.hibiscus.events.SendPacketEvent +import codes.som.hibiscus.player +import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket + +class NoSprintingPacket : Feature("No Sprinting Packet", FeatureCategory.PLAYER) { + init { + on { event: SendPacketEvent -> + val (packet) = event + if (packet is ClientCommandC2SPacket) { + if (packet.mode == ClientCommandC2SPacket.Mode.START_SPRINTING && !player.isSubmergedInWater) { + event.cancel() + } + } + } + + hiddenInOverlay = true + } +} diff --git a/src/main/resources/unknit.mixins.json b/src/main/resources/unknit.mixins.json index 3220ff3..efdfd4d 100644 --- a/src/main/resources/unknit.mixins.json +++ b/src/main/resources/unknit.mixins.json @@ -5,9 +5,11 @@ "injectors": { "defaultRequire": 1 }, - "mixins": [], + "mixins": [ + ], "client": [ "MixinClientBrandRetriever", + "MixinFabricAbstractChanneledNetworkAddon", "MixinMinecraftClient", "MixinMinecraftMain" ]