From 2f78e66170307b14773677a2285608a3d85d6cc2 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 1 Apr 2021 13:50:45 +0100 Subject: [PATCH] Reworked effect registration --- .../ecobosses/bosses/effects/Effect.java | 10 ++++++++++ .../ecobosses/bosses/effects/Effects.java | 19 ++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effect.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effect.java index 2ab264c..f6ac430 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effect.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effect.java @@ -23,11 +23,21 @@ public abstract class Effect implements BossTicker { this.args = args; } + /** + * Show a config error. + * + * @param message The error message. + */ public void showConfigError(@NotNull final String message) { Bukkit.getLogger().warning("An effect is configured incorrectly!"); Bukkit.getLogger().warning(message); Bukkit.getLogger().warning("Usage: " + getUsage()); } + /** + * Get effect usage. + * + * @return The usage. + */ public abstract String getUsage(); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java index de40e49..782b4f7 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java @@ -1,14 +1,24 @@ package com.willfp.ecobosses.bosses.effects; +import com.google.common.collect.ImmutableMap; import com.willfp.ecobosses.bosses.effects.effects.DamageNearbyPlayers; import lombok.experimental.UtilityClass; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Map; +import java.util.function.Function; @UtilityClass public class Effects { + /** + * Registered effects. + */ + private static final Map, Effect>> EFFECTS = new ImmutableMap.Builder, Effect>>() + .put("damage-nearby-players", DamageNearbyPlayers::new) + .build(); + /** * Get effect matching name. * @@ -19,12 +29,7 @@ public class Effects { @Nullable public Effect getEffect(@NotNull final String name, @NotNull final List args) { - switch (name.toLowerCase()) { - case "damage-nearby-players": - return new DamageNearbyPlayers(args); - - default: - return null; - } + Function, Effect> found = EFFECTS.get(name.toLowerCase()); + return found == null ? null : found.apply(args); } }