Badge images report the certificate status at the moment they are fetched
BackProbeIntegrity Authority
dev/mishka/gamblerplus/client/TrackerScreen.class 29.3 KB
Class
public final synchronized dev.mishka.gamblerplus.client.TrackerScreen
Extends
net.minecraft.class_437
Implements
nothing
Compiled for
Java 21

Reconstructed source

// Reconstructed from bytecode by BackProbe (dev/mishka/gamblerplus/client/TrackerScreen.class, Java 21); this is not the original source.

package dev.mishka.gamblerplus.client;

import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Objects;
import net.minecraft.class_10799;
import net.minecraft.class_11909;
import net.minecraft.class_2561;
import net.minecraft.class_2960;
import net.minecraft.class_310;
import net.minecraft.class_332;
import net.minecraft.class_437;

public final class TrackerScreen extends class_437 {

    private static final class_2960 ICON;
    private static final int PANEL_W;
    private static final int PANEL_H;
    private static final int SIDE_W;
    private static final int SIDE_GAP;
    private static final int ROW_H;
    private static final int SESSION_ROW_H;
    private static final int ICON_SIZE;
    private static final long ANIM_MS;
    private static final DateTimeFormatter TIME_FMT;
    private static final DateTimeFormatter DATE_FMT;
    private final Config config;
    private final Stats stats;
    private final SessionManager sessions;
    private int px;
    private int py;
    private int sessionsX;
    private int verifyX;
    private boolean sidePanelsFit;
    private int scroll;
    private int sessionScroll;
    private long openedAtMs;
    private float uiScale;
    private int virtualW;
    private int virtualH;
    private final EnumMap anims;
    private final int[][] hitboxes;
    private final List pastSessionHits;
    private final List pastSessionRefs;
    private final List pastDeleteHits;
    private final List pastDeleteRefs;

    public TrackerScreen(Config arg0, Stats arg1) {
        super(class_310.method_1551(), class_310.method_1551().field_1772, class_2561.method_43470("Gambler Plus"));
        this.uiScale = 1.0F;
        this.anims = new EnumMap(TrackerScreen.HitId.class);
        this.hitboxes = new int[][TrackerScreen.HitId.values().length];
        this.pastSessionHits = new ArrayList();
        this.pastSessionRefs = new ArrayList();
        this.pastDeleteHits = new ArrayList();
        this.pastDeleteRefs = new ArrayList();
        this.config = arg0;
        this.stats = arg1;
        this.sessions = GamblerPlusClient.SESSIONS;
        return;
    }

    protected void method_25426() {
        int var1 = 16;
        int var2 = 852;
        float var3 = (((float) (this.field_22789 - var1)) / ((float) var2));
        float var4 = (((float) (this.field_22790 - var1)) / 300.0);
        float var5 = Math.min(1.0F, Math.min(var3, var4));
        if (Float.compare(var5, 0.6499999761581421) < 0) goto L64;
        this.uiScale = var5;
        this.sidePanelsFit = true;
        goto L108;
    L64:
        float var6 = (((float) (this.field_22789 - var1)) / 500.0);
        float var7 = (((float) (this.field_22790 - var1)) / 300.0);
        this.uiScale = Math.min(1.0F, Math.min(var6, var7));
        this.sidePanelsFit = false;
    L108:
        this.virtualW = Math.round((((float) this.field_22789) / this.uiScale));
        this.virtualH = Math.round((((float) this.field_22790) / this.uiScale));
        this.px = ((this.virtualW - 500) / 2);
        this.py = ((this.virtualH - 300) / 2);
        this.sessionsX = ((this.px - 8) - 168);
        this.verifyX = ((this.px + 500) + 8);
        this.openedAtMs = System.currentTimeMillis();
        return;
    }

    public boolean method_25421() {
        return false;
    }

    public void method_25394(class_332 arg0, int arg1, int arg2, float arg3) {
        float var5 = ((float) (System.currentTimeMillis() - this.openedAtMs));
        float var6 = Theme.easeOutBack(Theme.smoothStep(0.0F, 260.0, var5));
        float var7 = Theme.easeOutBack(Theme.smoothStep(220.0, 500.0, var5));
        float var8 = Theme.easeOutBack(Theme.smoothStep(300.0, 580.0, var5));
        float var9 = Theme.smoothStep(0.0F, 200.0, var5);
        int var10 = ((int) (176.0 * var9));
        arg0.method_25294(0, 0, this.field_22789, this.field_22790, (var10 << 24));
        int var11 = Math.round((((float) arg1) / this.uiScale));
        int var12 = Math.round((((float) arg2) / this.uiScale));
        var var13 = arg0.method_51448();
        var13.pushMatrix();
        var13.scale(this.uiScale, this.uiScale);
        this.clearHitboxes();
        var13.pushMatrix();
        var13.translate(0.0F, ((1.0F - var6) * -32.0));
        arg0.method_25294(this.px, this.py, (this.px + 500), (this.py + 300), -15855596);
        this.outline(arg0, this.px, this.py, (this.px + 500), (this.py + 300), -14276046);
        this.drawHeader(arg0);
        this.drawSummary(arg0, var11, var12);
        this.drawLog(arg0);
        this.drawFooter(arg0, var11, var12);
        var var14 = "made by q3c on dc";
        int var15 = this.field_22793.method_1727(var14);
        arg0.method_51433(this.field_22793, var14, (this.px + ((500 - var15) / 2)), ((this.py + 300) + 6), -11709599, false);
        var13.popMatrix();
        if (!this.sidePanelsFit) goto L391;
        var13.pushMatrix();
        var13.translate(0.0F, ((1.0F - var7) * -40.0));
        this.drawSessionsPanel(arg0, var11, var12);
        var13.popMatrix();
        var13.pushMatrix();
        var13.translate(0.0F, ((1.0F - var8) * -40.0));
        this.drawVerifyPanel(arg0, var11, var12);
        var13.popMatrix();
    L391:
        var13.popMatrix();
        return;
    }

    private void drawHeader(class_332 arg0) {
        int var2 = this.px;
        int var3 = this.py;
        int var4 = 28;
        arg0.method_25294(var2, var3, (var2 + 500), (var3 + var4), -15329251);
        arg0.method_25294(var2, (var3 + var4), (var2 + 500), ((var3 + var4) + 1), -14276046);
        int var5 = (var2 + 8);
        int var6 = (var3 + ((var4 - 20) / 2));
        this.drawIcon(arg0, var5, var6, 20);
        int var7 = ((var5 + 20) + 8);
        Objects.requireNonNull(this.field_22793);
        int var8 = (var3 + ((var4 - 9) / 2));
        arg0.method_51433(this.field_22793, "Gambler", var7, var8, -1644565, false);
        int var9 = this.field_22793.method_1727("Gambler ");
        arg0.method_51433(this.field_22793, "Plus", (var7 + var9), var8, -13927425, false);
        if (!this.config.gamblingMode()) goto L180;
        var stack0 = "TRACKING";
        goto L183;
    L180:
        stack0 = "PAUSED";
    L183:
        var var10 = stack0;
        int var11 = this.field_22793.method_1727(var10);
        int var12 = (((var2 + 500) - var11) - 12);
        stack0 = arg0;
        var stack1 = this.field_22793;
        var stack2 = var10;
        var stack3 = var12;
        var stack4 = var8;
        if (!this.config.gamblingMode()) goto L236;
        var stack5 = -11870592;
        goto L239;
    L236:
        stack5 = -11709599;
    L239:
        stack0.method_51433(stack1, stack2, stack3, stack4, stack5, false);
        return;
    }

