diff --git a/base/main/src/main/java/cc/carm/lib/easyplugin/utils/EasyCooldown.java b/base/main/src/main/java/cc/carm/lib/easyplugin/utils/EasyCooldown.java index 75a53f7..92eac47 100644 --- a/base/main/src/main/java/cc/carm/lib/easyplugin/utils/EasyCooldown.java +++ b/base/main/src/main/java/cc/carm/lib/easyplugin/utils/EasyCooldown.java @@ -22,29 +22,29 @@ public class EasyCooldown
{
protected final NumberFormat numberFormatter;
protected final @NotNull Map provider;
+ protected final @NotNull Function providerToKey;
protected long defaultDuration;
- public EasyCooldown(@NotNull Function provider) {
- this(defaultFormatter(), provider, 1000L);
+ public EasyCooldown(@NotNull Function providerToKey) {
+ this(defaultFormatter(), providerToKey, 1000L);
}
public EasyCooldown(@NotNull NumberFormat numberFormatter,
- @NotNull Function provider) {
- this(numberFormatter, provider, 1000L);
+ @NotNull Function providerToKey) {
+ this(numberFormatter, providerToKey, 1000L);
}
public EasyCooldown(@NotNull NumberFormat numberFormatter,
- @NotNull Function provider,
+ @NotNull Function providerToKey,
long defaultDuration) {
this.numberFormatter = numberFormatter;
- this.provider = provider;
+ this.providerToKey = providerToKey;
this.defaultDuration = defaultDuration;
}
public long getCooldown(@NotNull P provider) {
- Long time = this.cooldown.get(this.provider.apply(provider));
+ Long time = this.cooldown.get(this.providerToKey.apply(provider));
if (time == null || time < 0) return 0;
long duration = getDuration(provider);
@@ -59,7 +59,15 @@ public class EasyCooldown {
}
public void updateTime(@NotNull P provider) {
- this.cooldown.put(this.provider.apply(provider), System.currentTimeMillis());
+ this.cooldown.put(this.providerToKey.apply(provider), System.currentTimeMillis());
+ }
+
+ public void clear(@NotNull P provider) {
+ clearCooldown(this.providerToKey.apply(provider));
+ }
+
+ public void clearCooldown(@NotNull K key) {
+ this.cooldown.remove(key);
}
public boolean isCoolingDown(@NotNull P provider) {