package dev.hawk22e.core.client;

import dev.virel.obf.Ii11i;
import dev.virel.obf.Ilii1;
import dev.virel.obf.IllIi;
import dev.virel.obf.i1li;
import dev.virel.obf.iIl;
import dev.virel.obf.l;
import java.util.concurrent.ThreadLocalRandom;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.class_1747;
import net.minecraft.class_2338;
import net.minecraft.class_310;
import net.minecraft.class_746;

@Environment(EnvType.CLIENT)
public final class aaaaaap extends Ii11i {
   private final l length = (l)this.private iI((new l(iIl.interface l11I("tJFamw1f"), (double)1.0F, (double)1.0F, (double)1.0F, (double)4.0F, (double)1.0F)).float Ii(iIl.interface l11I("jJ1Xlwo=")));
   private final i1li sneakSpeedMultiplier = (i1li)this.private iI(new i1li(iIl.interface l11I("q5pRnRIXYwySDZsZIsbSipGEWJUcRQ=="), 0.3, 0.2, (double)1.0F, 0.05));
   private final Ilii1 onlyOnGround = (Ilii1)this.private iI(new Ilii1(iIl.interface l11I("t5pYhVlYXlywGpBMAdc="), false));
   private final Ilii1 onlyWhenHoldingBlocks = (Ilii1)this.private iI(new Ilii1(iIl.interface l11I("t5pYhVlgWBmZSLdWA9fXkJ/UdpAWVFsP"), false));
   private final Ilii1 onlyWhenMovingBackwards = (Ilii1)this.private iI(new Ilii1(iIl.interface l11I("t5pYhVlgWBmZSLJWGdrQmdi2VZ8SQFEOkxs="), false));
   private boolean edgeActive;
   private int edgeTicks;
   private int remainingSneakTicks;
   private boolean scaleSneakThisTick;

   public aaaaaap() {
      super(iIl.interface l11I("tJFTlQ0XYx+WDplWA9c="), IllIi.l1l11I, iIl.interface l11I("q5pRnRJEEB2DSItRCpPbmp+RR9wWURAemwecUhw="));
   }

   public void break_ilil/* $FF was: break ilil*/() {
      this.resetState();
   }

   public boolean shouldForceSneak(class_310 var1) {
      this.scaleSneakThisTick = false;
      if (this.byte iII1() && var1 != null && var1.field_1724 != null && var1.field_1687 != null && var1.field_1690 != null && var1.field_1724.method_5805()) {
         class_746 var2 = var1.field_1724;
         if ((Boolean)this.onlyWhenHoldingBlocks.break Ii() && !this.isHoldingBlock(var2)) {
            this.edgeActive = false;
            this.edgeTicks = 0;
            return false;
         } else {
            class_2338 var3 = class_2338.method_49637(var2.method_23317(), var2.method_23318() - (double)1.0F, var2.method_23321());
            boolean var4 = (Boolean)this.onlyOnGround.break Ii() && !var2.method_24828();
            boolean var5 = (Boolean)this.onlyWhenMovingBackwards.break Ii() && var1.field_1690.field_1894.method_1434();
            this.edgeActive = !var4 && !var5 && var1.field_1687.method_8320(var3).method_26215();
            if (this.edgeActive) {
               this.remainingSneakTicks = this.rollLength();
               ++this.edgeTicks;
            } else {
               this.edgeTicks = 0;
            }

            boolean var6 = this.remainingSneakTicks > 0;
            --this.remainingSneakTicks;
            this.scaleSneakThisTick = this.remainingSneakTicks > 0 && this.edgeTicks <= 2;
            return var6;
         }
      } else {
         this.resetState();
         return false;
      }
   }

   public double getSneakSpeedMultiplier(class_310 var1) {
      return this.byte iII1() && this.scaleSneakThisTick ? (Double)this.sneakSpeedMultiplier.break Ii() : (double)1.0F;
   }

   public boolean shouldSuppressSprint(class_310 var1) {
      return this.byte iII1() && this.edgeActive;
   }

   public boolean shouldBlockEdgeMovement(class_310 var1) {
      return false;
   }

   private boolean isHoldingBlock(class_746 var1) {
      return var1.method_6047().method_7909() instanceof class_1747 || var1.method_6079().method_7909() instanceof class_1747;
   }

   private int rollLength() {
      int var1 = Math.max(1, (int)Math.round(this.length.break I1l()));
      int var2 = Math.max(var1, (int)Math.round(this.length.return I11()));
      return ThreadLocalRandom.current().nextInt(var1, var2 + 1);
   }

   private void resetState() {
      this.edgeActive = false;
      this.edgeTicks = 0;
      this.remainingSneakTicks = 0;
      this.scaleSneakThisTick = false;
   }
}