    private void drawSummary(class_332 arg0, int arg1, int arg2) {
        int var4 = (this.px + 14);
        int var5 = (this.py + 40);
        int var6 = 152;
        arg0.method_51433(this.field_22793, "SESSION", var4, var5, -11709599, false);
        arg0.method_51433(this.field_22793, "ALL TIME", (var4 + var6), var5, -11709599, false);
        arg0.method_51433(this.field_22793, "STREAKS", (var4 + (var6 * 2)), var5, -11709599, false);
        long var7 = this.stats.sessionNet();
        long var9 = this.stats.allTimeNet();
        arg0.method_51433(this.field_22793, AmountFormat.signed(var7), var4, (var5 + 12), Theme.color(var7), false);
        arg0.method_51433(this.field_22793, AmountFormat.signed(var9), (var4 + var6), (var5 + 12), Theme.color(var9), false);
        var stack0 = arg0;
        var stack1 = this.field_22793;
        var stack2 = indy.makeConcatWithConstants(this.stats.lossStreak(), this.stats.winStreak());
        var stack3 = (var4 + (var6 * 2));
        var stack4 = (var5 + 12);
        if (this.stats.lossStreak() < this.config.streakThreshold()) goto L220;
        var stack5 = -1096636;
        goto L223;
    L220:
        stack5 = -1644565;
    L223:
        stack0.method_51433(stack1, stack2, stack3, stack4, stack5, false);
        this.subLine(arg0, var4, (var5 + 26), "in", AmountFormat.pretty(this.stats.sessionIn()), -11870592);
        this.subLine(arg0, var4, (var5 + 38), "out", AmountFormat.pretty(this.stats.sessionOut()), -1096636);
        this.subLine(arg0, var4, (var5 + 50), "trades", indy.makeConcatWithConstants(this.stats.sessionInCount(), this.stats.sessionOutCount()), -8748911);
        this.subLine(arg0, (var4 + var6), (var5 + 26), "in", AmountFormat.pretty(this.stats.allTimeIn()), -11870592);
        this.subLine(arg0, (var4 + var6), (var5 + 38), "out", AmountFormat.pretty(this.stats.allTimeOut()), -1096636);
        this.subLine(arg0, (var4 + var6), (var5 + 50), "trades", indy.makeConcatWithConstants(this.stats.allTimeInCount(), this.stats.allTimeOutCount()), -8748911);
        this.subLine(arg0, (var4 + (var6 * 2)), (var5 + 26), "worst", indy.makeConcatWithConstants(this.stats.longestLossStreak()), -1096636);
        this.subLine(arg0, (var4 + (var6 * 2)), (var5 + 38), "best", indy.makeConcatWithConstants(this.stats.longestWinStreak()), -11870592);
        this.drawTriggerControl(arg0, (var4 + (var6 * 2)), (var5 + 50), arg1, arg2);
        arg0.method_25294((this.px + 14), (var5 + 66), ((this.px + 500) - 14), (var5 + 67), -14736855);
        return;
    }

    private void subLine(class_332 arg0, int arg1, int arg2, String arg3, String arg4, int arg5) {
        arg0.method_51433(this.field_22793, arg3, arg1, arg2, -11709599, false);
        int var7 = this.field_22793.method_1727(arg3);
        arg0.method_51433(this.field_22793, arg4, ((arg1 + var7) + 6), arg2, arg5, false);
        return;
    }

    private void drawTriggerControl(class_332 arg0, int arg1, int arg2, int arg3, int arg4) {
        arg0.method_51433(this.field_22793, "trigger", arg1, arg2, -11709599, false);
        int var6 = ((arg1 + this.field_22793.method_1727("trigger")) + 6);
        int var7 = 10;
        int var8 = 11;
        int var9 = (arg2 - 2);
        int var10 = this.config.streakThreshold();
        if (var10 <= 2) goto L66;
        var stack0 = 1;
        goto L67;
    L66:
        stack0 = 0;
    L67:
        int var11 = stack0;
        if (var10 >= 20) goto L80;
        stack0 = 1;
        goto L81;
    L80:
        stack0 = 0;
    L81:
        int var12 = stack0;
        this.miniButton(arg0, "-", var6, var9, var7, var8, arg3, arg4, TrackerScreen.HitId.STREAK_DOWN, var11);
        var6 = (var6 + (var7 + 4));
        var var13 = String.valueOf(var10);
        int var14 = this.field_22793.method_1727(var13);
        arg0.method_51433(this.field_22793, var13, var6, arg2, -1644565, false);
        var6 = (var6 + (var14 + 4));
        this.miniButton(arg0, "+", var6, var9, var7, var8, arg3, arg4, TrackerScreen.HitId.STREAK_UP, var12);
        return;
    }

    private void miniButton(class_332 arg0, String arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, TrackerScreen.HitId arg8, boolean arg9) {
        if (arg9 == 0) goto L41;
        if (arg6 < arg2) goto L41;
        if (arg6 >= (arg2 + arg4)) goto L41;
        if (arg7 < arg3) goto L41;
        if (arg7 >= (arg3 + arg5)) goto L41;
        var stack0 = 1;
        goto L42;
    L41:
        stack0 = 0;
    L42:
        int var11 = stack0;
        stack0 = arg0;
        var stack1 = arg2;
        var stack2 = arg3;
        var stack3 = (arg2 + arg4);
        var stack4 = (arg3 + arg5);
        if (var11 == 0) goto L68;
        var stack5 = -15000028;
        goto L71;
    L68:
        stack5 = -15329251;
    L71:
        stack0.method_25294(stack1, stack2, stack3, stack4, stack5);
        stack0 = this;
        stack1 = arg0;
        stack2 = arg2;
        stack3 = arg3;
        stack4 = (arg2 + arg4);
        stack5 = (arg3 + arg5);
        if (var11 == 0) goto L99;
        var stack6 = -13927425;
        goto L101;
    L99:
        stack6 = -14276046;
    L101:
        stack0.outline(stack1, stack2, stack3, stack4, stack5, stack6);
        int var12 = this.field_22793.method_1727(arg1);
        if (arg9 == 0) goto L136;
        if (var11 == 0) goto L130;
        stack0 = -13927425;
        goto L139;
    L130:
        stack0 = -1644565;
        goto L139;
    L136:
        stack0 = -11709599;
    L139:
        int var13 = stack0;
        Objects.requireNonNull(this.field_22793);
        arg0.method_51433(this.field_22793, arg1, (arg2 + ((arg4 - var12) / 2)), ((arg3 + ((arg5 - 9) / 2)) + 1), var13, false);
        stack0 = this.hitboxes;
        stack1 = arg8.ordinal();
        if (arg9 == 0) goto L226;
        stack2 = new int[4];
        stack2[0] = arg2;
        stack2[1] = arg3;
        stack2[2] = (arg2 + arg4);
        stack2[3] = (arg3 + arg5);
        goto L227;
    L226:
        stack2 = null;
    L227:
        stack0[stack1] = stack2;
        return;
    }

    private void drawLog(class_332 arg0) {
        int var2 = (this.px + 14);
        int var3 = (this.py + 116);
        int var4 = 472;
        int var5 = 108;
        arg0.method_51433(this.field_22793, "RECENT PAYMENTS", var2, var3, -11709599, false);
        int var6 = (var3 + 12);
        int var7 = (var6 + var5);
        arg0.method_25294(var2, var6, (var2 + var4), var7, -15000028);
        this.outline(arg0, var2, var6, (var2 + var4), var7, -14276046);
        var var8 = this.stats.snapshot();
        if (!var8.isEmpty()) goto L171;
        if (!this.config.gamblingMode()) goto L122;
        var stack0 = "waiting for the next payment...";
        goto L125;
    L122:
        stack0 = "tracking paused - turn it on to record payments";
    L125:
        var var9 = stack0;
        int var10 = this.field_22793.method_1727(var9);
        arg0.method_51433(this.field_22793, var9, (var2 + ((var4 - var10) / 2)), ((var6 + (var5 / 2)) - 4), -11709599, false);
        return;
    L171:
        var9 = (var5 / 12);
        var10 = Math.min(var9, var8.size());
        int var11 = Math.max(0, Math.min(this.scroll, (var8.size() - var10)));
        arg0.method_44379((var2 + 1), (var6 + 1), ((var2 + var4) - 1), (var7 - 1));
        int var12 = 0;
    L239:
        if (var12 >= var10) goto L500;
        var var13 = ((PaymentEvent) var8.get((var11 + var12)));
        int var14 = ((var6 + 2) + (var12 * 12));
        if ((var12 & 1) != 1) goto L310;
        arg0.method_25294((var2 + 1), (var14 - 2), ((var2 + var4) - 1), ((var14 + 12) - 2), 150994943);
    L310:
        var var15 = TrackerScreen.TIME_FMT.format(Instant.ofEpochMilli(var13.timestampMs()));
        if (!var13.incoming()) goto L340;
        stack0 = "IN ";
        goto L343;
    L340:
        stack0 = "OUT";
    L343:
        var var16 = stack0;
        if (!var13.incoming()) goto L359;
        stack0 = "+";
        goto L362;
    L359:
        stack0 = "-";
    L362:
        var var17 = indy.makeConcatWithConstants(stack0, AmountFormat.pretty(var13.amount()));
        if (!var13.incoming()) goto L391;
        stack0 = -11870592;
        goto L394;
    L391:
        stack0 = -1096636;
    L394:
        int var18 = stack0;
        arg0.method_51433(this.field_22793, var15, (var2 + 8), var14, -11709599, false);
        arg0.method_51433(this.field_22793, var16, (var2 + 60), var14, var18, false);
        arg0.method_51433(this.field_22793, var13.player(), (var2 + 90), var14, -1644565, false);
        int var19 = this.field_22793.method_1727(var17);
        arg0.method_51433(this.field_22793, var17, (((var2 + var4) - 10) - var19), var14, var18, false);
        var12 += 1;
        goto L239;
    L500:
        arg0.method_44380();
        if (var8.size() <= var9) goto L626;
        var12 = ((var2 + var4) - 4);
        var13 = (var6 + 2);
        var14 = (var5 - 4);
        var15 = Math.max(12, ((var14 * var9) / var8.size()));
        var16 = (((var14 - var15) * var11) / Math.max(1, (var8.size() - var9)));
        arg0.method_25294(var12, var13, (var12 + 2), (var13 + var14), -14276046);
        arg0.method_25294(var12, (var13 + var16), (var12 + 2), ((var13 + var16) + var15), -8748911);
    L626:
        return;
    }

