From 63fba6dc5e6800a7f5e559a7185d3c68680edc99 Mon Sep 17 00:00:00 2001 From: Indyuce Date: Tue, 20 Dec 2022 12:59:00 +0100 Subject: [PATCH] Fixed from exp source --- .../source/FromExperienceSource.java | 3 ++- .../mmocore/manager/ExperienceManager.java | 27 ++++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/source/FromExperienceSource.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/source/FromExperienceSource.java index 073a89c2..0ed27cde 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/source/FromExperienceSource.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/source/FromExperienceSource.java @@ -22,8 +22,9 @@ public class FromExperienceSource extends ExperienceSource { public FromExperienceSource(ExperienceDispenser dispenser, MMOLineConfig config) { super(dispenser); + config.validateKeys("source"); List list = new ConfigFile("exp-sources").getConfig().getStringList(config.getString("source")); - Validate.isTrue(list.size() != 0, "There is no source matching " + config.getString("key")); + Validate.isTrue(list != null && !list.isEmpty(), "There is no source matching " + config.getString("source")); list.stream() .map(MMOLineConfig::new) .forEach(mmoLineConfig -> diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ExperienceManager.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ExperienceManager.java index b778b0ed..6714cb23 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ExperienceManager.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ExperienceManager.java @@ -14,16 +14,25 @@ import org.bukkit.event.HandlerList; import javax.annotation.Nullable; import java.io.File; import java.io.IOException; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.logging.Level; public class ExperienceManager implements MMOCoreManager { private final Map expCurves = new HashMap<>(); private final Map expTables = new HashMap<>(); + /** + * Experience sources from the exp-sources.yml config file where you can + * input any exp source which can later be used along with the 'from' + * exp source anywhere in the plugin. + *

+ * TODO First needs to edit the exp-source current structure. This is going to break a lot of things + * + * @deprecated See TODO + */ + @Deprecated + private final Map>> publicExpSources = new HashMap<>(); + /** * Saves different experience sources based on experience source type. */ @@ -51,6 +60,12 @@ public class ExperienceManager implements MMOCoreManager { return expCurves.get(id); } + @Deprecated + @Nullable + public List> getExperienceSourceList(String key) { + return publicExpSources.get(key); + } + public boolean hasTable(String id) { return expTables.containsKey(id); } @@ -88,7 +103,7 @@ public class ExperienceManager implements MMOCoreManager { managers.clear(); } - expCurves.clear(); + // Exp curves for (File file : new File(MMOCore.plugin.getDataFolder() + "/expcurves").listFiles()) try { ExpCurve curve = new ExpCurve(file); @@ -97,7 +112,7 @@ public class ExperienceManager implements MMOCoreManager { MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load exp curve '" + file.getName() + "': " + exception.getMessage()); } - expTables.clear(); + // Exp tables FileConfiguration expTablesConfig = new ConfigFile("exp-tables").getConfig(); for (String key : expTablesConfig.getKeys(false)) try {