CooldownHandler class

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

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

implements: Tickable

Поля (10)

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

Методы (28)

МодификаторыВозвратСигнатура
public Cooldownpublic Cooldown(float var1, @Nonnull float[] var2, boolean var3)
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(var3 <= 0.0F)
if if(var5 != null)
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 boolean isOnCooldownboolean isOnCooldown(@Nonnull RootInteraction var1, @Nonnull String var2, float var3, @Nonnull float[] var4, boolean var5)
public void replenishChargepublic void replenishCharge(int var1, boolean var2)
public void resetChargespublic void resetCharges()
public void resetCooldownvoid resetCooldown(@Nonnull String var1, float var2, @Nonnull float[] var3, boolean var4)
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);
            }
         }
      }
   }
}