    private void drawFooter(class_332 arg0, int arg1, int arg2) {
        int var4 = ((this.py + 300) - 50);
        arg0.method_25294(this.px, var4, (this.px + 500), (var4 + 1), -14276046);
        int var5 = (var4 + 8);
        int var6 = (this.px + 14);
        var6 = this.pill(arg0, "display", this.config.hudDisplay().name().toLowerCase(), var6, var5, arg1, arg2, TrackerScreen.HitId.DISPLAY);
        var6 = this.pill(arg0, "anchor", this.anchorLabel(), (var6 + 8), var5, arg1, arg2, TrackerScreen.HitId.ANCHOR);
        var var7 = Keybinds.openUi.method_16007().getString();
        var var8 = indy.makeConcatWithConstants(var7);
        int var9 = this.field_22793.method_1727(var8);
        arg0.method_51433(this.field_22793, var8, (((this.px + 500) - 14) - var9), (var5 + 2), -11709599, false);
        int var10 = (var4 + 28);
        int var11 = (this.px + 14);
        var11 = this.toggle(arg0, "tracking", this.config.gamblingMode(), var11, var10, arg1, arg2, TrackerScreen.HitId.GAMBLING);
        var11 = this.toggle(arg0, "hud bar", this.config.hudBar(), (var11 + 14), var10, arg1, arg2, TrackerScreen.HitId.HUD);
        var11 = this.toggle(arg0, "toast", this.config.showToast(), (var11 + 14), var10, arg1, arg2, TrackerScreen.HitId.TOAST);
        return;
    }

    private void drawSessionsPanel(class_332 arg0, int arg1, int arg2) {
        int var4 = this.sessionsX;
        int var5 = this.py;
        int var6 = 168;
        int var7 = 300;
        arg0.method_25294(var4, var5, (var4 + var6), (var5 + var7), -15855596);
        this.outline(arg0, var4, var5, (var4 + var6), (var5 + var7), -14276046);
        arg0.method_25294(var4, var5, (var4 + var6), (var5 + 24), -15329251);
        arg0.method_25294(var4, (var5 + 24), (var4 + var6), (var5 + 25), -14276046);
        arg0.method_51433(this.field_22793, "SESSIONS", (var4 + 12), (var5 + 9), -1644565, false);
        int var8 = (var5 + 32);
        var var9 = this.sessions.snapshotCurrent(this.stats);
        int var10 = (var4 + 10);
        int var11 = (var6 - 20);
        if (var9 == null) goto L543;
        int var12 = 58;
        if (arg1 < var10) goto L209;
        if (arg1 >= (var10 + var11)) goto L209;
        if (arg2 < var8) goto L209;
        if (arg2 >= (var8 + 44)) goto L209;
        var stack0 = 1;
        goto L210;
    L209:
        stack0 = 0;
    L210:
        int var13 = stack0;
        stack0 = arg0;
        var stack1 = var10;
        var stack2 = var8;
        var stack3 = (var10 + var11);
        var stack4 = (var8 + var12);
        if (var13 == 0) goto L238;
        var stack5 = -15000028;
        goto L241;
    L238:
        stack5 = -15329251;
    L241:
        stack0.method_25294(stack1, stack2, stack3, stack4, stack5);
        stack0 = this;
        stack1 = arg0;
        stack2 = var10;
        stack3 = var8;
        stack4 = (var10 + var11);
        stack5 = (var8 + var12);
        if (var13 == 0) goto L271;
        var stack6 = -11870592;
        goto L273;
    L271:
        stack6 = -14276046;
    L273:
        stack0.outline(stack1, stack2, stack3, stack4, stack5, stack6);
        arg0.method_25294(var10, var8, (var10 + 2), (var8 + var12), -11870592);
        arg0.method_51433(this.field_22793, var9.label(), (var10 + 8), (var8 + 5), -1644565, false);
        var var14 = indy.makeConcatWithConstants(this.formatDuration((System.currentTimeMillis() - var9.startedAt())));
        arg0.method_51433(this.field_22793, var14, (var10 + 8), (var8 + 17), -11709599, false);
        var var15 = AmountFormat.signed(var9.net());
        arg0.method_51433(this.field_22793, var15, (var10 + 8), (var8 + 30), Theme.color(var9.net()), false);
        var var16 = indy.makeConcatWithConstants(var9.inCount(), var9.outCount());
        int var17 = this.field_22793.method_1727(var16);
        arg0.method_51433(this.field_22793, var16, (((var10 + var11) - 8) - var17), (var8 + 30), -8748911, false);
        stack2 = new int[4];
        stack2[0] = var10;
        stack2[1] = var8;
        stack2[2] = (var10 + var11);
        stack2[3] = (var8 + 44);
        this.hitboxes[TrackerScreen.HitId.CURRENT_SESSION_DETAIL.ordinal()] = stack2;
        this.button(arg0, "end session", var10, (var8 + 44), var11, 12, arg1, arg2, TrackerScreen.HitId.END_SESSION, -1096636);
        var8 = (var8 + (var12 + 8));
        goto L677;
    L543:
        var12 = 44;
        arg0.method_25294(var10, var8, (var10 + var11), (var8 + var12), -15329251);
        this.outline(arg0, var10, var8, (var10 + var11), (var8 + var12), -14276046);
        var13 = "no active session";
        var14 = this.field_22793.method_1727(var13);
        arg0.method_51433(this.field_22793, var13, (var10 + ((var11 - var14) / 2)), (var8 + 8), -11709599, false);
        this.button(arg0, "start session", (var10 + 6), (var8 + 24), (var11 - 12), 14, arg1, arg2, TrackerScreen.HitId.NEW_SESSION, -11870592);
        var8 = (var8 + (var12 + 8));
    L677:
        if (var9 == null) goto L709;
        this.button(arg0, "new session", var10, var8, var11, 14, arg1, arg2, TrackerScreen.HitId.NEW_SESSION, -13927425);
        var8 += 20;
    L709:
        arg0.method_51433(this.field_22793, "PAST", (var4 + 12), var8, -11709599, false);
        var8 += 12;
        var12 = var8;
        var13 = ((var5 + var7) - 8);
        var14 = (var13 - var12);
        this.pastSessionHits.clear();
        this.pastSessionRefs.clear();
        this.pastDeleteHits.clear();
        this.pastDeleteRefs.clear();
        var15 = this.sessions.past();
        if (!var15.isEmpty()) goto L858;
        var16 = "nothing yet";
        var17 = this.field_22793.method_1727(var16);
        arg0.method_51433(this.field_22793, var16, (var4 + ((var6 - var17) / 2)), (var12 + 6), -11709599, false);
        goto L1512;
    L858:
        arg0.method_44379((var4 + 1), var12, ((var4 + var6) - 1), var13);
        var16 = (var14 / 22);
        var17 = Math.max(0, Math.min(this.sessionScroll, (var15.size() - var16)));
        int var18 = Math.min((var16 + 1), (var15.size() - var17));
        int var19 = 0;
    L929:
        if (var19 >= var18) goto L1408;
        var var20 = ((Session) var15.get((var17 + var19)));
        int var21 = (var12 + (var19 * 22));
        int var22 = ((var4 + var6) - 16);
        int var23 = (var21 - 1);
        int var24 = 10;
        int var25 = 10;
        if (arg1 < var22) goto L1021;
        if (arg1 >= (var22 + var24)) goto L1021;
        if (arg2 < var23) goto L1021;
        if (arg2 >= (var23 + var25)) goto L1021;
        stack0 = 1;
        goto L1022;
    L1021:
        stack0 = 0;
    L1022:
        int var26 = stack0;
        if (var26 != 0) goto L1071;
        if (arg1 < (var4 + 4)) goto L1071;
        if (arg1 >= ((var4 + var6) - 4)) goto L1071;
        if (arg2 < (var21 - 2)) goto L1071;
        if (arg2 >= ((var21 + 22) - 2)) goto L1071;
        stack0 = 1;
        goto L1072;
    L1071:
        stack0 = 0;
    L1072:
        int var27 = stack0;
        if (var27 == 0) goto L1108;
        arg0.method_25294((var4 + 4), (var21 - 2), ((var4 + var6) - 4), ((var21 + 22) - 2), 419430399);
    L1108:
        arg0.method_51433(this.field_22793, TrackerScreen.DATE_FMT.format(Instant.ofEpochMilli(var20.startedAt())), (var4 + 10), var21, -11709599, false);
        var var28 = AmountFormat.signed(var20.net());
        int var29 = this.field_22793.method_1727(var28);
        arg0.method_51433(this.field_22793, var28, (((var4 + var6) - 22) - var29), var21, Theme.color(var20.net()), false);
        var var30 = indy.makeConcatWithConstants(var20.inCount(), var20.outCount(), this.formatDuration(var20.durationMs()));
        arg0.method_51433(this.field_22793, var30, (var4 + 10), (var21 + 10), -8748911, false);
        stack0 = arg0;
        stack1 = this.field_22793;
        stack2 = "x";
        stack3 = (var22 + 2);
        stack4 = (var23 + 1);
        if (var26 == 0) goto L1271;
        stack5 = -1096636;
        goto L1274;
    L1271:
        stack5 = -11709599;
    L1274:
        stack0.method_51433(stack1, stack2, stack3, stack4, stack5, false);
        stack1 = new int[4];
        stack1[0] = (var4 + 4);
        stack1[1] = (var21 - 2);
        stack1[2] = ((var4 + var6) - 4);
        stack1[3] = ((var21 + 22) - 2);
        this.pastSessionHits.add(stack1);
        this.pastSessionRefs.add(var20);
        stack1 = new int[4];
        stack1[0] = (var22 - 2);
        stack1[1] = (var23 - 2);
        stack1[2] = ((var22 + var24) + 2);
        stack1[3] = ((var23 + var25) + 2);
        this.pastDeleteHits.add(stack1);
        this.pastDeleteRefs.add(Long.valueOf(var20.id()));
        var19 += 1;
        goto L929;
    L1408:
        arg0.method_44380();
        if (var15.size() <= var16) goto L1512;
        var19 = ((var4 + var6) - 3);
        var20 = var12;
        var21 = var14;
        var22 = Math.max(10, ((var21 * var16) / var15.size()));
        var23 = (((var21 - var22) * var17) / Math.max(1, (var15.size() - var16)));
        arg0.method_25294(var19, (var20 + var23), (var19 + 2), ((var20 + var23) + var22), -8748911);
    L1512:
        return;
    }

