9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-22 08:29:20 +00:00

Reworked effect registration

This commit is contained in:
Auxilor
2021-04-14 12:36:38 +01:00
parent b9ce891311
commit 801d9214a4

View File

@@ -1,16 +1,11 @@
package com.willfp.ecobosses.bosses.effects; package com.willfp.ecobosses.bosses.effects;
import com.google.common.collect.ImmutableMap; import com.willfp.ecobosses.bosses.effects.effects.*;
import com.willfp.ecobosses.bosses.effects.effects.EffectDamageNearbyPlayers;
import com.willfp.ecobosses.bosses.effects.effects.EffectGivePotionEffect;
import com.willfp.ecobosses.bosses.effects.effects.EffectLightningNearbyEntities;
import com.willfp.ecobosses.bosses.effects.effects.EffectShuffleHotbar;
import com.willfp.ecobosses.bosses.effects.effects.EffectSummon;
import com.willfp.ecobosses.bosses.effects.effects.EffectTeleport;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
@@ -20,14 +15,27 @@ public class Effects {
/** /**
* Registered effects. * Registered effects.
*/ */
private static final Map<String, Function<List<String>, Effect>> EFFECTS = new ImmutableMap.Builder<String, Function<List<String>, Effect>>() private static final Map<String, Function<List<String>, Effect>> EFFECTS = new HashMap<>();
.put("damage-nearby-players", EffectDamageNearbyPlayers::new)
.put("lightning-nearby-entities", EffectLightningNearbyEntities::new) static {
.put("summon", EffectSummon::new) register("damage-nearby-players", EffectDamageNearbyPlayers::new);
.put("give-potion-effect", EffectGivePotionEffect::new) register("lightning-nearby-entities", EffectLightningNearbyEntities::new);
.put("shuffle-hotbar", EffectShuffleHotbar::new) register("summon", EffectSummon::new);
.put("teleport", EffectTeleport::new) register("give-potion-effect", EffectGivePotionEffect::new);
.build(); register("shuffle-hotbar", EffectShuffleHotbar::new);
register("teleport", EffectTeleport::new);
}
/**
* Register new effect.
*
* @param name The effect name.
* @param creator Function to create an instance of the effect given args.
*/
public void register(@NotNull final String name,
@NotNull final Function<List<String>, Effect> creator) {
EFFECTS.put(name, creator);
}
/** /**
* Get effect matching name. * Get effect matching name.