package electroblob.wizardry; import java.util.ArrayList; import java.util.List; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.entity.EntityFallingGrass; import electroblob.wizardry.entity.EntityMagicSlime; import electroblob.wizardry.entity.EntityMeteor; import electroblob.wizardry.entity.EntityShield; import electroblob.wizardry.entity.construct.EntityArrowRain; import electroblob.wizardry.entity.construct.EntityBlackHole; import electroblob.wizardry.entity.construct.EntityBlizzard; import electroblob.wizardry.entity.construct.EntityBubble; import electroblob.wizardry.entity.construct.EntityDecay; import electroblob.wizardry.entity.construct.EntityEarthquake; import electroblob.wizardry.entity.construct.EntityFireRing; import electroblob.wizardry.entity.construct.EntityFireSigil; import electroblob.wizardry.entity.construct.EntityForcefield; import electroblob.wizardry.entity.construct.EntityFrostSigil; import electroblob.wizardry.entity.construct.EntityHailstorm; import electroblob.wizardry.entity.construct.EntityHammer; import electroblob.wizardry.entity.construct.EntityHealAura; import electroblob.wizardry.entity.construct.EntityIceSpike; import electroblob.wizardry.entity.construct.EntityLightningPulse; import electroblob.wizardry.entity.construct.EntityLightningSigil; import electroblob.wizardry.entity.construct.EntityTornado; import electroblob.wizardry.entity.living.EntityBlazeMinion; import electroblob.wizardry.entity.living.EntityDecoy; import electroblob.wizardry.entity.living.EntityEvilWizard; import electroblob.wizardry.entity.living.EntityIceGiant; import electroblob.wizardry.entity.living.EntityIceWraith; import electroblob.wizardry.entity.living.EntityLightningWraith; import electroblob.wizardry.entity.living.EntityPhoenix; import electroblob.wizardry.entity.living.EntityShadowWraith; import electroblob.wizardry.entity.living.EntitySilverfishMinion; import electroblob.wizardry.entity.living.EntitySkeletonMinion; import electroblob.wizardry.entity.living.EntitySpiderMinion; import electroblob.wizardry.entity.living.EntitySpiritHorse; import electroblob.wizardry.entity.living.EntitySpiritWolf; import electroblob.wizardry.entity.living.EntityStormElemental; import electroblob.wizardry.entity.living.EntityWizard; import electroblob.wizardry.entity.living.EntityZombieMinion; import electroblob.wizardry.entity.projectile.EntityDarknessOrb; import electroblob.wizardry.entity.projectile.EntityDart; import electroblob.wizardry.entity.projectile.EntityFirebolt; import electroblob.wizardry.entity.projectile.EntityFirebomb; import electroblob.wizardry.entity.projectile.EntityForceArrow; import electroblob.wizardry.entity.projectile.EntityForceOrb; import electroblob.wizardry.entity.projectile.EntityIceCharge; import electroblob.wizardry.entity.projectile.EntityIceLance; import electroblob.wizardry.entity.projectile.EntityIceShard; import electroblob.wizardry.entity.projectile.EntityLightningArrow; import electroblob.wizardry.entity.projectile.EntityLightningDisc; import electroblob.wizardry.entity.projectile.EntityMagicMissile; import electroblob.wizardry.entity.projectile.EntityPoisonBomb; import electroblob.wizardry.entity.projectile.EntitySmokeBomb; import electroblob.wizardry.entity.projectile.EntitySpark; import electroblob.wizardry.entity.projectile.EntitySparkBomb; import electroblob.wizardry.entity.projectile.EntityThunderbolt; import electroblob.wizardry.spell.*; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import electroblob.wizardry.tileentity.TileEntityMagicLight; import electroblob.wizardry.tileentity.TileEntityPlayerSave; import electroblob.wizardry.tileentity.TileEntityStatue; import electroblob.wizardry.tileentity.TileEntityTimer; import net.minecraft.entity.EnumCreatureType; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.ChestGenHooks; import net.minecraftforge.oredict.OreDictionary; public final class WizardryRegistry { // Usage note on ChestGenHooks: First number is minimum, second is maximum. Third is rarity, lower numbers are more rare [bread = 100]. // i starts at 1 here so that 'none' does not spawn. // Earlier problem solved using clever forge hook - extend WeightedRandomChestContent and override generateChestContent. // Apparently this seems to be incompatible with roguelike dungeons (any others?), in that it generates the same spell book in // all of the chests that have a spell book in the same dungeon (usually, though it has been known to do different ones on // different floors). It also appears to be able to generate the 'none' book, which should be impossible... never mind. // I don't think that's my fault, or I would have seen a 'none' book in a vanilla dungeon by now. // Another curious observation: Recurrent complex's generators also seem to always generate the same book/wand/armour // until you restart the game and can generate the 'none' book as well. // My best guess as to what's happening is that some mods hook into the dungeon loot differently to others, in that // they take all the WeightedRandomChestContent objects once and pick from them each time rather than making new ones // for each chest - which is, in theory, a more efficient way of doing things and will speed up world gen a bit, but // does of course result in custom chest content implementations behaving strangely. The 'none' book thing remains a // mystery, however. /** Called from the preInit method in the main mod class to register the custom dungeon loot. */ public static void registerLoot(){ // The generate loot option only applies to vanilla chests, not wizard tower chests. if(Wizardry.generateLoot){ String[] chestTypes = { ChestGenHooks.DUNGEON_CHEST, ChestGenHooks.PYRAMID_JUNGLE_CHEST, ChestGenHooks.PYRAMID_DESERT_CHEST, ChestGenHooks.MINESHAFT_CORRIDOR, ChestGenHooks.STRONGHOLD_CORRIDOR, ChestGenHooks.STRONGHOLD_CROSSING, ChestGenHooks.STRONGHOLD_LIBRARY }; for(String chest : chestTypes){ ChestGenHooks.addItem(chest, new WeightedRandomSpellBook(new ItemStack(Wizardry.spellBook), 1, 1, Wizardry.SPELL_BOOK_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomSpellBook(new ItemStack(Wizardry.magicWand), 1, 1, Wizardry.WAND_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomSpellBook(new ItemStack(Wizardry.wizardHat), 1, 1, Wizardry.ARMOUR_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomSpellBook(new ItemStack(Wizardry.scroll), 1, 1, Wizardry.SCROLL_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomSpellBook(new ItemStack(Wizardry.condenserUpgrade), 1, 1, Wizardry.WAND_UPGRADE_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.magicCrystal), 1, 4, Wizardry.CRYSTAL_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.arcaneTome, 1, 1), 1, 1, Wizardry.APPRENTICE_TOME_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.arcaneTome, 1, 2), 1, 1, Wizardry.ADVANCED_TOME_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.arcaneTome, 1, 3), 1, 1, Wizardry.MASTER_TOME_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.armourUpgrade), 1, 1, Wizardry.ARMOUR_UPGRADE_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.firebomb), 1, 5, Wizardry.FIREBOMB_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.poisonBomb), 1, 5, Wizardry.POISON_BOMB_FREQUENCY)); ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.smokeBomb), 1, 5, Wizardry.SMOKE_BOMB_FREQUENCY)); if(Wizardry.discoveryMode) ChestGenHooks.addItem(chest, new WeightedRandomChestContent(new ItemStack(Wizardry.identificationScroll), 1, 1, Wizardry.IDENTIFICATION_SCROLL_FREQUENCY)); } } // Creates a new ChestGenHooks for wizard towers. ChestGenHooks chestGen = ChestGenHooks.getInfo(WizardryWorldGenerator.WIZARD_TOWER); chestGen.setMax(7); chestGen.setMin(3); // Wizard tower chests use exactly the same things, minus the firebombs, poison bombs and smoke bombs ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomSpellBook(new ItemStack(Wizardry.spellBook), 1, 1, Wizardry.SPELL_BOOK_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomSpellBook(new ItemStack(Wizardry.magicWand), 1, 1, Wizardry.WAND_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomSpellBook(new ItemStack(Wizardry.wizardHat), 1, 1, Wizardry.ARMOUR_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomSpellBook(new ItemStack(Wizardry.scroll), 1, 1, Wizardry.SCROLL_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomSpellBook(new ItemStack(Wizardry.condenserUpgrade), 1, 1, Wizardry.WAND_UPGRADE_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomChestContent(new ItemStack(Wizardry.magicCrystal), 1, 4, Wizardry.CRYSTAL_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomChestContent(new ItemStack(Wizardry.arcaneTome, 1, 1), 1, 1, Wizardry.APPRENTICE_TOME_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomChestContent(new ItemStack(Wizardry.arcaneTome, 1, 2), 1, 1, Wizardry.ADVANCED_TOME_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomChestContent(new ItemStack(Wizardry.arcaneTome, 1, 3), 1, 1, Wizardry.MASTER_TOME_FREQUENCY)); ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomChestContent(new ItemStack(Wizardry.armourUpgrade), 1, 1, Wizardry.ARMOUR_UPGRADE_FREQUENCY)); if(Wizardry.discoveryMode) ChestGenHooks.addItem(WizardryWorldGenerator.WIZARD_TOWER, new WeightedRandomChestContent(new ItemStack(Wizardry.identificationScroll), 1, 1, Wizardry.IDENTIFICATION_SCROLL_FREQUENCY)); } /* The name defined here in the regitry is the one Minecraft uses in game for commands like /give, as * opposed to the one defined earlier with setBlockName() or setUnlocalizedName() which is the one used by * the lang files. Ideally these should both be the same, but I've written the lang file now, so... */ /** Called from the preInit method in the main mod class to register all the blocks. */ public static void registerBlocks(){ GameRegistry.registerBlock(Wizardry.arcaneWorkbench, "arcane_workbench"); GameRegistry.registerBlock(Wizardry.crystalOre, "crystal_ore"); GameRegistry.registerBlock(Wizardry.petrifiedStone, "petrified_stone"); GameRegistry.registerBlock(Wizardry.iceStatue, "ice_statue"); GameRegistry.registerBlock(Wizardry.magicLight, "magic_light"); GameRegistry.registerBlock(Wizardry.crystalFlower, "crystal_flower"); GameRegistry.registerBlock(Wizardry.snare, "snare"); GameRegistry.registerBlock(Wizardry.transportationStone, "transportation_stone"); GameRegistry.registerBlock(Wizardry.spectralBlock, "spectral_block"); GameRegistry.registerBlock(Wizardry.crystalBlock, "crystal_block"); GameRegistry.registerBlock(Wizardry.meteor, "meteor"); GameRegistry.registerBlock(Wizardry.vanishingCobweb, "vanishing_cobweb"); } /** Called from the preInit method in the main mod class to register all the items. */ public static void registerItems(){ GameRegistry.registerItem(Wizardry.magicCrystal, "magic_crystal"); GameRegistry.registerItem(Wizardry.magicWand, "magic_wand"); GameRegistry.registerItem(Wizardry.apprenticeWand, "apprentice_wand"); GameRegistry.registerItem(Wizardry.advancedWand, "advanced_wand"); GameRegistry.registerItem(Wizardry.masterWand, "master_wand"); GameRegistry.registerItem(Wizardry.spellBook, "spell_book"); GameRegistry.registerItem(Wizardry.arcaneTome, "arcane_tome"); GameRegistry.registerItem(Wizardry.wizardHandbook, "wizard_handbook"); GameRegistry.registerItem(Wizardry.basicFireWand, "basic_fire_wand"); GameRegistry.registerItem(Wizardry.basicIceWand, "basic_ice_wand"); GameRegistry.registerItem(Wizardry.basicLightningWand, "basic_lightning_wand"); GameRegistry.registerItem(Wizardry.basicNecromancyWand, "basic_necromancy_wand"); GameRegistry.registerItem(Wizardry.basicEarthWand, "basic_earth_wand"); GameRegistry.registerItem(Wizardry.basicSorceryWand, "basic_sorcery_wand"); GameRegistry.registerItem(Wizardry.basicHealingWand, "basic_healing_wand"); GameRegistry.registerItem(Wizardry.apprenticeFireWand, "apprentice_fire_wand"); GameRegistry.registerItem(Wizardry.apprenticeIceWand, "apprentice_ice_wand"); GameRegistry.registerItem(Wizardry.apprenticeLightningWand, "apprentice_lightning_wand"); GameRegistry.registerItem(Wizardry.apprenticeNecromancyWand, "apprentice_necromancy_wand"); GameRegistry.registerItem(Wizardry.apprenticeEarthWand, "apprentice_earth_wand"); GameRegistry.registerItem(Wizardry.apprenticeSorceryWand, "apprentice_sorcery_wand"); GameRegistry.registerItem(Wizardry.apprenticeHealingWand, "apprentice_healing_wand"); GameRegistry.registerItem(Wizardry.advancedFireWand, "advanced_fire_wand"); GameRegistry.registerItem(Wizardry.advancedIceWand, "advanced_ice_wand"); GameRegistry.registerItem(Wizardry.advancedLightningWand, "advanced_lightning_wand"); GameRegistry.registerItem(Wizardry.advancedNecromancyWand, "advanced_necromancy_wand"); GameRegistry.registerItem(Wizardry.advancedEarthWand, "advanced_earth_wand"); GameRegistry.registerItem(Wizardry.advancedSorceryWand, "advanced_sorcery_wand"); GameRegistry.registerItem(Wizardry.advancedHealingWand, "advanced_healing_wand"); GameRegistry.registerItem(Wizardry.masterFireWand, "master_fire_wand"); GameRegistry.registerItem(Wizardry.masterIceWand, "master_ice_wand"); GameRegistry.registerItem(Wizardry.masterLightningWand, "master_lightning_wand"); GameRegistry.registerItem(Wizardry.masterNecromancyWand, "master_necromancy_wand"); GameRegistry.registerItem(Wizardry.masterEarthWand, "master_earth_wand"); GameRegistry.registerItem(Wizardry.masterSorceryWand, "master_sorcery_wand"); GameRegistry.registerItem(Wizardry.masterHealingWand, "master_healing_wand"); GameRegistry.registerItem(Wizardry.spectralSword, "spectral_sword"); GameRegistry.registerItem(Wizardry.spectralPickaxe, "spectral_pickaxe"); GameRegistry.registerItem(Wizardry.spectralBow, "spectral_bow"); GameRegistry.registerItem(Wizardry.manaFlask, "mana_flask"); GameRegistry.registerItem(Wizardry.storageUpgrade, "storage_upgrade"); GameRegistry.registerItem(Wizardry.siphonUpgrade, "siphon_upgrade"); GameRegistry.registerItem(Wizardry.condenserUpgrade, "condenser_upgrade"); GameRegistry.registerItem(Wizardry.rangeUpgrade, "range_upgrade"); GameRegistry.registerItem(Wizardry.durationUpgrade, "duration_upgrade"); GameRegistry.registerItem(Wizardry.cooldownUpgrade, "cooldown_upgrade"); GameRegistry.registerItem(Wizardry.blastUpgrade, "blast_upgrade"); GameRegistry.registerItem(Wizardry.attunementUpgrade, "attunement_upgrade"); GameRegistry.registerItem(Wizardry.flamingAxe, "flaming_axe"); GameRegistry.registerItem(Wizardry.frostAxe, "frost_axe"); GameRegistry.registerItem(Wizardry.firebomb, "firebomb"); GameRegistry.registerItem(Wizardry.poisonBomb, "poison_bomb"); GameRegistry.registerItem(Wizardry.blankScroll, "blank_scroll"); GameRegistry.registerItem(Wizardry.scroll, "scroll"); GameRegistry.registerItem(Wizardry.armourUpgrade, "armour_upgrade"); GameRegistry.registerItem(Wizardry.magicSilk, "magic_silk"); GameRegistry.registerItem(Wizardry.wizardHat, "wizard_hat"); GameRegistry.registerItem(Wizardry.wizardRobe, "wizard_robe"); GameRegistry.registerItem(Wizardry.wizardLeggings, "wizard_leggings"); GameRegistry.registerItem(Wizardry.wizardBoots, "wizard_boots"); GameRegistry.registerItem(Wizardry.wizardHatFire, "wizard_hat_fire"); GameRegistry.registerItem(Wizardry.wizardRobeFire, "wizard_robe_fire"); GameRegistry.registerItem(Wizardry.wizardLeggingsFire, "wizard_leggings_fire"); GameRegistry.registerItem(Wizardry.wizardBootsFire, "wizard_boots_fire"); GameRegistry.registerItem(Wizardry.wizardHatIce, "wizard_hat_ice"); GameRegistry.registerItem(Wizardry.wizardRobeIce, "wizard_robe_ice"); GameRegistry.registerItem(Wizardry.wizardLeggingsIce, "wizard_leggings_ice"); GameRegistry.registerItem(Wizardry.wizardBootsIce, "wizard_boots_ice"); GameRegistry.registerItem(Wizardry.wizardHatLightning, "wizard_hat_lightning"); GameRegistry.registerItem(Wizardry.wizardRobeLightning, "wizard_robe_lightning"); GameRegistry.registerItem(Wizardry.wizardLeggingsLightning, "wizard_leggings_lightning"); GameRegistry.registerItem(Wizardry.wizardBootsLightning, "wizard_boots_lightning"); GameRegistry.registerItem(Wizardry.wizardHatNecromancy, "wizard_hat_necromancy"); GameRegistry.registerItem(Wizardry.wizardRobeNecromancy, "wizard_robe_necromancy"); GameRegistry.registerItem(Wizardry.wizardLeggingsNecromancy, "wizard_leggings_necromancy"); GameRegistry.registerItem(Wizardry.wizardBootsNecromancy, "wizard_boots_necromancy"); GameRegistry.registerItem(Wizardry.wizardHatEarth, "wizard_hat_earth"); GameRegistry.registerItem(Wizardry.wizardRobeEarth, "wizard_robe_earth"); GameRegistry.registerItem(Wizardry.wizardLeggingsEarth, "wizard_leggings_earth"); GameRegistry.registerItem(Wizardry.wizardBootsEarth, "wizard_boots_earth"); GameRegistry.registerItem(Wizardry.wizardHatSorcery, "wizard_hat_sorcery"); GameRegistry.registerItem(Wizardry.wizardRobeSorcery, "wizard_robe_sorcery"); GameRegistry.registerItem(Wizardry.wizardLeggingsSorcery, "wizard_leggings_sorcery"); GameRegistry.registerItem(Wizardry.wizardBootsSorcery, "wizard_boots_sorcery"); GameRegistry.registerItem(Wizardry.wizardHatHealing, "wizard_hat_healing"); GameRegistry.registerItem(Wizardry.wizardRobeHealing, "wizard_robe_healing"); GameRegistry.registerItem(Wizardry.wizardLeggingsHealing, "wizard_leggings_healing"); GameRegistry.registerItem(Wizardry.wizardBootsHealing, "wizard_boots_healing"); GameRegistry.registerItem(Wizardry.spawnWizard, "spawn_wizard"); GameRegistry.registerItem(Wizardry.spectralHelmet, "spectral_helmet"); GameRegistry.registerItem(Wizardry.spectralChestplate, "spectral_chestplate"); GameRegistry.registerItem(Wizardry.spectralLeggings, "spectral_leggings"); GameRegistry.registerItem(Wizardry.spectralBoots, "spectral_boots"); GameRegistry.registerItem(Wizardry.smokeBomb, "smoke_bomb"); GameRegistry.registerItem(Wizardry.identificationScroll, "identification_scroll"); } /** Called from the preInit method in the main mod class to register all the tileentities. */ public static void registerTileEntities(){ GameRegistry.registerTileEntity(TileEntityArcaneWorkbench.class, Wizardry.MODID + "ArcaneWorkbenchTileEntity"); GameRegistry.registerTileEntity(TileEntityStatue.class, Wizardry.MODID + "PetrifiedStoneTileEntity"); GameRegistry.registerTileEntity(TileEntityMagicLight.class, Wizardry.MODID + "MagicLightTileEntity"); GameRegistry.registerTileEntity(TileEntityTimer.class, Wizardry.MODID + "TimerTileEntity"); GameRegistry.registerTileEntity(TileEntityPlayerSave.class, Wizardry.MODID + "TileEntityPlayerSave"); } /** Called from the preInit method in the main mod class to register all the entities. */ public static void registerEntities(Wizardry wizardry){ int id = 0; // Incrementable index for the mod specific entity id. EntityRegistry.registerModEntity(EntityZombieMinion.class, "Zombie Minion", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityMagicMissile.class, "Magic Missile", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityArc.class, "Arc", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntitySkeletonMinion.class, "Skeleton Minion", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntitySparkBomb.class, "Spark Bomb", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntitySpiritWolf.class, "Spirit Wolf", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityIceShard.class, "Ice Shard", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityBlazeMinion.class, "Blaze Minion", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityIceWraith.class, "Ice Wraith", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityLightningWraith.class, "Lightning Wraith", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityBlackHole.class, "Black Hole", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityShield.class, "Shield", id++, wizardry, 128, 1, true); EntityRegistry.registerModEntity(EntityMeteor.class, "Meteor", id++, wizardry, 128, 5, true); EntityRegistry.registerModEntity(EntityBlizzard.class, "Blizzard", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityWizard.class, "Wizard", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityBubble.class, "Bubble", id++, wizardry, 128, 3, false); EntityRegistry.registerModEntity(EntityTornado.class, "Tornado", id++, wizardry, 128, 1, false); EntityRegistry.registerModEntity(EntityHammer.class, "Lightning Hammer", id++, wizardry, 128, 1, true); EntityRegistry.registerModEntity(EntityFirebomb.class, "Firebomb", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityForceOrb.class, "Force Orb", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityArrowRain.class, "Arrow Rain", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntitySpark.class, "Spark", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityShadowWraith.class, "Shadow Wraith", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityDarknessOrb.class, "Darkness Orb", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntitySpiderMinion.class, "Spider Minion", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityHealAura.class, "Healing Aura", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityFireSigil.class, "Fire Sigil", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityFrostSigil.class, "Frost Sigil", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityLightningSigil.class, "Lightning Sigil", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityLightningArrow.class, "Lightning Arrow", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityFirebolt.class, "Firebolt", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityPoisonBomb.class, "Poison Bomb", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityIceCharge.class, "Ice Charge", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityForceArrow.class, "Force Arrow", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityDart.class, "Dart", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityMagicSlime.class, "Magic Slime", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityForcefield.class, "Forcefield", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityFireRing.class, "Ring of Fire", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityLightningDisc.class, "Lightning Disc", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityThunderbolt.class, "Thunderbolt", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityIceGiant.class, "Ice Giant", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntitySpiritHorse.class, "Spirit Horse", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityPhoenix.class, "Phoenix", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntitySilverfishMinion.class, "Silverfish Minion", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityDecay.class, "Decay", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityStormElemental.class, "Storm Elemental", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityEarthquake.class, "Earthquake", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntityFallingGrass.class, "Falling Grass", id++, wizardry, 128, 5, true); EntityRegistry.registerModEntity(EntityIceLance.class, "Ice Lance", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityHailstorm.class, "Hailstorm", id++, wizardry, 128, 10, false); EntityRegistry.registerModEntity(EntitySmokeBomb.class, "Smoke Bomb", id++, wizardry, 128, 10, true); EntityRegistry.registerModEntity(EntityEvilWizard.class, "Evil Wizard", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityDecoy.class, "Decoy", id++, wizardry, 128, 3, true); EntityRegistry.registerModEntity(EntityIceSpike.class, "Ice Spike", id++, wizardry, 128, 1, true); EntityRegistry.registerModEntity(EntityLightningPulse.class, "Lightning Pulse", id++, wizardry, 128, 10, false); List biomes = new ArrayList(); for(BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()){ if(biome != null){ biomes.add(biome); } } // For reference: 5, 1, 1 are the parameters for the witch in vanilla. EntityRegistry.addSpawn(EntityEvilWizard.class, 3, 1, 1, EnumCreatureType.monster, biomes.toArray(new BiomeGenBase[biomes.size()])); } /** Static instance of the none spell, used for various purposes. */ public static Spell none; /** Static instance of the magic missile spell, used for crafting spell books and by wizards. */ public static Spell magicMissile; /** Static instance of the transportation spell, used for chat messages. */ public static Spell transportation; /** Static instance of the clairvoyance spell, used for chat messages. */ public static Spell clairvoyance; /** Called from the preInit method in the main mod class to register all the spells in wizardry. */ public static void registerSpells(){ // Wizardry 1.0 spells Spell.register(none = new None()); Spell.register(magicMissile = new MagicMissile()); Spell.register(new Ignite()); Spell.register(new Freeze()); Spell.register(new Snowball()); Spell.register(new Arc()); Spell.register(new Thunderbolt()); Spell.register(new SummonZombie()); Spell.register(new Snare()); Spell.register(new Dart()); Spell.register(new Light()); Spell.register(new Telekinesis()); Spell.register(new Heal()); Spell.register(new Fireball()); Spell.register(new FlameRay()); Spell.register(new Firebomb()); Spell.register(new FireSigil()); Spell.register(new Firebolt()); Spell.register(new FrostRay()); Spell.register(new SummonSnowGolem()); Spell.register(new IceShard()); Spell.register(new IceStatue()); Spell.register(new FrostSigil()); Spell.register(new LightningRay()); Spell.register(new SparkBomb()); Spell.register(new HomingSpark()); Spell.register(new LightningSigil()); Spell.register(new LightningArrow()); Spell.register(new LifeDrain()); Spell.register(new SummonSkeleton()); Spell.register(new Metamorphosis()); Spell.register(new Wither()); Spell.register(new Poison()); Spell.register(new GrowthAura()); Spell.register(new Bubble()); Spell.register(new Whirlwind()); Spell.register(new PoisonBomb()); Spell.register(new SummonSpiritWolf()); Spell.register(new Blink()); Spell.register(new Agility()); Spell.register(new ConjureSword()); Spell.register(new ConjurePickaxe()); Spell.register(new ConjureBow()); Spell.register(new ForceArrow()); Spell.register(new Shield()); Spell.register(new ReplenishHunger()); Spell.register(new CureEffects()); Spell.register(new HealAlly()); Spell.register(new SummonBlaze()); Spell.register(new RingOfFire()); Spell.register(new Detonate()); Spell.register(new FireResistance()); Spell.register(new Fireskin()); Spell.register(new FlamingAxe()); Spell.register(new Blizzard()); Spell.register(new SummonIceWraith()); Spell.register(new IceShroud()); Spell.register(new IceCharge()); Spell.register(new FrostAxe()); Spell.register(new InvokeWeather()); Spell.register(new ChainLightning()); Spell.register(new LightningBolt()); Spell.register(new SummonLightningWraith()); Spell.register(new StaticAura()); Spell.register(new LightningDisc()); Spell.register(new MindControl()); Spell.register(new SummonWitherSkeleton()); Spell.register(new Entrapment()); Spell.register(new WitherSkull()); Spell.register(new DarknessOrb()); Spell.register(new ShadowWard()); Spell.register(new Decay()); Spell.register(new WaterBreathing()); Spell.register(new Tornado()); Spell.register(new Glide()); Spell.register(new SummonSpiritHorse()); Spell.register(new SpiderSwarm()); Spell.register(new Slime()); Spell.register(new Petrify()); Spell.register(new Invisibility()); Spell.register(new Levitation()); Spell.register(new ForceOrb()); Spell.register(transportation = new Transportation()); Spell.register(new SpectralPathway()); Spell.register(new PhaseStep()); Spell.register(new VanishingBox()); Spell.register(new GreaterHeal()); Spell.register(new HealingAura()); Spell.register(new Forcefield()); Spell.register(new Ironflesh()); Spell.register(new Transience()); Spell.register(new Meteor()); Spell.register(new Firestorm()); Spell.register(new SummonPhoenix()); Spell.register(new IceAge()); Spell.register(new WallOfFrost()); Spell.register(new SummonIceGiant()); Spell.register(new Thunderstorm()); Spell.register(new LightningHammer()); Spell.register(new PlagueOfDarkness()); Spell.register(new SummonSkeletonLegion()); Spell.register(new SummonShadowWraith()); Spell.register(new ForestsCurse()); Spell.register(new Flight()); Spell.register(new SilverfishSwarm()); Spell.register(new BlackHole()); Spell.register(new Shockwave()); Spell.register(new SummonIronGolem()); Spell.register(new ArrowRain()); Spell.register(new Diamondflesh()); Spell.register(new FontOfVitality()); // Wizardry 1.1 spells Spell.register(new SmokeBomb()); Spell.register(new MindTrick()); Spell.register(new Leap()); Spell.register(new PocketFurnace()); Spell.register(new Intimidate()); Spell.register(new Banish()); Spell.register(new SixthSense()); Spell.register(new Darkvision()); Spell.register(clairvoyance = new Clairvoyance()); Spell.register(new PocketWorkbench()); Spell.register(new ImbueWeapon()); Spell.register(new InvigoratingPresence()); Spell.register(new Oakflesh()); Spell.register(new GreaterFireball()); Spell.register(new FlamingWeapon()); Spell.register(new IceLance()); Spell.register(new FreezingWeapon()); Spell.register(new IceSpikes()); Spell.register(new LightningPulse()); Spell.register(new CurseOfSoulbinding()); Spell.register(new Cobwebs()); Spell.register(new Decoy()); Spell.register(new ArcaneJammer()); Spell.register(new ConjureArmour()); Spell.register(new GroupHeal()); Spell.register(new Hailstorm()); Spell.register(new LightningWeb()); Spell.register(new SummonStormElemental()); Spell.register(new Earthquake()); Spell.register(new FontOfMana()); } /** Called from the init method in the main mod class to register all the recipes. */ public static void registerRecipes(){ ItemStack ironIngotStack = new ItemStack(Items.iron_ingot); ItemStack magicCrystalStack = new ItemStack(Wizardry.magicCrystal); ItemStack magicWandStack = new ItemStack(Wizardry.magicWand, 1, EnumTier.BASIC.maxCharge); ItemStack goldNuggetStack = new ItemStack(Items.gold_nugget); ItemStack stickStack = new ItemStack(Items.stick); ItemStack bookStack = new ItemStack(Items.book); ItemStack stringStack = new ItemStack(Items.string); ItemStack spellBookStack = new ItemStack(Wizardry.spellBook, 1, WizardryRegistry.magicMissile.id()); ItemStack arcaneWorkbenchStack = new ItemStack(Wizardry.arcaneWorkbench); ItemStack stoneStack = new ItemStack(Blocks.stone); ItemStack lapisBlockStack = new ItemStack(Blocks.lapis_block); ItemStack purpleCarpetStack = new ItemStack(Blocks.carpet, 1, 10); ItemStack wizardHandbookStack = new ItemStack(Wizardry.wizardHandbook); ItemStack crystalFlowerStack = new ItemStack(Wizardry.crystalFlower); ItemStack magicCrystalStack1 = new ItemStack(Wizardry.magicCrystal, 2); ItemStack magicCrystalStack2 = new ItemStack(Wizardry.magicCrystal, 9); ItemStack crystalBlockStack = new ItemStack(Wizardry.crystalBlock); ItemStack manaFlaskStack = new ItemStack(Wizardry.manaFlask); ItemStack bottleStack = new ItemStack(Items.glass_bottle); ItemStack gunpowderStack = new ItemStack(Items.gunpowder); ItemStack blazePowderStack = new ItemStack(Items.blaze_powder); ItemStack spiderEyeStack = new ItemStack(Items.spider_eye); // Coal or charcoal is equally fine, hence the wildcard value ItemStack coalStack = new ItemStack(Items.coal, 1, OreDictionary.WILDCARD_VALUE); ItemStack firebombStack = new ItemStack(Wizardry.firebomb, 3); ItemStack poisonBombStack = new ItemStack(Wizardry.poisonBomb, 3); ItemStack smokeBombStack = new ItemStack(Wizardry.smokeBomb, 3); ItemStack transportationStoneStack = new ItemStack(Wizardry.transportationStone, 2); ItemStack silkStack = new ItemStack(Wizardry.magicSilk); ItemStack silkStack1 = new ItemStack(Wizardry.magicSilk, 2); ItemStack hatStack = new ItemStack(Wizardry.wizardHat); ItemStack robeStack = new ItemStack(Wizardry.wizardRobe); ItemStack leggingsStack = new ItemStack(Wizardry.wizardLeggings); ItemStack bootsStack = new ItemStack(Wizardry.wizardBoots); ItemStack scrollStack = new ItemStack(Wizardry.blankScroll); ItemStack paperStack = new ItemStack(Items.paper); GameRegistry.addRecipe(magicWandStack, " x", " y ", "z ", 'x', magicCrystalStack, 'y', stickStack, 'z', goldNuggetStack); GameRegistry.addRecipe(spellBookStack, " x ", "xyx", " x ", 'x', magicCrystalStack, 'y', bookStack); GameRegistry.addRecipe(arcaneWorkbenchStack, "vwv", "xyx", "zzz", 'v', goldNuggetStack, 'w', purpleCarpetStack, 'x', magicCrystalStack, 'y', lapisBlockStack, 'z', stoneStack); GameRegistry.addRecipe(manaFlaskStack, "yyy", "yxy", "yyy", 'x', bottleStack, 'y', magicCrystalStack); GameRegistry.addRecipe(transportationStoneStack, " x ", "xyx", " x ", 'x', stoneStack, 'y', magicCrystalStack); GameRegistry.addRecipe(hatStack, "yyy", "y y", 'y', silkStack); GameRegistry.addRecipe(robeStack, "y y", "yyy", "yyy", 'y', silkStack); GameRegistry.addRecipe(leggingsStack, "yyy", "y y", "y y", 'y', silkStack); GameRegistry.addRecipe(bootsStack, "y y", "y y", 'y', silkStack); GameRegistry.addRecipe(silkStack1, " x ", "xyx", " x ", 'x', stringStack, 'y', magicCrystalStack); GameRegistry.addRecipe(crystalBlockStack, "zzz", "zzz", "zzz", 'z', magicCrystalStack); GameRegistry.addShapelessRecipe(wizardHandbookStack, bookStack, magicCrystalStack); GameRegistry.addShapelessRecipe(magicCrystalStack1, crystalFlowerStack); GameRegistry.addShapelessRecipe(magicCrystalStack2, crystalBlockStack); if(Wizardry.firebombIsCraftable) GameRegistry.addShapelessRecipe(firebombStack, bottleStack, gunpowderStack, blazePowderStack, blazePowderStack); if(Wizardry.poisonBombIsCraftable) GameRegistry.addShapelessRecipe(poisonBombStack, bottleStack, gunpowderStack, spiderEyeStack, spiderEyeStack); if(Wizardry.smokeBombIsCraftable) GameRegistry.addShapelessRecipe(smokeBombStack, bottleStack, gunpowderStack, coalStack, coalStack); if(Wizardry.useAlternateScrollRecipe){ GameRegistry.addShapelessRecipe(scrollStack, paperStack, stringStack, magicCrystalStack); }else{ GameRegistry.addShapelessRecipe(scrollStack, paperStack, stringStack); } // Mana flask recipes ItemStack miscWandStack; for(int i=0; i