    private void drawVerifyPanel(class_332 arg0, int arg1, int arg2) {
        int var4 = this.verifyX;
        int var5 = this.py;
        int var6 = 168;
        int var7 = 300;
        arg0.method_25294(var4, var5, (var4 + var6), (var5 + var7), -15855596);
        this.outline(arg0, var4, var5, (var4 + var6), (var5 + var7), -14276046);
        arg0.method_25294(var4, var5, (var4 + var6), (var5 + 24), -15329251);
        arg0.method_25294(var4, (var5 + 24), (var4 + var6), (var5 + 25), -14276046);
        arg0.method_51433(this.field_22793, "SETTINGS", (var4 + 12), (var5 + 9), -1644565, false);
        int var8 = (var4 + 12);
        int var9 = (var6 - 24);
        int var10 = (var5 + 32);
        arg0.method_51433(this.field_22793, "verify large payments", var8, var10, -11709599, false);
        var10 += 12;
        this.toggle(arg0, "enabled", this.config.verifyLargePayments(), var8, var10, arg1, arg2, TrackerScreen.HitId.VERIFY_ENABLE);
        var10 += 18;
        int var11 = 20;
        arg0.method_25294(var8, var10, (var8 + var9), (var10 + var11), -15329251);
        this.outline(arg0, var8, var10, (var8 + var9), (var10 + var11), -14276046);
        var var12 = AmountFormat.pretty(this.config.largePaymentThreshold());
        int var13 = this.field_22793.method_1727(var12);
        Objects.requireNonNull(this.field_22793);
        arg0.method_51433(this.field_22793, var12, (var8 + ((var9 - var13) / 2)), (var10 + ((var11 - 9) / 2)), -1644565, false);
        var10 = (var10 + (var11 + 4));
        int var14 = 14;
        int var15 = ((var9 - 6) / 2);
        this.button(arg0, "-", var8, var10, var15, var14, arg1, arg2, TrackerScreen.HitId.THRESHOLD_DOWN, -8748911);
        this.button(arg0, "+", ((var8 + var15) + 6), var10, var15, var14, arg1, arg2, TrackerScreen.HitId.THRESHOLD_UP, -8748911);
        var10 = (var10 + (var14 + 10));
        arg0.method_25294((var4 + 12), var10, ((var4 + var6) - 12), (var10 + 1), -14736855);
        var10 += 8;
        arg0.method_51433(this.field_22793, "rakeback", var8, var10, -11709599, false);
        var10 += 12;
        this.toggle(arg0, "enabled", this.config.rakebackEnabled(), var8, var10, arg1, arg2, TrackerScreen.HitId.RAKEBACK_ENABLE);
        var10 += 18;
        arg0.method_25294(var8, var10, (var8 + var9), (var10 + var11), -15329251);
        this.outline(arg0, var8, var10, (var8 + var9), (var10 + var11), -14276046);
        var var16 = this.formatPct(this.config.rakebackPct());
        int var17 = this.field_22793.method_1727(var16);
        Objects.requireNonNull(this.field_22793);
        arg0.method_51433(this.field_22793, var16, (var8 + ((var9 - var17) / 2)), (var10 + ((var11 - 9) / 2)), -1644565, false);
        var10 = (var10 + (var11 + 4));
        this.button(arg0, "-", var8, var10, var15, var14, arg1, arg2, TrackerScreen.HitId.RATE_DOWN, -8748911);
        this.button(arg0, "+", ((var8 + var15) + 6), var10, var15, var14, arg1, arg2, TrackerScreen.HitId.RATE_UP, -8748911);
        var10 = (var10 + (var14 + 4));
        this.button(arg0, "open list", var8, var10, var9, 16, arg1, arg2, TrackerScreen.HitId.OPEN_RAKEBACK, -13927425);
        return;
    }

    private String formatPct(double arg0) {
        if (Double.compare(arg0, Math.floor(arg0)) != 0) goto L27;
        var stack1 = new Object[1];
        stack1[0] = Double.valueOf(arg0);
        return String.format("%.0f%%", stack1);
    L27:
        stack1 = new Object[1];
        stack1[0] = Double.valueOf(arg0);
        return String.format("%.1f%%", stack1);
    }

    private String anchorLabel() {
        switch (TrackerScreen$1.$SwitchMap$dev$mishka$gamblerplus$client$Config$HudAnchor[this.config.hudAnchor().ordinal()]) {
            case 1: goto L50;
            case 2: goto L56;
            case 3: goto L62;
            default: goto L40;
        }
    L40:
        throw new MatchException(null, null);
    L50:
        var stack0 = "left";
        goto L65;
    L56:
        stack0 = "center";
        goto L65;
    L62:
        stack0 = "right";
    L65:
        return stack0;
    }

    private String formatDuration(long arg0) {
        long var3 = (arg0 / 1000L);
        long var5 = (var3 / 60L);
        long var7 = (var5 / 60L);
        if (Long.compare(var7, 0L) <= 0) goto L42;
        return indy.makeConcatWithConstants(var7, (var5 % 60L));
    L42:
        if (Long.compare(var5, 0L) <= 0) goto L62;
        return indy.makeConcatWithConstants(var5, (var3 % 60L));
    L62:
        return indy.makeConcatWithConstants(var3);
    }

