minecraft-src/net/minecraft/client/ScrollWheelHandler.java
2025-07-04 02:00:41 +03:00

49 lines
1.1 KiB
Java

package net.minecraft.client;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.joml.Vector2i;
@Environment(EnvType.CLIENT)
public class ScrollWheelHandler {
private double accumulatedScrollX;
private double accumulatedScrollY;
public Vector2i onMouseScroll(double d, double e) {
if (this.accumulatedScrollX != 0.0 && Math.signum(d) != Math.signum(this.accumulatedScrollX)) {
this.accumulatedScrollX = 0.0;
}
if (this.accumulatedScrollY != 0.0 && Math.signum(e) != Math.signum(this.accumulatedScrollY)) {
this.accumulatedScrollY = 0.0;
}
this.accumulatedScrollX += d;
this.accumulatedScrollY += e;
int i = (int)this.accumulatedScrollX;
int j = (int)this.accumulatedScrollY;
if (i == 0 && j == 0) {
return new Vector2i(0, 0);
} else {
this.accumulatedScrollX -= i;
this.accumulatedScrollY -= j;
return new Vector2i(i, j);
}
}
public static int getNextScrollWheelSelection(double d, int i, int j) {
int k = (int)Math.signum(d);
i -= k;
i = Math.max(-1, i);
while (i < 0) {
i += j;
}
while (i >= j) {
i -= j;
}
return i;
}
}