From 75c5b7e8c81eeaa3bf946a634fa026067096ba44 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 1 Jan 2021 21:32:36 +0000 Subject: [PATCH] Added strengths --- .../talismans/config/TalismanYamlConfig.java | 24 +++++++++++++---- .../config/configs/TalismanConfig.java | 9 ++++--- .../willfp/talismans/talismans/Talisman.java | 18 ++++++++++--- .../talismans/meta/TalismanStrength.java | 26 +++++++++++++++++++ .../core-plugin/src/main/resources/config.yml | 8 ++++++ .../{ => talisman}/archerytalisman.yml | 0 .../{ => talisman}/creepertalisman.yml | 0 .../talismans/{ => talisman}/endtalisman.yml | 0 .../{ => talisman}/experiencetalisman.yml | 0 .../{ => talisman}/extractiontalisman.yml | 0 .../{ => talisman}/feathertalisman.yml | 0 .../{ => talisman}/flametalisman.yml | 0 .../{ => talisman}/nethertalisman.yml | 0 .../{ => talisman}/poseidontalisman.yml | 0 .../talismans/{ => talisman}/raidtalisman.yml | 0 .../{ => talisman}/resistancetalisman.yml | 0 .../{ => talisman}/sharpnesstalisman.yml | 0 .../{ => talisman}/skeletontalisman.yml | 0 .../spiderresistancetalisman.yml | 0 .../{ => talisman}/spidertalisman.yml | 0 .../{ => talisman}/strengthtalisman.yml | 0 .../zombieresistancetalisman.yml | 0 .../{ => talisman}/zombietalisman.yml | 0 23 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/archerytalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/creepertalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/endtalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/experiencetalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/extractiontalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/feathertalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/flametalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/nethertalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/poseidontalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/raidtalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/resistancetalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/sharpnesstalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/skeletontalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/spiderresistancetalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/spidertalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/strengthtalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/zombieresistancetalisman.yml (100%) rename eco-core/core-plugin/src/main/resources/talismans/{ => talisman}/zombietalisman.yml (100%) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/TalismanYamlConfig.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/TalismanYamlConfig.java index 196c74b..ece2bba 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/TalismanYamlConfig.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/TalismanYamlConfig.java @@ -3,6 +3,7 @@ package com.willfp.talismans.config; import com.willfp.eco.util.config.ValueGetter; import com.willfp.eco.util.internal.PluginDependent; import com.willfp.eco.util.plugin.AbstractEcoPlugin; +import com.willfp.talismans.talismans.meta.TalismanStrength; import lombok.AccessLevel; import lombok.Getter; import org.bukkit.configuration.InvalidConfigurationException; @@ -48,24 +49,37 @@ public abstract class TalismanYamlConfig extends PluginDependent implements Valu */ private final Class source; + /** + * The talisman strength. + */ + private final TalismanStrength strength; + /** * Create new talisman config yml. * - * @param name The config name. - * @param source The class of the main class of source or extension. + * @param name The config name. + * @param strength The talisman strength. + * @param source The class of the main class of source or extension. */ protected TalismanYamlConfig(@NotNull final String name, + @NotNull final TalismanStrength strength, @NotNull final Class source) { super(AbstractEcoPlugin.getInstance()); this.name = name; this.source = source; + this.strength = strength; File basedir = new File(this.getPlugin().getDataFolder(), "talismans/"); if (!basedir.exists()) { basedir.mkdirs(); } - this.directory = basedir; + File dir = new File(basedir, strength.name().toLowerCase() + "/"); + if (!dir.exists()) { + dir.mkdirs(); + } + + this.directory = dir; if (!new File(directory, name + ".yml").exists()) { createFile(); @@ -78,7 +92,7 @@ public abstract class TalismanYamlConfig extends PluginDependent implements Valu } private void saveResource() { - String resourcePath = "/talismans/" + name + ".yml"; + String resourcePath = "/talismans/" + strength.name().toLowerCase() + "/" + name + ".yml"; InputStream in = source.getResourceAsStream(resourcePath); @@ -116,7 +130,7 @@ public abstract class TalismanYamlConfig extends PluginDependent implements Valu try { config.load(configFile); - String resourcePath = "/talismans/" + name + ".yml"; + String resourcePath = "/talismans/" + strength.name().toLowerCase() + "/" + name + ".yml"; InputStream newIn = source.getResourceAsStream(resourcePath); BufferedReader reader = new BufferedReader(new InputStreamReader(newIn, StandardCharsets.UTF_8)); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/configs/TalismanConfig.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/configs/TalismanConfig.java index 180f84c..eaec6d5 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/configs/TalismanConfig.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/config/configs/TalismanConfig.java @@ -1,6 +1,7 @@ package com.willfp.talismans.config.configs; import com.willfp.talismans.config.TalismanYamlConfig; +import com.willfp.talismans.talismans.meta.TalismanStrength; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -14,12 +15,14 @@ public class TalismanConfig extends TalismanYamlConfig { /** * Instantiate a new config for a talisman. * - * @param name The name of the config. - * @param plugin The provider of the talisman. + * @param name The name of the config. + * @param strength The strength of the talisman. + * @param plugin The provider of the talisman. */ public TalismanConfig(@NotNull final String name, + @NotNull final TalismanStrength strength, @NotNull final Class plugin) { - super(name, plugin); + super(name, strength, plugin); this.name = name; } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java index 2ed1d94..c4fd3ed 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java @@ -8,6 +8,7 @@ import com.willfp.eco.util.plugin.AbstractEcoPlugin; import com.willfp.talismans.config.TalismansConfigs; import com.willfp.talismans.config.configs.TalismanConfig; import com.willfp.talismans.display.TalismanDisplay; +import com.willfp.talismans.talismans.meta.TalismanStrength; import com.willfp.talismans.talismans.util.TalismanUtils; import com.willfp.talismans.talismans.util.Watcher; import lombok.AccessLevel; @@ -70,6 +71,14 @@ public abstract class Talisman implements Listener, Watcher { @Getter private final String configName; + /** + * The strength of the talisman + *

+ * Talisman is weakest, then ring, then relic. + */ + @Getter + private final TalismanStrength strength; + /** * The talisman's config. */ @@ -103,14 +112,17 @@ public abstract class Talisman implements Listener, Watcher { /** * Create a new Talisman. * - * @param key The key name of the talisman - * @param prerequisites Optional {@link Prerequisite}s that must be met + * @param key The key name of the talisman. + * @param strength The strength of the talisman. + * @param prerequisites Optional {@link Prerequisite}s that must be met. */ protected Talisman(@NotNull final String key, + @NotNull final TalismanStrength strength, @NotNull final Prerequisite... prerequisites) { + this.strength = strength; this.key = this.getPlugin().getNamespacedKeyFactory().create(key); this.configName = key.replace("_", ""); - TalismansConfigs.addTalismanConfig(new TalismanConfig(this.configName, this.getClass())); + TalismansConfigs.addTalismanConfig(new TalismanConfig(this.configName, this.strength, this.getClass())); this.config = TalismansConfigs.getTalismanConfig(this.configName); if (!Prerequisite.areMet(prerequisites)) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java new file mode 100644 index 0000000..f0da828 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java @@ -0,0 +1,26 @@ +package com.willfp.talismans.talismans.meta; + +import com.willfp.eco.util.config.Configs; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +public enum TalismanStrength { + TALISMAN(() -> Configs.CONFIG.getString("strengths.talisman.color")), + RING(() -> Configs.CONFIG.getString("strengths.ring.color")), + RELIC(() -> Configs.CONFIG.getString("strengths.relic.color")); + + private String color; + private final Supplier colorSupplier; + + TalismanStrength(@NotNull final Supplier colorSupplier) { + this.colorSupplier = colorSupplier; + this.color = colorSupplier.get(); + } + + public static void update() { + for (TalismanStrength strength : TalismanStrength.values()) { + strength.color = strength.colorSupplier.get(); + } + } +} diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index 406b4ef..876c714 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -7,6 +7,14 @@ description: # How many characters to have on each line of description. wrap: 20 +strengths: + talisman: + color: "&e" + ring: + color: "&c" + relic: + color: "&d" + drops: ### ADVANCED OPTIONS collate: false diff --git a/eco-core/core-plugin/src/main/resources/talismans/archerytalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/archerytalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/archerytalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/archerytalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/creepertalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/creepertalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/creepertalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/creepertalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/endtalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/endtalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/endtalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/endtalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/experiencetalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/experiencetalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/experiencetalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/experiencetalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/extractiontalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/extractiontalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/extractiontalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/extractiontalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/feathertalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/feathertalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/feathertalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/feathertalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/flametalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/flametalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/flametalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/flametalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/nethertalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/nethertalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/nethertalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/nethertalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/poseidontalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/poseidontalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/poseidontalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/poseidontalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/raidtalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/raidtalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/raidtalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/raidtalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/resistancetalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/resistancetalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/resistancetalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/resistancetalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/sharpnesstalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/sharpnesstalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/sharpnesstalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/sharpnesstalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/skeletontalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/skeletontalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/skeletontalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/skeletontalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/spiderresistancetalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/spiderresistancetalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/spiderresistancetalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/spiderresistancetalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/spidertalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/spidertalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/spidertalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/spidertalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/strengthtalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/strengthtalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/strengthtalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/strengthtalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/zombieresistancetalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/zombieresistancetalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/zombieresistancetalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/zombieresistancetalisman.yml diff --git a/eco-core/core-plugin/src/main/resources/talismans/zombietalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/zombietalisman.yml similarity index 100% rename from eco-core/core-plugin/src/main/resources/talismans/zombietalisman.yml rename to eco-core/core-plugin/src/main/resources/talismans/talisman/zombietalisman.yml