diff --git a/src/main/java/electroblob/wizardry/CommonProxy.java b/src/main/java/electroblob/wizardry/CommonProxy.java index cf738200..9220e64f 100644 --- a/src/main/java/electroblob/wizardry/CommonProxy.java +++ b/src/main/java/electroblob/wizardry/CommonProxy.java @@ -10,6 +10,7 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; @@ -48,7 +49,7 @@ public class CommonProxy { public void registerKeyBindings(){} - public net.minecraft.client.model.ModelBiped getWizardArmourModel(){ + public net.minecraft.client.model.ModelBiped getWizardArmourModel(ArmorMaterial material){ return null; } diff --git a/src/main/java/electroblob/wizardry/Wizardry.java b/src/main/java/electroblob/wizardry/Wizardry.java index 87ae16c5..89d161e0 100644 --- a/src/main/java/electroblob/wizardry/Wizardry.java +++ b/src/main/java/electroblob/wizardry/Wizardry.java @@ -1,5 +1,8 @@ package electroblob.wizardry; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; import electroblob.wizardry.block.BlockBookshelf; import electroblob.wizardry.command.CommandCastSpell; import electroblob.wizardry.command.CommandDiscoverSpell; @@ -36,6 +39,8 @@ import net.minecraftforge.fml.common.registry.GameRegistry; import org.apache.logging.log4j.Logger; import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.Calendar; /** @@ -144,6 +149,34 @@ public class Wizardry { @EventHandler public void init(FMLInitializationEvent event){ + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + for(Item item : Item.REGISTRY){ + + if(item.getRegistryName().getNamespace().equals(MODID)){ + + try{ + + FileWriter writer = new FileWriter("generated\\" + item.getRegistryName().getPath() + ".json"); + + JsonObject json = new JsonObject(); + + json.addProperty("parent", "item/generated"); + + JsonObject textures = new JsonObject(); + textures.addProperty("layer0", MODID + ":items/" + item.getRegistryName().getPath()); + json.add("textures", textures); + + gson.toJson(json, writer); + + writer.close(); + + }catch(IOException e){ + e.printStackTrace(); + } + } + } + settings.initConfigExtras(); // World generators @@ -168,8 +201,6 @@ public class Wizardry { // Post-registry extras BlockBookshelf.compileBookModelTextures(); ContainerBookshelf.initDefaultBookItems(); - WizardryItems.populateWandMap(); - WizardryItems.populateArmourMap(); WizardryItems.registerDispenseBehaviours(); WizardryItems.registerBannerPatterns(); WandHelper.populateUpgradeMap(); diff --git a/src/main/java/electroblob/wizardry/block/BlockBookshelf.java b/src/main/java/electroblob/wizardry/block/BlockBookshelf.java index 3b37fa7e..6eb3b714 100644 --- a/src/main/java/electroblob/wizardry/block/BlockBookshelf.java +++ b/src/main/java/electroblob/wizardry/block/BlockBookshelf.java @@ -261,7 +261,6 @@ public class BlockBookshelf extends BlockHorizontal implements ITileEntityProvid registerBookModelTexture(() -> WizardryItems.scroll, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_blue")); registerBookModelTexture(() -> WizardryItems.blank_scroll, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_blue")); registerBookModelTexture(() -> WizardryItems.identification_scroll, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_purple")); - registerBookModelTexture(() -> WizardryItems.armour_upgrade, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_red")); // Can't use the map in WandHelper because this is called from preInit (addons will have to add theirs manually) registerBookModelTexture(() -> WizardryItems.storage_upgrade, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_wooden")); registerBookModelTexture(() -> WizardryItems.siphon_upgrade, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_wooden")); diff --git a/src/main/java/electroblob/wizardry/client/ClientProxy.java b/src/main/java/electroblob/wizardry/client/ClientProxy.java index 5086b6a0..65c614de 100644 --- a/src/main/java/electroblob/wizardry/client/ClientProxy.java +++ b/src/main/java/electroblob/wizardry/client/ClientProxy.java @@ -14,6 +14,8 @@ import electroblob.wizardry.client.gui.GuiSpellDisplay; import electroblob.wizardry.client.gui.config.NamedBooleanEntry; import electroblob.wizardry.client.gui.config.SpellHUDSkinChooserEntry; import electroblob.wizardry.client.gui.handbook.GuiWizardHandbook; +import electroblob.wizardry.client.model.ModelRobeArmour; +import electroblob.wizardry.client.model.ModelSageArmour; import electroblob.wizardry.client.model.ModelWizardArmour; import electroblob.wizardry.client.particle.*; import electroblob.wizardry.client.particle.ParticleWizardry.IWizardryParticleFactory; @@ -39,6 +41,7 @@ import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.packet.*; import electroblob.wizardry.registry.Spells; +import electroblob.wizardry.registry.WizardryItems.Materials; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.spell.*; import electroblob.wizardry.tileentity.*; @@ -65,6 +68,7 @@ import net.minecraft.entity.monster.EntityBlaze; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ContainerMerchant; import net.minecraft.item.Item; +import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityDispenser; @@ -120,8 +124,16 @@ public class ClientProxy extends CommonProxy { } } - // Armour Model - public static final ModelBiped WIZARD_ARMOUR_MODEL = new ModelWizardArmour(0.75f); + // Armour Models + // Can't use an EnumMap here because our additional values aren't really part of the enum + public static final Map wizard_armour_models = new HashMap<>(); + + static { + wizard_armour_models.put(Materials.SILK, new ModelWizardArmour(0.75f)); + wizard_armour_models.put(Materials.SAGE, new ModelSageArmour(0.75f)); + wizard_armour_models.put(Materials.BATTLEMAGE, new ModelRobeArmour(0.75f, true)); + wizard_armour_models.put(Materials.WARLOCK, new ModelRobeArmour(0.75f, false)); + } /** The wrap width for standard multi-line descriptions (see {@link ClientProxy#addMultiLineDescription(List, String, Style, Object...)}). */ private static final int TOOLTIP_WRAP_WIDTH = 140; @@ -130,8 +142,8 @@ public class ClientProxy extends CommonProxy { // =============================================================================================================== @Override - public ModelBiped getWizardArmourModel(){ - return WIZARD_ARMOUR_MODEL; + public ModelBiped getWizardArmourModel(ArmorMaterial material){ + return wizard_armour_models.get(material); } @Override diff --git a/src/main/java/electroblob/wizardry/client/model/ModelRobeArmour.java b/src/main/java/electroblob/wizardry/client/model/ModelRobeArmour.java new file mode 100644 index 00000000..594b6e07 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/model/ModelRobeArmour.java @@ -0,0 +1,66 @@ +package electroblob.wizardry.client.model; + +import electroblob.wizardry.block.BlockStatue; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelRobeArmour extends ModelArmourFixer { + + ModelRenderer robe; + private boolean showHeadWithBody; + + public ModelRobeArmour(float delta, boolean showHeadWithBody){ + + super(delta, 0, 64, 64); + + this.showHeadWithBody = showHeadWithBody; + + bipedBody = new ModelRenderer(this, 16, 16); + bipedBody.addBox(-4F, 0F, -2F, 8, 11, 4, delta); + bipedBody.setRotationPoint(0F, 0F, 0F); + bipedBody.setTextureSize(64, 64); + bipedBody.mirror = true; + setRotation(bipedBody, 0F, 0F, 0F); + + robe = new ModelRenderer(this, 40, 32); + robe.addBox(-4F, 0F, -2F, 8, 9, 4, delta); + robe.setRotationPoint(0F, 12, 0F); // 12.5 accounts for the expansion of each box + robe.setTextureSize(64, 64); + robe.mirror = true; + setRotation(robe, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){ + if(entity.isInvisible() && !entity.getEntityData().getBoolean(BlockStatue.PETRIFIED_NBT_KEY) + && !entity.getEntityData().getBoolean(BlockStatue.FROZEN_NBT_KEY)) return; + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + this.robe.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z){ + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity){ + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + this.robe.showModel = this.bipedBody.showModel; + if(showHeadWithBody) this.bipedHead.showModel = this.bipedBody.showModel; + if(this.isSneak){ + //this.robe.rotationPointY = 10.5f; + this.robe.rotationPointZ = 4; + }else{ + //this.robe.rotationPointY = 12.5f; + this.robe.rotationPointZ = 0; + } + + // The bottom part of the robe takes the y rotation from the rest of the robe but the x/z rotation + // from the average of the two legs + this.robe.rotateAngleX = (this.bipedLeftLeg.rotateAngleX + this.bipedRightLeg.rotateAngleX) / 2f; + this.robe.rotateAngleY = this.bipedBody.rotateAngleY; + this.robe.rotateAngleZ = (this.bipedLeftLeg.rotateAngleZ + this.bipedRightLeg.rotateAngleZ) / 2f; +} + +} diff --git a/src/main/java/electroblob/wizardry/client/model/ModelSageArmour.java b/src/main/java/electroblob/wizardry/client/model/ModelSageArmour.java new file mode 100644 index 00000000..e18f8907 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/model/ModelSageArmour.java @@ -0,0 +1,146 @@ +package electroblob.wizardry.client.model; + +import electroblob.wizardry.block.BlockStatue; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelSageArmour extends ModelArmourFixer { + + ModelRenderer hatBrim; + ModelRenderer hatSegment1; + ModelRenderer hatSegment2; + ModelRenderer hatSegment3; + ModelRenderer hatSegment4; + ModelRenderer hatSegment5; + ModelRenderer hatSegment6; + ModelRenderer robe; + ModelRenderer collar; + + public ModelSageArmour(float delta){ + + super(delta, 0, 64, 64); + + // This is necessary to stop the head from scaling. + this.bipedHead = new ModelRenderer(this, 0, 0); + // The hat layer has an offset of 0.5, so 0.6 is about the smallest we can get away with + this.bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.6f); + this.bipedHead.setRotationPoint(0.0F, 0.0F + 0, 0.0F); + + hatBrim = new ModelRenderer(this, 10, 45); + // Making the height 1 stops the top and bottom z-fighting when the hat is enchanted + hatBrim.addBox(-9F, -5.7F, -9F, 18, 1, 18, 0.6f); + hatBrim.setRotationPoint(0F, 0F, 0F); + hatBrim.setTextureSize(64, 64); + hatBrim.mirror = true; + setRotation(hatBrim, 0F, 0F, 0F); + + hatSegment1 = new ModelRenderer(this, 0, 42); + hatSegment1.addBox(0F, 0F, 0F, 6, 2, 6, 0.2f); + hatSegment1.setRotationPoint(-3F, -10.6F, -3F); + hatSegment1.setTextureSize(64, 64); + hatSegment1.mirror = true; + setRotation(hatSegment1, -0.1396263F, 0F, 0F); + + hatSegment2 = new ModelRenderer(this, 0, 50); + hatSegment2.addBox(0F, 0F, 0F, 5, 2, 5, 0.1f); + hatSegment2.setRotationPoint(-2.5F, -12.13333F, -2F); + hatSegment2.setTextureSize(64, 64); + hatSegment2.mirror = true; + setRotation(hatSegment2, -0.2443461F, 0F, 0F); + + hatSegment3 = new ModelRenderer(this, 0, 57); + hatSegment3.addBox(0F, 0F, 0F, 4, 2, 4); + hatSegment3.setRotationPoint(-2F, -13.6F, -1F); + hatSegment3.setTextureSize(64, 64); + hatSegment3.mirror = true; + setRotation(hatSegment3, -0.4014257F, 0F, 0F); + + hatSegment4 = new ModelRenderer(this, 16, 58); + hatSegment4.addBox(0F, 0F, 0F, 3, 2, 3); + hatSegment4.setRotationPoint(-1.5F, -14.6F, 0F); + hatSegment4.setTextureSize(64, 64); + hatSegment4.mirror = true; + setRotation(hatSegment4, -0.5759587F, 0F, 0F); + + hatSegment5 = new ModelRenderer(this, 20, 54); + hatSegment5.addBox(0F, 0F, 0F, 2, 2, 2); + hatSegment5.setRotationPoint(-1F, -14.6F, 0F); + hatSegment5.setTextureSize(64, 64); + hatSegment5.mirror = true; + setRotation(hatSegment5, 0.3316126F, 0F, 0F); + + hatSegment6 = new ModelRenderer(this, 20, 50); + hatSegment6.addBox(0F, 0F, 0F, 1, 1, 3); + hatSegment6.setRotationPoint(-0.5F, -15.1F, 2F); + hatSegment6.setTextureSize(64, 64); + hatSegment6.mirror = true; + setRotation(hatSegment6, -0.5585054F, 0F, 0F); + + bipedBody = new ModelRenderer(this, 16, 16); + bipedBody.addBox(-4F, 0F, -2F, 8, 11, 4, delta); + bipedBody.setRotationPoint(0F, 0F, 0F); + bipedBody.setTextureSize(64, 64); + bipedBody.mirror = true; + setRotation(bipedBody, 0F, 0F, 0F); + + robe = new ModelRenderer(this, 40, 32); + robe.addBox(-4F, 0F, -2F, 8, 9, 4, delta); + robe.setRotationPoint(0F, 12, 0F); // 12.5 accounts for the expansion of each box + robe.setTextureSize(64, 64); + robe.mirror = true; + setRotation(robe, 0F, 0F, 0F); + + collar = new ModelRenderer(this, 0, 32); + collar.addBox(-7F, 0F, -2F, 14, 4, 4, 1); + collar.setRotationPoint(0F, 0F, 0F); + collar.setTextureSize(64, 64); + collar.mirror = true; + setRotation(collar, 0F, 0F, 0F); + + // Makes the hat rotate with the head. + bipedHead.addChild(hatBrim); + bipedHead.addChild(hatSegment1); + bipedHead.addChild(hatSegment2); + bipedHead.addChild(hatSegment3); + bipedHead.addChild(hatSegment4); + bipedHead.addChild(hatSegment5); + bipedHead.addChild(hatSegment6); + bipedBody.addChild(collar); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){ + if(entity.isInvisible() && !entity.getEntityData().getBoolean(BlockStatue.PETRIFIED_NBT_KEY) + && !entity.getEntityData().getBoolean(BlockStatue.FROZEN_NBT_KEY)) return; + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + this.robe.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z){ + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity){ + + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + this.robe.showModel = this.bipedBody.showModel; + + if(this.isSneak){ + //this.robe.rotationPointY = 10.5f; + this.robe.rotationPointZ = 4; + }else{ + //this.robe.rotationPointY = 12.5f; + this.robe.rotationPointZ = 0; + } + + // The bottom part of the robe takes the y rotation from the rest of the robe but the x/z rotation + // from the average of the two legs + this.robe.rotateAngleX = (this.bipedLeftLeg.rotateAngleX + this.bipedRightLeg.rotateAngleX) / 2f; + this.robe.rotateAngleY = this.bipedBody.rotateAngleY; + this.robe.rotateAngleZ = (this.bipedLeftLeg.rotateAngleZ + this.bipedRightLeg.rotateAngleZ) / 2f; + } + +} diff --git a/src/main/java/electroblob/wizardry/constants/Constants.java b/src/main/java/electroblob/wizardry/constants/Constants.java index 25db5d7b..7f9da548 100644 --- a/src/main/java/electroblob/wizardry/constants/Constants.java +++ b/src/main/java/electroblob/wizardry/constants/Constants.java @@ -22,10 +22,6 @@ public final class Constants { public static final float STORAGE_INCREASE_PER_LEVEL = 0.15f; /** The fraction by which potency is increased for each tier of matching wand. */ public static final float POTENCY_INCREASE_PER_TIER = 0.15f; - /** The fraction by which costs are reduced for each piece of matching armour. */ - public static final float COST_REDUCTION_PER_ARMOUR = 0.15f; - /** The extra fraction by which costs are reduced for a full set of elemental armour. */ - public static final float FULL_ARMOUR_SET_BONUS = 0.2f; /** The fraction by which spell duration is increased for each level of duration upgrade. */ public static final float DURATION_INCREASE_PER_LEVEL = 0.25f; /** The fraction by which spell range is increased for each level of range upgrade. */ diff --git a/src/main/java/electroblob/wizardry/integration/jei/WizardryJEIPlugin.java b/src/main/java/electroblob/wizardry/integration/jei/WizardryJEIPlugin.java index 104022ad..b2d3cb0b 100644 --- a/src/main/java/electroblob/wizardry/integration/jei/WizardryJEIPlugin.java +++ b/src/main/java/electroblob/wizardry/integration/jei/WizardryJEIPlugin.java @@ -73,7 +73,9 @@ public class WizardryJEIPlugin implements IModPlugin { addItemInfo(registry, WizardryItems.identification_scroll, ".desc_extended"); addItemInfo(registry, WizardryItems.spell_book); addItemInfo(registry, WizardryItems.scroll); - addItemInfo(registry, WizardryItems.armour_upgrade, ".desc_extended"); + addItemInfo(registry, WizardryItems.resplendent_thread, ".desc_extended"); + addItemInfo(registry, WizardryItems.crystal_silver_plating, ".desc_extended"); + addItemInfo(registry, WizardryItems.ethereal_crystalweave, ".desc_extended"); addItemInfo(registry, WizardryItems.purifying_elixir, ".desc_extended"); addItemInfo(registry, WizardryItems.astral_diamond); addItemInfo(registry, WizardryItems.ruined_spell_book); diff --git a/src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java b/src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java index cc770a03..aa7af8f9 100644 --- a/src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java +++ b/src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java @@ -99,7 +99,9 @@ public class ContainerArcaneWorkbench extends Container implements ISpellSortabl Set upgrades = new HashSet<>(WandHelper.getSpecialUpgrades()); // Can't be done statically. upgrades.add(WizardryItems.arcane_tome); - upgrades.add(WizardryItems.armour_upgrade); + upgrades.add(WizardryItems.resplendent_thread); + upgrades.add(WizardryItems.crystal_silver_plating); + upgrades.add(WizardryItems.ethereal_crystalweave); this.addSlotToContainer(new SlotItemList(tileentity, UPGRADE_SLOT, 147, 17, 1, upgrades.toArray(new Item[0]))) .setBackgroundName(EMPTY_SLOT_UPGRADE.toString()); diff --git a/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java b/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java index 8240aa3e..ef3d4fb1 100644 --- a/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java +++ b/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java @@ -133,7 +133,6 @@ public class ContainerBookshelf extends Container { registerBookItem(WizardryItems.scroll); registerBookItem(WizardryItems.blank_scroll); registerBookItem(WizardryItems.identification_scroll); - registerBookItem(WizardryItems.armour_upgrade); // Not using the map in WandHelper for consistency with BlockBookshelf (again, addons must add theirs manually) registerBookItem(WizardryItems.storage_upgrade); registerBookItem(WizardryItems.siphon_upgrade); diff --git a/src/main/java/electroblob/wizardry/item/ItemArmourUpgrade.java b/src/main/java/electroblob/wizardry/item/ItemArmourUpgrade.java index 921947bd..a33eb967 100644 --- a/src/main/java/electroblob/wizardry/item/ItemArmourUpgrade.java +++ b/src/main/java/electroblob/wizardry/item/ItemArmourUpgrade.java @@ -34,7 +34,7 @@ public class ItemArmourUpgrade extends Item { @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, net.minecraft.client.util.ITooltipFlag flagIn) { - Wizardry.proxy.addMultiLineDescription(tooltip, "item." + this.getRegistryName() + ".desc", "\u00A7d"); + Wizardry.proxy.addMultiLineDescription(tooltip, "item." + this.getRegistryName() + ".desc"); } } diff --git a/src/main/java/electroblob/wizardry/item/ItemWand.java b/src/main/java/electroblob/wizardry/item/ItemWand.java index 1cfae54f..4be9e34d 100644 --- a/src/main/java/electroblob/wizardry/item/ItemWand.java +++ b/src/main/java/electroblob/wizardry/item/ItemWand.java @@ -101,7 +101,7 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem, || s.getItemUseAction() == SpellActions.GRAPPLE || s.getItemUseAction() == SpellActions.SUMMON) ? 1 : 0); } - + @Override public Spell getCurrentSpell(ItemStack stack){ return WandHelper.getCurrentSpell(stack); @@ -709,7 +709,7 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem, if(player != null) WizardData.get(player).setTierReached(tier); - ItemStack newWand = new ItemStack(WizardryItems.getWand(tier, this.element)); + ItemStack newWand = new ItemStack(getWand(tier, this.element)); newWand.setTagCompound(wand.getTagCompound()); // This needs to be done after copying the tag compound so the mana capacity for the new wand // takes storage upgrades into account @@ -783,6 +783,30 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem, return wand; } + /** + * Helper method to return the appropriate wand based on tier and element. This replaces the cumbersome wand map in + * {@link WizardryItems} by accessing the item registry dynamically by generating the registry name on the fly. + *

+ * This method will only return wands from the base mod. It is unlikely that addons will need it, but it + * has been left public just in case. The intention is that this method is only used where there is no alternative. + * + * @param tier The tier of the wand required. + * @param element The element of the wand required. Null will be converted to {@link Element#MAGIC}. + * @return The wand item which corresponds to the given tier and element, or null if no such item exists. + * @throws NullPointerException if the given tier is null. + */ + // As noted above, in a few SPECIFIC cases this method is necessary (without using a data-driven system, at least, + // which I'm not going to spend the time making in the near future). Wizard trades and gear have been left using the + // WizardryItems version because they need to be replaced with a better system that doesn't use this at all. + public static Item getWand(Tier tier, Element element){ + if(tier == null) throw new NullPointerException("The given tier cannot be null."); + if(element == null) element = Element.MAGIC; + String registryName = tier == Tier.NOVICE && element == Element.MAGIC ? "magic" : tier.getUnlocalisedName(); + if(element != Element.MAGIC) registryName = registryName + "_" + element.getName(); + registryName = registryName + "_wand"; + return Item.REGISTRY.getObject(new ResourceLocation(Wizardry.MODID, registryName)); + } + @Override public boolean onApplyButtonPressed(EntityPlayer player, Slot centre, Slot crystals, Slot upgrade, Slot[] spellBooks){ diff --git a/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java b/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java index 82ab6e4e..b53954ea 100644 --- a/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java +++ b/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java @@ -1,17 +1,18 @@ package electroblob.wizardry.item; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; import com.google.common.collect.Streams; import electroblob.wizardry.Wizardry; import electroblob.wizardry.client.DrawingUtils; import electroblob.wizardry.constants.Constants; import electroblob.wizardry.constants.Element; import electroblob.wizardry.event.SpellCastEvent; -import electroblob.wizardry.registry.WizardryAdvancementTriggers; import electroblob.wizardry.registry.WizardryItems; +import electroblob.wizardry.registry.WizardryItems.Materials; +import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryRecipes; import electroblob.wizardry.registry.WizardryTabs; +import electroblob.wizardry.spell.Spell; +import electroblob.wizardry.util.EntityUtils.Operations; import electroblob.wizardry.util.InventoryUtils; import electroblob.wizardry.util.SpellModifiers; import net.minecraft.enchantment.Enchantment; @@ -24,13 +25,17 @@ import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.inventory.EntityEquipmentSlot.Type; import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.Style; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; +import net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent; import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.EventPriority; @@ -39,22 +44,60 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.function.Supplier; @Mod.EventBusSubscriber public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IManaStoringItem { - // VanillaCopy, ItemArmor has this set to private for some reason. - public static final UUID[] ARMOR_MODIFIERS = new UUID[] {UUID.fromString("845DB27C-C624-495F-8C9F-6020A9A58B6B"), UUID.fromString("D8499B04-0E66-4726-AB29-64469D734E0D"), UUID.fromString("9F3D476D-C118-4544-8365-64846904B48E"), UUID.fromString("2AD3F246-FEE1-4E67-B886-69FD380BB150")}; - // Damage reduction values that used to be in WizardryItems.SILK [feet, legs, chest, head] - private static int[] reductions = new int[]{2, 4, 5, 2}; - - public Element element; + // Full set bonuses + private static final float SAGE_OTHER_COST_REDUCTION = 0.2f; + private static final float WARLOCK_SPEED_BOOST = 0.2f; + private static final UUID WARLOCK_SPEED_BOOST_UUID = UUID.fromString("4bad7152-2663-4b1b-bb59-552e92847031"); - public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){ - super(material, renderIndex, armourType); + public enum ArmourClass { + + WIZARD(Materials.SILK, () -> null, "wizard", 0.1f, 0, "hat", "robe", "leggings", "boots"), + SAGE(Materials.SAGE, () -> WizardryItems.resplendent_thread, "sage", 0.2f, 0, "hat", "robe", "leggings", "boots"), + BATTLEMAGE(Materials.BATTLEMAGE, () -> WizardryItems.crystal_silver_plating, "battlemage", 0.05f, 0.15f, "helmet", "chestplate", "leggings", "boots"), + WARLOCK(Materials.WARLOCK, () -> WizardryItems.ethereal_crystalweave, "warlock", 0.1f, 0.3f, "hood", "robe", "leggings", "boots"); + + /** The armour material to use for this armour class. */ + final ArmorMaterial material; + /** The item that upgrades regular wizard armour into this class of armour. */ + final Supplier upgradeItem; + /** The fraction by which spell cost is reduced for each armour piece of this class with the matching element. */ + final float elementalCostReduction; + /** The fraction by which spell cooldown is reduced for each armour piece of this class. */ + final float cooldownReduction; + /** The first part of the texture filenames for this armour class. Also defines certain translation keys. */ + final String name; + /** The middle part of each item name (in the registry) for this armour class, e.g. "hat" or "chestplate". */ + final Map armourPieceNames; + + ArmourClass(ArmorMaterial material, Supplier upgradeItem, String name, float elementalCostReduction, + float cooldownReduction, String... armourPieceNames){ + this.material = material; + this.upgradeItem = upgradeItem; + this.name = name; + this.elementalCostReduction = elementalCostReduction; + this.cooldownReduction = cooldownReduction; + if(armourPieceNames.length != 4) throw new IllegalArgumentException("armourPieceNames must have a length of 4"); + this.armourPieceNames = new EnumMap<>(EntityEquipmentSlot.class); + this.armourPieceNames.put(EntityEquipmentSlot.HEAD, armourPieceNames[0]); + this.armourPieceNames.put(EntityEquipmentSlot.CHEST, armourPieceNames[1]); + this.armourPieceNames.put(EntityEquipmentSlot.LEGS, armourPieceNames[2]); + this.armourPieceNames.put(EntityEquipmentSlot.FEET, armourPieceNames[3]); + } + + } + + public final Element element; + public final ArmourClass armourClass; + + public ItemWizardArmour(ArmourClass armourClass, EntityEquipmentSlot armourType, Element element){ + super(armourClass.material, 1, armourType); + this.armourClass = armourClass; this.element = element; setCreativeTab(WizardryTabs.GEAR); WizardryRecipes.addToManaFlaskCharging(this); @@ -94,15 +137,75 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, World world, List tooltip, net.minecraft.client.util.ITooltipFlag advanced){ - if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) - tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.legendary", - new Style().setColor(TextFormatting.LIGHT_PURPLE))); - if(element != null){ - tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.buff", + tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.element_cost_reduction", new Style().setColor(TextFormatting.DARK_GRAY), - (int)(Constants.COST_REDUCTION_PER_ARMOUR * 100), element.getDisplayName())); + (int)(armourClass.elementalCostReduction * 100), element.getDisplayName())); } + + if(armourClass == ArmourClass.SAGE){ + tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.enchantability", + new Style().setColor(TextFormatting.BLUE))); + } + + if(armourClass.cooldownReduction > 0){ + tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.cooldown_reduction", + new Style().setColor(TextFormatting.DARK_GRAY), (int)(armourClass.cooldownReduction * 100))); + } + + if(armourClass != ArmourClass.WIZARD){ + + tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.full_set", + new Style().setColor(TextFormatting.AQUA))); + + Object args = new Object[0]; + + if(armourClass == ArmourClass.SAGE) args = (int)(SAGE_OTHER_COST_REDUCTION * 100); + if(armourClass == ArmourClass.WARLOCK) args = (int)(WARLOCK_SPEED_BOOST * 100); + + tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":" + armourClass.name + + "_armour.full_set_bonus", new Style().setColor(TextFormatting.AQUA), args)); + + } + + } + + @Override + public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){ + if(armorType == EntityEquipmentSlot.HEAD && isWearingFullSet(player, element, ArmourClass.BATTLEMAGE) + && player.ticksExisted % 20 == 0){ + player.addPotionEffect(new PotionEffect(WizardryPotions.ward, 219, 0, true, false)); + } + } + + /** + * Allows this armour piece to change the modifiers for spells cast while wearing it. This is called once for + * each piece of wizard armour the caster is wearing. This means if you need to apply a full set bonus, you + * should have only one of the pieces handle it (by convention, this is usually the helmet, but it doesn't matter). + *

+ * N.B. The modifiers object passed into this method is not the actual one from the spell cast event. It is a + * blank one local to armour that then gets combined with the actual one via + * {@link SpellModifiers#combine(SpellModifiers)} after all four pieces have been processed. This is important as it + * allows armour modifiers to stack linearly. This means the values should be added/subtracted rather than multiplied. + * @param caster The entity casting the spell and wearing the armour. + * @param spell The spell being cast. + * @param modifiers The modifiers specific to armour to apply to the global ones after all four slots are processed. + */ + protected void applySpellModifiers(EntityLivingBase caster, Spell spell, SpellModifiers modifiers){ + + if(spell.getElement() == this.element){ + modifiers.set(SpellModifiers.COST, modifiers.get(SpellModifiers.COST) - armourClass.elementalCostReduction, false); + } + + modifiers.set(WizardryItems.cooldown_upgrade, modifiers.get(WizardryItems.cooldown_upgrade) - armourClass.cooldownReduction, true); + + // Full set bonuses + if(this.armorType == EntityEquipmentSlot.HEAD && isWearingFullSet(caster, element, armourClass)){ + if(armourClass == ArmourClass.SAGE && spell.getElement() != this.element){ + modifiers.set(SpellModifiers.COST, 1 - SAGE_OTHER_COST_REDUCTION, false); + } + } + } @Override @@ -118,25 +221,18 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana // Legs use modelBiped if(armourSlot == EntityEquipmentSlot.LEGS && !entityLiving.isInvisible()) return null; - return Wizardry.proxy.getWizardArmourModel(); + return Wizardry.proxy.getWizardArmourModel(getArmorMaterial()); } @Override public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type){ - // Returns a completely transparent texture if the player is invisible. This is such an annoyingly easy - // fix, considering how long I spent trying to do this before - a bit of lateral thinking was all it took. - // Do note however that a texture pack could override this. -// if(entity instanceof EntityLivingBase && entity.isInvisible() && !entity.getEntityData().getBoolean(BlockStatue.PETRIFIED_NBT_KEY)) -// return "ebwizardry:textures/armour/invisible_armour.png"; + String s = armourClass.name + "_armour"; - String s = "wizard_armour"; - - if(Wizardry.tisTheSeason){ + if(Wizardry.tisTheSeason && armourClass == ArmourClass.WIZARD){ s = s + "_festive"; }else{ if(this.element != null) s = s + "_" + this.element.getName(); - if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) s = "legendary_" + s; } if(slot == EntityEquipmentSlot.LEGS) s = s + "_legs"; @@ -155,34 +251,6 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana return !(enchantment instanceof EnchantmentMending) && super.canApplyAtEnchantingTable(stack, enchantment); } - /** - * Properly handles the defence value of the armour. This method is responsible for the tooltip on top of - * the armour value. It is also what handles armour toughness. - */ - @Override - public Multimap getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack){ - - Multimap map = HashMultimap.create(); - - if(!this.isManaEmpty(stack) && this.armorType == slot){ - - int defense = reductions[slot.getIndex()]; - float toughness = 0f; - - if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) { - defense = ArmorMaterial.DIAMOND.getDamageReductionAmount(slot); - toughness = ArmorMaterial.DIAMOND.getToughness(); - } - - map.put(SharedMonsterAttributes.ARMOR.getName(), new AttributeModifier(ARMOR_MODIFIERS[slot.getIndex()], - "Armor modifier", defense, 0)); - map.put(SharedMonsterAttributes.ARMOR.getName(), new AttributeModifier(ARMOR_MODIFIERS[slot.getIndex()], - "Armor toughness", toughness, 0)); - } - - return map; - } - // Workbench stuff @Override @@ -196,17 +264,17 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana @Override public ItemStack applyUpgrade(@Nullable EntityPlayer player, ItemStack stack, ItemStack upgrade){ - // Applies legendary upgrade - if(upgrade.getItem() == WizardryItems.armour_upgrade){ - - if(!stack.hasTagCompound()){ - stack.setTagCompound(new NBTTagCompound()); - } - - if(!stack.getTagCompound().hasKey("legendary")){ - stack.getTagCompound().setBoolean("legendary", true); - upgrade.shrink(1); - if(player != null) WizardryAdvancementTriggers.legendary.triggerFor(player); + // Apply class upgrades + if(this.armourClass == ArmourClass.WIZARD){ + for(ArmourClass armourClass : ArmourClass.values()){ + if(upgrade.getItem() == armourClass.upgradeItem.get()){ + Item newArmour = getArmour(this.element, armourClass, this.getEquipmentSlot()); + ItemStack newStack = new ItemStack(newArmour); + ((ItemWizardArmour)newArmour).setMana(newStack, this.getMana(stack)); + newStack.setTagCompound(stack.getTagCompound()); + upgrade.shrink(1); + return newStack; + } } } @@ -252,34 +320,43 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana // Event Handlers -// @SubscribeEvent -// public static void onLivingUpdateEvent(LivingUpdateEvent event){ -// -// if(event.getEntityLiving() instanceof EntityPlayer){ -// -// EntityPlayer player = (EntityPlayer)event.getEntityLiving(); -// -// for(ItemStack stack : player.getArmorInventoryList()){ -// if(!(stack.getItem() instanceof ItemWizardArmour)){ -// return; // If any of the armour slots doesn't contain wizard armour, don't trigger the achievement. -// } -// } -// // If it gets this far, then all slots must be wizard armour, so trigger the achievement. -// WizardryAdvancementTriggers.armour_set.triggerFor(player); -// } -// } + // Can't use Item#getItemAttributeModifiers because it's not player-sensitive, grrr + @SubscribeEvent + public static void onLivingEquipmentChangeEvent(LivingEquipmentChangeEvent event){ + + IAttributeInstance movementSpeed = event.getEntityLiving().getAttributeMap().getAttributeInstance(SharedMonsterAttributes.MOVEMENT_SPEED); + + if(isWearingFullSet(event.getEntityLiving(), null, ArmourClass.WARLOCK)){ + // Only apply the modifier once (can't just check this is the helmet since it might not be the last piece equipped) + if(movementSpeed.getModifier(WARLOCK_SPEED_BOOST_UUID) == null){ + movementSpeed.applyModifier(new AttributeModifier(WARLOCK_SPEED_BOOST_UUID, "Warlock set bonus", WARLOCK_SPEED_BOOST, Operations.MULTIPLY_FLAT)); + } + }else{ + movementSpeed.removeModifier(WARLOCK_SPEED_BOOST_UUID); + } + } @SubscribeEvent(priority = EventPriority.LOW) public static void onSpellCastPreEvent(SpellCastEvent.Pre event){ // Armour cost reduction if(event.getCaster() == null) return; - int armourPieces = getMatchingArmourCount(event.getCaster(), event.getSpell().getElement()); - float multiplier = 1f - armourPieces * Constants.COST_REDUCTION_PER_ARMOUR; - if(armourPieces == InventoryUtils.ARMOUR_SLOTS.length) multiplier -= Constants.FULL_ARMOUR_SET_BONUS; - event.getModifiers().set(SpellModifiers.COST, event.getModifiers().get(SpellModifiers.COST) * multiplier, false); + + final SpellModifiers armourModifiers = new SpellModifiers(); + + Arrays.stream(InventoryUtils.ARMOUR_SLOTS).map(s -> event.getCaster().getItemStackFromSlot(s).getItem()) + .filter(i -> i instanceof ItemWizardArmour) + .forEach(i -> ((ItemWizardArmour)i).applySpellModifiers(event.getCaster(), event.getSpell(), armourModifiers)); + + event.getModifiers().combine(armourModifiers); } - /** Counts the number of armour pieces the given entity is wearing that match the given element. */ + /** + * Counts the number of armour pieces the given entity is wearing that match the given element. + * @deprecated in favour of {@link ItemWizardArmour#applySpellModifiers(EntityLivingBase, Spell, SpellModifiers)} + * and {@link ItemWizardArmour#isWearingFullSet(EntityLivingBase, Element, ArmourClass)}. Retained for API stability + * between minor versions, will be removed in future. + */ + @Deprecated public static int getMatchingArmourCount(EntityLivingBase entity, Element element){ return (int)Arrays.stream(InventoryUtils.ARMOUR_SLOTS) .map(s -> entity.getItemStackFromSlot(s).getItem()) @@ -287,6 +364,49 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana .count(); } + /** + * Helper method to return the appropriate wand based on tier and element. This replaces the cumbersome wand map in + * {@link WizardryItems} by accessing the item registry dynamically by generating the registry name on the fly. + *

+ * This method will only return armour from the base mod. It is unlikely that addons will need it, but it + * has been left public just in case. The intention is that this method is only used where there is no alternative. + * + * @param element The element of the wand required. Null will be converted to {@link Element#MAGIC}. + * @param armourClass The {@link ArmourClass} required + * @param slot EntityEquipmentSlot of the armour piece required + * @return The wand item which corresponds to the given tier and element, or null if no such item exists. + * @throws NullPointerException if the given tier is null. + */ + // As noted above, in a few SPECIFIC cases this method is necessary (without using a data-driven system, at least, + // which I'm not going to spend the time making in the near future). Wizard trades and gear have been left using the + // WizardryItems version because they need to be replaced with a better system that doesn't use this at all. + public static Item getArmour(Element element, ArmourClass armourClass, EntityEquipmentSlot slot){ + if(slot == null || slot.getSlotType() != Type.ARMOR) + throw new IllegalArgumentException("Must be a valid armour slot"); + if(element == null) element = Element.MAGIC; + String registryName = armourClass.name + "_" + armourClass.armourPieceNames.get(slot); + if(element != Element.MAGIC) registryName = registryName + "_" + element.getName(); + return Item.REGISTRY.getObject(new ResourceLocation(Wizardry.MODID, registryName)); + } + + /** + * Returns whether the given entity is wearing a full set of wizard armour of the given class and element. + * @param entity The entity to query. + * @param element The element to check, or null to accept any element as long as they are all the same. + * @param armourClass The class to check, or null to accept any class as long as they are all the same. + * @return True if the entity is wearing a full set of the given element and class, false otherwise. + */ + private static boolean isWearingFullSet(EntityLivingBase entity, @Nullable Element element, @Nullable ArmourClass armourClass){ + ItemStack helmet = entity.getItemStackFromSlot(EntityEquipmentSlot.HEAD); + if(!(helmet.getItem() instanceof ItemWizardArmour)) return false; + Element e = element == null ? ((ItemWizardArmour)helmet.getItem()).element : element; + ArmourClass ac = armourClass == null ? ((ItemWizardArmour)helmet.getItem()).armourClass : armourClass; + return Arrays.stream(InventoryUtils.ARMOUR_SLOTS) + .allMatch(s -> entity.getItemStackFromSlot(s).getItem() instanceof ItemWizardArmour + && ((ItemWizardArmour)entity.getItemStackFromSlot(s).getItem()).element == e + && ((ItemWizardArmour)entity.getItemStackFromSlot(s).getItem()).armourClass == ac); + } + @SubscribeEvent public static void onLivingSetAttackTargetEvent(LivingSetAttackTargetEvent event){ // Undo the mob detection penalty for wearing armour when invisible @@ -306,7 +426,7 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana if(event.getTarget().isSneaking()) followRange *= 0.8; float f = (float)armourPieces / ((EntityPlayer)event.getTarget()).inventory.armorInventory.size(); if(f < 0.1F) f = 0.1F; - followRange *= (double)(0.7F * f); + followRange *= 0.7F * f; // Don't need to worry about the isSuitableTarget check since it must already have been checked to get this far if(event.getTarget().getDistance(event.getEntity()) > followRange) ((EntityLiving)event.getEntityLiving()).setAttackTarget(null); } diff --git a/src/main/java/electroblob/wizardry/registry/WizardryAdvancementTriggers.java b/src/main/java/electroblob/wizardry/registry/WizardryAdvancementTriggers.java index 0d40c928..fd3565d9 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryAdvancementTriggers.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryAdvancementTriggers.java @@ -17,7 +17,6 @@ public final class WizardryAdvancementTriggers { private WizardryAdvancementTriggers(){} // No instances! - public static final CustomAdvancementTrigger legendary = new CustomAdvancementTrigger("trigger_legendary"); public static final CustomAdvancementTrigger max_out_wand = new CustomAdvancementTrigger("trigger_max_out_wand"); public static final CustomAdvancementTrigger special_upgrade = new CustomAdvancementTrigger("trigger_special_upgrade"); public static final CustomAdvancementTrigger anger_wizard = new CustomAdvancementTrigger("trigger_anger_wizard"); @@ -35,7 +34,6 @@ public final class WizardryAdvancementTriggers { public static void register(){ - CriteriaTriggers.register(legendary); CriteriaTriggers.register(max_out_wand); CriteriaTriggers.register(special_upgrade); CriteriaTriggers.register(anger_wizard); diff --git a/src/main/java/electroblob/wizardry/registry/WizardryItems.java b/src/main/java/electroblob/wizardry/registry/WizardryItems.java index a697589a..751ccbf1 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryItems.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryItems.java @@ -8,6 +8,7 @@ import electroblob.wizardry.entity.projectile.EntityPoisonBomb; import electroblob.wizardry.entity.projectile.EntitySmokeBomb; import electroblob.wizardry.entity.projectile.EntitySparkBomb; import electroblob.wizardry.item.*; +import electroblob.wizardry.item.ItemWizardArmour.ArmourClass; import electroblob.wizardry.misc.BehaviourSpellDispense; import electroblob.wizardry.registry.WizardryTabs.CreativeTabListed; import electroblob.wizardry.registry.WizardryTabs.CreativeTabSorted; @@ -18,7 +19,6 @@ import net.minecraft.dispenser.BehaviorProjectileDispense; import net.minecraft.dispenser.IPosition; import net.minecraft.entity.IProjectile; import net.minecraft.inventory.EntityEquipmentSlot; -import net.minecraft.inventory.EntityEquipmentSlot.Type; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; @@ -33,14 +33,10 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; import net.minecraftforge.registries.IForgeRegistry; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; import javax.annotation.Nonnull; import java.util.Arrays; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; /** * Class responsible for defining, storing and registering all of wizardry's items. Also registers the ItemBlocks for @@ -62,8 +58,15 @@ public final class WizardryItems { public static final ToolMaterial MAGICAL = EnumHelper.addToolMaterial("MAGICAL", 3, 1000, 8.0f, 4.0f, 0); - public static final ArmorMaterial SILK = EnumHelper.addArmorMaterial("SILK", "wizardry/textures/armour/wizard_armour", - 15, new int[]{0, 0, 0, 0}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_SILK, 0.0F); + // The parameter textureName is incorrectly-named, it's actually the name field in ArmorMaterial + public static final ArmorMaterial SILK = EnumHelper.addArmorMaterial("SILK", "silk", + 15, new int[]{2, 4, 5, 2}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_SILK, 0.0F); + public static final ArmorMaterial SAGE = EnumHelper.addArmorMaterial("SAGE", "sage", + 15, new int[]{2, 5, 6, 3}, 25, WizardrySounds.ITEM_ARMOUR_EQUIP_SAGE, 0.0F); + public static final ArmorMaterial BATTLEMAGE = EnumHelper.addArmorMaterial("BATTLEMAGE", "battlemage", + 15, new int[]{3, 6, 8, 3}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_BATTLEMAGE, 1.0F); + public static final ArmorMaterial WARLOCK = EnumHelper.addArmorMaterial("WARLOCK", "warlock", + 20, new int[]{2, 4, 5, 2}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_WARLOCK, 0.0F); } @@ -148,7 +151,9 @@ public final class WizardryItems { public static final Item frost_axe = placeholder(); public static final Item identification_scroll = placeholder(); - public static final Item armour_upgrade = placeholder(); + public static final Item resplendent_thread = placeholder(); + public static final Item crystal_silver_plating = placeholder(); + public static final Item ethereal_crystalweave = placeholder(); public static final Item astral_diamond = placeholder(); public static final Item purifying_elixir = placeholder(); @@ -199,6 +204,126 @@ public final class WizardryItems { public static final Item wizard_leggings_healing = placeholder(); public static final Item wizard_boots_healing = placeholder(); + public static final Item sage_hat = placeholder(); + public static final Item sage_robe = placeholder(); + public static final Item sage_leggings = placeholder(); + public static final Item sage_boots = placeholder(); + + public static final Item sage_hat_fire = placeholder(); + public static final Item sage_robe_fire = placeholder(); + public static final Item sage_leggings_fire = placeholder(); + public static final Item sage_boots_fire = placeholder(); + + public static final Item sage_hat_ice = placeholder(); + public static final Item sage_robe_ice = placeholder(); + public static final Item sage_leggings_ice = placeholder(); + public static final Item sage_boots_ice = placeholder(); + + public static final Item sage_hat_lightning = placeholder(); + public static final Item sage_robe_lightning = placeholder(); + public static final Item sage_leggings_lightning = placeholder(); + public static final Item sage_boots_lightning = placeholder(); + + public static final Item sage_hat_necromancy = placeholder(); + public static final Item sage_robe_necromancy = placeholder(); + public static final Item sage_leggings_necromancy = placeholder(); + public static final Item sage_boots_necromancy = placeholder(); + + public static final Item sage_hat_earth = placeholder(); + public static final Item sage_robe_earth = placeholder(); + public static final Item sage_leggings_earth = placeholder(); + public static final Item sage_boots_earth = placeholder(); + + public static final Item sage_hat_sorcery = placeholder(); + public static final Item sage_robe_sorcery = placeholder(); + public static final Item sage_leggings_sorcery = placeholder(); + public static final Item sage_boots_sorcery = placeholder(); + + public static final Item sage_hat_healing = placeholder(); + public static final Item sage_robe_healing = placeholder(); + public static final Item sage_leggings_healing = placeholder(); + public static final Item sage_boots_healing = placeholder(); + + public static final Item battlemage_helmet = placeholder(); + public static final Item battlemage_chestplate = placeholder(); + public static final Item battlemage_leggings = placeholder(); + public static final Item battlemage_boots = placeholder(); + + public static final Item battlemage_helmet_fire = placeholder(); + public static final Item battlemage_chestplate_fire = placeholder(); + public static final Item battlemage_leggings_fire = placeholder(); + public static final Item battlemage_boots_fire = placeholder(); + + public static final Item battlemage_helmet_ice = placeholder(); + public static final Item battlemage_chestplate_ice = placeholder(); + public static final Item battlemage_leggings_ice = placeholder(); + public static final Item battlemage_boots_ice = placeholder(); + + public static final Item battlemage_helmet_lightning = placeholder(); + public static final Item battlemage_chestplate_lightning = placeholder(); + public static final Item battlemage_leggings_lightning = placeholder(); + public static final Item battlemage_boots_lightning = placeholder(); + + public static final Item battlemage_helmet_necromancy = placeholder(); + public static final Item battlemage_chestplate_necromancy = placeholder(); + public static final Item battlemage_leggings_necromancy = placeholder(); + public static final Item battlemage_boots_necromancy = placeholder(); + + public static final Item battlemage_helmet_earth = placeholder(); + public static final Item battlemage_chestplate_earth = placeholder(); + public static final Item battlemage_leggings_earth = placeholder(); + public static final Item battlemage_boots_earth = placeholder(); + + public static final Item battlemage_helmet_sorcery = placeholder(); + public static final Item battlemage_chestplate_sorcery = placeholder(); + public static final Item battlemage_leggings_sorcery = placeholder(); + public static final Item battlemage_boots_sorcery = placeholder(); + + public static final Item battlemage_helmet_healing = placeholder(); + public static final Item battlemage_chestplate_healing = placeholder(); + public static final Item battlemage_leggings_healing = placeholder(); + public static final Item battlemage_boots_healing = placeholder(); + public static final Item warlock_hood = placeholder(); + public static final Item warlock_robe = placeholder(); + public static final Item warlock_leggings = placeholder(); + public static final Item warlock_boots = placeholder(); + + public static final Item warlock_hood_fire = placeholder(); + public static final Item warlock_robe_fire = placeholder(); + public static final Item warlock_leggings_fire = placeholder(); + public static final Item warlock_boots_fire = placeholder(); + + public static final Item warlock_hood_ice = placeholder(); + public static final Item warlock_robe_ice = placeholder(); + public static final Item warlock_leggings_ice = placeholder(); + public static final Item warlock_boots_ice = placeholder(); + + public static final Item warlock_hood_lightning = placeholder(); + public static final Item warlock_robe_lightning = placeholder(); + public static final Item warlock_leggings_lightning = placeholder(); + public static final Item warlock_boots_lightning = placeholder(); + + public static final Item warlock_hood_necromancy = placeholder(); + public static final Item warlock_robe_necromancy = placeholder(); + public static final Item warlock_leggings_necromancy = placeholder(); + public static final Item warlock_boots_necromancy = placeholder(); + + public static final Item warlock_hood_earth = placeholder(); + public static final Item warlock_robe_earth = placeholder(); + public static final Item warlock_leggings_earth = placeholder(); + public static final Item warlock_boots_earth = placeholder(); + + public static final Item warlock_hood_sorcery = placeholder(); + public static final Item warlock_robe_sorcery = placeholder(); + public static final Item warlock_leggings_sorcery = placeholder(); + public static final Item warlock_boots_sorcery = placeholder(); + + public static final Item warlock_hood_healing = placeholder(); + public static final Item warlock_robe_healing = placeholder(); + public static final Item warlock_leggings_healing = placeholder(); + public static final Item warlock_boots_healing = placeholder(); + + public static final Item spectral_helmet = placeholder(); public static final Item spectral_chestplate = placeholder(); public static final Item spectral_leggings = placeholder(); @@ -285,46 +410,44 @@ public final class WizardryItems { public static final Item charm_mount_teleporting = placeholder(); public static final Item charm_feeding = placeholder(); - private static final Map, Item> WAND_MAP = new HashMap<>(); - private static final Map, Item> ARMOUR_MAP = new HashMap<>(); - /** - * Helper method to return the appropriate wand based on tier and element. As of Wizardry 2.1, this uses the - * immutable map stored in {@link WizardryItems#WAND_MAP}. Currently used for upgrading wands, for chest generation - * and to iterate through wands for charging recipes. + * Helper method to return the appropriate wand based on tier and element. As of Wizardry 4.3.3, this delegates to + * the cleaner replacement method {@link ItemWand#getWand(Tier, Element)}, which accesses the item registry + * dynamically by generating the registry name on the fly. * * @param tier The tier of the wand required. * @param element The element of the wand required. Null will be converted to {@link Element#MAGIC}. * @return The wand item which corresponds to the given tier and element, or null if no such item exists. * @throws NullPointerException if the given tier is null. - * @deprecated This is being phased out; it is now only used for wizard gear and trades. To add an item to - * charging recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}. + * @deprecated This is being phased out; it is now only used for wizard gear and trades. To add an item to charging + * recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}. If you absolutely must use this method, usages + * may be replaced with {@link ItemWand#getWand(Tier, Element)}. However, this should only be done in cases where it + * is appropriate to ignore all wands that are not in the base mod. */ @Deprecated public static Item getWand(Tier tier, Element element){ - if(tier == null) throw new NullPointerException("The given tier cannot be null."); - if(element == null) element = Element.MAGIC; - return WAND_MAP.get(ImmutablePair.of(tier, element)); + return ItemWand.getWand(tier, element); // Delegate to replacement method } /** - * Helper method to return the appropriate armour item based on element and slot. As of Wizardry 2.1, this uses the - * immutable map stored in {@link WizardryItems#ARMOUR_MAP}. Currently used to iterate through armour for - * registering charging recipes and for chest generation. + * Helper method to return the appropriate armour item based on element and slot. As of Wizardry 4.3.3, this + * delegates to the cleaner replacement method {@link ItemWizardArmour#getArmour(Element, ArmourClass, EntityEquipmentSlot)}, + * which accesses the item registry dynamically by generating the registry name on the fly. + *

+ * This method only returns the original, basic armour set ({@link ArmourClass#WIZARD}). * * @param element The EnumElement of the armour required. Null will be converted to {@link Element#MAGIC}. * @param slot EntityEquipmentSlot of the armour piece required * @return The armour item which corresponds to the given element and slot, or null if no such item exists. * @throws IllegalArgumentException if the given slot is not an armour slot. * @deprecated This is being phased out; it is now only used for wizard gear and trades. To add an item to - * charging recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}. + * charging recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}. If you absolutely must use this + * method, usages may be replaced with {@link ItemWand#getWand(Tier, Element)}. However, this should only be done in + * cases where it is appropriate to ignore all armour that is not in the base mod. */ @Deprecated public static Item getArmour(Element element, EntityEquipmentSlot slot){ - if(slot == null || slot.getSlotType() != Type.ARMOR) - throw new IllegalArgumentException("Must be a valid armour slot"); - if(element == null) element = Element.MAGIC; - return ARMOUR_MAP.get(ImmutablePair.of(slot, element)); + return ItemWizardArmour.getArmour(element, ArmourClass.WIZARD, slot); // Delegate to replacement method } /** @@ -444,218 +567,340 @@ public final class WizardryItems { // Items - registerItem(registry, "magic_crystal", new ItemCrystal()); + registerItem(registry, "magic_crystal", new ItemCrystal()); - registerItem(registry, "crystal_shard", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); - registerItem(registry, "grand_crystal", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); + registerItem(registry, "crystal_shard", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); + registerItem(registry, "grand_crystal", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); - registerItem(registry, "wizard_handbook", new ItemWizardHandbook(), true); - registerItem(registry, "arcane_tome", new ItemArcaneTome()); - registerItem(registry, "spell_book", new ItemSpellBook(), true); - registerItem(registry, "scroll", new ItemScroll()); - registerItem(registry, "ruined_spell_book", new Item().setCreativeTab(WizardryTabs.WIZARDRY).setMaxStackSize(16)); + registerItem(registry, "wizard_handbook", new ItemWizardHandbook(), true); + registerItem(registry, "arcane_tome", new ItemArcaneTome()); + registerItem(registry, "spell_book", new ItemSpellBook(), true); + registerItem(registry, "scroll", new ItemScroll()); + registerItem(registry, "ruined_spell_book", new Item().setCreativeTab(WizardryTabs.WIZARDRY).setMaxStackSize(16)); - registerItem(registry, "magic_wand", new ItemWand(Tier.NOVICE, null)); - registerItem(registry, "apprentice_wand", new ItemWand(Tier.APPRENTICE, null)); - registerItem(registry, "advanced_wand", new ItemWand(Tier.ADVANCED, null)); - registerItem(registry, "master_wand", new ItemWand(Tier.MASTER, null)); + registerItem(registry, "magic_wand", new ItemWand(Tier.NOVICE, null)); + registerItem(registry, "apprentice_wand", new ItemWand(Tier.APPRENTICE, null)); + registerItem(registry, "advanced_wand", new ItemWand(Tier.ADVANCED, null)); + registerItem(registry, "master_wand", new ItemWand(Tier.MASTER, null)); - registerItem(registry, "novice_fire_wand", new ItemWand(Tier.NOVICE, Element.FIRE)); - registerItem(registry, "apprentice_fire_wand", new ItemWand(Tier.APPRENTICE, Element.FIRE)); - registerItem(registry, "advanced_fire_wand", new ItemWand(Tier.ADVANCED, Element.FIRE)); - registerItem(registry, "master_fire_wand", new ItemWand(Tier.MASTER, Element.FIRE)); + registerItem(registry, "novice_fire_wand", new ItemWand(Tier.NOVICE, Element.FIRE)); + registerItem(registry, "apprentice_fire_wand", new ItemWand(Tier.APPRENTICE, Element.FIRE)); + registerItem(registry, "advanced_fire_wand", new ItemWand(Tier.ADVANCED, Element.FIRE)); + registerItem(registry, "master_fire_wand", new ItemWand(Tier.MASTER, Element.FIRE)); - registerItem(registry, "novice_ice_wand", new ItemWand(Tier.NOVICE, Element.ICE)); - registerItem(registry, "apprentice_ice_wand", new ItemWand(Tier.APPRENTICE, Element.ICE)); - registerItem(registry, "advanced_ice_wand", new ItemWand(Tier.ADVANCED, Element.ICE)); - registerItem(registry, "master_ice_wand", new ItemWand(Tier.MASTER, Element.ICE)); + registerItem(registry, "novice_ice_wand", new ItemWand(Tier.NOVICE, Element.ICE)); + registerItem(registry, "apprentice_ice_wand", new ItemWand(Tier.APPRENTICE, Element.ICE)); + registerItem(registry, "advanced_ice_wand", new ItemWand(Tier.ADVANCED, Element.ICE)); + registerItem(registry, "master_ice_wand", new ItemWand(Tier.MASTER, Element.ICE)); - registerItem(registry, "novice_lightning_wand", new ItemWand(Tier.NOVICE, Element.LIGHTNING)); - registerItem(registry, "apprentice_lightning_wand", new ItemWand(Tier.APPRENTICE, Element.LIGHTNING)); - registerItem(registry, "advanced_lightning_wand", new ItemWand(Tier.ADVANCED, Element.LIGHTNING)); - registerItem(registry, "master_lightning_wand", new ItemWand(Tier.MASTER, Element.LIGHTNING)); + registerItem(registry, "novice_lightning_wand", new ItemWand(Tier.NOVICE, Element.LIGHTNING)); + registerItem(registry, "apprentice_lightning_wand", new ItemWand(Tier.APPRENTICE, Element.LIGHTNING)); + registerItem(registry, "advanced_lightning_wand", new ItemWand(Tier.ADVANCED, Element.LIGHTNING)); + registerItem(registry, "master_lightning_wand", new ItemWand(Tier.MASTER, Element.LIGHTNING)); - registerItem(registry, "novice_necromancy_wand", new ItemWand(Tier.NOVICE, Element.NECROMANCY)); - registerItem(registry, "apprentice_necromancy_wand", new ItemWand(Tier.APPRENTICE, Element.NECROMANCY)); - registerItem(registry, "advanced_necromancy_wand", new ItemWand(Tier.ADVANCED, Element.NECROMANCY)); - registerItem(registry, "master_necromancy_wand", new ItemWand(Tier.MASTER, Element.NECROMANCY)); + registerItem(registry, "novice_necromancy_wand", new ItemWand(Tier.NOVICE, Element.NECROMANCY)); + registerItem(registry, "apprentice_necromancy_wand", new ItemWand(Tier.APPRENTICE, Element.NECROMANCY)); + registerItem(registry, "advanced_necromancy_wand", new ItemWand(Tier.ADVANCED, Element.NECROMANCY)); + registerItem(registry, "master_necromancy_wand", new ItemWand(Tier.MASTER, Element.NECROMANCY)); - registerItem(registry, "novice_earth_wand", new ItemWand(Tier.NOVICE, Element.EARTH)); - registerItem(registry, "apprentice_earth_wand", new ItemWand(Tier.APPRENTICE, Element.EARTH)); - registerItem(registry, "advanced_earth_wand", new ItemWand(Tier.ADVANCED, Element.EARTH)); - registerItem(registry, "master_earth_wand", new ItemWand(Tier.MASTER, Element.EARTH)); + registerItem(registry, "novice_earth_wand", new ItemWand(Tier.NOVICE, Element.EARTH)); + registerItem(registry, "apprentice_earth_wand", new ItemWand(Tier.APPRENTICE, Element.EARTH)); + registerItem(registry, "advanced_earth_wand", new ItemWand(Tier.ADVANCED, Element.EARTH)); + registerItem(registry, "master_earth_wand", new ItemWand(Tier.MASTER, Element.EARTH)); - registerItem(registry, "novice_sorcery_wand", new ItemWand(Tier.NOVICE, Element.SORCERY)); - registerItem(registry, "apprentice_sorcery_wand", new ItemWand(Tier.APPRENTICE, Element.SORCERY)); - registerItem(registry, "advanced_sorcery_wand", new ItemWand(Tier.ADVANCED, Element.SORCERY)); - registerItem(registry, "master_sorcery_wand", new ItemWand(Tier.MASTER, Element.SORCERY)); + registerItem(registry, "novice_sorcery_wand", new ItemWand(Tier.NOVICE, Element.SORCERY)); + registerItem(registry, "apprentice_sorcery_wand", new ItemWand(Tier.APPRENTICE, Element.SORCERY)); + registerItem(registry, "advanced_sorcery_wand", new ItemWand(Tier.ADVANCED, Element.SORCERY)); + registerItem(registry, "master_sorcery_wand", new ItemWand(Tier.MASTER, Element.SORCERY)); - registerItem(registry, "novice_healing_wand", new ItemWand(Tier.NOVICE, Element.HEALING)); - registerItem(registry, "apprentice_healing_wand", new ItemWand(Tier.APPRENTICE, Element.HEALING)); - registerItem(registry, "advanced_healing_wand", new ItemWand(Tier.ADVANCED, Element.HEALING)); - registerItem(registry, "master_healing_wand", new ItemWand(Tier.MASTER, Element.HEALING)); + registerItem(registry, "novice_healing_wand", new ItemWand(Tier.NOVICE, Element.HEALING)); + registerItem(registry, "apprentice_healing_wand", new ItemWand(Tier.APPRENTICE, Element.HEALING)); + registerItem(registry, "advanced_healing_wand", new ItemWand(Tier.ADVANCED, Element.HEALING)); + registerItem(registry, "master_healing_wand", new ItemWand(Tier.MASTER, Element.HEALING)); - registerItem(registry, "spectral_sword", new ItemSpectralSword(ToolMaterial.IRON)); - registerItem(registry, "spectral_pickaxe", new ItemSpectralPickaxe(ToolMaterial.IRON)); - registerItem(registry, "spectral_bow", new ItemSpectralBow()); + registerItem(registry, "spectral_sword", new ItemSpectralSword(ToolMaterial.IRON)); + registerItem(registry, "spectral_pickaxe", new ItemSpectralPickaxe(ToolMaterial.IRON)); + registerItem(registry, "spectral_bow", new ItemSpectralBow()); - registerItem(registry, "blank_scroll", new ItemBlankScroll()); - registerItem(registry, "magic_silk", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); + registerItem(registry, "blank_scroll", new ItemBlankScroll()); + registerItem(registry, "magic_silk", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); - registerItem(registry, "small_mana_flask", new ItemManaFlask(ItemManaFlask.Size.SMALL)); - registerItem(registry, "medium_mana_flask", new ItemManaFlask(ItemManaFlask.Size.MEDIUM)); - registerItem(registry, "large_mana_flask", new ItemManaFlask(ItemManaFlask.Size.LARGE)); + registerItem(registry, "small_mana_flask", new ItemManaFlask(ItemManaFlask.Size.SMALL)); + registerItem(registry, "medium_mana_flask", new ItemManaFlask(ItemManaFlask.Size.MEDIUM)); + registerItem(registry, "large_mana_flask", new ItemManaFlask(ItemManaFlask.Size.LARGE)); - registerItem(registry, "storage_upgrade", new ItemWandUpgrade()); - registerItem(registry, "siphon_upgrade", new ItemWandUpgrade()); - registerItem(registry, "condenser_upgrade", new ItemWandUpgrade()); - registerItem(registry, "range_upgrade", new ItemWandUpgrade()); - registerItem(registry, "duration_upgrade", new ItemWandUpgrade()); - registerItem(registry, "cooldown_upgrade", new ItemWandUpgrade()); - registerItem(registry, "blast_upgrade", new ItemWandUpgrade()); - registerItem(registry, "attunement_upgrade", new ItemWandUpgrade()); - registerItem(registry, "melee_upgrade", new ItemWandUpgrade()); + registerItem(registry, "storage_upgrade", new ItemWandUpgrade()); + registerItem(registry, "siphon_upgrade", new ItemWandUpgrade()); + registerItem(registry, "condenser_upgrade", new ItemWandUpgrade()); + registerItem(registry, "range_upgrade", new ItemWandUpgrade()); + registerItem(registry, "duration_upgrade", new ItemWandUpgrade()); + registerItem(registry, "cooldown_upgrade", new ItemWandUpgrade()); + registerItem(registry, "blast_upgrade", new ItemWandUpgrade()); + registerItem(registry, "attunement_upgrade", new ItemWandUpgrade()); + registerItem(registry, "melee_upgrade", new ItemWandUpgrade()); - registerItem(registry, "flaming_axe", new ItemFlamingAxe(Materials.MAGICAL)); - registerItem(registry, "frost_axe", new ItemFrostAxe(Materials.MAGICAL)); + registerItem(registry, "flaming_axe", new ItemFlamingAxe(Materials.MAGICAL)); + registerItem(registry, "frost_axe", new ItemFrostAxe(Materials.MAGICAL)); - registerItem(registry, "identification_scroll", new ItemIdentificationScroll()); - registerItem(registry, "armour_upgrade", new ItemArmourUpgrade()); - registerItem(registry, "astral_diamond", new Item(){ @Override public EnumRarity getRarity(ItemStack stack){ return EnumRarity.RARE; }}.setCreativeTab(WizardryTabs.WIZARDRY)); - registerItem(registry, "purifying_elixir", new ItemPurifyingElixir()); + registerItem(registry, "identification_scroll", new ItemIdentificationScroll()); + registerItem(registry, "resplendent_thread", new ItemArmourUpgrade()); + registerItem(registry, "crystal_silver_plating", new ItemArmourUpgrade()); + registerItem(registry, "ethereal_crystalweave", new ItemArmourUpgrade()); + registerItem(registry, "astral_diamond", new Item(){ @Override public EnumRarity getRarity(ItemStack stack){ return EnumRarity.RARE; }}.setCreativeTab(WizardryTabs.WIZARDRY)); + registerItem(registry, "purifying_elixir", new ItemPurifyingElixir()); - registerItem(registry, "firebomb", new ItemFirebomb()); - registerItem(registry, "poison_bomb", new ItemPoisonBomb()); - registerItem(registry, "smoke_bomb", new ItemSmokeBomb()); - registerItem(registry, "spark_bomb", new ItemSparkBomb()); + registerItem(registry, "firebomb", new ItemFirebomb()); + registerItem(registry, "poison_bomb", new ItemPoisonBomb()); + registerItem(registry, "smoke_bomb", new ItemSmokeBomb()); + registerItem(registry, "spark_bomb", new ItemSparkBomb()); - registerItem(registry, "spectral_dust", new ItemSpectralDust()); + registerItem(registry, "spectral_dust", new ItemSpectralDust()); - registerItem(registry, "wizard_hat", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, null), true); - registerItem(registry, "wizard_robe", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, null)); - registerItem(registry, "wizard_leggings", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, null)); - registerItem(registry, "wizard_boots", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, null)); + registerItem(registry, "wizard_hat", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, null), true); + registerItem(registry, "wizard_robe", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, null)); + registerItem(registry, "wizard_leggings", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, null)); + registerItem(registry, "wizard_boots", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, null)); - registerItem(registry, "wizard_hat_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.FIRE)); - registerItem(registry, "wizard_robe_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.FIRE)); - registerItem(registry, "wizard_leggings_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.FIRE)); - registerItem(registry, "wizard_boots_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.FIRE)); + registerItem(registry, "wizard_hat_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.FIRE)); + registerItem(registry, "wizard_robe_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.FIRE)); + registerItem(registry, "wizard_leggings_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.FIRE)); + registerItem(registry, "wizard_boots_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.FIRE)); - registerItem(registry, "wizard_hat_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.ICE)); - registerItem(registry, "wizard_robe_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.ICE)); - registerItem(registry, "wizard_leggings_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.ICE)); - registerItem(registry, "wizard_boots_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.ICE)); + registerItem(registry, "wizard_hat_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.ICE)); + registerItem(registry, "wizard_robe_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.ICE)); + registerItem(registry, "wizard_leggings_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.ICE)); + registerItem(registry, "wizard_boots_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.ICE)); - registerItem(registry, "wizard_hat_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.LIGHTNING)); - registerItem(registry, "wizard_robe_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.LIGHTNING)); - registerItem(registry, "wizard_leggings_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.LIGHTNING)); - registerItem(registry, "wizard_boots_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.LIGHTNING)); + registerItem(registry, "wizard_hat_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.LIGHTNING)); + registerItem(registry, "wizard_robe_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.LIGHTNING)); + registerItem(registry, "wizard_leggings_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.LIGHTNING)); + registerItem(registry, "wizard_boots_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.LIGHTNING)); - registerItem(registry, "wizard_hat_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.NECROMANCY)); - registerItem(registry, "wizard_robe_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.NECROMANCY)); - registerItem(registry, "wizard_leggings_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.NECROMANCY)); - registerItem(registry, "wizard_boots_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.NECROMANCY)); + registerItem(registry, "wizard_hat_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.NECROMANCY)); + registerItem(registry, "wizard_robe_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.NECROMANCY)); + registerItem(registry, "wizard_leggings_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.NECROMANCY)); + registerItem(registry, "wizard_boots_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.NECROMANCY)); - registerItem(registry, "wizard_hat_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.EARTH)); - registerItem(registry, "wizard_robe_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.EARTH)); - registerItem(registry, "wizard_leggings_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.EARTH)); - registerItem(registry, "wizard_boots_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.EARTH)); + registerItem(registry, "wizard_hat_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.EARTH)); + registerItem(registry, "wizard_robe_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.EARTH)); + registerItem(registry, "wizard_leggings_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.EARTH)); + registerItem(registry, "wizard_boots_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.EARTH)); - registerItem(registry, "wizard_hat_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.SORCERY)); - registerItem(registry, "wizard_robe_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.SORCERY)); - registerItem(registry, "wizard_leggings_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.SORCERY)); - registerItem(registry, "wizard_boots_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.SORCERY)); + registerItem(registry, "wizard_hat_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.SORCERY)); + registerItem(registry, "wizard_robe_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.SORCERY)); + registerItem(registry, "wizard_leggings_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.SORCERY)); + registerItem(registry, "wizard_boots_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.SORCERY)); - registerItem(registry, "wizard_hat_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.HEALING)); - registerItem(registry, "wizard_robe_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.HEALING)); - registerItem(registry, "wizard_leggings_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.HEALING)); - registerItem(registry, "wizard_boots_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.HEALING)); + registerItem(registry, "wizard_hat_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.HEALING)); + registerItem(registry, "wizard_robe_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.HEALING)); + registerItem(registry, "wizard_leggings_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.HEALING)); + registerItem(registry, "wizard_boots_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.HEALING)); - registerItem(registry, "spectral_helmet", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.HEAD)); - registerItem(registry, "spectral_chestplate", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.CHEST)); - registerItem(registry, "spectral_leggings", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.LEGS)); - registerItem(registry, "spectral_boots", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.FEET)); + registerItem(registry, "sage_hat", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, null)); + registerItem(registry, "sage_robe", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, null)); + registerItem(registry, "sage_leggings", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, null)); + registerItem(registry, "sage_boots", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, null)); - registerItem(registry, "lightning_hammer", new ItemLightningHammer()); - registerItem(registry, "flamecatcher", new ItemFlamecatcher()); + registerItem(registry, "sage_hat_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.FIRE)); + registerItem(registry, "sage_robe_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.FIRE)); + registerItem(registry, "sage_leggings_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.FIRE)); + registerItem(registry, "sage_boots_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.FIRE)); - registerItem(registry, "ring_condensing", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_siphoning", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_battlemage", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_combustion", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_fire_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_fire_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_disintegration", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_meteor", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_ice_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_ice_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_arcane_frost", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_shattering", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_lightning_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_seeking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_hammer", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_stormcloud", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_soulbinding", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_leeching", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_necromancy_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_mind_control", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_poison", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_earth_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_earth_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_full_moon", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_evoker", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_extraction", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_mana_return", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); - registerItem(registry, "ring_blockwrangler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_conjurer", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_defender", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); - registerItem(registry, "ring_paladin", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); - registerItem(registry, "ring_interdiction", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "sage_hat_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.ICE)); + registerItem(registry, "sage_robe_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.ICE)); + registerItem(registry, "sage_leggings_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.ICE)); + registerItem(registry, "sage_boots_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.ICE)); - registerItem(registry, "amulet_arcane_defence", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_warding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_wisdom", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_fire_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_fire_cloaking", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_ice_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_ice_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_frost_warding", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_potential", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_channeling", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_lich", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_wither_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_glide", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_banishing", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_anchoring", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_recovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_transience", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_resurrection", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_auto_shield", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); - registerItem(registry, "amulet_absorption", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); + registerItem(registry, "sage_hat_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.LIGHTNING)); + registerItem(registry, "sage_robe_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.LIGHTNING)); + registerItem(registry, "sage_leggings_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.LIGHTNING)); + registerItem(registry, "sage_boots_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.LIGHTNING)); - registerItem(registry, "charm_haggler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_experience_tome", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_move_speed", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_spell_discovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_auto_smelt", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_lava_walking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_minion_health", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_minion_variants", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_undead_helmets", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_hunger_casting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_flight", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_growth", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_abseiling", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_silk_touch", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_sixth_sense", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_stop_time", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_light", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_transportation", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_black_hole", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_mount_teleporting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); - registerItem(registry, "charm_feeding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); + registerItem(registry, "sage_hat_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.NECROMANCY)); + registerItem(registry, "sage_robe_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.NECROMANCY)); + registerItem(registry, "sage_leggings_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.NECROMANCY)); + registerItem(registry, "sage_boots_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.NECROMANCY)); + + registerItem(registry, "sage_hat_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.EARTH)); + registerItem(registry, "sage_robe_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.EARTH)); + registerItem(registry, "sage_leggings_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.EARTH)); + registerItem(registry, "sage_boots_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.EARTH)); + + registerItem(registry, "sage_hat_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.SORCERY)); + registerItem(registry, "sage_robe_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.SORCERY)); + registerItem(registry, "sage_leggings_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.SORCERY)); + registerItem(registry, "sage_boots_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.SORCERY)); + + registerItem(registry, "sage_hat_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.HEALING)); + registerItem(registry, "sage_robe_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.HEALING)); + registerItem(registry, "sage_leggings_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.HEALING)); + registerItem(registry, "sage_boots_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.HEALING)); + + registerItem(registry, "battlemage_helmet", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, null)); + registerItem(registry, "battlemage_chestplate", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, null)); + registerItem(registry, "battlemage_leggings", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, null)); + registerItem(registry, "battlemage_boots", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, null)); + + registerItem(registry, "battlemage_helmet_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.FIRE)); + registerItem(registry, "battlemage_chestplate_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.FIRE)); + registerItem(registry, "battlemage_leggings_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.FIRE)); + registerItem(registry, "battlemage_boots_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.FIRE)); + + registerItem(registry, "battlemage_helmet_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.ICE)); + registerItem(registry, "battlemage_chestplate_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.ICE)); + registerItem(registry, "battlemage_leggings_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.ICE)); + registerItem(registry, "battlemage_boots_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.ICE)); + + registerItem(registry, "battlemage_helmet_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.LIGHTNING)); + registerItem(registry, "battlemage_chestplate_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.LIGHTNING)); + registerItem(registry, "battlemage_leggings_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.LIGHTNING)); + registerItem(registry, "battlemage_boots_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.LIGHTNING)); + + registerItem(registry, "battlemage_helmet_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.NECROMANCY)); + registerItem(registry, "battlemage_chestplate_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.NECROMANCY)); + registerItem(registry, "battlemage_leggings_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.NECROMANCY)); + registerItem(registry, "battlemage_boots_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.NECROMANCY)); + + registerItem(registry, "battlemage_helmet_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.EARTH)); + registerItem(registry, "battlemage_chestplate_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.EARTH)); + registerItem(registry, "battlemage_leggings_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.EARTH)); + registerItem(registry, "battlemage_boots_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.EARTH)); + + registerItem(registry, "battlemage_helmet_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.SORCERY)); + registerItem(registry, "battlemage_chestplate_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.SORCERY)); + registerItem(registry, "battlemage_leggings_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.SORCERY)); + registerItem(registry, "battlemage_boots_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.SORCERY)); + + registerItem(registry, "battlemage_helmet_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.HEALING)); + registerItem(registry, "battlemage_chestplate_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.HEALING)); + registerItem(registry, "battlemage_leggings_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.HEALING)); + registerItem(registry, "battlemage_boots_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.HEALING)); + + registerItem(registry, "warlock_hood", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, null)); + registerItem(registry, "warlock_robe", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, null)); + registerItem(registry, "warlock_leggings", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, null)); + registerItem(registry, "warlock_boots", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, null)); + + registerItem(registry, "warlock_hood_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.FIRE)); + registerItem(registry, "warlock_robe_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.FIRE)); + registerItem(registry, "warlock_leggings_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.FIRE)); + registerItem(registry, "warlock_boots_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.FIRE)); + + registerItem(registry, "warlock_hood_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.ICE)); + registerItem(registry, "warlock_robe_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.ICE)); + registerItem(registry, "warlock_leggings_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.ICE)); + registerItem(registry, "warlock_boots_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.ICE)); + + registerItem(registry, "warlock_hood_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.LIGHTNING)); + registerItem(registry, "warlock_robe_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.LIGHTNING)); + registerItem(registry, "warlock_leggings_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.LIGHTNING)); + registerItem(registry, "warlock_boots_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.LIGHTNING)); + + registerItem(registry, "warlock_hood_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.NECROMANCY)); + registerItem(registry, "warlock_robe_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.NECROMANCY)); + registerItem(registry, "warlock_leggings_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.NECROMANCY)); + registerItem(registry, "warlock_boots_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.NECROMANCY)); + + registerItem(registry, "warlock_hood_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.EARTH)); + registerItem(registry, "warlock_robe_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.EARTH)); + registerItem(registry, "warlock_leggings_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.EARTH)); + registerItem(registry, "warlock_boots_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.EARTH)); + + registerItem(registry, "warlock_hood_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.SORCERY)); + registerItem(registry, "warlock_robe_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.SORCERY)); + registerItem(registry, "warlock_leggings_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.SORCERY)); + registerItem(registry, "warlock_boots_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.SORCERY)); + + registerItem(registry, "warlock_hood_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.HEALING)); + registerItem(registry, "warlock_robe_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.HEALING)); + registerItem(registry, "warlock_leggings_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.HEALING)); + registerItem(registry, "warlock_boots_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.HEALING)); + + registerItem(registry, "spectral_helmet", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.HEAD)); + registerItem(registry, "spectral_chestplate", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.CHEST)); + registerItem(registry, "spectral_leggings", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.LEGS)); + registerItem(registry, "spectral_boots", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.FEET)); + + registerItem(registry, "lightning_hammer", new ItemLightningHammer()); + registerItem(registry, "flamecatcher", new ItemFlamecatcher()); + + registerItem(registry, "ring_condensing", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_siphoning", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_battlemage", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_combustion", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_fire_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_fire_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_disintegration", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_meteor", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_ice_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_ice_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_arcane_frost", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_shattering", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_lightning_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_seeking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_hammer", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_stormcloud", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_soulbinding", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_leeching", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_necromancy_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_mind_control", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_poison", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_earth_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_earth_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_full_moon", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_evoker", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_extraction", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_mana_return", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + registerItem(registry, "ring_blockwrangler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_conjurer", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_defender", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING)); + registerItem(registry, "ring_paladin", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING)); + registerItem(registry, "ring_interdiction", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING)); + + registerItem(registry, "amulet_arcane_defence", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_warding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_wisdom", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_fire_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_fire_cloaking", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_ice_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_ice_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_frost_warding", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_potential", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_channeling", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_lich", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_wither_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_glide", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_banishing", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_anchoring", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_recovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_transience", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_resurrection", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_auto_shield", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET)); + registerItem(registry, "amulet_absorption", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET)); + + registerItem(registry, "charm_haggler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_experience_tome", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_move_speed", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_spell_discovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_auto_smelt", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_lava_walking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_minion_health", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_minion_variants", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_undead_helmets", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_hunger_casting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_flight", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_growth", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_abseiling", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_silk_touch", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_sixth_sense", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_stop_time", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_light", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_transportation", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_black_hole", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_mount_teleporting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM)); + registerItem(registry, "charm_feeding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM)); } @@ -756,76 +1001,4 @@ public final class WizardryItems { EnumHelper.addEnum(BannerPattern.class, codeName, new Class[]{String.class, String.class, ItemStack.class}, fileName, hashName, patternItem); } - public static void populateWandMap(){ - - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.MAGIC), magic_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.FIRE), novice_fire_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.ICE), novice_ice_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.LIGHTNING), novice_lightning_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.NECROMANCY), novice_necromancy_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.EARTH), novice_earth_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.SORCERY), novice_sorcery_wand); - WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.HEALING), novice_healing_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.MAGIC), apprentice_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.FIRE), apprentice_fire_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.ICE), apprentice_ice_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.LIGHTNING), apprentice_lightning_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.NECROMANCY), apprentice_necromancy_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.EARTH), apprentice_earth_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.SORCERY), apprentice_sorcery_wand); - WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.HEALING), apprentice_healing_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.MAGIC), advanced_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.FIRE), advanced_fire_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.ICE), advanced_ice_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.LIGHTNING), advanced_lightning_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.NECROMANCY), advanced_necromancy_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.EARTH), advanced_earth_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.SORCERY), advanced_sorcery_wand); - WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.HEALING), advanced_healing_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.MAGIC), master_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.FIRE), master_fire_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.ICE), master_ice_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.LIGHTNING), master_lightning_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.NECROMANCY), master_necromancy_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.EARTH), master_earth_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.SORCERY), master_sorcery_wand); - WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.HEALING), master_healing_wand); - } - - public static void populateArmourMap(){ - - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.MAGIC), wizard_hat); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.FIRE), wizard_hat_fire); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.ICE), wizard_hat_ice); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.LIGHTNING), wizard_hat_lightning); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.NECROMANCY), wizard_hat_necromancy); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.EARTH), wizard_hat_earth); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.SORCERY), wizard_hat_sorcery); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.HEALING), wizard_hat_healing); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.MAGIC), wizard_robe); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.FIRE), wizard_robe_fire); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.ICE), wizard_robe_ice); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.LIGHTNING), wizard_robe_lightning); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.NECROMANCY), wizard_robe_necromancy); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.EARTH), wizard_robe_earth); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.SORCERY), wizard_robe_sorcery); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.HEALING), wizard_robe_healing); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.MAGIC), wizard_leggings); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.FIRE), wizard_leggings_fire); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.ICE), wizard_leggings_ice); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.LIGHTNING), wizard_leggings_lightning); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.NECROMANCY), wizard_leggings_necromancy); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.EARTH), wizard_leggings_earth); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.SORCERY), wizard_leggings_sorcery); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.HEALING), wizard_leggings_healing); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.MAGIC), wizard_boots); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.FIRE), wizard_boots_fire); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.ICE), wizard_boots_ice); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.LIGHTNING), wizard_boots_lightning); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.NECROMANCY), wizard_boots_necromancy); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.EARTH), wizard_boots_earth); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.SORCERY), wizard_boots_sorcery); - ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.HEALING), wizard_boots_healing); - } - } \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/registry/WizardrySounds.java b/src/main/java/electroblob/wizardry/registry/WizardrySounds.java index 81295678..f12672d5 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardrySounds.java +++ b/src/main/java/electroblob/wizardry/registry/WizardrySounds.java @@ -40,6 +40,9 @@ public final class WizardrySounds { public static final SoundEvent ITEM_WAND_MELEE = createSound("item.wand.melee"); public static final SoundEvent ITEM_WAND_CHARGEUP = createSound("item.wand.chargeup"); public static final SoundEvent ITEM_ARMOUR_EQUIP_SILK = createSound("item.armour.equip_silk"); + public static final SoundEvent ITEM_ARMOUR_EQUIP_SAGE = createSound("item.armour.equip_sage"); + public static final SoundEvent ITEM_ARMOUR_EQUIP_BATTLEMAGE = createSound("item.armour.equip_battlemage"); + public static final SoundEvent ITEM_ARMOUR_EQUIP_WARLOCK = createSound("item.armour.equip_warlock"); public static final SoundEvent ITEM_PURIFYING_ELIXIR_DRINK = createSound("item.purifying_elixir.drink"); public static final SoundEvent ITEM_MANA_FLASK_USE = createSound("item.mana_flask.use"); public static final SoundEvent ITEM_MANA_FLASK_RECHARGE = createSound("item.mana_flask.recharge"); diff --git a/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java b/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java index 95fada8b..841728d2 100644 --- a/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java +++ b/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java @@ -189,7 +189,9 @@ public class TileEntityArcaneWorkbench extends TileEntity implements IInventory, }else if(slotNumber == ContainerArcaneWorkbench.UPGRADE_SLOT){ Set upgrades = new HashSet<>(WandHelper.getSpecialUpgrades()); upgrades.add(WizardryItems.arcane_tome); - upgrades.add(WizardryItems.armour_upgrade); + upgrades.add(WizardryItems.resplendent_thread); + upgrades.add(WizardryItems.crystal_silver_plating); + upgrades.add(WizardryItems.ethereal_crystalweave); return upgrades.contains(itemstack.getItem()); } diff --git a/src/main/java/electroblob/wizardry/util/SpellModifiers.java b/src/main/java/electroblob/wizardry/util/SpellModifiers.java index a0c30416..7e3d61ee 100644 --- a/src/main/java/electroblob/wizardry/util/SpellModifiers.java +++ b/src/main/java/electroblob/wizardry/util/SpellModifiers.java @@ -68,6 +68,26 @@ public final class SpellModifiers { return new SpellModifiers(new HashMap<>(this.multiplierMap), new HashMap<>(this.syncedMultiplierMap)); } + /** + * Combines the given SpellModifiers object with this one. More specifically: for each modifier, multiplies the + * values from both objects together and sets it to sync if either object does so. This method changes the object + * it is called on but not the one given as a parameter; apart from this it does not matter which way round the two + * objects are. + * @param modifiers The SpellModifiers object to combine with this one; will not be modified by this method. + * @return The SpellModifiers object, allowing this method to be chained onto the constructor. + */ + public SpellModifiers combine(SpellModifiers modifiers){ + for(Entry entry : multiplierMap.entrySet()){ + float newValue = entry.getValue() * modifiers.get(entry.getKey()); + entry.setValue(newValue); + // Also need to update the synced map if the modifier is synced in either object + if(this.syncedMultiplierMap.containsKey(entry.getKey()) || modifiers.syncedMultiplierMap.containsKey(entry.getKey())){ + this.syncedMultiplierMap.put(entry.getKey(), newValue); + } + } + return this; + } + /** * Adds the given multiplier to this SpellModifiers object, using the string identifier that the given wand upgrade * item was registered with. diff --git a/src/main/resources/assets/ebwizardry/advancements/battlemage.json b/src/main/resources/assets/ebwizardry/advancements/battlemage.json new file mode 100644 index 00000000..8aa2e17f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/advancements/battlemage.json @@ -0,0 +1,309 @@ +{ + "display": { + "title": { + "translate": "advancement.ebwizardry:battlemage" + }, + "description": { + "translate": "advancement.ebwizardry:battlemage.desc" + }, + "icon": { + "item": "ebwizardry:battlemage_boots" + }, + "frame": "goal" + }, + "parent": "ebwizardry:armour_set", + "criteria": { + "head": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet" + } + } + }, + "chest": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate" + } + } + }, + "legs": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings" + } + } + }, + "feet": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots" + } + } + }, + "head_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_fire" + } + } + }, + "chest_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_fire" + } + } + }, + "legs_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_fire" + } + } + }, + "feet_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_fire" + } + } + }, + "head_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_ice" + } + } + }, + "chest_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_ice" + } + } + }, + "legs_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_ice" + } + } + }, + "feet_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_ice" + } + } + }, + "head_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_lightning" + } + } + }, + "chest_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_lightning" + } + } + }, + "legs_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_lightning" + } + } + }, + "feet_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_lightning" + } + } + }, + "head_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_necromancy" + } + } + }, + "chest_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_necromancy" + } + } + }, + "legs_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_necromancy" + } + } + }, + "feet_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_necromancy" + } + } + }, + "head_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_earth" + } + } + }, + "chest_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_earth" + } + } + }, + "legs_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_earth" + } + } + }, + "feet_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_earth" + } + } + }, + "head_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_sorcery" + } + } + }, + "chest_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_sorcery" + } + } + }, + "legs_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_sorcery" + } + } + }, + "feet_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_sorcery" + } + } + }, + "head_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_helmet_healing" + } + } + }, + "chest_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_chestplate_healing" + } + } + }, + "legs_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_leggings_healing" + } + } + }, + "feet_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:battlemage_boots_healing" + } + } + } + }, + "requirements": [ + [ + "head", + "chest", + "legs", + "feet", + "head_fire", + "chest_fire", + "legs_fire", + "feet_fire", + "head_ice", + "chest_ice", + "legs_ice", + "feet_ice", + "head_lightning", + "chest_lightning", + "legs_lightning", + "feet_lightning", + "head_necromancy", + "chest_necromancy", + "legs_necromancy", + "feet_necromancy", + "head_earth", + "chest_earth", + "legs_earth", + "feet_earth", + "head_sorcery", + "chest_sorcery", + "legs_sorcery", + "feet_sorcery", + "head_healing", + "chest_healing", + "legs_healing", + "feet_healing" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/advancements/legendary.json b/src/main/resources/assets/ebwizardry/advancements/legendary.json deleted file mode 100644 index 691e7a2b..00000000 --- a/src/main/resources/assets/ebwizardry/advancements/legendary.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "display": { - "title": { - "translate": "advancement.ebwizardry:legendary" - }, - "description": { - "translate": "advancement.ebwizardry:legendary.desc" - }, - "icon": { - "item": "ebwizardry:armour_upgrade" - }, - "frame": "goal" - }, - "parent": "ebwizardry:armour_set", - "criteria": { - "criteria_0": { - "trigger": "ebwizardry:trigger_legendary" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/advancements/sage.json b/src/main/resources/assets/ebwizardry/advancements/sage.json new file mode 100644 index 00000000..94537ace --- /dev/null +++ b/src/main/resources/assets/ebwizardry/advancements/sage.json @@ -0,0 +1,309 @@ +{ + "display": { + "title": { + "translate": "advancement.ebwizardry:sage" + }, + "description": { + "translate": "advancement.ebwizardry:sage.desc" + }, + "icon": { + "item": "ebwizardry:sage_robe" + }, + "frame": "goal" + }, + "parent": "ebwizardry:armour_set", + "criteria": { + "head": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat" + } + } + }, + "chest": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe" + } + } + }, + "legs": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings" + } + } + }, + "feet": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots" + } + } + }, + "head_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_fire" + } + } + }, + "chest_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_fire" + } + } + }, + "legs_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_fire" + } + } + }, + "feet_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_fire" + } + } + }, + "head_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_ice" + } + } + }, + "chest_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_ice" + } + } + }, + "legs_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_ice" + } + } + }, + "feet_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_ice" + } + } + }, + "head_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_lightning" + } + } + }, + "chest_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_lightning" + } + } + }, + "legs_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_lightning" + } + } + }, + "feet_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_lightning" + } + } + }, + "head_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_necromancy" + } + } + }, + "chest_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_necromancy" + } + } + }, + "legs_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_necromancy" + } + } + }, + "feet_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_necromancy" + } + } + }, + "head_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_earth" + } + } + }, + "chest_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_earth" + } + } + }, + "legs_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_earth" + } + } + }, + "feet_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_earth" + } + } + }, + "head_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_sorcery" + } + } + }, + "chest_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_sorcery" + } + } + }, + "legs_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_sorcery" + } + } + }, + "feet_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_sorcery" + } + } + }, + "head_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_hat_healing" + } + } + }, + "chest_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_robe_healing" + } + } + }, + "legs_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_leggings_healing" + } + } + }, + "feet_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:sage_boots_healing" + } + } + } + }, + "requirements": [ + [ + "head", + "chest", + "legs", + "feet", + "head_fire", + "chest_fire", + "legs_fire", + "feet_fire", + "head_ice", + "chest_ice", + "legs_ice", + "feet_ice", + "head_lightning", + "chest_lightning", + "legs_lightning", + "feet_lightning", + "head_necromancy", + "chest_necromancy", + "legs_necromancy", + "feet_necromancy", + "head_earth", + "chest_earth", + "legs_earth", + "feet_earth", + "head_sorcery", + "chest_sorcery", + "legs_sorcery", + "feet_sorcery", + "head_healing", + "chest_healing", + "legs_healing", + "feet_healing" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/advancements/warlock.json b/src/main/resources/assets/ebwizardry/advancements/warlock.json new file mode 100644 index 00000000..81636771 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/advancements/warlock.json @@ -0,0 +1,309 @@ +{ + "display": { + "title": { + "translate": "advancement.ebwizardry:warlock" + }, + "description": { + "translate": "advancement.ebwizardry:warlock.desc" + }, + "icon": { + "item": "ebwizardry:warlock_hood" + }, + "frame": "goal" + }, + "parent": "ebwizardry:armour_set", + "criteria": { + "head": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood" + } + } + }, + "chest": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe" + } + } + }, + "legs": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings" + } + } + }, + "feet": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots" + } + } + }, + "head_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_fire" + } + } + }, + "chest_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_fire" + } + } + }, + "legs_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_fire" + } + } + }, + "feet_fire": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_fire" + } + } + }, + "head_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_ice" + } + } + }, + "chest_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_ice" + } + } + }, + "legs_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_ice" + } + } + }, + "feet_ice": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_ice" + } + } + }, + "head_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_lightning" + } + } + }, + "chest_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_lightning" + } + } + }, + "legs_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_lightning" + } + } + }, + "feet_lightning": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_lightning" + } + } + }, + "head_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_necromancy" + } + } + }, + "chest_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_necromancy" + } + } + }, + "legs_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_necromancy" + } + } + }, + "feet_necromancy": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_necromancy" + } + } + }, + "head_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_earth" + } + } + }, + "chest_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_earth" + } + } + }, + "legs_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_earth" + } + } + }, + "feet_earth": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_earth" + } + } + }, + "head_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_sorcery" + } + } + }, + "chest_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_sorcery" + } + } + }, + "legs_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_sorcery" + } + } + }, + "feet_sorcery": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_sorcery" + } + } + }, + "head_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_hood_healing" + } + } + }, + "chest_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_robe_healing" + } + } + }, + "legs_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_leggings_healing" + } + } + }, + "feet_healing": { + "trigger": "ebwizardry:arcane_workbench", + "conditions": { + "item": { + "item": "ebwizardry:warlock_boots_healing" + } + } + } + }, + "requirements": [ + [ + "head", + "chest", + "legs", + "feet", + "head_fire", + "chest_fire", + "legs_fire", + "feet_fire", + "head_ice", + "chest_ice", + "legs_ice", + "feet_ice", + "head_lightning", + "chest_lightning", + "legs_lightning", + "feet_lightning", + "head_necromancy", + "chest_necromancy", + "legs_necromancy", + "feet_necromancy", + "head_earth", + "chest_earth", + "legs_earth", + "feet_earth", + "head_sorcery", + "chest_sorcery", + "legs_sorcery", + "feet_sorcery", + "head_healing", + "chest_healing", + "legs_healing", + "feet_healing" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/lang/en_gb.lang b/src/main/resources/assets/ebwizardry/lang/en_gb.lang index 11489e78..a605c57d 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_gb.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_gb.lang @@ -200,18 +200,32 @@ item.ebwizardry\:identification_scroll.desc=Identifies an unknown spell book or item.ebwizardry\:identification_scroll.desc_extended=Right-click while holding this scroll to identify the first undiscovered spell book or scroll on your hotbar. item.ebwizardry\:identification_scroll.nothing_to_identify=Nothing to identify! -item.ebwizardry\:armour_upgrade.name=Arcane Seal of Protection -item.ebwizardry\:armour_upgrade.desc=Upgrades any wizard armour to make it %1$slegendary -item.ebwizardry\:armour_upgrade.desc_extended=Apply this upgrade to a piece of wizard armour in the arcane workbench. +item.ebwizardry\:resplendent_thread.name=Resplendent Thread +item.ebwizardry\:resplendent_thread.desc=Upgrades regular wizard armour into sage armour +item.ebwizardry\:resplendent_thread.desc_extended=A shimmering silken thread used to embroider the finest robes with arcane symbols, improving their enchantability.\n\nApply this upgrade to a piece of wizard armour in the arcane workbench. + +item.ebwizardry\:crystal_silver_plating.name=Crystal Silver Plating +item.ebwizardry\:crystal_silver_plating.desc=Upgrades regular wizard armour into battlemage armour +item.ebwizardry\:crystal_silver_plating.desc_extended=An almost mythical alloy forged in the foundries of Eldar, with exceptional magic deflection properties.\n\nApply this upgrade to a piece of wizard armour in the arcane workbench. + +item.ebwizardry\:ethereal_crystalweave.name=Ethereal Crystalweave +item.ebwizardry\:ethereal_crystalweave.desc=Upgrades regular wizard armour into warlock armour +item.ebwizardry\:ethereal_crystalweave.desc_extended=An enchanted fabric that is as thick as animal hide, yet somehow feels lighter than paper in one's hands.\n\nApply this upgrade to a piece of wizard armour in the arcane workbench. item.ebwizardry\:magic_silk.name=Magical Silk item.ebwizardry\:spectral_dust.name=Spectral Dust -item.ebwizardry\:wizard_armour.legendary=Legendary -item.ebwizardry\:wizard_armour.buff=-%1$s%% %2$s cost +item.ebwizardry\:wizard_armour.element_cost_reduction=-%1$s%% %2$s cost +item.ebwizardry\:wizard_armour.cooldown_reduction=-%1$s%% Cooldown +item.ebwizardry\:wizard_armour.enchantability=Extra enchantability item.ebwizardry\:wizard_armour.mana=Mana\: %1$s/%2$s +item.ebwizardry\:wizard_armour.full_set=Full set: +item.ebwizardry\:sage_armour.full_set_bonus=-%1$s%% Other element cost +item.ebwizardry\:battlemage_armour.full_set_bonus=Ward I effect +item.ebwizardry\:warlock_armour.full_set_bonus=+%1$s%% Movement speed + item.ebwizardry\:wizard_hat.name=Wizard Hat item.ebwizardry\:wizard_robe.name=Wizard Robes item.ebwizardry\:wizard_leggings.name=Wizard Leggings @@ -252,6 +266,126 @@ item.ebwizardry\:wizard_robe_healing.name=Healer Robes item.ebwizardry\:wizard_leggings_healing.name=Healer Leggings item.ebwizardry\:wizard_boots_healing.name=Healer Boots +item.ebwizardry\:sage_hat.name=Sage Hat +item.ebwizardry\:sage_robe.name=Sage Robes +item.ebwizardry\:sage_leggings.name=Sage Leggings +item.ebwizardry\:sage_boots.name=Sage Boots + +item.ebwizardry\:sage_hat_fire.name=Pyromancer Sage Hat +item.ebwizardry\:sage_robe_fire.name=Pyromancer Sage Robes +item.ebwizardry\:sage_leggings_fire.name=Pyromancer Sage Leggings +item.ebwizardry\:sage_boots_fire.name=Pyromancer Sage Boots + +item.ebwizardry\:sage_hat_ice.name=Ice Sage Hat +item.ebwizardry\:sage_robe_ice.name=Ice Sage Robes +item.ebwizardry\:sage_leggings_ice.name=Ice Sage Leggings +item.ebwizardry\:sage_boots_ice.name=Ice Sage Boots + +item.ebwizardry\:sage_hat_lightning.name=Storm Sage Hat +item.ebwizardry\:sage_robe_lightning.name=Storm Sage Robes +item.ebwizardry\:sage_leggings_lightning.name=Storm Sage Leggings +item.ebwizardry\:sage_boots_lightning.name=Storm Sage Boots + +item.ebwizardry\:sage_hat_necromancy.name=Necromancer Sage Hat +item.ebwizardry\:sage_robe_necromancy.name=Necromancer Sage Robes +item.ebwizardry\:sage_leggings_necromancy.name=Necromancer Sage Leggings +item.ebwizardry\:sage_boots_necromancy.name=Necromancer Sage Boots + +item.ebwizardry\:sage_hat_earth.name=Earth Sage Hat +item.ebwizardry\:sage_robe_earth.name=Earth Sage Robes +item.ebwizardry\:sage_leggings_earth.name=Earth Sage Leggings +item.ebwizardry\:sage_boots_earth.name=Earth Sage Boots + +item.ebwizardry\:sage_hat_sorcery.name=Sorcerer Sage Hat +item.ebwizardry\:sage_robe_sorcery.name=Sorcerer Sage Robes +item.ebwizardry\:sage_leggings_sorcery.name=Sorcerer Sage Leggings +item.ebwizardry\:sage_boots_sorcery.name=Sorcerer Sage Boots + +item.ebwizardry\:sage_hat_healing.name=Healer Sage Hat +item.ebwizardry\:sage_robe_healing.name=Healer Sage Robes +item.ebwizardry\:sage_leggings_healing.name=Healer Sage Leggings +item.ebwizardry\:sage_boots_healing.name=Healer Sage Boots + +item.ebwizardry\:battlemage_helmet.name=Battlemage Helmet +item.ebwizardry\:battlemage_chestplate.name=Battlemage Chestplate +item.ebwizardry\:battlemage_leggings.name=Battlemage Leggings +item.ebwizardry\:battlemage_boots.name=Battlemage Boots + +item.ebwizardry\:battlemage_helmet_fire.name=Pyromancer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_fire.name=Pyromancer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_fire.name=Pyromancer Battlemage Leggings +item.ebwizardry\:battlemage_boots_fire.name=Pyromancer Battlemage Boots + +item.ebwizardry\:battlemage_helmet_ice.name=Ice Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_ice.name=Ice Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_ice.name=Ice Battlemage Leggings +item.ebwizardry\:battlemage_boots_ice.name=Ice Battlemage Boots + +item.ebwizardry\:battlemage_helmet_lightning.name=Storm Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_lightning.name=Storm Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_lightning.name=Storm Battlemage Leggings +item.ebwizardry\:battlemage_boots_lightning.name=Storm Battlemage Boots + +item.ebwizardry\:battlemage_helmet_necromancy.name=Necromancer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_necromancy.name=Necromancer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_necromancy.name=Necromancer Battlemage Leggings +item.ebwizardry\:battlemage_boots_necromancy.name=Necromancer Battlemage Boots + +item.ebwizardry\:battlemage_helmet_earth.name=Earth Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_earth.name=Earth Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_earth.name=Earth Battlemage Leggings +item.ebwizardry\:battlemage_boots_earth.name=Earth Battlemage Boots + +item.ebwizardry\:battlemage_helmet_sorcery.name=Sorcerer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_sorcery.name=Sorcerer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_sorcery.name=Sorcerer Battlemage Leggings +item.ebwizardry\:battlemage_boots_sorcery.name=Sorcerer Battlemage Boots + +item.ebwizardry\:battlemage_helmet_healing.name=Healer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_healing.name=Healer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_healing.name=Healer Battlemage Leggings +item.ebwizardry\:battlemage_boots_healing.name=Healer Battlemage Boots + +item.ebwizardry\:warlock_hood.name=Warlock Hood +item.ebwizardry\:warlock_robe.name=Warlock Robes +item.ebwizardry\:warlock_leggings.name=Warlock Leggings +item.ebwizardry\:warlock_boots.name=Warlock Boots + +item.ebwizardry\:warlock_hood_fire.name=Pyromancer Warlock Hood +item.ebwizardry\:warlock_robe_fire.name=Pyromancer Warlock Robes +item.ebwizardry\:warlock_leggings_fire.name=Pyromancer Warlock Leggings +item.ebwizardry\:warlock_boots_fire.name=Pyromancer Warlock Boots + +item.ebwizardry\:warlock_hood_ice.name=Ice Warlock Hood +item.ebwizardry\:warlock_robe_ice.name=Ice Warlock Robes +item.ebwizardry\:warlock_leggings_ice.name=Ice Warlock Leggings +item.ebwizardry\:warlock_boots_ice.name=Ice Warlock Boots + +item.ebwizardry\:warlock_hood_lightning.name=Storm Warlock Hood +item.ebwizardry\:warlock_robe_lightning.name=Storm Warlock Robes +item.ebwizardry\:warlock_leggings_lightning.name=Storm Warlock Leggings +item.ebwizardry\:warlock_boots_lightning.name=Storm Warlock Boots + +item.ebwizardry\:warlock_hood_necromancy.name=Necromancer Warlock Hood +item.ebwizardry\:warlock_robe_necromancy.name=Necromancer Warlock Robes +item.ebwizardry\:warlock_leggings_necromancy.name=Necromancer Warlock Leggings +item.ebwizardry\:warlock_boots_necromancy.name=Necromancer Warlock Boots + +item.ebwizardry\:warlock_hood_earth.name=Earth Warlock Hood +item.ebwizardry\:warlock_robe_earth.name=Earth Warlock Robes +item.ebwizardry\:warlock_leggings_earth.name=Earth Warlock Leggings +item.ebwizardry\:warlock_boots_earth.name=Earth Warlock Boots + +item.ebwizardry\:warlock_hood_sorcery.name=Sorcerer Warlock Hood +item.ebwizardry\:warlock_robe_sorcery.name=Sorcerer Warlock Robes +item.ebwizardry\:warlock_leggings_sorcery.name=Sorcerer Warlock Leggings +item.ebwizardry\:warlock_boots_sorcery.name=Sorcerer Warlock Boots + +item.ebwizardry\:warlock_hood_healing.name=Healer Warlock Hood +item.ebwizardry\:warlock_robe_healing.name=Healer Warlock Robes +item.ebwizardry\:warlock_leggings_healing.name=Healer Warlock Leggings +item.ebwizardry\:warlock_boots_healing.name=Healer Warlock Boots + item.ebwizardry\:spawn_wizard.name=Spawn Wizard item.ebwizardry\:spawn_evil_wizard.name=Spawn Evil Wizard @@ -711,8 +845,12 @@ advancement.ebwizardry\:craft_lectern.desc=Craft a lectern to keep track of your advancement.ebwizardry\:armour_set=Now You're A Proper Wizard advancement.ebwizardry\:armour_set.desc=Craft and equip a full set of wizard armour -advancement.ebwizardry\:legendary=Legendary -advancement.ebwizardry\:legendary.desc=Obtain a piece of legendary wizard armour +advancement.ebwizardry\:sage=The Path Of The Sage +advancement.ebwizardry\:sage.desc=Obtain a piece of sage armour +advancement.ebwizardry\:battlemage=The Pledge Of The Battlemage +advancement.ebwizardry\:battlemage.desc=Obtain a piece of battlemage armour +advancement.ebwizardry\:warlock=The Way Of The Warlock +advancement.ebwizardry\:warlock.desc=Obtain a piece of warlock armour advancement.ebwizardry\:enchant_scroll=Scroll Up! advancement.ebwizardry\:enchant_scroll.desc=Craft a blank scroll and enchant it with a spell at an arcane workbench diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index eeb840e1..b315babb 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -200,18 +200,32 @@ item.ebwizardry\:identification_scroll.desc=Identifies an unknown spell book or item.ebwizardry\:identification_scroll.desc_extended=Right-click while holding this scroll to identify the first undiscovered spell book or scroll on your hotbar. item.ebwizardry\:identification_scroll.nothing_to_identify=Nothing to identify! -item.ebwizardry\:armour_upgrade.name=Arcane Seal of Protection -item.ebwizardry\:armour_upgrade.desc=Upgrades any wizard armour to make it %1$slegendary -item.ebwizardry\:armour_upgrade.desc_extended=Apply this upgrade to a piece of wizard armour in the arcane workbench. +item.ebwizardry\:resplendent_thread.name=Resplendent Thread +item.ebwizardry\:resplendent_thread.desc=Upgrades regular wizard armor into sage armor +item.ebwizardry\:resplendent_thread.desc_extended=A shimmering silken thread used to embroider the finest robes with arcane symbols, improving their enchantability.\n\nApply this upgrade to a piece of wizard armor in the arcane workbench. + +item.ebwizardry\:crystal_silver_plating.name=Crystal Silver Plating +item.ebwizardry\:crystal_silver_plating.desc=Upgrades regular wizard armor into battlemage armor +item.ebwizardry\:crystal_silver_plating.desc_extended=An almost mythical alloy forged in the foundries of Eldar, with exceptional magic deflection properties.\n\nApply this upgrade to a piece of wizard armor in the arcane workbench. + +item.ebwizardry\:ethereal_crystalweave.name=Ethereal Crystalweave +item.ebwizardry\:ethereal_crystalweave.desc=Upgrades regular wizard armor into warlock armor +item.ebwizardry\:ethereal_crystalweave.desc_extended=An enchanted fabric that is as thick as animal hide, yet somehow feels lighter than paper in one's hands.\n\nApply this upgrade to a piece of wizard armor in the arcane workbench. item.ebwizardry\:magic_silk.name=Magical Silk item.ebwizardry\:spectral_dust.name=Spectral Dust -item.ebwizardry\:wizard_armour.legendary=Legendary -item.ebwizardry\:wizard_armour.buff=-%1$s%% %2$s cost +item.ebwizardry\:wizard_armour.element_cost_reduction=-%1$s%% %2$s cost +item.ebwizardry\:wizard_armour.cooldown_reduction=-%1$s%% Cooldown +item.ebwizardry\:wizard_armour.enchantability=Extra enchantability item.ebwizardry\:wizard_armour.mana=Mana\: %1$s/%2$s +item.ebwizardry\:wizard_armour.full_set=Full set: +item.ebwizardry\:sage_armour.full_set_bonus=-%1$s%% Other element cost +item.ebwizardry\:battlemage_armour.full_set_bonus=Ward I effect +item.ebwizardry\:warlock_armour.full_set_bonus=+%1$s%% Movement speed + item.ebwizardry\:wizard_hat.name=Wizard Hat item.ebwizardry\:wizard_robe.name=Wizard Robes item.ebwizardry\:wizard_leggings.name=Wizard Leggings @@ -252,6 +266,126 @@ item.ebwizardry\:wizard_robe_healing.name=Healer Robes item.ebwizardry\:wizard_leggings_healing.name=Healer Leggings item.ebwizardry\:wizard_boots_healing.name=Healer Boots +item.ebwizardry\:sage_hat.name=Sage Hat +item.ebwizardry\:sage_robe.name=Sage Robes +item.ebwizardry\:sage_leggings.name=Sage Leggings +item.ebwizardry\:sage_boots.name=Sage Boots + +item.ebwizardry\:sage_hat_fire.name=Pyromancer Sage Hat +item.ebwizardry\:sage_robe_fire.name=Pyromancer Sage Robes +item.ebwizardry\:sage_leggings_fire.name=Pyromancer Sage Leggings +item.ebwizardry\:sage_boots_fire.name=Pyromancer Sage Boots + +item.ebwizardry\:sage_hat_ice.name=Ice Sage Hat +item.ebwizardry\:sage_robe_ice.name=Ice Sage Robes +item.ebwizardry\:sage_leggings_ice.name=Ice Sage Leggings +item.ebwizardry\:sage_boots_ice.name=Ice Sage Boots + +item.ebwizardry\:sage_hat_lightning.name=Storm Sage Hat +item.ebwizardry\:sage_robe_lightning.name=Storm Sage Robes +item.ebwizardry\:sage_leggings_lightning.name=Storm Sage Leggings +item.ebwizardry\:sage_boots_lightning.name=Storm Sage Boots + +item.ebwizardry\:sage_hat_necromancy.name=Necromancer Sage Hat +item.ebwizardry\:sage_robe_necromancy.name=Necromancer Sage Robes +item.ebwizardry\:sage_leggings_necromancy.name=Necromancer Sage Leggings +item.ebwizardry\:sage_boots_necromancy.name=Necromancer Sage Boots + +item.ebwizardry\:sage_hat_earth.name=Earth Sage Hat +item.ebwizardry\:sage_robe_earth.name=Earth Sage Robes +item.ebwizardry\:sage_leggings_earth.name=Earth Sage Leggings +item.ebwizardry\:sage_boots_earth.name=Earth Sage Boots + +item.ebwizardry\:sage_hat_sorcery.name=Sorcerer Sage Hat +item.ebwizardry\:sage_robe_sorcery.name=Sorcerer Sage Robes +item.ebwizardry\:sage_leggings_sorcery.name=Sorcerer Sage Leggings +item.ebwizardry\:sage_boots_sorcery.name=Sorcerer Sage Boots + +item.ebwizardry\:sage_hat_healing.name=Healer Sage Hat +item.ebwizardry\:sage_robe_healing.name=Healer Sage Robes +item.ebwizardry\:sage_leggings_healing.name=Healer Sage Leggings +item.ebwizardry\:sage_boots_healing.name=Healer Sage Boots + +item.ebwizardry\:battlemage_helmet.name=Battlemage Helmet +item.ebwizardry\:battlemage_chestplate.name=Battlemage Chestplate +item.ebwizardry\:battlemage_leggings.name=Battlemage Leggings +item.ebwizardry\:battlemage_boots.name=Battlemage Boots + +item.ebwizardry\:battlemage_helmet_fire.name=Pyromancer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_fire.name=Pyromancer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_fire.name=Pyromancer Battlemage Leggings +item.ebwizardry\:battlemage_boots_fire.name=Pyromancer Battlemage Boots + +item.ebwizardry\:battlemage_helmet_ice.name=Ice Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_ice.name=Ice Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_ice.name=Ice Battlemage Leggings +item.ebwizardry\:battlemage_boots_ice.name=Ice Battlemage Boots + +item.ebwizardry\:battlemage_helmet_lightning.name=Storm Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_lightning.name=Storm Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_lightning.name=Storm Battlemage Leggings +item.ebwizardry\:battlemage_boots_lightning.name=Storm Battlemage Boots + +item.ebwizardry\:battlemage_helmet_necromancy.name=Necromancer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_necromancy.name=Necromancer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_necromancy.name=Necromancer Battlemage Leggings +item.ebwizardry\:battlemage_boots_necromancy.name=Necromancer Battlemage Boots + +item.ebwizardry\:battlemage_helmet_earth.name=Earth Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_earth.name=Earth Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_earth.name=Earth Battlemage Leggings +item.ebwizardry\:battlemage_boots_earth.name=Earth Battlemage Boots + +item.ebwizardry\:battlemage_helmet_sorcery.name=Sorcerer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_sorcery.name=Sorcerer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_sorcery.name=Sorcerer Battlemage Leggings +item.ebwizardry\:battlemage_boots_sorcery.name=Sorcerer Battlemage Boots + +item.ebwizardry\:battlemage_helmet_healing.name=Healer Battlemage Helmet +item.ebwizardry\:battlemage_chestplate_healing.name=Healer Battlemage Chestplate +item.ebwizardry\:battlemage_leggings_healing.name=Healer Battlemage Leggings +item.ebwizardry\:battlemage_boots_healing.name=Healer Battlemage Boots + +item.ebwizardry\:warlock_hood.name=Warlock Hood +item.ebwizardry\:warlock_robe.name=Warlock Robes +item.ebwizardry\:warlock_leggings.name=Warlock Leggings +item.ebwizardry\:warlock_boots.name=Warlock Boots + +item.ebwizardry\:warlock_hood_fire.name=Pyromancer Warlock Hood +item.ebwizardry\:warlock_robe_fire.name=Pyromancer Warlock Robes +item.ebwizardry\:warlock_leggings_fire.name=Pyromancer Warlock Leggings +item.ebwizardry\:warlock_boots_fire.name=Pyromancer Warlock Boots + +item.ebwizardry\:warlock_hood_ice.name=Ice Warlock Hood +item.ebwizardry\:warlock_robe_ice.name=Ice Warlock Robes +item.ebwizardry\:warlock_leggings_ice.name=Ice Warlock Leggings +item.ebwizardry\:warlock_boots_ice.name=Ice Warlock Boots + +item.ebwizardry\:warlock_hood_lightning.name=Storm Warlock Hood +item.ebwizardry\:warlock_robe_lightning.name=Storm Warlock Robes +item.ebwizardry\:warlock_leggings_lightning.name=Storm Warlock Leggings +item.ebwizardry\:warlock_boots_lightning.name=Storm Warlock Boots + +item.ebwizardry\:warlock_hood_necromancy.name=Necromancer Warlock Hood +item.ebwizardry\:warlock_robe_necromancy.name=Necromancer Warlock Robes +item.ebwizardry\:warlock_leggings_necromancy.name=Necromancer Warlock Leggings +item.ebwizardry\:warlock_boots_necromancy.name=Necromancer Warlock Boots + +item.ebwizardry\:warlock_hood_earth.name=Earth Warlock Hood +item.ebwizardry\:warlock_robe_earth.name=Earth Warlock Robes +item.ebwizardry\:warlock_leggings_earth.name=Earth Warlock Leggings +item.ebwizardry\:warlock_boots_earth.name=Earth Warlock Boots + +item.ebwizardry\:warlock_hood_sorcery.name=Sorcerer Warlock Hood +item.ebwizardry\:warlock_robe_sorcery.name=Sorcerer Warlock Robes +item.ebwizardry\:warlock_leggings_sorcery.name=Sorcerer Warlock Leggings +item.ebwizardry\:warlock_boots_sorcery.name=Sorcerer Warlock Boots + +item.ebwizardry\:warlock_hood_healing.name=Healer Warlock Hood +item.ebwizardry\:warlock_robe_healing.name=Healer Warlock Robes +item.ebwizardry\:warlock_leggings_healing.name=Healer Warlock Leggings +item.ebwizardry\:warlock_boots_healing.name=Healer Warlock Boots + item.ebwizardry\:spawn_wizard.name=Spawn Wizard item.ebwizardry\:spawn_evil_wizard.name=Spawn Evil Wizard @@ -711,8 +845,12 @@ advancement.ebwizardry\:craft_lectern.desc=Craft a lectern to keep track of your advancement.ebwizardry\:armour_set=Now You're A Proper Wizard advancement.ebwizardry\:armour_set.desc=Craft and equip a full set of wizard armor -advancement.ebwizardry\:legendary=Legendary -advancement.ebwizardry\:legendary.desc=Obtain a piece of legendary wizard armor +advancement.ebwizardry\:sage=The Path Of The Sage +advancement.ebwizardry\:sage.desc=Obtain a piece of sage armour +advancement.ebwizardry\:battlemage=The Pledge Of The Battlemage +advancement.ebwizardry\:battlemage.desc=Obtain a piece of battlemage armour +advancement.ebwizardry\:warlock=The Way Of The Warlock +advancement.ebwizardry\:warlock.desc=Obtain a piece of warlock armour advancement.ebwizardry\:enchant_scroll=Scroll Up! advancement.ebwizardry\:enchant_scroll.desc=Craft a blank scroll and enchant it with a spell at an arcane workbench diff --git a/src/main/resources/assets/ebwizardry/loot_tables/chests/dungeon_additions.json b/src/main/resources/assets/ebwizardry/loot_tables/chests/dungeon_additions.json index 70959e51..421c7a4e 100644 --- a/src/main/resources/assets/ebwizardry/loot_tables/chests/dungeon_additions.json +++ b/src/main/resources/assets/ebwizardry/loot_tables/chests/dungeon_additions.json @@ -95,11 +95,6 @@ "name": "ebwizardry:spark_bomb", "weight": 8 }, - { - "type": "item", - "name": "ebwizardry:armour_upgrade", - "weight": 1 - }, { "type": "item", "name": "ebwizardry:astral_diamond", diff --git a/src/main/resources/assets/ebwizardry/loot_tables/chests/obelisk.json b/src/main/resources/assets/ebwizardry/loot_tables/chests/obelisk.json index 481b9c33..baf19bbb 100644 --- a/src/main/resources/assets/ebwizardry/loot_tables/chests/obelisk.json +++ b/src/main/resources/assets/ebwizardry/loot_tables/chests/obelisk.json @@ -17,6 +17,11 @@ "name": "ebwizardry:subsets/wand_upgrades", "weight": 2 }, + { + "type": "loot_table", + "name": "ebwizardry:subsets/armour_upgrades", + "weight": 1 + }, { "type": "item", "name": "ebwizardry:spell_book", diff --git a/src/main/resources/assets/ebwizardry/loot_tables/chests/shrine.json b/src/main/resources/assets/ebwizardry/loot_tables/chests/shrine.json index 933e15ff..307e0413 100644 --- a/src/main/resources/assets/ebwizardry/loot_tables/chests/shrine.json +++ b/src/main/resources/assets/ebwizardry/loot_tables/chests/shrine.json @@ -38,6 +38,11 @@ "name": "ebwizardry:subsets/wand_upgrades", "weight": 4 }, + { + "type": "loot_table", + "name": "ebwizardry:subsets/armour_upgrades", + "weight": 2 + }, { "type": "item", "name": "ebwizardry:spell_book", @@ -100,11 +105,6 @@ } ] }, - { - "type": "item", - "name": "ebwizardry:armour_upgrade", - "weight": 1 - }, { "type": "item", "name": "ebwizardry:astral_diamond", diff --git a/src/main/resources/assets/ebwizardry/loot_tables/chests/wizard_tower.json b/src/main/resources/assets/ebwizardry/loot_tables/chests/wizard_tower.json index a003824c..c357c1e3 100644 --- a/src/main/resources/assets/ebwizardry/loot_tables/chests/wizard_tower.json +++ b/src/main/resources/assets/ebwizardry/loot_tables/chests/wizard_tower.json @@ -27,6 +27,11 @@ "name": "ebwizardry:subsets/wand_upgrades", "weight": 2 }, + { + "type": "loot_table", + "name": "ebwizardry:subsets/armour_upgrades", + "weight": 2 + }, { "type": "item", "name": "ebwizardry:magic_crystal", @@ -70,11 +75,6 @@ } ] }, - { - "type": "item", - "name": "ebwizardry:armour_upgrade", - "weight": 1 - }, { "type": "item", "name": "ebwizardry:identification_scroll", diff --git a/src/main/resources/assets/ebwizardry/loot_tables/subsets/armour_upgrades.json b/src/main/resources/assets/ebwizardry/loot_tables/subsets/armour_upgrades.json new file mode 100644 index 00000000..e8a1a5dc --- /dev/null +++ b/src/main/resources/assets/ebwizardry/loot_tables/subsets/armour_upgrades.json @@ -0,0 +1,25 @@ +{ + "pools": [ + { + "name": "upgrades", + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "ebwizardry:resplendent_thread", + "weight": 1 + }, + { + "type": "item", + "name": "ebwizardry:crystal_silver_plating", + "weight": 1 + }, + { + "type": "item", + "name": "ebwizardry:ethereal_crystalweave", + "weight": 1 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots.json new file mode 100644 index 00000000..16095c7d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_earth.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_earth.json new file mode 100644 index 00000000..ae8b4577 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_fire.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_fire.json new file mode 100644 index 00000000..ffbf4370 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_healing.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_healing.json new file mode 100644 index 00000000..e213e056 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_ice.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_ice.json new file mode 100644 index 00000000..67241ddc --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_lightning.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_lightning.json new file mode 100644 index 00000000..9fda12f5 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_necromancy.json new file mode 100644 index 00000000..28ea2c73 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_sorcery.json new file mode 100644 index 00000000..24a74895 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_boots_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_boots_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate.json new file mode 100644 index 00000000..fc65e07d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_earth.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_earth.json new file mode 100644 index 00000000..617e1076 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_fire.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_fire.json new file mode 100644 index 00000000..88058003 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_healing.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_healing.json new file mode 100644 index 00000000..9b31277b --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_ice.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_ice.json new file mode 100644 index 00000000..03f526ff --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_lightning.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_lightning.json new file mode 100644 index 00000000..14dcb08a --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_necromancy.json new file mode 100644 index 00000000..8155a848 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_sorcery.json new file mode 100644 index 00000000..691d8357 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_chestplate_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_chestplate_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet.json new file mode 100644 index 00000000..caf82a12 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_earth.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_earth.json new file mode 100644 index 00000000..fd72fd79 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_fire.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_fire.json new file mode 100644 index 00000000..c85099de --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_healing.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_healing.json new file mode 100644 index 00000000..bb905e39 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_ice.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_ice.json new file mode 100644 index 00000000..ca68b4ad --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_lightning.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_lightning.json new file mode 100644 index 00000000..068b37de --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_necromancy.json new file mode 100644 index 00000000..f9602efe --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_sorcery.json new file mode 100644 index 00000000..85111869 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_helmet_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_helmet_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings.json new file mode 100644 index 00000000..10948436 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_earth.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_earth.json new file mode 100644 index 00000000..526a4a6d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_fire.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_fire.json new file mode 100644 index 00000000..7e9f9c7d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_healing.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_healing.json new file mode 100644 index 00000000..9d717120 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_ice.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_ice.json new file mode 100644 index 00000000..e9802d04 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_lightning.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_lightning.json new file mode 100644 index 00000000..3433cc58 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_necromancy.json new file mode 100644 index 00000000..56a6b8d0 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_sorcery.json new file mode 100644 index 00000000..62812706 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/battlemage_leggings_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/battlemage_leggings_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/crystal_silver_plating.json b/src/main/resources/assets/ebwizardry/models/item/crystal_silver_plating.json new file mode 100644 index 00000000..f184c3f2 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/crystal_silver_plating.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/crystal_silver_plating" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/ethereal_crystalweave.json b/src/main/resources/assets/ebwizardry/models/item/ethereal_crystalweave.json new file mode 100644 index 00000000..20e946ac --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/ethereal_crystalweave.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/ethereal_crystalweave" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/resplendent_thread.json b/src/main/resources/assets/ebwizardry/models/item/resplendent_thread.json new file mode 100644 index 00000000..1c7f8803 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/resplendent_thread.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/resplendent_thread" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots.json new file mode 100644 index 00000000..c8e8a983 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_earth.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_earth.json new file mode 100644 index 00000000..56172054 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_fire.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_fire.json new file mode 100644 index 00000000..64374fff --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_healing.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_healing.json new file mode 100644 index 00000000..4d4f8feb --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_ice.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_ice.json new file mode 100644 index 00000000..1f0dc31c --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_lightning.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_lightning.json new file mode 100644 index 00000000..17797fd0 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_necromancy.json new file mode 100644 index 00000000..9dbbde75 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_boots_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/sage_boots_sorcery.json new file mode 100644 index 00000000..c4639a06 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_boots_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_boots_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat.json new file mode 100644 index 00000000..a5ad3775 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_earth.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_earth.json new file mode 100644 index 00000000..a1d78975 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_fire.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_fire.json new file mode 100644 index 00000000..5998226b --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_healing.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_healing.json new file mode 100644 index 00000000..01dda506 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_ice.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_ice.json new file mode 100644 index 00000000..3ae9ddf8 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_lightning.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_lightning.json new file mode 100644 index 00000000..78427692 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_necromancy.json new file mode 100644 index 00000000..2b0ee219 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_hat_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/sage_hat_sorcery.json new file mode 100644 index 00000000..e881f274 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_hat_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_hat_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings.json new file mode 100644 index 00000000..13931bd7 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_earth.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_earth.json new file mode 100644 index 00000000..893d6640 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_fire.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_fire.json new file mode 100644 index 00000000..955bcdcb --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_healing.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_healing.json new file mode 100644 index 00000000..bb8233e9 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_ice.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_ice.json new file mode 100644 index 00000000..58ee873e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_lightning.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_lightning.json new file mode 100644 index 00000000..df88ad34 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_necromancy.json new file mode 100644 index 00000000..7140fa1e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_leggings_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_sorcery.json new file mode 100644 index 00000000..3d3c17eb --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_leggings_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_leggings_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe.json new file mode 100644 index 00000000..07567bef --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_earth.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_earth.json new file mode 100644 index 00000000..73bb1105 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_fire.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_fire.json new file mode 100644 index 00000000..d57eb415 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_healing.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_healing.json new file mode 100644 index 00000000..e9997ffc --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_ice.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_ice.json new file mode 100644 index 00000000..1bdc4cb0 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_lightning.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_lightning.json new file mode 100644 index 00000000..f9c8309f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_necromancy.json new file mode 100644 index 00000000..ac46e155 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/sage_robe_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/sage_robe_sorcery.json new file mode 100644 index 00000000..5c22d2bf --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/sage_robe_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/sage_robe_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots.json new file mode 100644 index 00000000..ccd2073f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_earth.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_earth.json new file mode 100644 index 00000000..f70f6c22 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_fire.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_fire.json new file mode 100644 index 00000000..dd984517 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_healing.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_healing.json new file mode 100644 index 00000000..aef801f7 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_ice.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_ice.json new file mode 100644 index 00000000..2277941f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_lightning.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_lightning.json new file mode 100644 index 00000000..9a50d51f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_necromancy.json new file mode 100644 index 00000000..e2c2ce0f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_boots_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_sorcery.json new file mode 100644 index 00000000..fee1e083 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_boots_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_boots_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood.json new file mode 100644 index 00000000..5f2d0cb0 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_earth.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_earth.json new file mode 100644 index 00000000..6a61598a --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_fire.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_fire.json new file mode 100644 index 00000000..0afe3b38 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_healing.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_healing.json new file mode 100644 index 00000000..8014b51d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_ice.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_ice.json new file mode 100644 index 00000000..bfacbd84 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_lightning.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_lightning.json new file mode 100644 index 00000000..1a388455 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_necromancy.json new file mode 100644 index 00000000..8ac709ef --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_hood_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_sorcery.json new file mode 100644 index 00000000..dd2db0c6 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_hood_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_hood_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings.json new file mode 100644 index 00000000..c3eb612b --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_earth.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_earth.json new file mode 100644 index 00000000..1b898856 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_fire.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_fire.json new file mode 100644 index 00000000..edb265a4 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_healing.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_healing.json new file mode 100644 index 00000000..758d325f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_ice.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_ice.json new file mode 100644 index 00000000..27541819 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_lightning.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_lightning.json new file mode 100644 index 00000000..7e9aa520 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_necromancy.json new file mode 100644 index 00000000..eed048ed --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_sorcery.json new file mode 100644 index 00000000..ca44f1a0 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_leggings_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_leggings_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe.json new file mode 100644 index 00000000..d1358dc1 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_earth.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_earth.json new file mode 100644 index 00000000..15c0f8e9 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_earth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_earth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_fire.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_fire.json new file mode 100644 index 00000000..2d9fb5b5 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_fire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_fire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_healing.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_healing.json new file mode 100644 index 00000000..cabea477 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_healing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_healing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_ice.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_ice.json new file mode 100644 index 00000000..a4de60c9 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_ice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_lightning.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_lightning.json new file mode 100644 index 00000000..fa663d05 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_lightning.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_lightning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_necromancy.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_necromancy.json new file mode 100644 index 00000000..762425b4 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_necromancy.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_necromancy" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/warlock_robe_sorcery.json b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_sorcery.json new file mode 100644 index 00000000..71ed509c --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/warlock_robe_sorcery.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/warlock_robe_sorcery" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/sounds.json b/src/main/resources/assets/ebwizardry/sounds.json index da8d9c34..70bd1d40 100644 --- a/src/main/resources/assets/ebwizardry/sounds.json +++ b/src/main/resources/assets/ebwizardry/sounds.json @@ -11,6 +11,9 @@ "item.wand.melee": {"category": "player", "sounds": ["ebwizardry:effect1", "ebwizardry:effect2"]}, "item.wand.chargeup": {"category": "player", "sounds": ["ebwizardry:chargeup"]}, "item.armour.equip_silk": {"category": "player", "sounds": ["item/armor/equip_leather1", "item/armor/equip_leather2", "item/armor/equip_leather3", "item/armor/equip_leather4", "item/armor/equip_leather5", "item/armor/equip_leather6"]}, + "item.armour.equip_sage": {"category": "player", "sounds": ["item/armor/equip_leather1", "item/armor/equip_leather2", "item/armor/equip_leather3", "item/armor/equip_leather4", "item/armor/equip_leather5", "item/armor/equip_leather6"]}, + "item.armour.equip_battlemage": {"category": "player", "sounds": ["item/armor/equip_gold1", "item/armor/equip_gold2", "item/armor/equip_gold3", "item/armor/equip_gold4", "item/armor/equip_gold5", "item/armor/equip_gold6"]}, + "item.armour.equip_warlock": {"category": "player", "sounds": ["item/armor/equip_leather1", "item/armor/equip_leather2", "item/armor/equip_leather3", "item/armor/equip_leather4", "item/armor/equip_leather5", "item/armor/equip_leather6"]}, "item.purifying_elixir.drink": {"category": "player", "sounds": ["ebwizardry:buff_large"]}, "item.mana_flask.use": {"category": "player", "sounds": ["item/bottle/fill1", "item/bottle/fill2", "item/bottle/fill3", "item/bottle/fill4"]}, "item.mana_flask.recharge": {"category": "player", "sounds": ["ebwizardry:conjure"]}, diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour.png new file mode 100644 index 00000000..2547b779 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_earth.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_earth.png new file mode 100644 index 00000000..9dcc5aca Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_earth_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_earth_legs.png new file mode 100644 index 00000000..f32331a7 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_earth_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_fire.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_fire.png new file mode 100644 index 00000000..61d1c6bf Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_fire_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_fire_legs.png new file mode 100644 index 00000000..6168920e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_fire_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_healing.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_healing.png new file mode 100644 index 00000000..59faeacc Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_healing_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_healing_legs.png new file mode 100644 index 00000000..42516a62 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_healing_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_ice.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_ice.png new file mode 100644 index 00000000..01d1d720 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_ice_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_ice_legs.png new file mode 100644 index 00000000..bd3a18a7 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_ice_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_legs.png new file mode 100644 index 00000000..d55ee9d8 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_lightning.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_lightning.png new file mode 100644 index 00000000..800e5439 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_lightning_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_lightning_legs.png new file mode 100644 index 00000000..47603d23 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_lightning_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_necromancy.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_necromancy.png new file mode 100644 index 00000000..8289b878 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_necromancy_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_necromancy_legs.png new file mode 100644 index 00000000..8ff3c2ca Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_necromancy_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_sorcery.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_sorcery.png new file mode 100644 index 00000000..cc909775 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_sorcery_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_sorcery_legs.png new file mode 100644 index 00000000..2328e903 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/battlemage_armour_sorcery_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour.png deleted file mode 100644 index 71917bbb..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_earth.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_earth.png deleted file mode 100644 index 81ed1947..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_earth.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_fire.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_fire.png deleted file mode 100644 index 972abbc6..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_fire.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_healing.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_healing.png deleted file mode 100644 index 5d4c2fae..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_healing.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_ice.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_ice.png deleted file mode 100644 index 2ee99037..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_ice.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_lightning.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_lightning.png deleted file mode 100644 index abd9333f..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_lightning.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_necromancy.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_necromancy.png deleted file mode 100644 index f90e785c..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_necromancy.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_sorcery.png b/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_sorcery.png deleted file mode 100644 index 1d9a9f7c..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_sorcery.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour.png new file mode 100644 index 00000000..43b90244 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_earth.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_earth.png new file mode 100644 index 00000000..2da2a004 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_earth_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_earth_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_earth_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_earth_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_fire.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_fire.png new file mode 100644 index 00000000..8d45e4f7 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_fire_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_fire_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_fire_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_fire_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_healing.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_healing.png new file mode 100644 index 00000000..6dda4de9 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_healing_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_healing_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_healing_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_healing_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_ice.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_ice.png new file mode 100644 index 00000000..962b9082 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_ice_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_ice_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_ice_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_ice_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_lightning.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_lightning.png new file mode 100644 index 00000000..fde56f1e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_lightning_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_lightning_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_lightning_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_lightning_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_necromancy.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_necromancy.png new file mode 100644 index 00000000..79c3441e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_necromancy_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_necromancy_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_necromancy_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_necromancy_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_sorcery.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_sorcery.png new file mode 100644 index 00000000..1e420fec Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_sorcery_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/sage_armour_sorcery_legs.png similarity index 100% rename from src/main/resources/assets/ebwizardry/textures/armour/legendary_wizard_armour_sorcery_legs.png rename to src/main/resources/assets/ebwizardry/textures/armour/sage_armour_sorcery_legs.png diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour.png new file mode 100644 index 00000000..538c5444 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_earth.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_earth.png new file mode 100644 index 00000000..bf0f4079 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_earth_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_earth_legs.png new file mode 100644 index 00000000..9f524512 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_earth_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_fire.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_fire.png new file mode 100644 index 00000000..bb87fd9d Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_fire_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_fire_legs.png new file mode 100644 index 00000000..8c32fba4 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_fire_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_healing.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_healing.png new file mode 100644 index 00000000..0f2fdada Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_healing_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_healing_legs.png new file mode 100644 index 00000000..0a21ff22 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_healing_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_ice.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_ice.png new file mode 100644 index 00000000..d16e13a8 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_ice_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_ice_legs.png new file mode 100644 index 00000000..182dd118 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_ice_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_legs.png new file mode 100644 index 00000000..1d9b36db Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_lightning.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_lightning.png new file mode 100644 index 00000000..a1495223 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_lightning_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_lightning_legs.png new file mode 100644 index 00000000..859a53af Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_lightning_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_necromancy.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_necromancy.png new file mode 100644 index 00000000..2253840c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_necromancy_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_necromancy_legs.png new file mode 100644 index 00000000..c5eb90d1 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_necromancy_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_sorcery.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_sorcery.png new file mode 100644 index 00000000..6679f01e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_sorcery_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_sorcery_legs.png new file mode 100644 index 00000000..13cff70c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/armour/warlock_armour_sorcery_legs.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/armour_upgrade.png b/src/main/resources/assets/ebwizardry/textures/items/armour_upgrade.png deleted file mode 100644 index 19a21c75..00000000 Binary files a/src/main/resources/assets/ebwizardry/textures/items/armour_upgrade.png and /dev/null differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots.png new file mode 100644 index 00000000..2fe08d55 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_earth.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_earth.png new file mode 100644 index 00000000..fa6ea6d4 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_fire.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_fire.png new file mode 100644 index 00000000..8a1bc19f Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_healing.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_healing.png new file mode 100644 index 00000000..bebd7975 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_ice.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_ice.png new file mode 100644 index 00000000..e62ca5dc Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_lightning.png new file mode 100644 index 00000000..8ea333a6 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_necromancy.png new file mode 100644 index 00000000..dd284e61 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_sorcery.png new file mode 100644 index 00000000..ccbb2710 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_boots_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate.png new file mode 100644 index 00000000..1494e782 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_earth.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_earth.png new file mode 100644 index 00000000..ee0de3c8 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_fire.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_fire.png new file mode 100644 index 00000000..9338d1b6 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_healing.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_healing.png new file mode 100644 index 00000000..66d29a22 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_ice.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_ice.png new file mode 100644 index 00000000..be5caa43 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_lightning.png new file mode 100644 index 00000000..0b34e446 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_necromancy.png new file mode 100644 index 00000000..ec842679 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_sorcery.png new file mode 100644 index 00000000..403016de Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_chestplate_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet.png new file mode 100644 index 00000000..bf6c9043 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_earth.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_earth.png new file mode 100644 index 00000000..98723d17 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_fire.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_fire.png new file mode 100644 index 00000000..ff4ac1f8 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_healing.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_healing.png new file mode 100644 index 00000000..c282d473 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_ice.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_ice.png new file mode 100644 index 00000000..f639410a Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_lightning.png new file mode 100644 index 00000000..7a760bff Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_necromancy.png new file mode 100644 index 00000000..74c1e763 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_sorcery.png new file mode 100644 index 00000000..49837593 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_helmet_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings.png new file mode 100644 index 00000000..59ef8a0f Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_earth.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_earth.png new file mode 100644 index 00000000..6a334d4a Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_fire.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_fire.png new file mode 100644 index 00000000..b3a0a1dd Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_healing.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_healing.png new file mode 100644 index 00000000..5a2531d5 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_ice.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_ice.png new file mode 100644 index 00000000..1c640011 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_lightning.png new file mode 100644 index 00000000..0d86530f Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_necromancy.png new file mode 100644 index 00000000..03e58dda Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_sorcery.png new file mode 100644 index 00000000..1eaeb66e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/battlemage_leggings_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/crystal_silver_plating.png b/src/main/resources/assets/ebwizardry/textures/items/crystal_silver_plating.png new file mode 100644 index 00000000..aeb26f0f Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/crystal_silver_plating.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/ethereal_crystalweave.png b/src/main/resources/assets/ebwizardry/textures/items/ethereal_crystalweave.png new file mode 100644 index 00000000..2326d6b3 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/ethereal_crystalweave.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/resplendent_thread.png b/src/main/resources/assets/ebwizardry/textures/items/resplendent_thread.png new file mode 100644 index 00000000..cafed3dd Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/resplendent_thread.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots.png new file mode 100644 index 00000000..955d04d4 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_earth.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_earth.png new file mode 100644 index 00000000..3a59eff1 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_fire.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_fire.png new file mode 100644 index 00000000..77fc3b83 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_healing.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_healing.png new file mode 100644 index 00000000..ad11c5a3 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_ice.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_ice.png new file mode 100644 index 00000000..d2d699e1 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_lightning.png new file mode 100644 index 00000000..6fd926d1 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_necromancy.png new file mode 100644 index 00000000..03638b52 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_boots_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_sorcery.png new file mode 100644 index 00000000..4c0e16a6 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_boots_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat.png new file mode 100644 index 00000000..adf00566 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_earth.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_earth.png new file mode 100644 index 00000000..65bff259 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_fire.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_fire.png new file mode 100644 index 00000000..dace355c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_healing.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_healing.png new file mode 100644 index 00000000..d12e632c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_ice.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_ice.png new file mode 100644 index 00000000..70a1b0c5 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_lightning.png new file mode 100644 index 00000000..35480dd2 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_necromancy.png new file mode 100644 index 00000000..06b94c3d Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_hat_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_sorcery.png new file mode 100644 index 00000000..1825e0d3 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_hat_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings.png new file mode 100644 index 00000000..efb215d4 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_earth.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_earth.png new file mode 100644 index 00000000..0a6d8601 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_fire.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_fire.png new file mode 100644 index 00000000..8043ecd2 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_healing.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_healing.png new file mode 100644 index 00000000..bc94129b Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_ice.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_ice.png new file mode 100644 index 00000000..e35fd985 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_lightning.png new file mode 100644 index 00000000..60036e0d Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_necromancy.png new file mode 100644 index 00000000..7849db8c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_sorcery.png new file mode 100644 index 00000000..09a7e2eb Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_leggings_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe.png new file mode 100644 index 00000000..4dca6f92 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_earth.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_earth.png new file mode 100644 index 00000000..f18335b2 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_fire.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_fire.png new file mode 100644 index 00000000..400d9a70 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_healing.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_healing.png new file mode 100644 index 00000000..acff80c8 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_ice.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_ice.png new file mode 100644 index 00000000..c9c722a2 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_lightning.png new file mode 100644 index 00000000..c9c7fe77 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_necromancy.png new file mode 100644 index 00000000..abb10ebc Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/sage_robe_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_sorcery.png new file mode 100644 index 00000000..7e9bdf3f Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/sage_robe_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots.png new file mode 100644 index 00000000..93c8be1b Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_earth.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_earth.png new file mode 100644 index 00000000..24338c69 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_fire.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_fire.png new file mode 100644 index 00000000..16b49c48 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_healing.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_healing.png new file mode 100644 index 00000000..f5d72fa9 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_ice.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_ice.png new file mode 100644 index 00000000..80822e3e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_lightning.png new file mode 100644 index 00000000..c92de52b Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_necromancy.png new file mode 100644 index 00000000..d06c702b Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_sorcery.png new file mode 100644 index 00000000..13b645de Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_boots_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood.png new file mode 100644 index 00000000..8b6cec9e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_earth.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_earth.png new file mode 100644 index 00000000..e8529c95 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_fire.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_fire.png new file mode 100644 index 00000000..5ef82648 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_healing.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_healing.png new file mode 100644 index 00000000..2622a4e8 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_ice.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_ice.png new file mode 100644 index 00000000..80b35715 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_lightning.png new file mode 100644 index 00000000..4b57009e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_necromancy.png new file mode 100644 index 00000000..4ec079e0 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_sorcery.png new file mode 100644 index 00000000..1062fe46 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_hood_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings.png new file mode 100644 index 00000000..8601ecf1 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_earth.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_earth.png new file mode 100644 index 00000000..671d94df Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_fire.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_fire.png new file mode 100644 index 00000000..d7a30bf9 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_healing.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_healing.png new file mode 100644 index 00000000..ae0689c6 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_ice.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_ice.png new file mode 100644 index 00000000..a0a22b2c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_lightning.png new file mode 100644 index 00000000..6f01c701 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_necromancy.png new file mode 100644 index 00000000..86e5e097 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_sorcery.png new file mode 100644 index 00000000..f9d943a6 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_leggings_sorcery.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe.png new file mode 100644 index 00000000..257a2592 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_earth.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_earth.png new file mode 100644 index 00000000..d676acb3 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_earth.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_fire.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_fire.png new file mode 100644 index 00000000..64865383 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_fire.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_healing.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_healing.png new file mode 100644 index 00000000..72317989 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_healing.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_ice.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_ice.png new file mode 100644 index 00000000..f504ba47 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_ice.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_lightning.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_lightning.png new file mode 100644 index 00000000..06babc9b Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_lightning.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_necromancy.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_necromancy.png new file mode 100644 index 00000000..18e714e9 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_necromancy.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_sorcery.png b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_sorcery.png new file mode 100644 index 00000000..c42deaf9 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/items/warlock_robe_sorcery.png differ