From 7edd17962c1f764aa273b84bb003855c814507b7 Mon Sep 17 00:00:00 2001 From: Jules Date: Fri, 24 May 2024 19:41:49 -0700 Subject: [PATCH] Improved some config error messages --- .../mmocore/api/player/attribute/PlayerAttribute.java | 2 +- .../mmocore/api/quest/trigger/BindSkillTrigger.java | 6 ++---- .../mmocore/api/quest/trigger/UnlockSkillTrigger.java | 3 +-- .../mmocore/comp/placeholder/RPGPlaceholders.java | 3 +-- .../main/java/net/Indyuce/mmocore/gui/ClassSelect.java | 3 +-- .../java/net/Indyuce/mmocore/gui/SubclassSelect.java | 9 ++++----- .../net/Indyuce/mmocore/gui/skilltree/display/Icon.java | 4 ++-- .../java/net/Indyuce/mmocore/manager/ClassManager.java | 5 +++-- .../net/Indyuce/mmocore/skilltree/SkillTreeNode.java | 2 +- .../net/Indyuce/mmocore/skilltree/tree/SkillTree.java | 5 +++-- 10 files changed, 19 insertions(+), 23 deletions(-) diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttribute.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttribute.java index 73a1ea0b..a7068b75 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttribute.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttribute.java @@ -85,7 +85,7 @@ public class PlayerAttribute implements ExperienceObject { @NotNull @Override public ExperienceTable getExperienceTable() { - return Objects.requireNonNull(expTable); + return Objects.requireNonNull(expTable, "Attribute has no exp table"); } @Override diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/BindSkillTrigger.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/BindSkillTrigger.java index 22aecf55..f86e5f51 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/BindSkillTrigger.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/BindSkillTrigger.java @@ -8,7 +8,6 @@ import net.Indyuce.mmocore.skill.ClassSkill; import net.Indyuce.mmocore.skill.RegisteredSkill; import javax.annotation.Nullable; -import java.util.Objects; public class BindSkillTrigger extends Trigger implements Removable { private final RegisteredSkill skill; @@ -19,14 +18,13 @@ public class BindSkillTrigger extends Trigger implements Removable { config.validateKeys("skill", "slot"); slot = config.getInt("slot"); - skill = Objects.requireNonNull(MMOCore.plugin.skillManager.getSkill(config.getString("skill"))); + skill = MMOCore.plugin.skillManager.getSkillOrThrow(config.getString("skill")); } @Override public void apply(PlayerData playerData) { final @Nullable ClassSkill found = playerData.getProfess().getSkill(skill); - if (found != null) - playerData.bindSkill(slot, found); + if (found != null) playerData.bindSkill(slot, found); } @Override diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSkillTrigger.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSkillTrigger.java index 22f24b37..9de22153 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSkillTrigger.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSkillTrigger.java @@ -8,7 +8,6 @@ import net.Indyuce.mmocore.skill.ClassSkill; import net.Indyuce.mmocore.skill.RegisteredSkill; import javax.annotation.Nullable; -import java.util.Objects; public class UnlockSkillTrigger extends Trigger implements Removable { private final RegisteredSkill skill; @@ -17,7 +16,7 @@ public class UnlockSkillTrigger extends Trigger implements Removable { super(config); config.validateKeys("skill"); - skill = Objects.requireNonNull(MMOCore.plugin.skillManager.getSkill(config.getString("skill"))); + skill = MMOCore.plugin.skillManager.getSkillOrThrow(config.getString("skill")); } @Override diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java index d506a1fc..852a66a3 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java @@ -15,7 +15,6 @@ import net.Indyuce.mmocore.party.AbstractParty; import net.Indyuce.mmocore.skill.CastableSkill; import net.Indyuce.mmocore.skill.ClassSkill; import net.Indyuce.mmocore.skill.RegisteredSkill; -import net.Indyuce.mmocore.skill.binding.BoundSkillInfo; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; @@ -73,7 +72,7 @@ public class RPGPlaceholders extends PlaceholderExpansion { else if (identifier.startsWith("skill_level_")) { String id = identifier.substring(12); - RegisteredSkill skill = Objects.requireNonNull(MMOCore.plugin.skillManager.getSkill(id), "Could not find skill with ID '" + id + "'"); + RegisteredSkill skill = MMOCore.plugin.skillManager.getSkillOrThrow(id); return String.valueOf(playerData.getSkillLevel(skill)); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java index b3b7668f..685830ad 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java @@ -29,7 +29,6 @@ import org.bukkit.persistence.PersistentDataType; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.Objects; public class ClassSelect extends EditableInventory { public ClassSelect() { @@ -59,7 +58,7 @@ public class ClassSelect extends EditableInventory { Validate.isTrue(config.getString("function").length() > 6, "Couldn't find the class associated to: " + config.getString("function")); String classId = UtilityMethods.enumName(config.getString("function").substring(6)); - this.playerClass = Objects.requireNonNull(MMOCore.plugin.classManager.get(classId), classId + " does not correspond to any classId."); + this.playerClass = MMOCore.plugin.classManager.getOrThrow(classId); this.name = config.getString("name"); this.lore = config.getStringList("lore"); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java index 7b01d1de..aef90f2b 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java @@ -3,17 +3,17 @@ package net.Indyuce.mmocore.gui; import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.UtilityMethods; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; +import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.profess.ClassOption; +import net.Indyuce.mmocore.api.player.profess.PlayerClass; import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory; import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; import net.Indyuce.mmocore.manager.InventoryManager; -import net.Indyuce.mmocore.api.player.profess.PlayerClass; -import net.Indyuce.mmocore.api.ConfigMessage; -import net.Indyuce.mmocore.api.SoundEvent; import org.apache.commons.lang.Validate; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -25,7 +25,6 @@ import org.bukkit.persistence.PersistentDataType; import java.util.ArrayList; import java.util.List; -import java.util.Objects; public class SubclassSelect extends EditableInventory { public SubclassSelect() { @@ -50,7 +49,7 @@ public class SubclassSelect extends EditableInventory { super(config.contains("item") ? Material.valueOf(UtilityMethods.enumName(config.getString("item"))) : Material.BARRIER, config); Validate.isTrue(config.getString("function").length() > 10, "Couldn't find the class associated to: " + config.getString("function")); String classId = UtilityMethods.enumName(config.getString("function").substring(10)); - this.playerClass = Objects.requireNonNull(MMOCore.plugin.classManager.get(classId), classId + " does not correspond to any classId."); + this.playerClass = MMOCore.plugin.classManager.getOrThrow(classId); this.name = config.getString("name"); this.lore = config.getStringList("lore"); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/display/Icon.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/display/Icon.java index db334f0f..6387487f 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/display/Icon.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/display/Icon.java @@ -22,8 +22,8 @@ public class Icon { } public Icon(ConfigurationSection config) { - this(Material.valueOf(Objects.requireNonNull(UtilityMethods.enumName( - config.getString("item")))), config.contains("custom-model-data") ? config.getInt("custom-model-data") : 0); + this(Material.valueOf(UtilityMethods.enumName( + config.getString("item", "DIRT"))), config.contains("custom-model-data") ? config.getInt("custom-model-data") : 0); } public Icon(Material material, int customModelData) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java index 4a14f396..8b08f655 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java @@ -58,8 +58,9 @@ public class ClassManager implements MMOCoreManager { } public PlayerClass getOrThrow(String id) { - Validate.isTrue(map.containsKey(id), "Could not find class with ID '" + id + "'"); - return map.get(id); + final PlayerClass found = map.get(id); + Validate.notNull(found, "Could not find class with ID '" + id + "'"); + return found; } public Collection getAll() { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java index 250e7a7d..e8d6e567 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java @@ -216,7 +216,7 @@ public class SkillTreeNode implements ExperienceObject { @Override @NotNull public ExperienceTable getExperienceTable() { - return Objects.requireNonNull(experienceTable); + return Objects.requireNonNull(experienceTable, "Skill tree has no exp table"); } @Override diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java index 1759ca61..36f1fb20 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.skilltree.tree; import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.api.util.PostLoadObject; +import io.lumine.mythic.lib.util.PreloadedObject; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.util.MMOCoreUtils; @@ -32,7 +33,7 @@ import java.util.*; * @author Ka0rX * @see {@link SkillTreeNode} */ -public abstract class SkillTree extends PostLoadObject implements RegisteredObject { +public abstract class SkillTree extends PostLoadObject implements RegisteredObject, PreloadedObject { private final String id, name; private final List lore = new ArrayList<>(); private final Material item; @@ -64,7 +65,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje this.id = Objects.requireNonNull(config.getString("id"), "Could not find skill tree id"); this.name = MythicLib.plugin.parseColors(Objects.requireNonNull(config.getString("name"), "Could not find skill tree name")); Objects.requireNonNull(config.getStringList("lore"), "Could not find skill tree lore").forEach(str -> lore.add(MythicLib.plugin.parseColors(str))); - this.item = Material.valueOf(UtilityMethods.enumName(Objects.requireNonNull(config.getString("item")))); + this.item = Material.valueOf(UtilityMethods.enumName(Objects.requireNonNull(config.getString("item"), "Could not find item"))); this.customModelData = config.getInt("custom-model-data", 0); Validate.isTrue(config.isConfigurationSection("nodes"), "Could not find any nodes in the tree"); this.maxPointSpent = config.getInt("max-point-spent", Integer.MAX_VALUE);