    private int toggle(class_332 arg0, String arg1, boolean arg2, int arg3, int arg4, int arg5, int arg6, TrackerScreen.HitId arg7) {
        int var9 = 28;
        int var10 = 14;
        int var11 = (var10 / 2);
        int var12 = this.field_22793.method_1727(arg1);
        int var13 = ((var9 + 6) + var12);
        int var14 = (var10 + 2);
        float var15 = this.animPos(arg7, arg2);
        if (arg5 < arg3) goto L87;
        if (arg5 >= (arg3 + var13)) goto L87;
        if (arg6 < arg4) goto L87;
        if (arg6 >= (arg4 + var14)) goto L87;
        var stack0 = 1;
        goto L88;
    L87:
        stack0 = 0;
    L88:
        int var16 = stack0;
        if (var16 == 0) goto L100;
        stack0 = -14276046;
        goto L103;
    L100:
        stack0 = -14671061;
    L103:
        int var17 = stack0;
        int var18 = Theme.lerpColor(-12959926, -11870592, var15);
        this.fillPill(arg0, arg3, arg4, var9, var10, var17);
        int var19 = 1;
        int var20 = (var11 - var19);
        int var21 = ((arg3 + var11) + Math.round((var15 * ((float) (var9 - var10)))));
        int var22 = (arg4 + var11);
        this.fillCircle(arg0, var21, var22, var20, var18);
        Objects.requireNonNull(this.field_22793);
        int var23 = ((arg4 + ((var10 - 9) / 2)) + 1);
        stack0 = arg0;
        var stack1 = this.field_22793;
        var stack2 = arg1;
        var stack3 = ((arg3 + var9) + 6);
        var stack4 = var23;
        if (arg2 == 0) goto L231;
        var stack5 = -1644565;
        goto L234;
    L231:
        stack5 = -8748911;
    L234:
        stack0.method_51433(stack1, stack2, stack3, stack4, stack5, false);
        stack2 = new int[4];
        stack2[0] = arg3;
        stack2[1] = arg4;
        stack2[2] = (arg3 + var13);
        stack2[3] = (arg4 + var14);
        this.hitboxes[arg7.ordinal()] = stack2;
        return (arg3 + var13);
    }

    private float animPos(TrackerScreen.HitId arg0, boolean arg1) {
        long var3 = System.currentTimeMillis();
        var var5 = ((TrackerScreen.ToggleAnim) this.anims.get(arg0));
        if (var5 != null) goto L72;
        var5 = new TrackerScreen.ToggleAnim();
        var5.state = arg1;
        var stack0 = var5;
        if (arg1 == 0) goto L47;
        var stack1 = 1.0F;
        goto L48;
    L47:
        stack1 = 0.0F;
    L48:
        stack0.posAtChange = stack1;
        var5.changedAt = (var3 - 999999L);
        this.anims.put(arg0, var5);
    L72:
        if (!var5.state) goto L84;
        stack0 = 1.0F;
        goto L85;
    L84:
        stack0 = 0.0F;
    L85:
        float var6 = stack0;
        float var7 = Math.min(1.0F, (((float) (var3 - var5.changedAt)) / 180.0));
        float var8 = (var5.posAtChange + ((var6 - var5.posAtChange) * Theme.easeOutCubic(var7)));
        if (var5.state == arg1) goto L176;
        var5.posAtChange = var8;
        var5.state = arg1;
        var5.changedAt = var3;
        if (arg1 == 0) goto L163;
        stack0 = 1.0F;
        goto L164;
    L163:
        stack0 = 0.0F;
    L164:
        var6 = stack0;
        var7 = 0.0F;
        var8 = var5.posAtChange;
    L176:
        return var8;
    }

    private void fillPill(class_332 arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
        int var7 = (arg4 / 2);
        arg0.method_25294((arg1 + var7), arg2, ((arg1 + arg3) - var7), (arg2 + arg4), arg5);
        this.fillCircle(arg0, (arg1 + var7), (arg2 + var7), var7, arg5);
        this.fillCircle(arg0, ((arg1 + arg3) - var7), (arg2 + var7), var7, arg5);
        return;
    }

    private void fillCircle(class_332 arg0, int arg1, int arg2, int arg3, int arg4) {
        int var6 = (-arg3);
    L5:
        if (var6 >= arg3) goto L77;
        double var7 = (((double) var6) + 0.5);
        int var9 = ((int) Math.round(Math.sqrt((((double) (arg3 * arg3)) - (var7 * var7)))));
        if (var9 <= 0) goto L71;
        arg0.method_25294((arg1 - var9), (arg2 + var6), (arg1 + var9), ((arg2 + var6) + 1), arg4);
    L71:
        var6 += 1;
        goto L5;
    L77:
        return;
    }

    private int pill(class_332 arg0, String arg1, String arg2, int arg3, int arg4, int arg5, int arg6, TrackerScreen.HitId arg7) {
        var var9 = indy.makeConcatWithConstants(arg1, arg2);
        int var10 = this.field_22793.method_1727(var9);
        int var11 = (var10 + 14);
        int var12 = 14;
        if (arg5 < arg3) goto L69;
        if (arg5 >= (arg3 + var11)) goto L69;
        if (arg6 < arg4) goto L69;
        if (arg6 >= (arg4 + var12)) goto L69;
        var stack0 = 1;
        goto L70;
    L69:
        stack0 = 0;
    L70:
        int var13 = stack0;
        stack0 = arg0;
        var stack1 = arg3;
        var stack2 = arg4;
        var stack3 = (arg3 + var11);
        var stack4 = (arg4 + var12);
        if (var13 == 0) goto L98;
        var stack5 = -14671061;
        goto L101;
    L98:
        stack5 = -15329251;
    L101:
        stack0.method_25294(stack1, stack2, stack3, stack4, stack5);
        this.outline(arg0, arg3, arg4, (arg3 + var11), (arg4 + var12), -14276046);
        arg0.method_51433(this.field_22793, indy.makeConcatWithConstants(arg1), (arg3 + 7), (arg4 + 3), -11709599, false);
        int var14 = this.field_22793.method_1727(indy.makeConcatWithConstants(arg1));
        arg0.method_51433(this.field_22793, arg2, ((arg3 + 7) + var14), (arg4 + 3), -1644565, false);
        stack2 = new int[4];
        stack2[0] = arg3;
        stack2[1] = arg4;
        stack2[2] = (arg3 + var11);
        stack2[3] = (arg4 + var12);
        this.hitboxes[arg7.ordinal()] = stack2;
        return (arg3 + var11);
    }

    private void button(class_332 arg0, String arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, TrackerScreen.HitId arg8, int arg9) {
        if (arg6 < arg2) goto L36;
        if (arg6 >= (arg2 + arg4)) goto L36;
        if (arg7 < arg3) goto L36;
        if (arg7 >= (arg3 + arg5)) goto L36;
        var stack0 = 1;
        goto L37;
    L36:
        stack0 = 0;
    L37:
        int var11 = stack0;
        stack0 = arg0;
        var stack1 = arg2;
        var stack2 = arg3;
        var stack3 = (arg2 + arg4);
        var stack4 = (arg3 + arg5);
        if (var11 == 0) goto L63;
        var stack5 = -15000028;
        goto L66;
    L63:
        stack5 = -15329251;
    L66:
        stack0.method_25294(stack1, stack2, stack3, stack4, stack5);
        stack0 = this;
        stack1 = arg0;
        stack2 = arg2;
        stack3 = arg3;
        stack4 = (arg2 + arg4);
        stack5 = (arg3 + arg5);
        if (var11 == 0) goto L93;
        var stack6 = arg9;
        goto L95;
    L93:
        stack6 = -14276046;
    L95:
        stack0.outline(stack1, stack2, stack3, stack4, stack5, stack6);
        int var12 = this.field_22793.method_1727(arg1);
        Objects.requireNonNull(this.field_22793);
        stack0 = arg0;
        stack1 = this.field_22793;
        stack2 = arg1;
        stack3 = (arg2 + ((arg4 - var12) / 2));
        stack4 = (arg3 + ((arg5 - 9) / 2));
        if (var11 == 0) goto L151;
        stack5 = arg9;
        goto L154;
    L151:
        stack5 = -1644565;
    L154:
        stack0.method_51433(stack1, stack2, stack3, stack4, stack5, false);
        stack2 = new int[4];
        stack2[0] = arg2;
        stack2[1] = arg3;
        stack2[2] = (arg2 + arg4);
        stack2[3] = (arg3 + arg5);
        this.hitboxes[arg8.ordinal()] = stack2;
        return;
    }

    private void drawIcon(class_332 arg0, int arg1, int arg2, int arg3) {
        float var5 = (((float) arg3) / 500.0);
        var var6 = arg0.method_51448();
        var6.pushMatrix();
        var6.translate(((float) arg1), ((float) arg2));
        var6.scale(var5, var5);
        arg0.method_25291(class_10799.field_56883, TrackerScreen.ICON, 0, 0, 0.0F, 0.0F, 500, 500, 500, 500, -1);
        var6.popMatrix();
        return;
    }

