Don't rely on class load order, do this properly during the init phase (and tell addon devs when to do theirs)

This commit is contained in:
Electroblob77
2020-09-24 18:47:41 +01:00
parent b4e9d86d1d
commit c56128a7e2
2 changed files with 16 additions and 13 deletions
@@ -16,6 +16,7 @@ import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.*;
import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.SpellProperties;
import electroblob.wizardry.util.WandHelper;
import electroblob.wizardry.worldgen.*;
import net.minecraft.item.Item;
import net.minecraft.util.SoundCategory;
@@ -171,6 +172,7 @@ public class Wizardry {
WizardryItems.populateArmourMap();
WizardryItems.registerDispenseBehaviours();
WizardryItems.registerBannerPatterns();
WandHelper.populateUpgradeMap();
Spell.registry.forEach(Spell::init);
SpellProperties.init();
@@ -52,18 +52,6 @@ public final class WandHelper {
private static final HashMap<Item, String> upgradeMap = new HashMap<>();
static { // TODO: Move these to a proper initialisation method, at the moment we're relying on class load order!
upgradeMap.put(WizardryItems.condenser_upgrade, "condenser");
upgradeMap.put(WizardryItems.storage_upgrade, "storage");
upgradeMap.put(WizardryItems.siphon_upgrade, "siphon");
upgradeMap.put(WizardryItems.range_upgrade, "range");
upgradeMap.put(WizardryItems.duration_upgrade, "duration");
upgradeMap.put(WizardryItems.cooldown_upgrade, "cooldown");
upgradeMap.put(WizardryItems.blast_upgrade, "blast");
upgradeMap.put(WizardryItems.attunement_upgrade, "attunement");
upgradeMap.put(WizardryItems.melee_upgrade, "melee");
}
// =================================================== Spells ===================================================
/**
@@ -453,7 +441,7 @@ public final class WandHelper {
/**
* Registers a special upgrade with wizardry. Not used in the base mod, but I've put it here to make it easy for
* add-ons to add new wand upgrades.
* add-ons to add new wand upgrades. This should be called during the init() phase of mod loading.
*
* @param upgrade The wand upgrade item
* @param identifier A unique string, used as a key for wand nbt tags
@@ -467,6 +455,19 @@ public final class WandHelper {
upgradeMap.put(upgrade, identifier);
}
/** Called from the init() method in wizardry's main mod class to populate the special wand upgrade map. */
public static void populateUpgradeMap(){
upgradeMap.put(WizardryItems.condenser_upgrade, "condenser");
upgradeMap.put(WizardryItems.storage_upgrade, "storage");
upgradeMap.put(WizardryItems.siphon_upgrade, "siphon");
upgradeMap.put(WizardryItems.range_upgrade, "range");
upgradeMap.put(WizardryItems.duration_upgrade, "duration");
upgradeMap.put(WizardryItems.cooldown_upgrade, "cooldown");
upgradeMap.put(WizardryItems.blast_upgrade, "blast");
upgradeMap.put(WizardryItems.attunement_upgrade, "attunement");
upgradeMap.put(WizardryItems.melee_upgrade, "melee");
}
// ================================================= Progression =================================================
/** Sets the given wand's progression to the given value. */