Cooldown class

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/CooldownHandler.java

Поля (8)

МодификаторыТипИмя
private int chargeCount
private float chargeTimer
private float[] charges
private float cooldownMax
private final boolean interruptRecharge
private float remainingCooldown
float var2
float var2

Методы (23)

МодификаторыВозвратСигнатура
public void deductChargepublic void deductCharge()
public float[] getChargespublic float[] getCharges()
public float getCooldownpublic float getCooldown()
public boolean hasCooldownpublic boolean hasCooldown(boolean var1)
public boolean hasMaxChargespublic boolean hasMaxCharges()
if if(this.remainingCooldown > var1)
if if(this.chargeCount > var1.length)
if if(this.remainingCooldown <= 0.0F && this.chargeCount > 0)
if if(var1)
if if(this.chargeCount > 0)
if if(this.interruptRecharge)
if if(this.chargeTimer >= var2)
if if(var2 && var1 != 0)
if if(this.charges.length > 1)
public void increaseChargeTimepublic void increaseChargeTime(float var1)
public void increaseTimepublic void increaseTime(float var1)
public boolean interruptRechargepublic boolean interruptRecharge()
public void replenishChargepublic void replenishCharge(int var1, boolean var2)
public void resetChargespublic void resetCharges()
public void resetCooldownpublic void resetCooldown()
public void setChargespublic void setCharges(@Nonnull float[] var1)
public void setCooldownMaxpublic void setCooldownMax(float var1)
public boolean tickpublic boolean tick(float var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction;

class="kw">import com.hypixel.hytale.common.thread.ticking.Tickable;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">final class CooldownHandler class="kw">implements Tickable {
   @Nonnull
   class="kw">private class="kw">final Map<String, CooldownHandler.Cooldown> cooldowns = new ConcurrentHashMap<>();

   class="kw">public CooldownHandler() {
   }

   class="kw">public boolean isOnCooldown(@Nonnull RootInteraction var1, @Nonnull String var2, float var3, @Nonnull float[] var4, boolean var5) {
      if (var3 <= 0.0F) {
         class="kw">return false;
      }

      CooldownHandler.Cooldown var6 = this.getCooldown(var2, var3, var4, var1.resetCooldownOnStart(), var5);
      class="kw">return var6 != null && var6.hasCooldown(true);
   }

   class="kw">public void resetCooldown(@Nonnull String var1, float var2, @Nonnull float[] var3, boolean var4) {
      CooldownHandler.Cooldown var5 = this.getCooldown(var1, var2, var3, true, var4);
      if (var5 != null) {
         var5.resetCooldown();
         var5.resetCharges();
      }
   }

   @Nullable
   class="kw">public CooldownHandler.Cooldown getCooldown(@Nonnull String var1, float var2, @Nonnull float[] var3, boolean var4, boolean var5) {
      class="kw">return var4 ? this.cooldowns.computeIfAbsent(var1, var3x -> new CooldownHandler.Cooldown(var2, var3, var5)) : this.cooldowns.get(var1);
   }

   @Nullable
   class="kw">public CooldownHandler.Cooldown getCooldown(@Nonnull String var1) {
      class="kw">return this.cooldowns.get(var1);
   }

   @Override
   class="kw">public void tick(float var1) {
      this.cooldowns.values().removeIf(var1x -> var1x.tick(var1));
   }

   class="kw">public class="kw">static class Cooldown {
      class="kw">private float cooldownMax;
      class="kw">private float[] charges;
      class="kw">private float remainingCooldown = 0.0F;
      class="kw">private float chargeTimer;
      class="kw">private int chargeCount;
      class="kw">private class="kw">final boolean interruptRecharge;

      class="kw">public Cooldown(float var1, @Nonnull float[] var2, boolean var3) {
         this.setCooldownMax(var1);
         this.setCharges(var2);
         this.resetCharges();
         this.interruptRecharge = var3;
      }

      class="kw">public void setCooldownMax(float var1) {
         this.cooldownMax = var1;
         if (this.remainingCooldown > var1) {
            this.remainingCooldown = var1;
         }
      }

      class="kw">public void setCharges(@Nonnull float[] var1) {
         this.charges = var1;
         if (this.chargeCount > var1.length) {
            this.chargeCount = var1.length;
         }
      }

      class="kw">public boolean hasCooldown(boolean var1) {
         if (this.remainingCooldown <= 0.0F && this.chargeCount > 0) {
            if (var1) {
               this.deductCharge();
            }

            class="kw">return false;
         } else {
            class="kw">return true;
         }
      }

      class="kw">public boolean hasMaxCharges() {
         class="kw">return this.chargeCount >= this.charges.length;
      }

      class="kw">public void resetCharges() {
         this.chargeCount = this.charges.length;
      }

      class="kw">public void resetCooldown() {
         this.remainingCooldown = this.cooldownMax;
      }

      class="kw">public void deductCharge() {
         if (this.chargeCount > 0) {
            this.chargeCount--;
         }

         if (this.interruptRecharge) {
            this.chargeTimer = 0.0F;
         }

         this.resetCooldown();
      }

      class="kw">public boolean tick(float var1) {
         if (!this.hasMaxCharges()) {
            float var2 = this.charges[this.chargeCount];
            this.chargeTimer += var1;
            if (this.chargeTimer >= var2) {
               this.chargeCount++;
               this.chargeTimer = 0.0F;
            }
         }

         this.remainingCooldown -= var1;
         class="kw">return (this.hasMaxCharges() || this.charges.length <= 1) && this.remainingCooldown <= 0.0F;
      }

      class="kw">public float getCooldown() {
         class="kw">return this.cooldownMax;
      }

      class="kw">public float[] getCharges() {
         class="kw">return this.charges;
      }

      class="kw">public boolean interruptRecharge() {
         class="kw">return this.interruptRecharge;
      }

      class="kw">public void replenishCharge(int var1, boolean var2) {
         this.chargeCount = MathUtil.clamp(this.chargeCount + var1, 0, this.charges.length);
         if (var2 && var1 != 0) {
            this.chargeTimer = 0.0F;
         }
      }

      class="kw">public void increaseTime(float var1) {
         this.remainingCooldown = MathUtil.clamp(this.remainingCooldown + var1, 0.0F, this.cooldownMax);
      }

      class="kw">public void increaseChargeTime(float var1) {
         if (!this.hasMaxCharges()) {
            if (this.charges.length > 1) {
               float var2 = this.charges[this.chargeCount];
               this.chargeTimer = MathUtil.clamp(this.chargeTimer + var1, 0.0F, var2);
            }
         }
      }
   }
}