Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
5ae5302
Initial draft for 1.21.11
Avanatiker Dec 17, 2025
338d7ca
Merge remote-tracking branch 'NeoLambda/1.21.5' into 1.21.11
beanbag44 Dec 17, 2025
32ef6b1
Migrated mixins
Avanatiker Dec 17, 2025
20f155a
spawnBlockBreakingParticles
beanbag44 Dec 17, 2025
a05bb88
Baritone Soft Dependency and even more mixins
Avanatiker Dec 17, 2025
8b426d9
Even more mixins
Avanatiker Dec 17, 2025
1c3bba7
fix viewmodel mixins
beanbag44 Dec 17, 2025
988e40c
Fixed blurry overlay for GUI
Avanatiker Dec 17, 2025
984b26c
XRay crash notice
Avanatiker Dec 17, 2025
b2932a7
Fix ImGUI layering
Avanatiker Dec 18, 2025
abed57f
Merge branch '1.21.5' into 1.21.11
beanbag44 Dec 18, 2025
e81c6ff
Updated to Baritone 1.21.11 thanks to rfresh
Avanatiker Dec 18, 2025
440e171
no render mixin fixes
beanbag44 Dec 18, 2025
90ca652
Merge branch '1.21.5' into 1.21.11
Avanatiker Dec 18, 2025
6f7a07d
New Lambda RenderPipeline using native MC renderer
Avanatiker Dec 19, 2025
3503e64
fixed imgui flickering
emyfops Dec 19, 2025
ebbd322
Dynamic interpolated ESP, splines, EntityESP
Avanatiker Dec 19, 2025
8e28a6d
Migrated to new esp shape builder
Avanatiker Dec 20, 2025
7d72ed6
Merge branch '1.21.5' into 1.21.11
beanbag44 Dec 20, 2025
f529eaa
1.21.11 changes
beanbag44 Dec 20, 2025
5c1fa02
Merge branch '1.21.5' into 1.21.11
beanbag44 Dec 20, 2025
2f58ca5
removed setting type bound
emyfops Dec 20, 2025
aec823d
queue rotation request in anti aim
beanbag44 Dec 20, 2025
cc7616e
Custom line shader
Avanatiker Dec 20, 2025
51713b6
Remove unused pipelines
Avanatiker Dec 20, 2025
cbdd5ce
Feat: Added prefix command. (#199)
KMatias123 Dec 21, 2025
430b463
Feat: KillAura DPS calculation (#200)
KMatias123 Dec 21, 2025
edb15e2
removed unused font loading
emyfops Dec 21, 2025
4c30aaa
swap instead of replace selected stack in kill aura
beanbag44 Dec 21, 2025
87b5535
tick kill aura on input post and remove submit util function
beanbag44 Dec 21, 2025
b9e4384
manually handle attack packet and cooldown to avoid triggering vanill…
beanbag44 Dec 21, 2025
3886b6d
cancel fake player attacks
emyfops Dec 21, 2025
a52bbd7
Fix: CollectionSettings mapping stringified values instead of convert…
emyfops Dec 21, 2025
66ceeb0
rename the speed hud module to Speedometer
beanbag44 Dec 22, 2025
4de7879
removed invalid import
emyfops Dec 22, 2025
6f28ca4
fix no render fog
beanbag44 Dec 22, 2025
836fa32
check renders setting
beanbag44 Dec 22, 2025
adf47d9
Merge branch '1.21.5' into 1.21.11
beanbag44 Dec 22, 2025
7b33dce
separate yaw and pitch in the rotation manager
beanbag44 Dec 23, 2025
202d4fc
Fix: Transparency for block colors in blockesp (#208)
KMatias123 Dec 23, 2025
4e0bb71
update elytra altitude control to only request pitch
beanbag44 Dec 23, 2025
6c1374e
remove manager debuggers
beanbag44 Dec 23, 2025
7c12aca
keep yaw and pitch ordered the same everywhere
beanbag44 Dec 23, 2025
80ac402
cleaned up the gradle properties
emyfops Dec 23, 2025
5ccd53d
rename lambda.mixins.common.json to lambda.mixins.json
beanbag44 Dec 24, 2025
8328403
use automated inventory config in auto totem
beanbag44 Dec 24, 2025
8113f26
display class name for inventory tick stage mask
beanbag44 Dec 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ val discordIPCVersion: String by project
val classGraphVersion: String by project
val kotlinVersion: String by project
val ktorVersion: String by project
val mockitoKotlin: String by project
val mockitoInline: String by project
val mockkVersion: String by project
val spairVersion: String by project
val lwjglVersion: String by project
Expand All @@ -46,10 +44,10 @@ val replacements = file("gradle.properties").inputStream().use { stream ->
}.map { (k, v) -> k.toString() to v.toString() }.toMap()

plugins {
kotlin("jvm") version "2.2.0"
id("org.jetbrains.dokka") version "2.0.0"
id("fabric-loom") version "1.10-SNAPSHOT"
id("com.gradleup.shadow") version "9.0.0-rc1"
kotlin("jvm") version "2.3.0"
id("org.jetbrains.dokka") version "2.1.0"
id("fabric-loom") version "1.14-SNAPSHOT"
id("com.gradleup.shadow") version "9.3.0"
id("maven-publish")
}

Expand Down Expand Up @@ -151,6 +149,8 @@ dependencies {
// Fabric
modImplementation("net.fabricmc:fabric-loader:$fabricLoaderVersion")
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion+$minecraftVersion")
// Explicit dependency on fabric-renderer-indigo for mixin access to internal classes
modCompileOnly("net.fabricmc.fabric-api:fabric-renderer-indigo:4.1.4+1af5c5a75f")
modImplementation("net.fabricmc:fabric-language-kotlin:$kotlinFabricVersion.$kotlinVersion")

// Add dependencies on the required Kotlin modules.
Expand All @@ -175,7 +175,7 @@ dependencies {
includeLib("io.ktor:ktor-serialization-gson:$ktorVersion")

// Add mods
modImplementation("com.github.rfresh2:baritone-fabric:$minecraftVersion")
modCompileOnly("com.github.rfresh2:baritone-fabric:$minecraftVersion-SNAPSHOT")
modCompileOnly("maven.modrinth:sodium:$sodiumVersion")
modCompileOnly("maven.modrinth:malilib:$maLiLibVersion")
modCompileOnly("maven.modrinth:litematica:$litematicaVersion")
Expand All @@ -185,8 +185,6 @@ dependencies {

// Test implementations
testImplementation(kotlin("test"))
testImplementation("org.mockito.kotlin:mockito-kotlin:$mockitoKotlin")
testImplementation("org.mockito:mockito-inline:$mockitoInline")
testImplementation("io.mockk:mockk:${mockkVersion}")

// Finish the configuration
Expand Down
32 changes: 13 additions & 19 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,37 +25,31 @@ mavenGroup=com.lambda
modAuthors=Constructor (Avanatiker), Blade, beanbag44, Emy

# General
minecraftVersion=1.21.5
minecraftVersionMin=1.21.5
minecraftVersionMax=1.21.6
minecraftVersion=1.21.11
lwjglVersion=3.3.3
mixinExtrasVersion=0.5.0-rc.2
kotlinVersion=2.2.0
mixinExtrasVersion=0.5.0
kotlinVersion=2.3.0
pngEncoderVersion=0.16.0
javaVersion=21
baritoneVersion=1.14.0
discordIPCVersion=6f6b6cce17
classGraphVersion=4.8.179
ktorVersion=3.1.2
mockitoKotlin=5.4.0
mockitoInline=5.2.0
mockkVersion=1.13.17
classGraphVersion=4.8.184
ktorVersion=3.3.3
mockkVersion=1.14.7
spairVersion=1.90.0

# Fabric https://fabricmc.net/develop/
fabricLoaderVersion=0.16.13
yarnMappings=build.1
fabricApiVersion=0.124.0
kotlinFabricVersion=1.13.4+kotlin
sodiumVersion=mc1.21.5-0.6.13-fabric
litematicaVersion=0.22.2
maLiLibVersion=0.24.2
fabricLoaderVersion=0.18.3
yarnMappings=build.3
fabricApiVersion=0.139.5
kotlinFabricVersion=1.13.8+kotlin
sodiumVersion=mc1.21.11-0.8.0-fabric
litematicaVersion=0.25.1
maLiLibVersion=0.27.1

# Kotlin https://kotlinlang.org/
kotlin.code.style=official

# Gradle https://gradle.org/
org.gradle.jvmargs=-Xmx4096M
org.gradle.parallel=true

org.jetbrains.dokka.experimental.gradle.pluginMode.nowarn=true
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
27 changes: 14 additions & 13 deletions src/main/java/com/lambda/mixin/MinecraftClientMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import net.minecraft.util.hit.HitResult;
import net.minecraft.util.thread.ThreadExecutor;
import org.jetbrains.annotations.Nullable;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
Expand Down Expand Up @@ -106,18 +107,18 @@ void onInput(MinecraftClient instance, Operation<Void> original) {
this.lambda$inputHandledThisTick = true;
}

@WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;tick()V"))
void onWorldRenderer(WorldRenderer instance, Operation<Void> original) {
if (!this.lambda$inputHandledThisTick) {
EventFlow.post(TickEvent.Input.Pre.INSTANCE);
EventFlow.post(TickEvent.Input.Post.INSTANCE);
this.lambda$inputHandledThisTick = true;
}

EventFlow.post(TickEvent.WorldRender.Pre.INSTANCE);
original.call(instance);
EventFlow.post(TickEvent.WorldRender.Post.INSTANCE);
}
// @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;tick()V"))
// void onWorldRenderer(WorldRenderer instance, Operation<Void> original) {
// if (!this.lambda$inputHandledThisTick) {
// EventFlow.post(TickEvent.Input.Pre.INSTANCE);
// EventFlow.post(TickEvent.Input.Post.INSTANCE);
// this.lambda$inputHandledThisTick = true;
// }
//
// EventFlow.post(TickEvent.WorldRender.Pre.INSTANCE);
// original.call(instance);
// EventFlow.post(TickEvent.WorldRender.Post.INSTANCE);
// }

@WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/sound/SoundManager;tick(Z)V"))
void onSound(SoundManager instance, boolean paused, Operation<Void> original) {
Expand All @@ -134,7 +135,7 @@ private void onShutdown(CallbackInfo ci) {
/**
* Inject after the thread field is set so that {@link ThreadExecutor#getThread} is available
*/
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;thread:Ljava/lang/Thread;", shift = At.Shift.AFTER, ordinal = 0), method = "run")
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;thread:Ljava/lang/Thread;", shift = At.Shift.AFTER, ordinal = 0, opcode = Opcodes.PUTFIELD), method = "run")
private void onStartup(CallbackInfo ci) {
EventFlow.post(new ClientEvent.Startup());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(SoundSystem.class)
public class SoundSystemMixin {
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At("HEAD"), cancellable = true)
public void onPlay(SoundInstance sound, CallbackInfo ci) {
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)Lnet/minecraft/client/sound/SoundSystem$PlayResult;", at = @At("HEAD"), cancellable = true)
public void onPlay(SoundInstance sound, CallbackInfoReturnable<SoundSystem.PlayResult> cir) {
if (EventFlow.post(new ClientEvent.Sound(sound)).isCanceled()) {
ci.cancel();
cir.setReturnValue(SoundSystem.PlayResult.NOT_STARTED);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ private void cancelBlockBreakingPre(CallbackInfo ci) {
if (EventFlow.post(new PlayerEvent.Breaking.Cancel(currentBreakingProgress)).isCanceled()) ci.cancel();
}

@WrapMethod(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;ZZ)Lnet/minecraft/client/network/ClientPlayerEntity;")
private ClientPlayerEntity injectCreatePlayer(ClientWorld world, StatHandler statHandler, ClientRecipeBook recipeBook, boolean lastSneaking, boolean lastSprinting, Operation<ClientPlayerEntity> original) {
var player = original.call(world, statHandler, recipeBook, lastSneaking, lastSprinting);
@WrapMethod(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;)Lnet/minecraft/client/network/ClientPlayerEntity;")
private ClientPlayerEntity wrapCreatePlayer(ClientWorld world, StatHandler statHandler, ClientRecipeBook recipeBook, Operation<ClientPlayerEntity> original) {
var player = original.call(world, statHandler, recipeBook);
InventoryManager.INSTANCE.setScreenHandler(player.playerScreenHandler);
return player;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,6 @@ private void injectSendMovementPackets(CallbackInfo ci) {
@ModifyExpressionValue(method = "sendMovementPackets", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isCamera()Z"))
private boolean wrapIsCamera(boolean original) { return false; }

@WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;sendSneakingPacket()V"))
void sendSneakingPacket(ClientPlayerEntity entity, Operation<Void> original) {
PlayerPacketHandler.sendSneakPackets();
}

@ModifyExpressionValue(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isSprinting()Z"))
boolean isSprinting(boolean original) {
return EventFlow.post(new MovementEvent.Sprint(original)).getSprint();
Expand Down
12 changes: 2 additions & 10 deletions src/main/java/com/lambda/mixin/entity/EntityMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@
import com.lambda.event.events.EntityEvent;
import com.lambda.event.events.PlayerEvent;
import com.lambda.interaction.managers.rotating.RotationManager;
import com.lambda.interaction.managers.rotating.RotationMode;
import com.lambda.module.modules.player.RotationLock;
import com.lambda.module.modules.render.NoRender;
import com.lambda.util.math.Vec2d;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
Expand Down Expand Up @@ -149,17 +147,11 @@ private boolean modifyGetFlagGlowing(boolean original) {

@WrapWithCondition(method = "changeLookDirection", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;setYaw(F)V"))
private boolean wrapSetYaw(Entity instance, float yaw) {
return (instance != Lambda.getMc().player ||
RotationLock.INSTANCE.isDisabled() ||
RotationLock.INSTANCE.getRotationConfig().getRotationMode() != RotationMode.Lock ||
RotationLock.getYawMode() == RotationLock.Mode.None);
return RotationManager.getLockYaw() == null;
}

@WrapWithCondition(method = "changeLookDirection", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;setPitch(F)V"))
private boolean wrapSetPitch(Entity instance, float yaw) {
return (instance != Lambda.getMc().player ||
RotationLock.INSTANCE.isDisabled() ||
RotationLock.INSTANCE.getRotationConfig().getRotationMode() != RotationMode.Lock ||
RotationLock.getPitchMode() == RotationLock.Mode.None);
return RotationManager.getLockPitch() == null;
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/lambda/mixin/entity/LivingEntityMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,9 @@ private float rotHead(LivingEntity entity, Operation<Float> original) {
return (yaw == null) ? original.call(entity) : yaw;
}

@ModifyConstant(method = "getHandSwingDuration", constant = @Constant(intValue = 6))
private int getHandSwingDuration(int constant) {
if (lambda$instance != Lambda.getMc().player || ViewModel.INSTANCE.isDisabled()) return constant;
@WrapMethod(method = "getHandSwingDuration")
private int getHandSwingDuration(Operation<Integer> original) {
if (lambda$instance != Lambda.getMc().player || ViewModel.INSTANCE.isDisabled()) return original.call();

return ViewModel.INSTANCE.getSwingDuration();
}
Expand Down
18 changes: 9 additions & 9 deletions src/main/java/com/lambda/mixin/entity/PlayerEntityMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ private float wrapHeadYaw(PlayerEntity instance, Operation<Float> original) {
return (yaw != null) ? yaw : original.call(instance);
}

@WrapOperation(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getYaw()F"))
private float wrapAttackYaw(PlayerEntity instance, Operation<Float> original) {
if ((Object) this != Lambda.getMc().player) {
return original.call(instance);
}

Float yaw = RotationManager.getMovementYaw();
return (yaw != null) ? yaw : original.call(instance);
}
// @WrapOperation(method = "attack", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getYaw()F"))
// private float wrapAttackYaw(PlayerEntity instance, Operation<Float> original) {
// if ((Object) this != Lambda.getMc().player) {
// return original.call(instance);
// }
//
// Float yaw = RotationManager.getMovementYaw();
// return (yaw != null) ? yaw : original.call(instance);
// }
}
2 changes: 1 addition & 1 deletion src/main/java/com/lambda/mixin/input/KeyBindingMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public class KeyBindingMixin {
@ModifyReturnValue(method = "isPressed", at = @At("RETURN"))
boolean modifyIsPressed(boolean original) {
KeyBinding instance = (KeyBinding) (Object) this;
if (!Objects.equals(instance.getTranslationKey(), "key.sprint")) return original;
if (!Objects.equals(instance.getId(), "key.sprint")) return original;

if (Sprint.INSTANCE.isEnabled()) return true;
if (Speed.INSTANCE.isEnabled() && Speed.getMode() == Speed.Mode.GrimStrafe) return true;
Expand Down
26 changes: 18 additions & 8 deletions src/main/java/com/lambda/mixin/input/KeyboardMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,35 +23,45 @@
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import net.minecraft.client.Keyboard;
import net.minecraft.client.input.CharInput;
import net.minecraft.client.input.KeyInput;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
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 to intercept keyboard input events.
*
* Note: In 1.21.11, onKey/onChar methods were refactored to use KeyInput/CharInput records.
* - onKey(long window, int action, KeyInput input) where KeyInput has key, scancode, modifiers
* - onChar(long window, CharInput input) where CharInput has codepoint, modifiers
*/
@Mixin(Keyboard.class)
public class KeyboardMixin {
@WrapMethod(method = "onKey")
private void onKey(long window, int key, int scancode, int action, int modifiers, Operation<Void> original) {
EventFlow.post(new KeyboardEvent.Press(key, scancode, action, modifiers));
original.call(window, key, scancode, action, modifiers);
private void onKey(long window, int action, KeyInput input, Operation<Void> original) {
EventFlow.post(new KeyboardEvent.Press(input.key(), input.scancode(), action, input.modifiers()));
original.call(window, action, input);
}

@Inject(method = "onKey", at = @At("RETURN"))
private void onKeyTail(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) {
private void onKeyTail(long window, int action, KeyInput input, CallbackInfo ci) {
int key = input.key();
if (!InventoryMove.getShouldMove() || !InventoryMove.isKeyMovementRelated(key)) return;
InputUtil.Key fromCode = InputUtil.fromKeyCode(key, scancode);
InputUtil.Key fromCode = InputUtil.fromKeyCode(input);
KeyBinding.setKeyPressed(fromCode, action != 0);
}

@WrapMethod(method = "onChar")
private void onChar(long window, int codePoint, int modifiers, Operation<Void> original) {
char[] chars = Character.toChars(codePoint);
private void onChar(long window, CharInput input, Operation<Void> original) {
char[] chars = Character.toChars(input.codepoint());

for (char c : chars)
EventFlow.post(new KeyboardEvent.Char(c));

original.call(window, codePoint, modifiers);
original.call(window, input);
}
}
9 changes: 5 additions & 4 deletions src/main/java/com/lambda/mixin/input/MouseMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import net.minecraft.client.Mouse;
import net.minecraft.client.input.MouseInput;
import net.minecraft.client.option.SimpleOption;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -36,10 +37,10 @@ public class MouseMixin {

@Shadow private double y;

@WrapMethod(method = "onMouseButton(JIII)V")
private void onMouseButton(long window, int button, int action, int mods, Operation<Void> original) {
if (!EventFlow.post(new MouseEvent.Click(button, action, mods)).isCanceled())
original.call(window, button, action, mods);
@WrapMethod(method = "onMouseButton")
private void onMouseButton(long window, MouseInput input, int action, Operation<Void> original) {
if (!EventFlow.post(new MouseEvent.Click(input.button(), action, input.modifiers())).isCanceled())
original.call(window, input, action);
}

@WrapMethod(method = "onMouseScroll(JDD)V")
Expand Down
Loading