    private void outline(class_332 arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
        arg0.method_25294(arg1, arg2, arg3, (arg2 + 1), arg5);
        arg0.method_25294(arg1, (arg4 - 1), arg3, arg4, arg5);
        arg0.method_25294(arg1, arg2, (arg1 + 1), arg4, arg5);
        arg0.method_25294((arg3 - 1), arg2, arg3, arg4, arg5);
        return;
    }

    private void clearHitboxes() {
        int var1 = 0;
    L2:
        if (var1 >= this.hitboxes.length) goto L24;
        this.hitboxes[var1] = null;
        var1 += 1;
        goto L2;
    L24:
        return;
    }

    public boolean method_25402(class_11909 arg0, boolean arg1) {
        int var3 = Math.round((((float) arg0.comp_4798()) / this.uiScale));
        int var4 = Math.round((((float) arg0.comp_4799()) / this.uiScale));
        int var5 = 0;
    L32:
        if (var5 >= this.hitboxes.length) goto L416;
        var var6 = this.hitboxes[var5];
        if (var6 != null) goto L59;
        goto L410;
    L59:
        if (var3 < var6[0]) goto L410;
        if (var3 >= var6[2]) goto L410;
        if (var4 < var6[1]) goto L410;
        if (var4 >= var6[3]) goto L410;
        switch (TrackerScreen.HitId.values()[var5].ordinal()) {
            case 0: goto L184;
            case 1: goto L194;
            case 2: goto L204;
            case 3: goto L214;
            case 4: goto L224;
            case 5: goto L234;
            case 6: goto L248;
            case 7: goto L388;
            case 8: goto L262;
            case 9: goto L272;
            case 10: goto L283;
            case 11: goto L294;
            case 12: goto L313;
            case 13: goto L332;
            case 14: goto L342;
            case 15: goto L353;
            case 16: goto L364;
            default: goto L408;
        }
    L184:
        this.config.toggleGamblingMode();
        goto L408;
    L194:
        this.config.toggleHudBar();
        goto L408;
    L204:
        this.config.toggleShowToast();
        goto L408;
    L214:
        this.config.cycleHudDisplay();
        goto L408;
    L224:
        this.config.cycleHudAnchor();
        goto L408;
    L234:
        this.sessions.startNew(this.stats);
        goto L408;
    L248:
        this.sessions.endCurrent(this.stats);
        goto L408;
    L262:
        this.config.toggleVerify();
        goto L408;
    L272:
        this.config.stepThreshold(-1);
        goto L408;
    L283:
        this.config.stepThreshold(1);
        goto L408;
    L294:
        this.config.setStreakThreshold((this.config.streakThreshold() - 1));
        goto L408;
    L313:
        this.config.setStreakThreshold((this.config.streakThreshold() + 1));
        goto L408;
    L332:
        this.config.toggleRakeback();
        goto L408;
    L342:
        this.config.stepRakebackPct(-1);
        goto L408;
    L353:
        this.config.stepRakebackPct(1);
        goto L408;
    L364:
        class_310.method_1551().method_29970(new RakebackScreen(this.config, this.sessions));
        goto L408;
    L388:
        class_310.method_1551().method_29970(new SessionDetailScreen(indy.get(this), true));
    L408:
        return true;
    L410:
        var5 += 1;
        goto L32;
    L416:
        var5 = 0;
    L419:
        if (var5 >= this.pastDeleteHits.size()) goto L516;
        var6 = ((int[]) this.pastDeleteHits.get(var5));
        if (var3 < var6[0]) goto L510;
        if (var3 >= var6[2]) goto L510;
        if (var4 < var6[1]) goto L510;
        if (var4 >= var6[3]) goto L510;
        this.sessions.deletePast(((Long) this.pastDeleteRefs.get(var5)).longValue());
        return true;
    L510:
        var5 += 1;
        goto L419;
    L516:
        var5 = 0;
    L519:
        if (var5 >= this.pastSessionHits.size()) goto L628;
        var6 = ((int[]) this.pastSessionHits.get(var5));
        if (var3 < var6[0]) goto L622;
        if (var3 >= var6[2]) goto L622;
        if (var4 < var6[1]) goto L622;
        if (var4 >= var6[3]) goto L622;
        var var7 = ((Session) this.pastSessionRefs.get(var5));
        class_310.method_1551().method_29970(new SessionDetailScreen(indy.get(var7), false));
        return true;
    L622:
        var5 += 1;
        goto L519;
    L628:
        return super.method_25402(arg0, arg1);
    }

    public boolean method_25401(double arg0, double arg1, double arg2, double arg3) {
        int var9 = Math.round((((float) arg0) / this.uiScale));
        int var10 = Math.round((((float) arg1) / this.uiScale));
        if (Double.compare(arg3, 0.0) >= 0) goto L35;
        var stack0 = 1;
        goto L36;
    L35:
        stack0 = -1;
    L36:
        int var11 = stack0;
        if (!this.sidePanelsFit) goto L84;
        if (var9 < this.sessionsX) goto L84;
        if (var9 >= (this.sessionsX + 168)) goto L84;
        this.sessionScroll = Math.max(0, (this.sessionScroll + var11));
        return true;
    L84:
        stack0 = this;
        var stack1 = 0;
        var stack2 = this.scroll;
        if (Double.compare(arg3, 0.0) >= 0) goto L101;
        var stack3 = -1;
        goto L102;
    L101:
        stack3 = 1;
    L102:
        stack0.scroll = Math.max(stack1, (stack2 + stack3));
        return true;
    }

    private static Session lambda$mouseClicked$1(Session arg0) {
        return arg0;
    }

    private Session lambda$mouseClicked$0() {
        return this.sessions.snapshotCurrent(this.stats);
    }

    static {
        TrackerScreen.ICON = class_2960.method_60655("gamblerplus", "textures/gui/donut.png");
        TrackerScreen.TIME_FMT = DateTimeFormatter.ofPattern("HH:mm:ss").withZone(ZoneId.systemDefault());
        TrackerScreen.DATE_FMT = DateTimeFormatter.ofPattern("MMM d HH:mm").withZone(ZoneId.systemDefault());
        return;
    }
}

Methods declared

public void <init>(dev.mishka.gamblerplus.client.Config, dev.mishka.gamblerplus.client.Stats)
protected void method_25426()
public boolean method_25421()
public void method_25394(net.minecraft.class_332, int, int, float)
private void drawHeader(net.minecraft.class_332)
private void drawSummary(net.minecraft.class_332, int, int)
private void subLine(net.minecraft.class_332, int, int, java.lang.String, java.lang.String, int)
private void drawTriggerControl(net.minecraft.class_332, int, int, int, int)
private void miniButton(net.minecraft.class_332, java.lang.String, int, int, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId, boolean)
private void drawLog(net.minecraft.class_332)
private void drawFooter(net.minecraft.class_332, int, int)
private void drawSessionsPanel(net.minecraft.class_332, int, int)
private void drawVerifyPanel(net.minecraft.class_332, int, int)
private java.lang.String formatPct(double)
private java.lang.String anchorLabel()
private java.lang.String formatDuration(long)
private int toggle(net.minecraft.class_332, java.lang.String, boolean, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId)
private float animPos(dev.mishka.gamblerplus.client.TrackerScreen$HitId, boolean)
private void fillPill(net.minecraft.class_332, int, int, int, int, int)
private void fillCircle(net.minecraft.class_332, int, int, int, int)
private int pill(net.minecraft.class_332, java.lang.String, java.lang.String, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId)
private void button(net.minecraft.class_332, java.lang.String, int, int, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId, int)
private void drawIcon(net.minecraft.class_332, int, int, int)
private void outline(net.minecraft.class_332, int, int, int, int, int)
private void clearHitboxes()
public boolean method_25402(net.minecraft.class_11909, boolean)
public boolean method_25401(double, double, double, double)
private static synthetic dev.mishka.gamblerplus.client.Session lambda$mouseClicked$1(dev.mishka.gamblerplus.client.Session)
private synthetic dev.mishka.gamblerplus.client.Session lambda$mouseClicked$0()
static void <clinit>()

Fields

