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);
}
}
}
}
}