File size: 1,535 Bytes
d46f4a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package net.minecraft.client;

import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.joml.Vector2i;

@OnlyIn(Dist.CLIENT)
public class ScrollWheelHandler {
    private double accumulatedScrollX;
    private double accumulatedScrollY;

    public Vector2i onMouseScroll(double p_360932_, double p_361863_) {
        if (this.accumulatedScrollX != 0.0 && Math.signum(p_360932_) != Math.signum(this.accumulatedScrollX)) {
            this.accumulatedScrollX = 0.0;
        }

        if (this.accumulatedScrollY != 0.0 && Math.signum(p_361863_) != Math.signum(this.accumulatedScrollY)) {
            this.accumulatedScrollY = 0.0;
        }

        this.accumulatedScrollX += p_360932_;
        this.accumulatedScrollY += p_361863_;
        int i = (int)this.accumulatedScrollX;
        int j = (int)this.accumulatedScrollY;
        if (i == 0 && j == 0) {
            return new Vector2i(0, 0);
        } else {
            this.accumulatedScrollX -= (double)i;
            this.accumulatedScrollY -= (double)j;
            return new Vector2i(i, j);
        }
    }

    public static int getNextScrollWheelSelection(double p_363884_, int p_366040_, int p_361773_) {
        int i = (int)Math.signum(p_363884_);
        p_366040_ -= i;
        p_366040_ = Math.max(-1, p_366040_);

        while (p_366040_ < 0) {
            p_366040_ += p_361773_;
        }

        while (p_366040_ >= p_361773_) {
            p_366040_ -= p_361773_;
        }

        return p_366040_;
    }
}