private static final net.minecraft.class_2960 ICON
private static final int PANEL_W
private static final int PANEL_H
private static final int SIDE_W
private static final int SIDE_GAP
private static final int ROW_H
private static final int SESSION_ROW_H
private static final int ICON_SIZE
private static final long ANIM_MS
private static final java.time.format.DateTimeFormatter TIME_FMT
private static final java.time.format.DateTimeFormatter DATE_FMT
private final dev.mishka.gamblerplus.client.Config config
private final dev.mishka.gamblerplus.client.Stats stats
private final dev.mishka.gamblerplus.client.SessionManager sessions
private int px
private int py
private int sessionsX
private int verifyX
private boolean sidePanelsFit
private int scroll
private int sessionScroll
private long openedAtMs
private float uiScale
private int virtualW
private int virtualH
private final java.util.EnumMap anims
private final int[][] hitboxes
private final java.util.List pastSessionHits
private final java.util.List pastSessionRefs
private final java.util.List pastDeleteHits
private final java.util.List pastDeleteRefs

Calls out to

dev.mishka.gamblerplus.client.AmountFormat.pretty(long) : java.lang.String
dev.mishka.gamblerplus.client.AmountFormat.signed(long) : java.lang.String
dev.mishka.gamblerplus.client.Config.cycleHudAnchor()
dev.mishka.gamblerplus.client.Config.cycleHudDisplay()
dev.mishka.gamblerplus.client.Config.gamblingMode() : boolean
dev.mishka.gamblerplus.client.Config.hudAnchor() : dev.mishka.gamblerplus.client.Config$HudAnchor
dev.mishka.gamblerplus.client.Config.hudBar() : boolean
dev.mishka.gamblerplus.client.Config.hudDisplay() : dev.mishka.gamblerplus.client.Config$HudDisplay
dev.mishka.gamblerplus.client.Config.largePaymentThreshold() : long
dev.mishka.gamblerplus.client.Config.rakebackEnabled() : boolean
dev.mishka.gamblerplus.client.Config.rakebackPct() : double
dev.mishka.gamblerplus.client.Config.setStreakThreshold(int)
dev.mishka.gamblerplus.client.Config.showToast() : boolean
dev.mishka.gamblerplus.client.Config.stepRakebackPct(int)
dev.mishka.gamblerplus.client.Config.stepThreshold(int)
dev.mishka.gamblerplus.client.Config.streakThreshold() : int
dev.mishka.gamblerplus.client.Config.toggleGamblingMode()
dev.mishka.gamblerplus.client.Config.toggleHudBar()
dev.mishka.gamblerplus.client.Config.toggleRakeback()
dev.mishka.gamblerplus.client.Config.toggleShowToast()
dev.mishka.gamblerplus.client.Config.toggleVerify()
dev.mishka.gamblerplus.client.Config.verifyLargePayments() : boolean
dev.mishka.gamblerplus.client.Config$HudAnchor.ordinal() : int
dev.mishka.gamblerplus.client.Config$HudDisplay.name() : java.lang.String
dev.mishka.gamblerplus.client.SessionManager dev.mishka.gamblerplus.client.GamblerPlusClient.SESSIONS
net.minecraft.class_304 dev.mishka.gamblerplus.client.Keybinds.openUi
dev.mishka.gamblerplus.client.PaymentEvent.amount() : long
dev.mishka.gamblerplus.client.PaymentEvent.incoming() : boolean
dev.mishka.gamblerplus.client.PaymentEvent.player() : java.lang.String
dev.mishka.gamblerplus.client.PaymentEvent.timestampMs() : long
dev.mishka.gamblerplus.client.RakebackScreen.<init>(dev.mishka.gamblerplus.client.Config, dev.mishka.gamblerplus.client.SessionManager)
dev.mishka.gamblerplus.client.Session.durationMs() : long
dev.mishka.gamblerplus.client.Session.id() : long
dev.mishka.gamblerplus.client.Session.inCount() : int
dev.mishka.gamblerplus.client.Session.label() : java.lang.String
dev.mishka.gamblerplus.client.Session.net() : long
dev.mishka.gamblerplus.client.Session.outCount() : int
dev.mishka.gamblerplus.client.Session.startedAt() : long
dev.mishka.gamblerplus.client.SessionDetailScreen.<init>(java.util.function.Supplier, boolean)
dev.mishka.gamblerplus.client.SessionManager.deletePast(long) : boolean
dev.mishka.gamblerplus.client.SessionManager.endCurrent(dev.mishka.gamblerplus.client.Stats)
dev.mishka.gamblerplus.client.SessionManager.past() : java.util.List
dev.mishka.gamblerplus.client.SessionManager.snapshotCurrent(dev.mishka.gamblerplus.client.Stats) : dev.mishka.gamblerplus.client.Session
dev.mishka.gamblerplus.client.SessionManager.startNew(dev.mishka.gamblerplus.client.Stats)
dev.mishka.gamblerplus.client.Stats.allTimeIn() : long
dev.mishka.gamblerplus.client.Stats.allTimeInCount() : int
dev.mishka.gamblerplus.client.Stats.allTimeNet() : long
dev.mishka.gamblerplus.client.Stats.allTimeOut() : long
dev.mishka.gamblerplus.client.Stats.allTimeOutCount() : int
dev.mishka.gamblerplus.client.Stats.longestLossStreak() : int
dev.mishka.gamblerplus.client.Stats.longestWinStreak() : int
dev.mishka.gamblerplus.client.Stats.lossStreak() : int
dev.mishka.gamblerplus.client.Stats.sessionIn() : long
dev.mishka.gamblerplus.client.Stats.sessionInCount() : int
dev.mishka.gamblerplus.client.Stats.sessionNet() : long
dev.mishka.gamblerplus.client.Stats.sessionOut() : long
dev.mishka.gamblerplus.client.Stats.sessionOutCount() : int
dev.mishka.gamblerplus.client.Stats.snapshot() : java.util.List
dev.mishka.gamblerplus.client.Stats.winStreak() : int
dev.mishka.gamblerplus.client.Theme.color(long) : int
dev.mishka.gamblerplus.client.Theme.easeOutBack(float) : float
dev.mishka.gamblerplus.client.Theme.easeOutCubic(float) : float
dev.mishka.gamblerplus.client.Theme.lerpColor(int, int, float) : int
dev.mishka.gamblerplus.client.Theme.smoothStep(float, float, float) : float
java.time.format.DateTimeFormatter dev.mishka.gamblerplus.client.TrackerScreen.DATE_FMT
net.minecraft.class_2960 dev.mishka.gamblerplus.client.TrackerScreen.ICON
java.time.format.DateTimeFormatter dev.mishka.gamblerplus.client.TrackerScreen.TIME_FMT
dev.mishka.gamblerplus.client.TrackerScreen.anchorLabel() : java.lang.String
dev.mishka.gamblerplus.client.TrackerScreen.animPos(dev.mishka.gamblerplus.client.TrackerScreen$HitId, boolean) : float
java.util.EnumMap dev.mishka.gamblerplus.client.TrackerScreen.anims
dev.mishka.gamblerplus.client.TrackerScreen.button(net.minecraft.class_332, java.lang.String, int, int, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId, int)
dev.mishka.gamblerplus.client.TrackerScreen.clearHitboxes()
dev.mishka.gamblerplus.client.Config dev.mishka.gamblerplus.client.TrackerScreen.config
dev.mishka.gamblerplus.client.TrackerScreen.drawFooter(net.minecraft.class_332, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.drawHeader(net.minecraft.class_332)
dev.mishka.gamblerplus.client.TrackerScreen.drawIcon(net.minecraft.class_332, int, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.drawLog(net.minecraft.class_332)
dev.mishka.gamblerplus.client.TrackerScreen.drawSessionsPanel(net.minecraft.class_332, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.drawSummary(net.minecraft.class_332, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.drawTriggerControl(net.minecraft.class_332, int, int, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.drawVerifyPanel(net.minecraft.class_332, int, int)
int dev.mishka.gamblerplus.client.TrackerScreen.field_22789
int dev.mishka.gamblerplus.client.TrackerScreen.field_22790
net.minecraft.class_327 dev.mishka.gamblerplus.client.TrackerScreen.field_22793
dev.mishka.gamblerplus.client.TrackerScreen.fillCircle(net.minecraft.class_332, int, int, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.fillPill(net.minecraft.class_332, int, int, int, int, int)
dev.mishka.gamblerplus.client.TrackerScreen.formatDuration(long) : java.lang.String
dev.mishka.gamblerplus.client.TrackerScreen.formatPct(double) : java.lang.String
int[][] dev.mishka.gamblerplus.client.TrackerScreen.hitboxes
dev.mishka.gamblerplus.client.TrackerScreen.lambda$mouseClicked$0() : dev.mishka.gamblerplus.client.Session
dev.mishka.gamblerplus.client.TrackerScreen.lambda$mouseClicked$1(dev.mishka.gamblerplus.client.Session) : dev.mishka.gamblerplus.client.Session
dev.mishka.gamblerplus.client.TrackerScreen.miniButton(net.minecraft.class_332, java.lang.String, int, int, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId, boolean)
long dev.mishka.gamblerplus.client.TrackerScreen.openedAtMs
dev.mishka.gamblerplus.client.TrackerScreen.outline(net.minecraft.class_332, int, int, int, int, int)
java.util.List dev.mishka.gamblerplus.client.TrackerScreen.pastDeleteHits
java.util.List dev.mishka.gamblerplus.client.TrackerScreen.pastDeleteRefs
java.util.List dev.mishka.gamblerplus.client.TrackerScreen.pastSessionHits
java.util.List dev.mishka.gamblerplus.client.TrackerScreen.pastSessionRefs
dev.mishka.gamblerplus.client.TrackerScreen.pill(net.minecraft.class_332, java.lang.String, java.lang.String, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId) : int
int dev.mishka.gamblerplus.client.TrackerScreen.px
int dev.mishka.gamblerplus.client.TrackerScreen.py
int dev.mishka.gamblerplus.client.TrackerScreen.scroll
int dev.mishka.gamblerplus.client.TrackerScreen.sessionScroll
dev.mishka.gamblerplus.client.SessionManager dev.mishka.gamblerplus.client.TrackerScreen.sessions
int dev.mishka.gamblerplus.client.TrackerScreen.sessionsX
boolean dev.mishka.gamblerplus.client.TrackerScreen.sidePanelsFit
dev.mishka.gamblerplus.client.Stats dev.mishka.gamblerplus.client.TrackerScreen.stats
dev.mishka.gamblerplus.client.TrackerScreen.subLine(net.minecraft.class_332, int, int, java.lang.String, java.lang.String, int)
dev.mishka.gamblerplus.client.TrackerScreen.toggle(net.minecraft.class_332, java.lang.String, boolean, int, int, int, int, dev.mishka.gamblerplus.client.TrackerScreen$HitId) : int
float dev.mishka.gamblerplus.client.TrackerScreen.uiScale
int dev.mishka.gamblerplus.client.TrackerScreen.verifyX
int dev.mishka.gamblerplus.client.TrackerScreen.virtualH
int dev.mishka.gamblerplus.client.TrackerScreen.virtualW
int[] dev.mishka.gamblerplus.client.TrackerScreen$1.$SwitchMap$dev$mishka$gamblerplus$client$Config$HudAnchor
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.ANCHOR
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.CURRENT_SESSION_DETAIL
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.DISPLAY
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.END_SESSION
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.GAMBLING
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.HUD
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.NEW_SESSION
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.OPEN_RAKEBACK
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.RAKEBACK_ENABLE
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.RATE_DOWN
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.RATE_UP
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.STREAK_DOWN
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.STREAK_UP
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.THRESHOLD_DOWN
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.THRESHOLD_UP
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.TOAST
dev.mishka.gamblerplus.client.TrackerScreen$HitId dev.mishka.gamblerplus.client.TrackerScreen$HitId.VERIFY_ENABLE
dev.mishka.gamblerplus.client.TrackerScreen$HitId.ordinal() : int
dev.mishka.gamblerplus.client.TrackerScreen$HitId.values() : dev.mishka.gamblerplus.client.TrackerScreen$HitId[]
dev.mishka.gamblerplus.client.TrackerScreen$ToggleAnim.<init>()
long dev.mishka.gamblerplus.client.TrackerScreen$ToggleAnim.changedAt
float dev.mishka.gamblerplus.client.TrackerScreen$ToggleAnim.posAtChange
boolean dev.mishka.gamblerplus.client.TrackerScreen$ToggleAnim.state
java.lang.Double.valueOf(double) : java.lang.Double
java.lang.Long.longValue() : long
java.lang.Long.valueOf(long) : java.lang.Long
java.lang.MatchException.<init>(java.lang.String, java.lang.Throwable)
java.lang.Math.floor(double) : double
java.lang.Math.max(int, int) : int
java.lang.Math.min(float, float) : float
java.lang.Math.min(int, int) : int
java.lang.Math.round(float) : int
java.lang.Math.round(double) : long
java.lang.Math.sqrt(double) : double
java.lang.String.format(java.lang.String, java.lang.Object[]) : java.lang.String
java.lang.String.toLowerCase() : java.lang.String
java.lang.String.valueOf(int) : java.lang.String
java.lang.System.currentTimeMillis() : long
java.lang.invoke.LambdaMetafactory.metafactory(java.lang.invoke.MethodHandles$Lookup, java.lang.String, java.lang.invoke.MethodType, java.lang.invoke.MethodType, java.lang.invoke.MethodHandle, java.lang.invoke.MethodType) : java.lang.invoke.CallSite
java.lang.invoke.StringConcatFactory.makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup, java.lang.String, java.lang.invoke.MethodType, java.lang.String, java.lang.Object[]) : java.lang.invoke.CallSite
java.time.Instant.ofEpochMilli(long) : java.time.Instant
java.time.ZoneId.systemDefault() : java.time.ZoneId
java.time.format.DateTimeFormatter.format(java.time.temporal.TemporalAccessor) : java.lang.String
java.time.format.DateTimeFormatter.ofPattern(java.lang.String) : java.time.format.DateTimeFormatter
java.time.format.DateTimeFormatter.withZone(java.time.ZoneId) : java.time.format.DateTimeFormatter
java.util.ArrayList.<init>()
java.util.EnumMap.<init>(java.lang.Class)
java.util.EnumMap.get(java.lang.Object) : java.lang.Object
java.util.EnumMap.put(java.lang.Enum, java.lang.Object) : java.lang.Object
java.util.List.add(java.lang.Object) : boolean
java.util.List.clear()
java.util.List.get(int) : java.lang.Object
java.util.List.isEmpty() : boolean
java.util.List.size() : int
java.util.Objects.requireNonNull(java.lang.Object) : java.lang.Object
com.mojang.blaze3d.pipeline.RenderPipeline net.minecraft.class_10799.field_56883
net.minecraft.class_11909.comp_4798() : double
net.minecraft.class_11909.comp_4799() : double
net.minecraft.class_2561.getString() : java.lang.String
net.minecraft.class_2561.method_43470(java.lang.String) : net.minecraft.class_5250
net.minecraft.class_2960.method_60655(java.lang.String, java.lang.String) : net.minecraft.class_2960
net.minecraft.class_304.method_16007() : net.minecraft.class_2561
net.minecraft.class_327 net.minecraft.class_310.field_1772
net.minecraft.class_310.method_1551() : net.minecraft.class_310
net.minecraft.class_310.method_29970(net.minecraft.class_437)
net.minecraft.class_327.method_1727(java.lang.String) : int
net.minecraft.class_332.method_25291(com.mojang.blaze3d.pipeline.RenderPipeline, net.minecraft.class_2960, int, int, float, float, int, int, int, int, int)
net.minecraft.class_332.method_25294(int, int, int, int, int)
net.minecraft.class_332.method_44379(int, int, int, int)
net.minecraft.class_332.method_44380()
net.minecraft.class_332.method_51433(net.minecraft.class_327, java.lang.String, int, int, int, boolean)
net.minecraft.class_332.method_51448() : org.joml.Matrix3x2fStack
net.minecraft.class_437.<init>(net.minecraft.class_310, net.minecraft.class_327, net.minecraft.class_2561)
net.minecraft.class_437.method_25402(net.minecraft.class_11909, boolean) : boolean
org.joml.Matrix3x2fStack.popMatrix() : org.joml.Matrix3x2fStack
org.joml.Matrix3x2fStack.pushMatrix() : org.joml.Matrix3x2fStack
org.joml.Matrix3x2fStack.scale(float, float) : org.joml.Matrix3x2f
org.joml.Matrix3x2fStack.translate(float, float) : org.joml.Matrix3x2f

Text compiled into the class

Gambler Plus
made by q3c on dc
Gambler
Gambler 
Plus
TRACKING
PAUSED
SESSION
ALL TIME
STREAKS
L / W
in
out
trades
 + 
worst
 losses
best
 wins
trigger
-
+
RECENT PAYMENTS
waiting for the next payment...
tracking paused - turn it on to record payments
IN 
OUT

display
anchor
[] toggle window
tracking
hud bar
toast
SESSIONS
for 
W / L
end session
no active session
start session
new session
PAST
nothing yet
W/L - 
x
SETTINGS
verify large payments
enabled
rakeback
open list
%.0f%%
%.1f%%
left
center
right
h m
m s
s
: 
:
: 
gamblerplus
textures/gui/donut.png
HH:mm:ss
MMM d HH:mm