Removed use of deprecated API

This commit is contained in:
Jules 2024-05-24 20:02:56 -07:00
parent b150817964
commit 5c2bd9b637
13 changed files with 208 additions and 179 deletions

View File

@ -4,7 +4,6 @@ import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.api.util.PostLoadObject;
import io.lumine.mythic.lib.player.modifier.ModifierSource; import io.lumine.mythic.lib.player.modifier.ModifierSource;
import io.lumine.mythic.lib.player.skill.PassiveSkill; import io.lumine.mythic.lib.player.skill.PassiveSkill;
import io.lumine.mythic.lib.script.Script; import io.lumine.mythic.lib.script.Script;
@ -12,6 +11,8 @@ import io.lumine.mythic.lib.skill.SimpleSkill;
import io.lumine.mythic.lib.skill.Skill; import io.lumine.mythic.lib.skill.Skill;
import io.lumine.mythic.lib.skill.handler.MythicLibSkillHandler; import io.lumine.mythic.lib.skill.handler.MythicLibSkillHandler;
import io.lumine.mythic.lib.skill.trigger.TriggerType; import io.lumine.mythic.lib.skill.trigger.TriggerType;
import io.lumine.mythic.lib.util.PostLoadAction;
import io.lumine.mythic.lib.util.PreloadedObject;
import io.lumine.mythic.lib.version.VersionMaterial; import io.lumine.mythic.lib.version.VersionMaterial;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
@ -37,7 +38,6 @@ import net.md_5.bungee.api.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Particle; import org.bukkit.Particle;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
@ -48,7 +48,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.*; import java.util.*;
import java.util.logging.Level; import java.util.logging.Level;
public class PlayerClass extends PostLoadObject implements ExperienceObject { public class PlayerClass implements ExperienceObject, PreloadedObject {
private final String name, id, actionBarFormat; private final String name, id, actionBarFormat;
private final List<String> description = new ArrayList<>(), attrDescription = new ArrayList<>(); private final List<String> description = new ArrayList<>(), attrDescription = new ArrayList<>();
private final ItemStack icon; private final ItemStack icon;
@ -81,8 +81,22 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject {
@Deprecated @Deprecated
private final Map<String, EventTrigger> eventTriggers = new HashMap<>(); private final Map<String, EventTrigger> eventTriggers = new HashMap<>();
private final PostLoadAction postLoadAction = new PostLoadAction(config -> {
if (config.contains("subclasses"))
for (String key : config.getConfigurationSection("subclasses").getKeys(false))
try {
subclasses.add(new Subclass(
MMOCore.plugin.classManager
.getOrThrow(key.toUpperCase().replace("-", "_").replace(" ", "_")),
config.getInt("subclasses." + key)));
} catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load subclass '" + key + "' from class '"
+ getId() + "': " + exception.getMessage());
}
});
public PlayerClass(String id, FileConfiguration config) { public PlayerClass(String id, FileConfiguration config) {
super(config); postLoadAction.cacheConfig(config);
this.id = id.toUpperCase().replace("-", "_").replace(" ", "_"); this.id = id.toUpperCase().replace("-", "_").replace(" ", "_");
@ -245,8 +259,6 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject {
* option was not provided. * option was not provided.
*/ */
public PlayerClass(String id, String name, Material material) { public PlayerClass(String id, String name, Material material) {
super(null);
this.id = id; this.id = id;
this.name = name; this.name = name;
manaDisplay = ManaDisplayOptions.DEFAULT; manaDisplay = ManaDisplayOptions.DEFAULT;
@ -264,21 +276,6 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject {
resourceHandlers.put(resource, new ResourceRegeneration(resource)); resourceHandlers.put(resource, new ResourceRegeneration(resource));
} }
@Override
protected void whenPostLoaded(ConfigurationSection config) {
if (config.contains("subclasses"))
for (String key : config.getConfigurationSection("subclasses").getKeys(false))
try {
subclasses.add(new Subclass(
MMOCore.plugin.classManager
.getOrThrow(key.toUpperCase().replace("-", "_").replace(" ", "_")),
config.getInt("subclasses." + key)));
} catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load subclass '" + key + "' from class '"
+ getId() + "': " + exception.getMessage());
}
}
public String getId() { public String getId() {
return id; return id;
} }
@ -310,6 +307,12 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject {
return displayOrder; return displayOrder;
} }
@NotNull
@Override
public PostLoadAction getPostLoadAction() {
return postLoadAction;
}
@Override @Override
public ExpCurve getExpCurve() { public ExpCurve getExpCurve() {
return expCurve; return expCurve;

View File

@ -1,12 +1,8 @@
package net.Indyuce.mmocore.api.quest; package net.Indyuce.mmocore.api.quest;
import java.util.ArrayList; import io.lumine.mythic.lib.api.MMOLineConfig;
import java.util.HashMap; import io.lumine.mythic.lib.util.PostLoadAction;
import java.util.List; import io.lumine.mythic.lib.util.PreloadedObject;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.quest.objective.Objective; import net.Indyuce.mmocore.api.quest.objective.Objective;
@ -14,26 +10,32 @@ import net.Indyuce.mmocore.experience.Profession;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.jetbrains.annotations.NotNull;
import io.lumine.mythic.lib.api.MMOLineConfig; import java.util.*;
import io.lumine.mythic.lib.api.util.PostLoadObject; import java.util.logging.Level;
public class Quest extends PostLoadObject { public class Quest implements PreloadedObject {
private final String id; private final String id, name;
private final String name;
private final List<Quest> parents = new ArrayList<>(); private final List<Quest> parents = new ArrayList<>();
private final List<Objective> objectives = new ArrayList<>(); private final List<Objective> objectives = new ArrayList<>();
private final List<String> lore; private final List<String> lore;
private final int mainLevelRestriction; private final int mainLevelRestriction;
private final Map<Profession, Integer> levelRestrictions = new HashMap<>(); private final Map<Profession, Integer> levelRestrictions = new HashMap<>();
// cooldown in millis // Cooldown in millis
private final long cooldown; private final long cooldown;
private final PostLoadAction postLoadAction = new PostLoadAction(config -> {
// Load parent quests
if (config.contains("parent"))
for (String parent : config.getStringList("parent"))
parents.add(MMOCore.plugin.questManager.getOrThrow(parent.toLowerCase().replace(" ", "-").replace("_", "-")));
});
public Quest(String id, FileConfiguration config) { public Quest(String id, FileConfiguration config) {
super(config); postLoadAction.cacheConfig(config);
this.id = id.toLowerCase().replace("_", "-").replace(" ", "-"); this.id = id.toLowerCase().replace("_", "-").replace(" ", "-");
cooldown = (long) (config.contains("delay") ? config.getDouble("delay") * 60 * 60 * 1000 : -1); cooldown = (long) (config.contains("delay") ? config.getDouble("delay") * 60 * 60 * 1000 : -1);
@ -69,11 +71,10 @@ public class Quest extends PostLoadObject {
} }
} }
@NotNull
@Override @Override
protected void whenPostLoaded(ConfigurationSection config) { public PostLoadAction getPostLoadAction() {
if (config.contains("parent")) return postLoadAction;
for (String parent : config.getStringList("parent"))
parents.add(MMOCore.plugin.questManager.getOrThrow(parent.toLowerCase().replace(" ", "-").replace("_", "-")));
} }
public String getId() { public String getId() {

View File

@ -1,14 +1,14 @@
package net.Indyuce.mmocore.experience; package net.Indyuce.mmocore.experience;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.api.util.PostLoadObject; import io.lumine.mythic.lib.util.PostLoadAction;
import io.lumine.mythic.lib.util.PreloadedObject;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.util.math.formula.LinearValue; import net.Indyuce.mmocore.api.util.math.formula.LinearValue;
import net.Indyuce.mmocore.experience.droptable.ExperienceTable; import net.Indyuce.mmocore.experience.droptable.ExperienceTable;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -18,7 +18,7 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.logging.Level; import java.util.logging.Level;
public class Profession extends PostLoadObject implements ExperienceObject { public class Profession implements ExperienceObject, PreloadedObject {
private final String id, name; private final String id, name;
private final int maxLevel; private final int maxLevel;
private final Map<ProfessionOption, Boolean> options = new HashMap<>(); private final Map<ProfessionOption, Boolean> options = new HashMap<>();
@ -31,8 +31,14 @@ public class Profession extends PostLoadObject implements ExperienceObject {
*/ */
private final LinearValue experience; private final LinearValue experience;
private final PostLoadAction postLoadAction = new PostLoadAction(config -> {
// Link profession to hardcoded profession manager
MMOCore.plugin.professionManager.loadProfessionConfigurations(this, config);
});
public Profession(String id, FileConfiguration config) { public Profession(String id, FileConfiguration config) {
super(config); postLoadAction.cacheConfig(config);
this.id = id.toLowerCase().replace("_", "-").replace(" ", "-"); this.id = id.toLowerCase().replace("_", "-").replace(" ", "-");
this.name = config.getString("name"); this.name = config.getString("name");
@ -74,9 +80,10 @@ public class Profession extends PostLoadObject implements ExperienceObject {
} }
} }
@NotNull
@Override @Override
protected void whenPostLoaded(ConfigurationSection configurationSection) { public PostLoadAction getPostLoadAction() {
MMOCore.plugin.professionManager.loadProfessionConfigurations(this, configurationSection); return postLoadAction;
} }
public boolean getOption(ProfessionOption option) { public boolean getOption(ProfessionOption option) {

View File

@ -1,99 +1,104 @@
package net.Indyuce.mmocore.loot.droptable; package net.Indyuce.mmocore.loot.droptable;
import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.util.PostLoadAction;
import io.lumine.mythic.lib.util.PreloadedObject;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.loot.LootBuilder;
import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem;
import org.apache.commons.lang.Validate;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import net.Indyuce.mmocore.MMOCore; public class DropTable implements PreloadedObject {
import net.Indyuce.mmocore.loot.droptable.dropitem.DropItem; private final String id;
import net.Indyuce.mmocore.loot.chest.condition.Condition; private final Set<DropItem> drops = new LinkedHashSet<>();
import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; private final Set<Condition> conditions = new LinkedHashSet<>();
import org.apache.commons.lang.Validate;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.ArmorStand;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmocore.loot.LootBuilder; private final PostLoadAction postLoadAction;
import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.api.util.PostLoadObject;
public class DropTable extends PostLoadObject { public DropTable(ConfigurationSection config) {
private final String id; this.postLoadAction = generatePostLoadAction();
private final Set<DropItem> drops = new LinkedHashSet<>(); this.postLoadAction.cacheConfig(config);
private final Set<Condition> conditions = new LinkedHashSet<>();
public DropTable(ConfigurationSection config) { this.id = config.getName();
super(config); }
id = config.getName(); public DropTable(String id) {
} this.postLoadAction = generatePostLoadAction();
this.id = id;
}
public DropTable(String id) { private PostLoadAction generatePostLoadAction() {
super(null); return new PostLoadAction(config -> {
ArmorStand armorStand; List<String> itemsList = config.getStringList("items");
this.id = id; List<String> conditionsList = config.getStringList("conditions");
} Validate.notNull(itemsList, "Could not find drop item list");
/* for (String key : itemsList)
* must be loaded after since drop tables must be initialized first try {
* otherwise no reference for drop table drop items. drops.add(MMOCore.plugin.loadManager.loadDropItem(new MMOLineConfig(key)));
*/ } catch (IllegalArgumentException exception) {
@Override MMOCore.plugin.getLogger().log(Level.WARNING,
protected void whenPostLoaded(ConfigurationSection config) { "Could not load drop item '" + key + "' from table '" + id + "': " + exception.getMessage());
List<String> itemsList = config.getStringList("items"); }
List<String> conditionsList = config.getStringList("conditions"); for (String key : conditionsList)
Validate.notNull(itemsList, "Could not find drop item list"); try {
conditions.add(MMOCore.plugin.loadManager.loadCondition(new MMOLineConfig(key)));
} catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING,
"Could not load condition '" + key + "' from table '" + id + "': " + exception.getMessage());
}
});
}
for (String key : itemsList) @NotNull
try { @Override
drops.add(MMOCore.plugin.loadManager.loadDropItem(new MMOLineConfig(key))); public PostLoadAction getPostLoadAction() {
} catch (IllegalArgumentException exception) { return postLoadAction;
MMOCore.plugin.getLogger().log(Level.WARNING, }
"Could not load drop item '" + key + "' from table '" + id + "': " + exception.getMessage());
}
for (String key : conditionsList)
try {
conditions.add(MMOCore.plugin.loadManager.loadCondition(new MMOLineConfig(key)));
} catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING,
"Could not load condition '" + key + "' from table '" + id + "': " + exception.getMessage());
}
}
public String getId() { public String getId() {
return id; return id;
} }
public void registerDropItem(DropItem item) { public void registerDropItem(DropItem item) {
Validate.notNull(item); Validate.notNull(item);
drops.add(item); drops.add(item);
} }
public Set<DropItem> getDrops() { public Set<DropItem> getDrops() {
return drops; return drops;
} }
public List<ItemStack> collect(LootBuilder builder) { public List<ItemStack> collect(LootBuilder builder) {
for (DropItem item : drops) for (DropItem item : drops)
if (item.rollChance(builder.getEntity()) && builder.getCapacity() >= item.getWeight()) { if (item.rollChance(builder.getEntity()) && builder.getCapacity() >= item.getWeight()) {
item.collect(builder); item.collect(builder);
builder.reduceCapacity(item.getWeight()); builder.reduceCapacity(item.getWeight());
} }
return builder.getLoot(); return builder.getLoot();
} }
public Set<Condition> getConditions() { public Set<Condition> getConditions() {
return conditions; return conditions;
} }
public boolean areConditionsMet(ConditionInstance entity) { public boolean areConditionsMet(ConditionInstance entity) {
for (Condition condition : conditions) for (Condition condition : conditions)
if (!condition.isMet(entity)) if (!condition.isMet(entity))
return false; return false;
return true; return true;
} }
} }

View File

@ -93,7 +93,7 @@ public class ClassManager implements MMOCoreManager {
for (PlayerClass profess : map.values()) for (PlayerClass profess : map.values())
try { try {
profess.postLoad(); profess.getPostLoadAction().performAction();
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not post-load class '" + profess.getId() + "': " + exception.getMessage()); MMOCore.plugin.getLogger().log(Level.WARNING, "Could not post-load class '" + profess.getId() + "': " + exception.getMessage());
} }

View File

@ -1,5 +1,12 @@
package net.Indyuce.mmocore.manager; package net.Indyuce.mmocore.manager;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.loot.droptable.DropTable;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
@ -7,15 +14,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import io.lumine.mythic.lib.api.util.PostLoadObject;
import net.Indyuce.mmocore.MMOCore;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import net.Indyuce.mmocore.loot.droptable.DropTable;
public class DropTableManager implements MMOCoreManager { public class DropTableManager implements MMOCoreManager {
private final Map<String, DropTable> map = new HashMap<>(); private final Map<String, DropTable> map = new HashMap<>();
@ -51,7 +49,7 @@ public class DropTableManager implements MMOCoreManager {
if (obj instanceof ConfigurationSection) { if (obj instanceof ConfigurationSection) {
DropTable table = new DropTable((ConfigurationSection) obj); DropTable table = new DropTable((ConfigurationSection) obj);
Bukkit.getScheduler().runTask(MMOCore.plugin, table::postLoad); Bukkit.getScheduler().runTask(MMOCore.plugin, table.getPostLoadAction()::performAction);
return table; return table;
} }
@ -78,6 +76,6 @@ public class DropTableManager implements MMOCoreManager {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load drop table file '" + file.getName() + "': " + exception.getMessage()); MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load drop table file '" + file.getName() + "': " + exception.getMessage());
} }
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> map.values().forEach(PostLoadObject::postLoad)); Bukkit.getScheduler().runTask(MMOCore.plugin, () -> map.values().forEach(table -> table.getPostLoadAction().performAction()));
} }
} }

View File

@ -51,7 +51,7 @@ public class QuestManager implements MMOCoreManager {
load(new File(MMOCore.plugin.getDataFolder() + "/quests")); load(new File(MMOCore.plugin.getDataFolder() + "/quests"));
for (Quest quest : quests.values()) for (Quest quest : quests.values())
try { try {
quest.postLoad(); quest.getPostLoadAction().performAction();
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not post-load quest '" + quest.getId() + "': " + exception.getMessage()); MMOCore.plugin.getLogger().log(Level.WARNING, "Could not post-load quest '" + quest.getId() + "': " + exception.getMessage());
} }

View File

@ -3,14 +3,16 @@ package net.Indyuce.mmocore.manager;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.api.itemtype.ItemType; import io.lumine.mythic.lib.api.itemtype.ItemType;
import io.lumine.mythic.lib.api.util.PostLoadObject; import io.lumine.mythic.lib.util.PostLoadAction;
import io.lumine.mythic.lib.util.PreloadedObject;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.block.BlockType;
import net.Indyuce.mmocore.api.ConfigFile; import net.Indyuce.mmocore.api.ConfigFile;
import net.Indyuce.mmocore.api.block.BlockType;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.*; import java.util.*;
@ -49,7 +51,7 @@ public class RestrictionManager implements MMOCoreManager {
for (ToolPermissions perms : map.values()) for (ToolPermissions perms : map.values())
try { try {
perms.postLoad(); perms.getPostLoadAction().performAction();
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
MMOCore.log(Level.WARNING, "Could not post-load perm set '" + perms.getTool().display() + "': " + exception.getMessage()); MMOCore.log(Level.WARNING, "Could not post-load perm set '" + perms.getTool().display() + "': " + exception.getMessage());
} }
@ -88,7 +90,7 @@ public class RestrictionManager implements MMOCoreManager {
return perms != null && perms.canMine(block); return perms != null && perms.canMine(block);
} }
public class ToolPermissions extends PostLoadObject { public class ToolPermissions implements PreloadedObject {
/** /**
* Now saving string keys using {@link BlockType#generateKey()} instead * Now saving string keys using {@link BlockType#generateKey()} instead
@ -102,15 +104,8 @@ public class RestrictionManager implements MMOCoreManager {
private ToolPermissions parent; private ToolPermissions parent;
public ToolPermissions(ConfigurationSection config) { private final PostLoadAction postLoadAction = new PostLoadAction(config -> {
super(config);
tool = ItemType.fromString(config.getName());
defaultSet = config.getBoolean("default");
}
@Override
protected void whenPostLoaded(ConfigurationSection config) {
if (config.contains("parent")) { if (config.contains("parent")) {
String parentFormat = formatId(config.getString("parent")); String parentFormat = formatId(config.getString("parent"));
parent = Objects.requireNonNull(map.get(parentFormat), "Could not find parent with ID '" + parentFormat + "'"); parent = Objects.requireNonNull(map.get(parentFormat), "Could not find parent with ID '" + parentFormat + "'");
@ -118,6 +113,19 @@ public class RestrictionManager implements MMOCoreManager {
if (config.contains("can-mine")) if (config.contains("can-mine"))
for (String key : config.getStringList("can-mine")) for (String key : config.getStringList("can-mine"))
mineable.add(MMOCore.plugin.loadManager.loadBlockType(new MMOLineConfig(key)).generateKey()); mineable.add(MMOCore.plugin.loadManager.loadBlockType(new MMOLineConfig(key)).generateKey());
});
public ToolPermissions(ConfigurationSection config) {
postLoadAction.cacheConfig(config);
tool = ItemType.fromString(config.getName());
defaultSet = config.getBoolean("default");
}
@NotNull
@Override
public PostLoadAction getPostLoadAction() {
return postLoadAction;
} }
/** /**

View File

@ -59,7 +59,7 @@ public class WaypointManager implements MMOCoreManager {
for (Waypoint waypoint : waypoints.values()) for (Waypoint waypoint : waypoints.values())
try { try {
waypoint.postLoad(); waypoint.getPostLoadAction().performAction();
} catch (RuntimeException exception) { } catch (RuntimeException exception) {
MMOCore.log(Level.WARNING, "Could not post-load waypoint '" + waypoint.getId() + "': " + exception.getMessage()); MMOCore.log(Level.WARNING, "Could not post-load waypoint '" + waypoint.getId() + "': " + exception.getMessage());
} }

View File

@ -81,7 +81,7 @@ public class ProfessionManager implements MMOCoreManager {
// Load profession-specific configurations // Load profession-specific configurations
for (Profession profession : professions.values()) for (Profession profession : professions.values())
try { try {
profession.postLoad(); profession.getPostLoadAction().performAction();
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not postload profession " + profession.getId() + ": " + exception.getMessage()); MMOCore.plugin.getLogger().log(Level.WARNING, "Could not postload profession " + profession.getId() + ": " + exception.getMessage());
} }

View File

@ -1,21 +1,14 @@
package net.Indyuce.mmocore.skilltree.tree; package net.Indyuce.mmocore.skilltree.tree;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.util.PostLoadAction;
import net.Indyuce.mmocore.skilltree.ParentType; import net.Indyuce.mmocore.skilltree.ParentType;
import net.Indyuce.mmocore.skilltree.SkillTreeNode; import net.Indyuce.mmocore.skilltree.SkillTreeNode;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class CustomSkillTree extends SkillTree { public class CustomSkillTree extends SkillTree {
public CustomSkillTree(ConfigurationSection config) { private final PostLoadAction postLoadAction = new PostLoadAction(config -> {
super(config);
// Setup the coordinate map because coordinates are given in the yml for linked skill tree
super.coordinatesSetup();
}
@Override
protected void whenPostLoaded(@NotNull ConfigurationSection config) {
// Setup the children and parents for each node. // Setup the children and parents for each node.
for (SkillTreeNode node : nodes.values()) { for (SkillTreeNode node : nodes.values()) {
@ -31,6 +24,15 @@ public class CustomSkillTree extends SkillTree {
} }
} }
setupRoots(); setupRoots();
});
public CustomSkillTree(ConfigurationSection config) {
super(config);
postLoadAction.cacheConfig(config);
// Setup the coordinate map because coordinates are given in the yml for linked skill tree
super.coordinatesSetup();
} }
private void setupRoots() { private void setupRoots() {
@ -44,4 +46,10 @@ public class CustomSkillTree extends SkillTree {
} }
} }
} }
@NotNull
@Override
public PostLoadAction getPostLoadAction() {
return postLoadAction;
}
} }

View File

@ -2,7 +2,6 @@ package net.Indyuce.mmocore.skilltree.tree;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.util.PostLoadObject;
import io.lumine.mythic.lib.util.PreloadedObject; import io.lumine.mythic.lib.util.PreloadedObject;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
@ -33,7 +32,7 @@ import java.util.*;
* @author Ka0rX * @author Ka0rX
* @see {@link SkillTreeNode} * @see {@link SkillTreeNode}
*/ */
public abstract class SkillTree extends PostLoadObject implements RegisteredObject, PreloadedObject { public abstract class SkillTree implements RegisteredObject, PreloadedObject {
private final String id, name; private final String id, name;
private final List<String> lore = new ArrayList<>(); private final List<String> lore = new ArrayList<>();
private final Material item; private final Material item;
@ -58,10 +57,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje
protected final Map<DisplayInfo, Icon> icons = new HashMap<>(); protected final Map<DisplayInfo, Icon> icons = new HashMap<>();
public SkillTree(ConfigurationSection config) { public SkillTree(ConfigurationSection config) {
super(config);
this.id = Objects.requireNonNull(config.getString("id"), "Could not find skill tree id"); 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")); 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))); Objects.requireNonNull(config.getStringList("lore"), "Could not find skill tree lore").forEach(str -> lore.add(MythicLib.plugin.parseColors(str)));
@ -124,9 +120,6 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje
} }
} }
@Override
protected abstract void whenPostLoaded(@NotNull ConfigurationSection configurationSection);
public List<String> getLore() { public List<String> getLore() {
return lore; return lore;
} }
@ -144,7 +137,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje
try { try {
skillTree = new CustomSkillTree(config); skillTree = new CustomSkillTree(config);
skillTree.postLoad(); skillTree.getPostLoadAction().performAction();
} catch (Exception e) { } catch (Exception e) {
MMOCore.log("Couldn't load skill tree " + config.getString("id") + ": " + e.getMessage()); MMOCore.log("Couldn't load skill tree " + config.getString("id") + ": " + e.getMessage());
} }

View File

@ -1,12 +1,13 @@
package net.Indyuce.mmocore.waypoint; package net.Indyuce.mmocore.waypoint;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.api.util.PostLoadObject; import io.lumine.mythic.lib.util.PostLoadAction;
import io.lumine.mythic.lib.util.PreloadedObject;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.player.Unlockable;
import net.Indyuce.mmocore.loot.chest.condition.Condition; import net.Indyuce.mmocore.loot.chest.condition.Condition;
import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance; import net.Indyuce.mmocore.loot.chest.condition.ConditionInstance;
import net.Indyuce.mmocore.player.Unlockable;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
@ -19,7 +20,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.*; import java.util.*;
import java.util.logging.Level; import java.util.logging.Level;
public class Waypoint extends PostLoadObject implements Unlockable { public class Waypoint implements Unlockable, PreloadedObject {
private final String id, name; private final String id, name;
private final Location loc; private final Location loc;
private final List<String> lore; private final List<String> lore;
@ -41,8 +42,18 @@ public class Waypoint extends PostLoadObject implements Unlockable {
private final double dynamicCost, setSpawnCost, normalCost; private final double dynamicCost, setSpawnCost, normalCost;
private final List<Condition> dynamicUseConditions = new ArrayList<>(); private final List<Condition> dynamicUseConditions = new ArrayList<>();
private final PostLoadAction postLoadAction = new PostLoadAction(config -> {
// Load waypoint network
if (config.contains("linked")) {
ConfigurationSection section = config.getConfigurationSection("linked");
for (String key : section.getKeys(false))
destinations.put(MMOCore.plugin.waypointManager.get(key), section.getDouble(key));
}
});
public Waypoint(ConfigurationSection config) { public Waypoint(ConfigurationSection config) {
super(config); postLoadAction.cacheConfig(config);
id = Objects.requireNonNull(config, "Could not load config section").getName(); id = Objects.requireNonNull(config, "Could not load config section").getName();
name = Objects.requireNonNull(config.getString("name"), "Could not load waypoint name"); name = Objects.requireNonNull(config.getString("name"), "Could not load waypoint name");
@ -70,15 +81,10 @@ public class Waypoint extends PostLoadObject implements Unlockable {
} }
} }
@NotNull
@Override @Override
protected void whenPostLoaded(@NotNull ConfigurationSection config) { public PostLoadAction getPostLoadAction() {
return postLoadAction;
// Load waypoint network
if (config.contains("linked")) {
ConfigurationSection section = config.getConfigurationSection("linked");
for (String key : section.getKeys(false))
destinations.put(MMOCore.plugin.waypointManager.get(key), section.getDouble(key));
}
} }
public String getId() { public String getId() {