EnderDragonWars/src/main/java/com/yaohun/enderdragonWars/manager/GiftEffectManager.java
2024-08-11 01:26:01 +08:00

53 lines
1.7 KiB
Java

package com.yaohun.enderdragonwars.manager;
import com.yaohun.enderdragonwars.effect.GiftEffect;
import com.yaohun.enderdragonwars.effect.GiftQueue;
import com.yaohun.enderdragonwars.effect.types.BomBomEffect;
import com.yaohun.enderdragonwars.effect.types.ClearInventoryEffect;
import org.bukkit.scheduler.BukkitTask;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
public class GiftEffectManager {
private static Map<String, Function<String, GiftEffect>> giftEffectMap = new HashMap<>();
private static Map<String, GiftQueue> giftQueues = new HashMap<>();
public static void addGiftEffect(String audience, String effectId) {
GiftEffect giftEffect = giftEffectMap.get(effectId).apply(audience);
GiftQueue giftQueue = giftQueues.getOrDefault(effectId, new GiftQueue(giftEffect.getQueueTime()));
giftQueue.addEffect(giftEffect);
giftQueues.put(effectId, giftQueue);
}
public static void stopQueue() {
giftQueues.values().forEach(giftQueue -> {
BukkitTask task = giftQueue.getTask();
if (task != null && !task.isCancelled()) {
task.cancel();
}
});
}
public static GiftQueue getGiftQueue(String effectId) {
return giftQueues.get(effectId);
}
public static Map<String, GiftQueue> getGiftQueues() {
return giftQueues;
}
public static void registerAll() {
registerGiftEffect("清理背包", ClearInventoryEffect::new);
registerGiftEffect("火山喷发", BomBomEffect::new);
}
private static void registerGiftEffect(String id, Function<String, GiftEffect> giftEffectGetter) {
giftEffectMap.put(id, giftEffectGetter);
}
}