├── .gitignore ├── LICENSE ├── README.md ├── Texture Wishlist.txt ├── build.gradle ├── build.properties ├── gradle └── wrapper │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── plans.txt └── src ├── api └── java │ ├── am2 │ └── api │ │ ├── ArsMagicaApi.java │ │ ├── IAMRecipeManager.java │ │ ├── IAffinityData.java │ │ ├── IExtendedProperties.java │ │ ├── ISkillData.java │ │ ├── SkillTreeEntry.java │ │ ├── blocks │ │ ├── IKeystoneLockable.java │ │ └── MultiblockStructureDefinition.java │ │ ├── enchantment │ │ └── IAMEnchantmentHelper.java │ │ ├── entities │ │ └── IEntityManager.java │ │ ├── events │ │ ├── ManaCostEvent.java │ │ ├── ModifierCalculatedEvent.java │ │ ├── PlayerMagicLevelChangeEvent.java │ │ ├── ReconstructorRepairEvent.java │ │ ├── RegisterSkillTreeIcons.java │ │ ├── SkillLearnedEvent.java │ │ ├── SpellCastingEvent.java │ │ └── SpellRecipeItemsEvent.java │ │ ├── flickers │ │ ├── IFlickerController.java │ │ ├── IFlickerFunctionality.java │ │ └── IFlickerRegistry.java │ │ ├── illeffect │ │ ├── BadThingTypes.java │ │ ├── IIllEffect.java │ │ ├── IllEffectBase.java │ │ └── IllEffectSeverity.java │ │ ├── items │ │ ├── IKeystoneHelper.java │ │ └── armor │ │ │ ├── ArmorTextureEvent.java │ │ │ ├── IArmorImbuement.java │ │ │ ├── IImbuementRegistry.java │ │ │ ├── ImbuementApplicationTypes.java │ │ │ └── ImbuementTiers.java │ │ ├── math │ │ ├── AMLineSegment.java │ │ ├── AMMatrix4.java │ │ ├── AMPlane.java │ │ ├── AMVector2.java │ │ └── AMVector3.java │ │ ├── particles │ │ └── IBeamParticle.java │ │ ├── power │ │ ├── IObeliskFuelHelper.java │ │ ├── IPowerNode.java │ │ └── PowerTypes.java │ │ └── spell │ │ ├── ISkillTreeManager.java │ │ ├── ISpellIconManager.java │ │ ├── ISpellModifierManager.java │ │ ├── ISpellPartManager.java │ │ ├── ISpellShapeManager.java │ │ ├── ItemSpellBase.java │ │ ├── component │ │ └── interfaces │ │ │ ├── IRitualInteraction.java │ │ │ ├── ISkillTreeEntry.java │ │ │ ├── ISpellComponent.java │ │ │ ├── ISpellModifier.java │ │ │ ├── ISpellPart.java │ │ │ └── ISpellShape.java │ │ └── enums │ │ ├── Affinity.java │ │ ├── BuffPowerLevel.java │ │ ├── ContingencyTypes.java │ │ ├── LearnStates.java │ │ ├── SkillPointTypes.java │ │ ├── SkillTrees.java │ │ ├── SpellCastResult.java │ │ └── SpellModifiers.java │ ├── baubles │ └── api │ │ ├── BaubleType.java │ │ ├── BaublesApi.java │ │ ├── IBauble.java │ │ └── package-info.java │ ├── cofh │ └── api │ │ ├── CoFHAPIProps.java │ │ ├── energy │ │ ├── EnergyStorage.java │ │ ├── IEnergyConnection.java │ │ ├── IEnergyContainerItem.java │ │ ├── IEnergyHandler.java │ │ ├── IEnergyProvider.java │ │ ├── IEnergyReceiver.java │ │ ├── IEnergyStorage.java │ │ ├── ItemEnergyContainer.java │ │ ├── TileEnergyHandler.java │ │ └── package-info.java │ │ └── package-info.java │ ├── thaumcraft │ └── api │ │ ├── BlockCoordinates.java │ │ ├── IArchitect.java │ │ ├── IGoggles.java │ │ ├── IRepairable.java │ │ ├── IRepairableExtended.java │ │ ├── IRunicArmor.java │ │ ├── IScribeTools.java │ │ ├── IVisDiscountGear.java │ │ ├── IWarpingGear.java │ │ ├── ItemApi.java │ │ ├── ItemRunic.java │ │ ├── ThaumcraftApi.java │ │ ├── ThaumcraftApiHelper.java │ │ ├── TileThaumcraft.java │ │ ├── WorldCoordinates.java │ │ ├── aspects │ │ ├── Aspect.java │ │ ├── AspectList.java │ │ ├── AspectSourceHelper.java │ │ ├── IAspectContainer.java │ │ ├── IAspectSource.java │ │ ├── IEssentiaContainerItem.java │ │ └── IEssentiaTransport.java │ │ ├── crafting │ │ ├── CrucibleRecipe.java │ │ ├── IArcaneRecipe.java │ │ ├── IInfusionStabiliser.java │ │ ├── InfusionEnchantmentRecipe.java │ │ ├── InfusionRecipe.java │ │ ├── ShapedArcaneRecipe.java │ │ └── ShapelessArcaneRecipe.java │ │ ├── damagesource │ │ ├── DamageSourceIndirectThaumcraftEntity.java │ │ └── DamageSourceThaumcraft.java │ │ ├── entities │ │ ├── IEldritchMob.java │ │ └── ITaintedMob.java │ │ ├── internal │ │ ├── DummyInternalMethodHandler.java │ │ ├── IInternalMethodHandler.java │ │ └── WeightedRandomLoot.java │ │ ├── nodes │ │ ├── INode.java │ │ ├── IRevealer.java │ │ ├── NodeModifier.java │ │ └── NodeType.java │ │ ├── package-info.java │ │ ├── potions │ │ ├── PotionFluxTaint.java │ │ └── PotionVisExhaust.java │ │ ├── research │ │ ├── IScanEventHandler.java │ │ ├── ResearchCategories.java │ │ ├── ResearchCategoryList.java │ │ ├── ResearchItem.java │ │ ├── ResearchPage.java │ │ └── ScanResult.java │ │ ├── visnet │ │ ├── TileVisNode.java │ │ └── VisNetHandler.java │ │ └── wands │ │ ├── FocusUpgradeType.java │ │ ├── IWandRodOnUpdate.java │ │ ├── IWandTriggerManager.java │ │ ├── IWandable.java │ │ ├── ItemFocusBasic.java │ │ ├── StaffRod.java │ │ ├── WandCap.java │ │ ├── WandRod.java │ │ └── WandTriggerRegistry.java │ ├── truetyper │ ├── FontHelper.java │ ├── FontLoader.java │ ├── Formatter.java │ ├── LICENSE.md │ ├── README.md │ └── TrueTypeFont.java │ └── vazkii │ └── botania │ └── api │ ├── BotaniaAPI.java │ ├── boss │ ├── IBotaniaBoss.java │ └── IBotaniaBossWithShader.java │ ├── brew │ ├── Brew.java │ ├── IBrewContainer.java │ └── IBrewItem.java │ ├── corporea │ ├── CorporeaHelper.java │ ├── CorporeaRequest.java │ ├── CorporeaRequestEvent.java │ ├── ICorporeaAutoCompleteController.java │ ├── ICorporeaInterceptor.java │ ├── ICorporeaRequestor.java │ ├── ICorporeaSpark.java │ └── IWrappedInventory.java │ ├── internal │ ├── DummyManaNetwork.java │ ├── DummyMethodHandler.java │ ├── DummyPage.java │ ├── DummySubTile.java │ ├── IGuiLexiconEntry.java │ ├── IInternalMethodHandler.java │ ├── IManaBurst.java │ ├── IManaNetwork.java │ ├── ShaderCallback.java │ └── VanillaPacketDispatcher.java │ ├── item │ ├── IAncientWillContainer.java │ ├── IAvatarTile.java │ ├── IAvatarWieldable.java │ ├── IBaubleRender.java │ ├── IBlockProvider.java │ ├── IBurstViewerBauble.java │ ├── ICosmeticAttachable.java │ ├── ICosmeticBauble.java │ ├── IDyablePool.java │ ├── IExoflameHeatable.java │ ├── IExtendedPlayerController.java │ ├── IExtendedWireframeCoordinateListProvider.java │ ├── IFlowerPlaceable.java │ ├── IFlowerlessBiome.java │ ├── IFlowerlessWorld.java │ ├── IGrassHornExcempt.java │ ├── IHornHarvestable.java │ ├── IManaDissolvable.java │ ├── IManaProficiencyArmor.java │ ├── IPetalApothecary.java │ ├── IPhantomInkable.java │ ├── IPixieSpawner.java │ ├── IRelic.java │ ├── ISequentialBreaker.java │ ├── ISortableTool.java │ ├── IWireframeCoordinateListProvider.java │ └── TinyPotatoRenderEvent.java │ ├── lexicon │ ├── BotaniaTutorialStartEvent.java │ ├── IAddonEntry.java │ ├── ILexicon.java │ ├── ILexiconable.java │ ├── IRecipeKeyProvider.java │ ├── ITwoNamedPage.java │ ├── KnowledgeType.java │ ├── LexiconCategory.java │ ├── LexiconEntry.java │ ├── LexiconPage.java │ ├── LexiconRecipeMappings.java │ └── multiblock │ │ ├── IMultiblockRenderHook.java │ │ ├── Multiblock.java │ │ ├── MultiblockSet.java │ │ └── component │ │ ├── AnyComponent.java │ │ ├── ColorSwitchingComponent.java │ │ ├── FlowerComponent.java │ │ └── MultiblockComponent.java │ ├── mana │ ├── BurstProperties.java │ ├── IClientManaHandler.java │ ├── ICompositableLens.java │ ├── ICreativeManaProvider.java │ ├── IDirectioned.java │ ├── IIdentifiable.java │ ├── IKeyLocked.java │ ├── ILaputaImmobile.java │ ├── ILens.java │ ├── ILensControl.java │ ├── ILensEffect.java │ ├── IManaBlock.java │ ├── IManaCollector.java │ ├── IManaCollisionGhost.java │ ├── IManaDiscountArmor.java │ ├── IManaGivingItem.java │ ├── IManaItem.java │ ├── IManaPool.java │ ├── IManaReceiver.java │ ├── IManaSpreader.java │ ├── IManaTooltipDisplay.java │ ├── IManaTrigger.java │ ├── IManaUsingItem.java │ ├── IPingable.java │ ├── IPoolOverlayProvider.java │ ├── IRedirectable.java │ ├── IThrottledPacket.java │ ├── ITinyPlanetExcempt.java │ ├── ManaItemHandler.java │ ├── ManaNetworkEvent.java │ ├── TileSignature.java │ └── spark │ │ ├── ISparkAttachable.java │ │ ├── ISparkEntity.java │ │ └── SparkHelper.java │ ├── package-info.java │ ├── recipe │ ├── ElvenPortalUpdateEvent.java │ ├── IElvenItem.java │ ├── IFlowerComponent.java │ ├── RecipeBrew.java │ ├── RecipeElvenTrade.java │ ├── RecipeManaInfusion.java │ ├── RecipeMiniFlower.java │ ├── RecipePetals.java │ ├── RecipePureDaisy.java │ └── RecipeRuneAltar.java │ ├── subtile │ ├── ISpecialFlower.java │ ├── ISubTileContainer.java │ ├── ISubTileSlowableContainer.java │ ├── RadiusDescriptor.java │ ├── SubTileEntity.java │ ├── SubTileFunctional.java │ ├── SubTileGenerating.java │ └── signature │ │ ├── BasicSignature.java │ │ ├── PassiveFlower.java │ │ └── SubTileSignature.java │ ├── wand │ ├── ICoordBoundItem.java │ ├── ITileBound.java │ ├── IWandBindable.java │ ├── IWandHUD.java │ ├── IWandable.java │ └── IWireframeAABBProvider.java │ └── wiki │ ├── IWikiProvider.java │ ├── SimpleWikiProvider.java │ └── WikiHooks.java └── main ├── java └── fox │ └── spiteful │ └── forbidden │ ├── CommonProxy.java │ ├── Config.java │ ├── DarkAspects.java │ ├── DarkResearchItem.java │ ├── FMEventHandler.java │ ├── Forbidden.java │ ├── ForbiddenRecipes.java │ ├── ForbiddenResearch.java │ ├── LogHandler.java │ ├── VillagerHereticManager.java │ ├── WandOverlord.java │ ├── WorldGenTaintedTree.java │ ├── XPReflectionHelper.java │ ├── blocks │ ├── BlockArcaneCake.java │ ├── BlockBlackFlower.java │ ├── BlockLeavesTainted.java │ ├── BlockLogTainted.java │ ├── BlockPlanksTainted.java │ ├── BlockResource.java │ ├── BlockRoseBush.java │ ├── BlockSaplingTainted.java │ ├── BlockStoneTainted.java │ ├── BlockWrathCage.java │ ├── ForbiddenBlocks.java │ └── ItemBlockStoneTainted.java │ ├── client │ ├── ClientProxy.java │ └── TileEntityWrathCageRenderer.java │ ├── compat │ ├── BloodMagic.java │ ├── Compat.java │ ├── DarkSignature.java │ ├── ForbiddenBotany.java │ ├── ForbiddenLexicon.java │ └── RitualSanity.java │ ├── enchantments │ ├── DarkEnchantments.java │ ├── EnchantmentCluster.java │ ├── EnchantmentConsuming.java │ ├── EnchantmentCorrupting.java │ ├── EnchantmentEducational.java │ ├── EnchantmentGreedy.java │ ├── EnchantmentImpact.java │ ├── EnchantmentVoid.java │ └── EnchantmentWrath.java │ ├── items │ ├── ForbiddenItems.java │ ├── ItemArcaneCake.java │ ├── ItemDeadlyShard.java │ ├── ItemDivineOrb.java │ ├── ItemFruitTainted.java │ ├── ItemGluttonyShard.java │ ├── ItemMobCrystal.java │ ├── ItemResource.java │ ├── ItemTaintCoal.java │ ├── baubles │ │ ├── ItemRingNutrition.java │ │ └── ItemSubCollar.java │ ├── scribes │ │ ├── ItemBloodwell.java │ │ ├── ItemBoundwell.java │ │ ├── ItemCrystalwell.java │ │ └── ItemPrimewell.java │ ├── tools │ │ ├── ItemBloodRapier.java │ │ ├── ItemDiabolistFork.java │ │ ├── ItemMorphAxe.java │ │ ├── ItemMorphPickaxe.java │ │ ├── ItemMorphShovel.java │ │ ├── ItemMorphSword.java │ │ ├── ItemRidingCrop.java │ │ ├── ItemSkullAxe.java │ │ ├── ItemTaintPickaxe.java │ │ └── ItemTaintShovel.java │ └── wands │ │ ├── BloodStaffUpdate.java │ │ ├── BloodWandUpdate.java │ │ ├── CreativeWandUpdate.java │ │ ├── DarkWandCap.java │ │ ├── InfernalWandUpdate.java │ │ ├── ItemFocusBlink.java │ │ ├── ItemWandCaps.java │ │ ├── ItemWandCores.java │ │ ├── ManaStaffUpdate.java │ │ ├── ManaWandUpdate.java │ │ ├── ProfaneWandUpdate.java │ │ ├── TaintedWandUpdate.java │ │ └── YandereWandUpdate.java │ ├── potions │ ├── DarkPotions.java │ └── PotionBloodSeal.java │ └── tiles │ ├── SubTileBloodthorn.java │ ├── SubTileEuclidaisy.java │ ├── SubTileTainthistle.java │ ├── SubTileWhisperweed.java │ ├── TileEntityWrathCage.java │ └── WrathSpawnerLogic.java └── resources ├── assets └── forbidden │ ├── lang │ ├── en_US.lang │ ├── fr_FR.lang │ ├── ja_JP.lang │ ├── ru_RU.lang │ └── zh_CN.lang │ └── textures │ ├── aspects │ ├── desidia.png │ ├── gula.png │ ├── infernus.png │ ├── invidia.png │ ├── ira.png │ ├── luxuria.png │ └── superbia.png │ ├── blocks │ ├── arcanewoodblock.png │ ├── bloodthorn.png │ ├── cake_bottom.png │ ├── cake_inner.png │ ├── cake_side.png │ ├── cake_top.png │ ├── euclidaisy.png │ ├── flower_black.png │ ├── sapling_taint.png │ ├── spirit_box.png │ ├── starblock.png │ ├── taint_leaves.png │ ├── taint_leaves_opaque.png │ ├── taint_log_bottom.png │ ├── taint_log_side.png │ ├── taint_log_side_gross.png │ ├── taint_log_side_gross2.png │ ├── taint_plank_fancy.png │ ├── taint_planks.png │ ├── taint_stone_brick.png │ ├── taint_stone_smooth.png │ ├── tainthistle.png │ ├── umbral_rose_bottom.png │ ├── umbral_rose_top.png │ └── whisperweed.png │ ├── items │ ├── blood_rapier.png │ ├── bloodwell.png │ ├── bound_shears.png │ ├── boundwell.png │ ├── cake.png │ ├── chameleonaxe.png │ ├── chameleonpick.png │ ├── chameleonshovel.png │ ├── chameleonsword.png │ ├── collar.png │ ├── crop.png │ ├── crop_black.png │ ├── crystalwell.png │ ├── despairshard.png │ ├── divineorb.png │ ├── divineorb.png.mcmeta │ ├── dragonslayer.png │ ├── dye_powder_black.png │ ├── emerald_nugget.png │ ├── emptycrystal.png │ ├── envyshard.png │ ├── eyeaxe.png │ ├── eyepick.png │ ├── eyeshovel.png │ ├── eyesword.png │ ├── focus_blink.png │ ├── focus_blink_orn.png │ ├── fork.png │ ├── gluttonyshard.png │ ├── greedshard.png │ ├── hexiteingot.png │ ├── lustshard.png │ ├── mobcrystal.png │ ├── nuggetelementium.png │ ├── nuggetmanasteel.png │ ├── prideshard.png │ ├── prideshard.png.mcmeta │ ├── primewell.png │ ├── ring_nutrition.png │ ├── skullaxe.png │ ├── slothshard.png │ ├── spork.png │ ├── taint_charcoal.png │ ├── taint_charcoal.png.mcmeta │ ├── taint_fruit.png │ ├── tainted_blood_shard.png │ ├── tainted_blood_shard.png.mcmeta │ ├── taintfruit.png │ ├── taintpickaxe.png │ ├── taintshard.png │ ├── taintshard.png.mcmeta │ ├── taintshovel.png │ ├── wand_cap_alchemical.png │ ├── wand_cap_alchemical.png.mcmeta │ ├── wand_cap_elementium.png │ ├── wand_cap_elementium.png.mcmeta │ ├── wand_cap_elementium_inert.png │ ├── wand_cap_manasteel.png │ ├── wand_cap_manasteel.png.mcmeta │ ├── wand_cap_manasteel_inert.png │ ├── wand_cap_terrasteel.png │ ├── wand_cap_vinteum.png │ ├── wand_cap_vinteum.png.mcmeta │ ├── wand_rod_blood.png │ ├── wand_rod_blood_inert.png │ ├── wand_rod_blood_staff.png │ ├── wand_rod_dreamwood.png │ ├── wand_rod_dreamwood_inert.png │ ├── wand_rod_dreamwood_staff.png │ ├── wand_rod_infernal.png │ ├── wand_rod_livingwood.png │ ├── wand_rod_livingwood_inert.png │ ├── wand_rod_profane.png │ ├── wand_rod_soul.png │ ├── wand_rod_tainted.png │ ├── wand_rod_totem.png │ ├── wand_rod_witchwood.png │ ├── wand_rod_witchwood_staff.png │ ├── wrathshard.png │ └── wrathshard.png.mcmeta │ ├── misc │ ├── consuming.png │ ├── corrupting.png │ ├── educational.png │ ├── forbidden.png │ ├── greedy.png │ ├── hellfire.png │ ├── impact.png │ ├── lucrative.png │ ├── pandemonium.png │ ├── potions.png │ ├── research.png │ ├── runecircle.png │ ├── voidtouched.png │ └── wrath.png │ └── models │ ├── heretic.png │ ├── wand_cap_alchemical.png │ ├── wand_cap_elementium.png │ ├── wand_cap_manasteel.png │ ├── wand_cap_orichalcum.png │ ├── wand_cap_terrasteel.png │ ├── wand_cap_vinteum.png │ ├── wand_rod_blood.png │ ├── wand_rod_dreamwood.png │ ├── wand_rod_equivalent.png │ ├── wand_rod_infernal.png │ ├── wand_rod_livingwood.png │ ├── wand_rod_neutronium.png │ ├── wand_rod_profane.png │ ├── wand_rod_profaned.png │ ├── wand_rod_soul.png │ ├── wand_rod_tainted.png │ ├── wand_rod_totem.png │ └── wand_rod_witchwood.png ├── mcmod.info └── pack.mcmeta /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | *.pdn 3 | 4 | # Package Files # 5 | *.jar 6 | *.war 7 | *.ear 8 | 9 | #Forge Stuffs 10 | /LICENSE-fml.txt 11 | /MinecraftForge-Credits.txt 12 | /MinecraftForge-License.txt 13 | /README.txt 14 | /CREDITS-fml.txt 15 | /forge-1.7.2* 16 | /.gradle 17 | /build 18 | /common 19 | /eclipse/* 20 | /lib/ 21 | #/src/api/* 22 | /bin/* 23 | 24 | .classpath 25 | .project 26 | .settings/* -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 3 | Version 2, December 2004 4 | Copyright (C) 2004 Sam Hocevar 5 | Everyone is permitted to copy and distribute verbatim or modified 6 | copies of this license document, and changing it is allowed as long 7 | as the name is changed. 8 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 9 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 10 | 0. You just DO WHAT THE FUCK YOU WANT TO. 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ForbiddenMagic 2 | ============== 3 | 4 | Forbidden Magic is a small Minecraft mod written as an add-on for the mod [Thaumcraft](http://www.minecraftforum.net/topic/2011841-). It adds a few magical artifacts of a more sinister bent to the game as well as several interactions between Thaumcraft and other magic-themed mods such as [Blood Magic](http://www.minecraftforum.net/topic/1899223-) or [Ars Magica 2](http://www.minecraftforum.net/topic/2028696-/). 5 | 6 | Forbidden Magic's source and binary are subject to the terms of the WTF Public License. 7 | -------------------------------------------------------------------------------- /Texture Wishlist.txt: -------------------------------------------------------------------------------- 1 | New Texture Needed: 2 | - Tainted Planks 3 | - Tainted Stone 4 | - Tainted Stone Bricks 5 | - "Living Pickaxe" (Gross tainted fleshy thing used as a pickaxe) 6 | - "Living Shovel" (Gross tainted wormy thing that eats dirt as a shovel) 7 | - "Living Sword" (Gross spiny fleshy thing used as a sword) 8 | - "Living Axe" (Gross toothed fleshy thing used as an axe) 9 | 10 | Could Use Replacing: 11 | 12 | - Rapier of the Strix 13 | - All Botania flowers 14 | - Imprinting Crystals 15 | - Greed Shard 16 | - Gluttony Shard 17 | - Axe of the Skulltaker 18 | - Spork of Doom 19 | 20 | Textures + Models Wanted: 21 | - "Wrath Demon" (Angry red demon with claws n stuff) 22 | - Incubus (Demon dude wearing lingerie. Standard biped model skin.) 23 | - "Gluttony Demon" (Faaaaaaaaaaaaaat) 24 | - "Greed Demon" (Sorta fat. Greedy merchant looking?) 25 | - "Pride Demon" (Regal. Kinda short.) 26 | -------------------------------------------------------------------------------- /build.properties: -------------------------------------------------------------------------------- 1 | minecraft_version=1.7.10 2 | forge_version=10.13.1.1225 3 | mod_version=0.574 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue May 06 21:57:37 CEST 2014 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip 7 | -------------------------------------------------------------------------------- /src/api/java/am2/api/IAMRecipeManager.java: -------------------------------------------------------------------------------- 1 | package am2.api; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public interface IAMRecipeManager { 6 | /** 7 | * Adds a recipe to the essence refiner. 8 | * @param output The output created 9 | * @param components The components required. Must be a length of 5. 10 | */ 11 | public void addRefinerRecipe(ItemStack output, ItemStack[] components); 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/am2/api/IAffinityData.java: -------------------------------------------------------------------------------- 1 | package am2.api; 2 | 3 | import am2.api.spell.enums.Affinity; 4 | 5 | public interface IAffinityData { 6 | 7 | /** 8 | * Gets the depth of the specified affinity as a percentage. 9 | */ 10 | float getAffinityDepth(Affinity affinity); 11 | /** 12 | * Gets the factor at which affinity gains are currently reduced. 13 | */ 14 | float getDiminishingReturnsFactor(); 15 | /** 16 | * Directly sets an affinity. Does not take into account oppositions. Use sparingly. 17 | * @param affinity The affinity to set 18 | * @param depth The depth to set 19 | */ 20 | void setAffinityAndDepth(Affinity affinity, float depth); 21 | /** 22 | * Increments the affinity by the specified amount, and decrements other affinities by an amount related to 23 | * how much in opposition they are to the specified affinity. 24 | * @param affinity The affinity to increase 25 | * @param amt The amount to increase the affinity by 26 | */ 27 | void incrementAffinity(Affinity affinity, float amt); 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/am2/api/IExtendedProperties.java: -------------------------------------------------------------------------------- 1 | package am2.api; 2 | 3 | import am2.api.math.AMVector3; 4 | 5 | /** 6 | * Extended properties on EntityLiving used in Ars Magica. 7 | * @author Mithion 8 | * 9 | */ 10 | public interface IExtendedProperties { 11 | public float getCurrentMana(); 12 | public float getMaxMana(); 13 | 14 | public int getMarkDimension(); 15 | public int getMagicLevel(); 16 | public int getNumSummons(); 17 | 18 | public AMVector3 getMarkLocation(); 19 | 20 | public boolean getHasUnlockedAugmented(); 21 | public boolean getMarkSet(); 22 | 23 | public boolean setMagicLevelWithMana(int magicLevel); 24 | public void setCurrentMana(float currentMana); 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/am2/api/SkillTreeEntry.java: -------------------------------------------------------------------------------- 1 | package am2.api; 2 | 3 | import am2.api.spell.component.interfaces.ISkillTreeEntry; 4 | import am2.api.spell.enums.SkillTrees; 5 | 6 | public class SkillTreeEntry { 7 | public final int x; 8 | public final int y; 9 | public final SkillTrees tree; 10 | public final SkillTreeEntry[] prerequisites; 11 | public final ISkillTreeEntry registeredItem; 12 | public final int tier; 13 | public boolean enabled; 14 | 15 | public SkillTreeEntry(int x, int y, SkillTrees tree, SkillTreeEntry[] prerequisites, ISkillTreeEntry registeredItem, boolean enabled){ 16 | this.x = x; 17 | this.y = y; 18 | this.tree = tree; 19 | this.prerequisites = prerequisites; 20 | this.registeredItem = registeredItem; 21 | this.enabled = enabled; 22 | 23 | int highestTier = 0; 24 | for (SkillTreeEntry entry : prerequisites){ 25 | if (entry.tier >= highestTier){ 26 | highestTier = entry.tier + 1; 27 | } 28 | } 29 | 30 | this.tier = highestTier; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/am2/api/blocks/IKeystoneLockable.java: -------------------------------------------------------------------------------- 1 | package am2.api.blocks; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.tileentity.TileEntity; 5 | 6 | public interface IKeystoneLockable { 7 | /** 8 | * Return a three element array of the three runes in the inventory that make up the current keystone combination. 9 | * Elements can be NULL if there is no rune present. 10 | */ 11 | public ItemStack[] getRunesInKey(); 12 | 13 | /** 14 | * Does the keystone need to be the currently held item? Trumps {@link #keystoneMustBeInActionBar()}. 15 | */ 16 | public boolean keystoneMustBeHeld(); 17 | 18 | /** 19 | * Does the keystone need to be in the action bar? Or can it be anywhere in the inventory? 20 | */ 21 | public boolean keystoneMustBeInActionBar(); 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/am2/api/enchantment/IAMEnchantmentHelper.java: -------------------------------------------------------------------------------- 1 | package am2.api.enchantment; 2 | 3 | public interface IAMEnchantmentHelper { 4 | /** 5 | * Gets the current ID for soulbound enchantment 6 | */ 7 | public int getSoulboundID(); 8 | /** 9 | * Gets the current ID for magic resist enchantment 10 | */ 11 | public int getMagicResistID(); 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/am2/api/entities/IEntityManager.java: -------------------------------------------------------------------------------- 1 | package am2.api.entities; 2 | 3 | public interface IEntityManager { 4 | /** 5 | * Adds the specified entities to the butchery blacklist (won't be affected by sigil of butchery) 6 | */ 7 | public void addButcheryBlacklist(Class...clazz); 8 | /** 9 | * Adds the specified entities to the progeny blacklist (won't be affected by sigil of progeny) 10 | */ 11 | public void addProgenyBlacklist(Class...clazz); 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/am2/api/events/ManaCostEvent.java: -------------------------------------------------------------------------------- 1 | package am2.api.events; 2 | 3 | import cpw.mods.fml.common.eventhandler.Event; 4 | import net.minecraft.entity.EntityLivingBase; 5 | import net.minecraft.item.ItemStack; 6 | 7 | /** 8 | * Fired whenever mana cost of a spell is calculated, after all predefined calculations. 9 | * @author Mithion 10 | * 11 | */ 12 | public class ManaCostEvent extends Event{ 13 | public final ItemStack spell; 14 | public final EntityLivingBase caster; 15 | public float manaCost; 16 | public float burnout; 17 | 18 | public ManaCostEvent(ItemStack spell, EntityLivingBase caster, float manaCost, float burnout){ 19 | this.spell = spell; 20 | this.caster = caster; 21 | this.manaCost = manaCost; 22 | this.burnout = burnout; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/am2/api/events/PlayerMagicLevelChangeEvent.java: -------------------------------------------------------------------------------- 1 | package am2.api.events; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import cpw.mods.fml.common.eventhandler.Event; 5 | 6 | /** 7 | * Raised when a player's magic level changes. 8 | * @author Mithion 9 | * 10 | */ 11 | public class PlayerMagicLevelChangeEvent extends Event { 12 | public final int level; 13 | public final EntityLivingBase entity; 14 | 15 | public PlayerMagicLevelChangeEvent(EntityLivingBase entity, int level){ 16 | this.entity = entity; 17 | this.level = level; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/api/java/am2/api/events/ReconstructorRepairEvent.java: -------------------------------------------------------------------------------- 1 | package am2.api.events; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import cpw.mods.fml.common.eventhandler.Cancelable; 5 | import cpw.mods.fml.common.eventhandler.Event; 6 | 7 | @Cancelable 8 | public class ReconstructorRepairEvent extends Event{ 9 | 10 | /** 11 | * The item being repaired. 12 | */ 13 | public ItemStack item; 14 | 15 | /** 16 | * Called when the arcane reconstructor ticks on repairing an item. 17 | * @param item 18 | */ 19 | public ReconstructorRepairEvent(ItemStack item){ 20 | this.item = item; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/am2/api/events/RegisterSkillTreeIcons.java: -------------------------------------------------------------------------------- 1 | package am2.api.events; 2 | 3 | import cpw.mods.fml.common.eventhandler.Event; 4 | import am2.api.spell.ISpellIconManager; 5 | 6 | public class RegisterSkillTreeIcons extends Event{ 7 | public final ISpellIconManager manager; 8 | 9 | public RegisterSkillTreeIcons(ISpellIconManager manager){ 10 | this.manager = manager; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/am2/api/events/SkillLearnedEvent.java: -------------------------------------------------------------------------------- 1 | package am2.api.events; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import cpw.mods.fml.common.eventhandler.Event; 5 | import am2.api.spell.component.interfaces.ISkillTreeEntry; 6 | 7 | /** 8 | * Raised when a player learns a skill at the Occulus 9 | * @author Mithion 10 | * 11 | */ 12 | public class SkillLearnedEvent extends Event{ 13 | public final EntityPlayer player; 14 | public final ISkillTreeEntry skill; 15 | 16 | public SkillLearnedEvent(EntityPlayer player, ISkillTreeEntry entry){ 17 | this.player = player; 18 | this.skill = entry; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/am2/api/flickers/IFlickerController.java: -------------------------------------------------------------------------------- 1 | package am2.api.flickers; 2 | 3 | import net.minecraft.tileentity.TileEntity; 4 | 5 | public interface IFlickerController { 6 | public byte[] getMetadata(IFlickerFunctionality operator); 7 | public void setMetadata(IFlickerFunctionality operator, byte[] meta); 8 | public void removeMetadata(IFlickerFunctionality operator); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/am2/api/flickers/IFlickerFunctionality.java: -------------------------------------------------------------------------------- 1 | package am2.api.flickers; 2 | 3 | import net.minecraft.world.World; 4 | import am2.api.spell.enums.Affinity; 5 | 6 | public interface IFlickerFunctionality { 7 | boolean RequiresPower(); 8 | int PowerPerOperation(); 9 | boolean DoOperation(World worldObj, IFlickerController controller, boolean powered); 10 | boolean DoOperation(World worldObj, IFlickerController controller, boolean powered, Affinity[] flickers); 11 | void RemoveOperator(World worldObj, IFlickerController controller, boolean powered); 12 | int TimeBetweenOperation(boolean powered, Affinity[] flickers); 13 | void RemoveOperator(World worldObj, IFlickerController controller, boolean powered, Affinity[] flickers); 14 | Object[] getRecipe(); 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/am2/api/flickers/IFlickerRegistry.java: -------------------------------------------------------------------------------- 1 | package am2.api.flickers; 2 | 3 | public interface IFlickerRegistry { 4 | /** 5 | * Attempts to register a flicker operator into the flicker network 6 | * @param singleton The instance of the class that should be called upon to perform the operations when loaded into a flicker block 7 | * @param mask The bit mask representing the flicker combination. These are ORed affinity masks. @see am2.api.spell.enums.Affinity.getMask for specific mask flags (flickers represent an affinity) 8 | * @return True if registered, false if the mask is already in use. 9 | */ 10 | public boolean registerFlickerOperator(IFlickerFunctionality singleton, int mask); 11 | } 12 | -------------------------------------------------------------------------------- /src/api/java/am2/api/illeffect/BadThingTypes.java: -------------------------------------------------------------------------------- 1 | package am2.api.illeffect; 2 | 3 | public enum BadThingTypes{ 4 | ALL, 5 | DARKNEXUS 6 | } -------------------------------------------------------------------------------- /src/api/java/am2/api/illeffect/IllEffectBase.java: -------------------------------------------------------------------------------- 1 | package am2.api.illeffect; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.world.World; 8 | 9 | /** 10 | * Base class for all ill effects. 11 | * @author Mithion 12 | * 13 | */ 14 | public abstract class IllEffectBase implements IIllEffect{ 15 | 16 | @Override 17 | public final int compareTo(Object o) { 18 | if (!(o instanceof IIllEffect)) return 0; 19 | IIllEffect right = (IIllEffect)o; 20 | int myOrdinal = this.GetSeverity().ordinal(); 21 | int theirOrdinal = right.GetSeverity().ordinal(); 22 | 23 | if (myOrdinal == theirOrdinal){ 24 | return 0; 25 | }else if (myOrdinal < theirOrdinal){ 26 | return -1; 27 | }else{ 28 | return 1; 29 | } 30 | } 31 | 32 | @Override 33 | public abstract IllEffectSeverity GetSeverity(); 34 | 35 | @Override 36 | public abstract String getDescription(EntityPlayer player, Object metadata); 37 | 38 | @Override 39 | public abstract Map ApplyIllEffect(World world, int x, int y, int z); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/api/java/am2/api/illeffect/IllEffectSeverity.java: -------------------------------------------------------------------------------- 1 | package am2.api.illeffect; 2 | 3 | /** 4 | * Varying severities for ill effects during spell creation. 5 | * @author Mithion 6 | * 7 | */ 8 | public enum IllEffectSeverity { 9 | MINOR, 10 | MODERATE, 11 | MAJOR, 12 | SEVERE, 13 | FATAL 14 | } 15 | -------------------------------------------------------------------------------- /src/api/java/am2/api/items/IKeystoneHelper.java: -------------------------------------------------------------------------------- 1 | package am2.api.items; 2 | 3 | import java.util.ArrayList; 4 | 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.item.ItemStack; 8 | import am2.api.blocks.IKeystoneLockable; 9 | 10 | public interface IKeystoneHelper { 11 | /** 12 | * Gets all the keys from all keystones in the entity's inventory 13 | */ 14 | public ArrayList GetKeysInInvenory(EntityLivingBase ent); 15 | 16 | /** 17 | * Returns the key combination made by the specified runes 18 | * @param runes An array of runes no larger than three elements (anything above will be ignored) 19 | * @return 20 | */ 21 | public long getKeyFromRunes(ItemStack[] runes); 22 | 23 | /** 24 | * Returns true or false based on whether the passed in player meets the keystone requirements needed to access the specified container 25 | * @param inventory The inventory the player is trying to access 26 | * @param player The player attempting the access check 27 | * @return True if the conditions are met, otherwise false 28 | */ 29 | public boolean canPlayerAccess(IKeystoneLockable inventory, EntityPlayer player); 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/am2/api/items/armor/ArmorTextureEvent.java: -------------------------------------------------------------------------------- 1 | package am2.api.items.armor; 2 | 3 | import cpw.mods.fml.common.eventhandler.Event; 4 | 5 | 6 | public class ArmorTextureEvent extends Event{ 7 | public final int slot; 8 | public final int renderIndex; 9 | 10 | public String texture; 11 | 12 | public ArmorTextureEvent(int slot, int renderIndex){ 13 | this.slot = slot; 14 | this.renderIndex = renderIndex; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/am2/api/items/armor/IImbuementRegistry.java: -------------------------------------------------------------------------------- 1 | package am2.api.items.armor; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | 6 | public interface IImbuementRegistry { 7 | /** 8 | * Registers a new imbuement instance into the system 9 | */ 10 | void registerImbuement(IArmorImbuement imbuementInstance); 11 | /** 12 | * Locates the specified imbuement registered to the passed-in ID. 13 | * Returns null if not found. 14 | */ 15 | IArmorImbuement getImbuementByID(String ID); 16 | /** 17 | * Returns all imbuements registered into the specified tier for the given armor type (slot). 18 | */ 19 | IArmorImbuement[] getImbuementsForTier(ImbuementTiers tier, int armorType); 20 | /** 21 | * Is the given imbuement instance present on the passed-in item stack? 22 | */ 23 | boolean isImbuementPresent(ItemStack stack, IArmorImbuement imbuement); 24 | /** 25 | * Is the given imbuement ID present on the passed-in item stack? 26 | */ 27 | boolean isImbuementPresent(ItemStack stack, String id); 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/am2/api/items/armor/ImbuementApplicationTypes.java: -------------------------------------------------------------------------------- 1 | package am2.api.items.armor; 2 | 3 | public enum ImbuementApplicationTypes { 4 | NONE, 5 | ON_TICK, 6 | ON_HIT, 7 | ON_JUMP, 8 | ON_MINING_SPEED, 9 | ON_DEATH 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/am2/api/items/armor/ImbuementTiers.java: -------------------------------------------------------------------------------- 1 | package am2.api.items.armor; 2 | 3 | public enum ImbuementTiers { 4 | FIRST, 5 | SECOND, 6 | THIRD, 7 | FOURTH 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/am2/api/math/AMVector2.java: -------------------------------------------------------------------------------- 1 | package am2.api.math; 2 | 3 | public class AMVector2 { 4 | public double x; 5 | public double y; 6 | 7 | public int iX; 8 | public int iY; 9 | 10 | public AMVector2(double x, double y){ 11 | this.x = x; 12 | this.y = y; 13 | this.iX = (int)x; 14 | this.iY = (int)y; 15 | } 16 | 17 | public AMVector2 subtract(AMVector2 vec){ 18 | return new AMVector2(this.x - vec.x, this.y - vec.y); 19 | } 20 | 21 | public AMVector2 add(AMVector2 vec){ 22 | return new AMVector2(this.x + vec.x, this.y + vec.y); 23 | } 24 | 25 | public AMVector2 multiply(AMVector2 vec){ 26 | return new AMVector2(this.x * vec.x, this.y * vec.y); 27 | } 28 | 29 | public AMVector2 divide(AMVector2 vec){ 30 | return new AMVector2(this.x / vec.x, this.y / vec.y); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/am2/api/particles/IBeamParticle.java: -------------------------------------------------------------------------------- 1 | package am2.api.particles; 2 | 3 | public interface IBeamParticle { 4 | /** 5 | * Sets the beam type. Determines the texture of the beam. Valid types are 0-2. 6 | */ 7 | public void setType(int type); 8 | /** 9 | * Sets the color from a single integer. Good for hex colors. 10 | */ 11 | public void setRGBColor(int color); 12 | /** 13 | * Sets the beam color from 3 int values (0-255). 14 | */ 15 | public void setRGBColorI(int r, int g, int b); 16 | /** 17 | * Sets the beam color from 3 floating point values (0.0f - 1.0f) 18 | */ 19 | public void setRGBColorF(float r, float g, float b); 20 | /** 21 | * Indicates that this beam is being cast by a player that is in first person. Should only be called when creating a beam from the local player, if the player is in first person. 22 | *
23 | * This will offset the beam to make it look like it is coming from the player's active item and not their face. 24 | */ 25 | public void setFirstPersonPlayerCast(); 26 | } 27 | -------------------------------------------------------------------------------- /src/api/java/am2/api/power/IObeliskFuelHelper.java: -------------------------------------------------------------------------------- 1 | package am2.api.power; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public interface IObeliskFuelHelper { 6 | /** 7 | * Registers a new fuel type for the obelisk to burn 8 | * @param stack The stack to use as a comparator (stackSize is ignored, just use 1) 9 | * @param burnTime How long the obelisk should burn for when given one of these items 10 | */ 11 | public void registerFuelType(ItemStack stack, int burnTime); 12 | /** 13 | * Retrieves the burn time for the specified stack. Returns 0 if it is not a valid fuel. 14 | */ 15 | public int getFuelBurnTime(ItemStack stack); 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/ISkillTreeManager.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell; 2 | 3 | import am2.api.spell.component.interfaces.ISkillTreeEntry; 4 | import am2.api.spell.enums.SkillPointTypes; 5 | import am2.api.spell.enums.SkillTrees; 6 | 7 | public interface ISkillTreeManager { 8 | /** 9 | * Registers a spell part into the skill tree (where it can be unlocked). 10 | * Pass a null prerequisite for no prerequisite. 11 | * Throws an exception if the prerequisite passed in is not a registered entry in the skill tree, or if it is in a different tree. 12 | * @param shape The shape to register 13 | * @param x The x-coordinate in the skill tree to display the shape IIcon 14 | * @param y The y-coordinate in the skill tree to display the shape IIcon 15 | * @param tree The skill tree to register the shape into 16 | * @param prerequisites The prerequisite skills needed for the shape. 17 | */ 18 | public void RegisterPart(ISkillTreeEntry part, int x, int y, SkillTrees tree, SkillPointTypes requiredPoint, ISkillTreeEntry ... prerequisites); 19 | } 20 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/ISpellIconManager.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell; 2 | 3 | import net.minecraft.util.IIcon; 4 | import cpw.mods.fml.relauncher.Side; 5 | import cpw.mods.fml.relauncher.SideOnly; 6 | 7 | @SideOnly(Side.CLIENT) 8 | public interface ISpellIconManager { 9 | /** 10 | * Returns the IIcon registered to the specified spell name. Returns the missing IIcon if one doesn't exist. 11 | */ 12 | public IIcon getIcon(String spellName); 13 | 14 | /** 15 | * Registers an IIcon to be associated with a spell component 16 | * @param spellName The unlocalized name of the spell used when it was registered 17 | * @param IIcon The IIcon of the spell 18 | */ 19 | public void registerIcon(String spellName, IIcon IIcon); 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/ISpellModifierManager.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell; 2 | 3 | import am2.api.spell.component.interfaces.ISpellModifier; 4 | 5 | public interface ISpellModifierManager { 6 | public int registerSpellModifier(ISpellModifier modifier, String modifierName); 7 | public ISpellModifier getSpellModifier(int modifierID); 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/ISpellPartManager.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell; 2 | 3 | import am2.api.spell.component.interfaces.ISkillTreeEntry; 4 | 5 | public interface ISpellPartManager { 6 | /** 7 | * Registers the skill tree entry into the skill manager. 8 | * @param component The skill tree entry to register 9 | * @param name The unlocalized name you want to register it to. Local translations are am2.spell.unlocalized_name, so register this into the language registry for localization. 10 | * @return The shifted numeric ID that is used, this should be stored somewhere 11 | */ 12 | public int registerSkillTreeEntry(ISkillTreeEntry component, String name); 13 | 14 | /** 15 | * 16 | * @param ID The shifted ID of the skill. 17 | * @return The skill tree entry or null if not found. 18 | */ 19 | public ISkillTreeEntry getSkill(int ID); 20 | 21 | /** 22 | * 23 | * @param name The unlocalized name of the skill 24 | * @return The skill tree entry or null if not found. 25 | */ 26 | public ISkillTreeEntry getSkill(String name); 27 | } 28 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/ISpellShapeManager.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell; 2 | 3 | import am2.api.spell.component.interfaces.ISpellShape; 4 | 5 | public interface ISpellShapeManager { 6 | public int registerSpellShape(ISpellShape shape, String shapeName); 7 | public ISpellShape getSpellShape(int shapeID); 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/ItemSpellBase.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.item.Item; 5 | import net.minecraft.util.MovingObjectPosition; 6 | import net.minecraft.world.World; 7 | 8 | /** 9 | * This is just here for reference - you shouldn't have any need to inherit from this item. To add new parts to spells, inherit from ISpellShape, ISpellModifier, or ISpellComponent. 10 | * @author Mithion 11 | * 12 | */ 13 | public abstract class ItemSpellBase extends Item{ 14 | public ItemSpellBase() { 15 | super(); 16 | } 17 | 18 | /** 19 | * Specific version of getMovingObjectPosition that takes into account the targeting types that I need 20 | * @param caster The caster of the spell 21 | * @param world The world the spell is being cast in 22 | * @param range The range to raycast 23 | * @param targetEntities Stop at collision with entities 24 | * @param targetWater Stop at collision with any non-solid block 25 | * @return A MovingObjectPosition instance if a collision was found, null otherwise 26 | */ 27 | public abstract MovingObjectPosition getMovingObjectPosition(EntityLivingBase caster, World world, double range, boolean targetEntities, boolean targetWater); 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/component/interfaces/IRitualInteraction.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.component.interfaces; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import am2.api.blocks.MultiblockStructureDefinition; 5 | 6 | public interface IRitualInteraction { 7 | /** 8 | * Gets a MultiblockStructureDefinition outlining the ritual blocks needed and where they should be relative to a given location. 9 | * This should be instantiated on mod load and cached somewhere, and NOT instantiated upon request. 10 | */ 11 | public MultiblockStructureDefinition getRitualShape(); 12 | 13 | /** 14 | * Gets a list of items that need to be present in {@link #getReagentSearchRadius() getReagentSearchRadius()} for the ritual to match. 15 | * Items on the ground as well as items attached to Wizard's Chalk are included. 16 | */ 17 | public ItemStack[] getReagents(); 18 | 19 | /** 20 | * Gets the radius to search for reagents when checking the ritual. 21 | */ 22 | public int getReagentSearchRadius(); 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/component/interfaces/ISkillTreeEntry.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.component.interfaces; 2 | 3 | public interface ISkillTreeEntry { 4 | /** 5 | * Gets the ID of the skill. Must be unique among all other skills. 6 | * @return The ID of the part. 7 | */ 8 | public int getID(); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/component/interfaces/ISpellPart.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.component.interfaces; 2 | 3 | /** 4 | * Identifies that this object is either a spell component, a spell modifier, or a spell shape. 5 | * Do not inherit this directly unless you are adding talents and such, rather inherit ISpellComponent, ISpellModifier, or ISpellShape for spell parts. 6 | * @author Mithion 7 | * 8 | */ 9 | public interface ISpellPart extends ISkillTreeEntry { 10 | 11 | /** 12 | * recipe items, in order, that need to be thrown into the crafting altar in order to create the item. 13 | *
14 | * Use Items for items, Blocks for blocks, Strings for OreDictionary items, and E:[type flag] followed by an integer for essence amounts. 15 | *
16 | * Use itemstacks for items/blocks/oredict when meta is required. By default it is meta 0. Quantity (stack size) is ignored. 17 | *
18 | * Integer pairs represent the type (*=any, 1=neutral, 2=light, 4=dark, etc.), and the quantity of essence required. The type can be used as flags, 19 | *
20 | * For example: 21 | *
22 | 	 *     new Object[]{ "E:1|2", 1500 } //require 1500 of neutral or 1500 of light power.
23 | 	 *     new Object[]{ "E:*", 1500 } //require 1500 of any kind of power
24 | 	 *     etc.
25 | 	 *
26 | */ 27 | public Object[] getRecipeItems(); 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/BuffPowerLevel.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public class BuffPowerLevel { 4 | public static final int Low = 0; 5 | public static final int Medium = 1; 6 | public static final int High = 2; 7 | } 8 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/ContingencyTypes.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public enum ContingencyTypes { 4 | NONE, 5 | FALL, 6 | DAMAGE_TAKEN, 7 | ON_FIRE, 8 | HEALTH_LOW, 9 | DEATH 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/LearnStates.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public enum LearnStates{ 4 | LEARNED, 5 | CAN_LEARN, 6 | CANNOT_LEARN, 7 | LOCKED, 8 | DISABLED 9 | }; -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/SkillPointTypes.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public enum SkillPointTypes{ 4 | BLUE, 5 | GREEN, 6 | RED, 7 | SILVER 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/SkillTrees.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public enum SkillTrees { 4 | None, 5 | Offense, 6 | Defense, 7 | Utility, 8 | Talents, 9 | Familiar, 10 | Affinity 11 | } 12 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/SpellCastResult.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public enum SpellCastResult { 4 | SUCCESS, 5 | NOT_ENOUGH_MANA, 6 | REAGENTS_MISSING, 7 | MALFORMED_SPELL_STACK, 8 | EFFECT_FAILED, 9 | SUCCESS_REDUCE_MANA, 10 | SILENCED 11 | } 12 | -------------------------------------------------------------------------------- /src/api/java/am2/api/spell/enums/SpellModifiers.java: -------------------------------------------------------------------------------- 1 | package am2.api.spell.enums; 2 | 3 | public enum SpellModifiers { 4 | SPEED(1.0D), 5 | GRAVITY(0), 6 | BOUNCE(0), 7 | DAMAGE(4.0D), 8 | HEALING(1.0D), 9 | VELOCITY_ADDED(0.0D), 10 | RADIUS(1.0D), 11 | DURATION(1.0D), 12 | PROCS(1), 13 | RANGE(8.0D), 14 | TARGET_NONSOLID_BLOCKS(0), 15 | PIERCING(2), 16 | COLOR(0xFFFFFF), 17 | MINING_POWER(1), 18 | FORTUNE_LEVEL(1), 19 | SILKTOUCH_LEVEL(1), 20 | DISMEMBERING_LEVEL(1), 21 | BUFF_POWER(1); 22 | 23 | public double defaultValue = 0D; 24 | public int defaultValueInt = 0; 25 | 26 | private SpellModifiers(double defaultValue){ 27 | this.defaultValue = defaultValue; 28 | this.defaultValueInt = (int)defaultValue; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/baubles/api/BaubleType.java: -------------------------------------------------------------------------------- 1 | package baubles.api; 2 | 3 | public enum BaubleType { 4 | RING, 5 | AMULET, 6 | BELT 7 | } 8 | -------------------------------------------------------------------------------- /src/api/java/baubles/api/BaublesApi.java: -------------------------------------------------------------------------------- 1 | package baubles.api; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.inventory.IInventory; 7 | import cpw.mods.fml.common.FMLLog; 8 | 9 | /** 10 | * @author Azanor 11 | */ 12 | public class BaublesApi 13 | { 14 | static Method getBaubles; 15 | 16 | /** 17 | * Retrieves the baubles inventory for the supplied player 18 | */ 19 | public static IInventory getBaubles(EntityPlayer player) 20 | { 21 | IInventory ot = null; 22 | 23 | try 24 | { 25 | if(getBaubles == null) 26 | { 27 | Class fake = Class.forName("baubles.common.lib.PlayerHandler"); 28 | getBaubles = fake.getMethod("getPlayerBaubles", EntityPlayer.class); 29 | } 30 | 31 | ot = (IInventory) getBaubles.invoke(null, player); 32 | } 33 | catch(Exception ex) 34 | { 35 | FMLLog.warning("[Baubles API] Could not invoke baubles.common.lib.PlayerHandler method getPlayerBaubles"); 36 | } 37 | 38 | return ot; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/api/java/baubles/api/IBauble.java: -------------------------------------------------------------------------------- 1 | package baubles.api; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.item.ItemStack; 5 | 6 | /** 7 | * 8 | * This interface should be extended by items that can be worn in bauble slots 9 | * 10 | * @author Azanor 11 | */ 12 | 13 | public interface IBauble { 14 | 15 | /** 16 | * This method return the type of bauble this is. 17 | * Type is used to determine the slots it can go into. 18 | */ 19 | public BaubleType getBaubleType(ItemStack itemstack); 20 | 21 | /** 22 | * This method is called once per tick if the bauble is being worn by a player 23 | */ 24 | public void onWornTick(ItemStack itemstack, EntityLivingBase player); 25 | 26 | /** 27 | * This method is called when the bauble is equipped by a player 28 | */ 29 | public void onEquipped(ItemStack itemstack, EntityLivingBase player); 30 | 31 | /** 32 | * This method is called when the bauble is unequipped by a player 33 | */ 34 | public void onUnequipped(ItemStack itemstack, EntityLivingBase player); 35 | 36 | /** 37 | * can this bauble be placed in a bauble slot 38 | */ 39 | public boolean canEquip(ItemStack itemstack, EntityLivingBase player); 40 | 41 | /** 42 | * Can this bauble be removed from a bauble slot 43 | */ 44 | public boolean canUnequip(ItemStack itemstack, EntityLivingBase player); 45 | } 46 | -------------------------------------------------------------------------------- /src/api/java/baubles/api/package-info.java: -------------------------------------------------------------------------------- 1 | @API(owner = "Baubles", apiVersion = "1.0.1.10", provides = "Baubles|API") 2 | package baubles.api; 3 | 4 | import cpw.mods.fml.common.API; 5 | 6 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/CoFHAPIProps.java: -------------------------------------------------------------------------------- 1 | package cofh.api; 2 | 3 | public class CoFHAPIProps { 4 | 5 | private CoFHAPIProps() { 6 | 7 | } 8 | 9 | public static final String VERSION = "1.7.10R1.0.2"; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyConnection.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on TileEntities which should connect to energy transportation blocks. This is intended for blocks which generate energy but do not 7 | * accept it; otherwise just use IEnergyHandler. 8 | *

9 | * Note that {@link IEnergyHandler} is an extension of this. 10 | * 11 | * @author King Lemming 12 | * 13 | */ 14 | public interface IEnergyConnection { 15 | 16 | /** 17 | * Returns TRUE if the TileEntity can connect on a given side. 18 | */ 19 | boolean canConnectEnergy(ForgeDirection from); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyProvider.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on Tile Entities which should provide energy, generally storing it in one or more internal {@link IEnergyStorage} objects. 7 | *

8 | * A reference implementation is provided {@link TileEnergyHandler}. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public interface IEnergyProvider extends IEnergyConnection { 14 | 15 | /** 16 | * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. 17 | * 18 | * @param from 19 | * Orientation the energy is extracted from. 20 | * @param maxExtract 21 | * Maximum amount of energy to extract. 22 | * @param simulate 23 | * If TRUE, the extraction will only be simulated. 24 | * @return Amount of energy that was (or would have been, if simulated) extracted. 25 | */ 26 | int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate); 27 | 28 | /** 29 | * Returns the amount of energy currently stored. 30 | */ 31 | int getEnergyStored(ForgeDirection from); 32 | 33 | /** 34 | * Returns the maximum amount of energy that can be stored. 35 | */ 36 | int getMaxEnergyStored(ForgeDirection from); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyReceiver.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects. 7 | *

8 | * A reference implementation is provided {@link TileEnergyHandler}. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public interface IEnergyReceiver extends IEnergyConnection { 14 | 15 | /** 16 | * Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver. 17 | * 18 | * @param from 19 | * Orientation the energy is received from. 20 | * @param maxReceive 21 | * Maximum amount of energy to receive. 22 | * @param simulate 23 | * If TRUE, the charge will only be simulated. 24 | * @return Amount of energy that was (or would have been, if simulated) received. 25 | */ 26 | int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate); 27 | 28 | /** 29 | * Returns the amount of energy currently stored. 30 | */ 31 | int getEnergyStored(ForgeDirection from); 32 | 33 | /** 34 | * Returns the maximum amount of energy that can be stored. 35 | */ 36 | int getMaxEnergyStored(ForgeDirection from); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * (C) 2014 Team CoFH / CoFH / Cult of the Full Hub 3 | * http://www.teamcofh.com 4 | */ 5 | @API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHAPI", provides = "CoFHAPI|energy") 6 | package cofh.api.energy; 7 | 8 | import cofh.api.CoFHAPIProps; 9 | import cpw.mods.fml.common.API; 10 | 11 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * (C) 2014 Team CoFH / CoFH / Cult of the Full Hub 3 | * http://www.teamcofh.com 4 | */ 5 | @API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHLib", provides = "CoFHAPI") 6 | package cofh.api; 7 | 8 | import cpw.mods.fml.common.API; 9 | 10 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IArchitect.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import java.util.ArrayList; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraft.world.World; 8 | 9 | public interface IArchitect { 10 | 11 | /** 12 | * Returns a list of blocks that should be highlighted in world. 13 | */ 14 | public ArrayList getArchitectBlocks(ItemStack stack, World world, 15 | int x, int y, int z, int side, EntityPlayer player); 16 | 17 | /** 18 | * which axis should be displayed. 19 | */ 20 | public boolean showAxis(ItemStack stack, World world, EntityPlayer player, int side, EnumAxis axis); 21 | 22 | public enum EnumAxis { 23 | X, // east / west 24 | Y, // up / down 25 | Z; // north / south 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IGoggles.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.item.ItemStack; 5 | 6 | /** 7 | * 8 | * @author Azanor 9 | * 10 | * Equipped head slot items that extend this class will be able to perform most functions that 11 | * goggles of revealing can apart from view nodes which is handled by IRevealer. 12 | * 13 | */ 14 | 15 | public interface IGoggles { 16 | 17 | /* 18 | * If this method returns true things like block essentia contents will be shown. 19 | */ 20 | public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IRepairable.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | 4 | 5 | /** 6 | * @author Azanor 7 | * Items, armor and tools with this interface can receive the Repair enchantment. 8 | * Repairs 1 point of durability every 10 seconds (2 for repair II) 9 | */ 10 | public interface IRepairable { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IRepairableExtended.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | 6 | 7 | 8 | /** 9 | * @author Azanor 10 | * Items, armor and tools with this interface can receive the Repair enchantment. 11 | * Repairs 1 point of durability every 10 seconds (2 for repair II) 12 | */ 13 | public interface IRepairableExtended extends IRepairable { 14 | 15 | public boolean doRepair(ItemStack stack, EntityPlayer player, int enchantlevel); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IRunicArmor.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | /** 6 | * 7 | * @author Azanor 8 | * 9 | * Armor or bauble slot items that implement this interface can provide runic shielding. 10 | * Recharging, hardening, etc. is handled internally by thaumcraft. 11 | * 12 | */ 13 | 14 | public interface IRunicArmor { 15 | 16 | /** 17 | * returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally. 18 | */ 19 | public int getRunicCharge(ItemStack itemstack); 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IScribeTools.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | 4 | /** 5 | * 6 | * @author Azanor 7 | * 8 | * Interface used to identify scribing tool items used in research table 9 | * 10 | */ 11 | 12 | public interface IScribeTools { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IVisDiscountGear.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import thaumcraft.api.aspects.Aspect; 6 | 7 | 8 | 9 | 10 | /** 11 | * @author Azanor 12 | * ItemArmor with this interface will grant a discount to the vis cost of actions the wearer performs with casting wands. 13 | * The amount returned is the percentage by which the cost is discounted. There is a built-int max discount of 50%, but 14 | * individual items really shouldn't have a discount more than 5% 15 | */ 16 | public interface IVisDiscountGear { 17 | 18 | int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/IWarpingGear.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | 6 | /** 7 | * 8 | * @author Azanor 9 | * 10 | * Armor, held items or bauble slot items that implement this interface add warp when equipped or held. 11 | * 12 | */ 13 | 14 | public interface IWarpingGear { 15 | 16 | /** 17 | * returns how much warp this item adds while worn or held. 18 | */ 19 | public int getWarp(ItemStack itemstack, EntityPlayer player); 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/ItemRunic.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api; 2 | 3 | import net.minecraft.item.Item; 4 | import net.minecraft.item.ItemStack; 5 | 6 | public class ItemRunic extends Item implements IRunicArmor { 7 | 8 | int charge; 9 | 10 | public ItemRunic (int charge) 11 | { 12 | super(); 13 | this.charge = charge; 14 | } 15 | 16 | @Override 17 | public int getRunicCharge(ItemStack itemstack) { 18 | return charge; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/aspects/IAspectSource.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.aspects; 2 | 3 | 4 | 5 | /** 6 | * @author Azanor 7 | * 8 | * This interface is implemented by tile entites (or possibly anything else) like jars 9 | * so that they can act as an essentia source for blocks like the infusion altar. 10 | * 11 | */ 12 | public interface IAspectSource extends IAspectContainer { 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/aspects/IEssentiaContainerItem.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.aspects; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | /** 7 | * 8 | * @author azanor 9 | * 10 | * Used by wispy essences and essentia phials to hold their aspects. 11 | * Useful for similar item containers that store their aspect information in nbt form so TC 12 | * automatically picks up the aspects they contain 13 | * 14 | */ 15 | public interface IEssentiaContainerItem { 16 | public AspectList getAspects(ItemStack itemstack); 17 | public void setAspects(ItemStack itemstack, AspectList aspects); 18 | } 19 | 20 | //Example implementation 21 | /* 22 | @Override 23 | public AspectList getAspects(ItemStack itemstack) { 24 | if (itemstack.hasTagCompound()) { 25 | AspectList aspects = new AspectList(); 26 | aspects.readFromNBT(itemstack.getTagCompound()); 27 | return aspects.size()>0?aspects:null; 28 | } 29 | return null; 30 | } 31 | 32 | @Override 33 | public void setAspects(ItemStack itemstack, AspectList aspects) { 34 | if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound()); 35 | aspects.writeToNBT(itemstack.getTagCompound()); 36 | } 37 | */ -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.crafting; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.inventory.IInventory; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.world.World; 7 | import thaumcraft.api.aspects.AspectList; 8 | 9 | public interface IArcaneRecipe 10 | { 11 | 12 | 13 | /** 14 | * Used to check if a recipe matches current crafting inventory 15 | * @param player 16 | */ 17 | boolean matches(IInventory var1, World world, EntityPlayer player); 18 | 19 | /** 20 | * Returns an Item that is the result of this recipe 21 | */ 22 | ItemStack getCraftingResult(IInventory var1); 23 | 24 | /** 25 | * Returns the size of the recipe area 26 | */ 27 | int getRecipeSize(); 28 | 29 | ItemStack getRecipeOutput(); 30 | AspectList getAspects(); 31 | AspectList getAspects(IInventory var1); 32 | String getResearch(); 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.crafting; 2 | 3 | import net.minecraft.world.World; 4 | 5 | /** 6 | * 7 | * @author Azanor 8 | * 9 | * Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls 10 | * 11 | */ 12 | public interface IInfusionStabiliser { 13 | 14 | /** 15 | * returns true if the block can stabilise things 16 | */ 17 | public boolean canStabaliseInfusion(World world, int x, int y, int z); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.damagesource; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.util.DamageSource; 5 | import net.minecraft.util.EntityDamageSourceIndirect; 6 | 7 | public class DamageSourceIndirectThaumcraftEntity extends EntityDamageSourceIndirect { 8 | 9 | private boolean fireDamage; 10 | private float hungerDamage; 11 | private boolean isUnblockable; 12 | 13 | 14 | public DamageSourceIndirectThaumcraftEntity(String par1Str, 15 | Entity par2Entity, Entity par3Entity) { 16 | super(par1Str, par2Entity, par3Entity); 17 | } 18 | 19 | 20 | public DamageSource setFireDamage() 21 | { 22 | this.fireDamage = true; 23 | return this; 24 | } 25 | 26 | public DamageSource setDamageBypassesArmor() 27 | { 28 | this.isUnblockable = true; 29 | this.hungerDamage = 0.0F; 30 | return this; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/entities/IEldritchMob.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.entities; 2 | 3 | public interface IEldritchMob { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/entities/ITaintedMob.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.entities; 2 | 3 | public interface ITaintedMob { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/internal/WeightedRandomLoot.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.internal; 2 | 3 | import java.util.ArrayList; 4 | 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.util.WeightedRandom; 7 | 8 | 9 | public class WeightedRandomLoot extends WeightedRandom.Item { 10 | 11 | /** The Item/Block ID to generate in the bag. */ 12 | public ItemStack item; 13 | 14 | public WeightedRandomLoot(ItemStack stack, int weight) 15 | { 16 | super(weight); 17 | this.item = stack; 18 | } 19 | 20 | public static ArrayList lootBagCommon = new ArrayList(); 21 | public static ArrayList lootBagUncommon = new ArrayList(); 22 | public static ArrayList lootBagRare = new ArrayList(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/nodes/INode.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.nodes; 2 | 3 | import thaumcraft.api.aspects.Aspect; 4 | import thaumcraft.api.aspects.AspectList; 5 | import thaumcraft.api.aspects.IAspectContainer; 6 | 7 | public interface INode extends IAspectContainer { 8 | 9 | /** 10 | * Unique identifier to distinguish nodes. Normal node id's are based on world id and coordinates 11 | * @return 12 | */ 13 | public String getId(); 14 | 15 | public AspectList getAspectsBase(); 16 | 17 | /** 18 | * Return the type of node 19 | * @return 20 | */ 21 | public NodeType getNodeType(); 22 | 23 | /** 24 | * Set the type of node 25 | * @return 26 | */ 27 | public void setNodeType(NodeType nodeType); 28 | 29 | /** 30 | * Return the node modifier 31 | * @return 32 | */ 33 | public void setNodeModifier(NodeModifier nodeModifier); 34 | 35 | /** 36 | * Set the node modifier 37 | * @return 38 | */ 39 | public NodeModifier getNodeModifier(); 40 | 41 | /** 42 | * Return the maximum capacity of each aspect the node can hold 43 | * @return 44 | */ 45 | public int getNodeVisBase(Aspect aspect); 46 | 47 | /** 48 | * Set the maximum capacity of each aspect the node can hold 49 | * @return 50 | */ 51 | public void setNodeVisBase(Aspect aspect, short nodeVisBase); 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/nodes/IRevealer.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.nodes; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.item.ItemStack; 5 | 6 | /** 7 | * 8 | * @author Azanor 9 | * 10 | * Equipped head slot items that extend this class will make nodes visible in world. 11 | * 12 | */ 13 | 14 | public interface IRevealer { 15 | 16 | /* 17 | * If this method returns true the nodes will be visible. 18 | */ 19 | public boolean showNodes(ItemStack itemstack, EntityLivingBase player); 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/nodes/NodeModifier.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.nodes; 2 | 3 | public enum NodeModifier 4 | { 5 | BRIGHT, PALE, FADING 6 | } -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/nodes/NodeType.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.nodes; 2 | 3 | public enum NodeType 4 | { 5 | NORMAL, UNSTABLE, DARK, TAINTED, HUNGRY, PURE 6 | } -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/package-info.java: -------------------------------------------------------------------------------- 1 | @API(owner = "Thaumcraft", apiVersion = "4.2.2.0", provides = "Thaumcraft|API") 2 | package thaumcraft.api; 3 | 4 | import cpw.mods.fml.common.API; 5 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/research/IScanEventHandler.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.research; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface IScanEventHandler { 8 | ScanResult scanPhenomena(ItemStack stack, World world, EntityPlayer player); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/research/ResearchCategoryList.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.research; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import net.minecraft.util.ResourceLocation; 7 | 8 | public class ResearchCategoryList { 9 | 10 | /** Is the smallest column used on the GUI. */ 11 | public int minDisplayColumn; 12 | 13 | /** Is the smallest row used on the GUI. */ 14 | public int minDisplayRow; 15 | 16 | /** Is the biggest column used on the GUI. */ 17 | public int maxDisplayColumn; 18 | 19 | /** Is the biggest row used on the GUI. */ 20 | public int maxDisplayRow; 21 | 22 | /** display variables **/ 23 | public ResourceLocation icon; 24 | public ResourceLocation background; 25 | 26 | public ResearchCategoryList(ResourceLocation icon, ResourceLocation background) { 27 | this.icon = icon; 28 | this.background = background; 29 | } 30 | 31 | //Research 32 | public Map research = new HashMap(); 33 | 34 | 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/research/ScanResult.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.research; 2 | 3 | import net.minecraft.entity.Entity; 4 | 5 | public class ScanResult { 6 | public byte type = 0; //1=blocks,2=entities,3=phenomena 7 | public int id; 8 | public int meta; 9 | public Entity entity; 10 | public String phenomena; 11 | 12 | public ScanResult(byte type, int blockId, int blockMeta, Entity entity, 13 | String phenomena) { 14 | super(); 15 | this.type = type; 16 | this.id = blockId; 17 | this.meta = blockMeta; 18 | this.entity = entity; 19 | this.phenomena = phenomena; 20 | } 21 | 22 | @Override 23 | public boolean equals(Object obj) { 24 | if (obj instanceof ScanResult) { 25 | ScanResult sr = (ScanResult) obj; 26 | if (type != sr.type) 27 | return false; 28 | if (type == 1 29 | && (id != sr.id || meta != sr.meta)) 30 | return false; 31 | if (type == 2 && entity.getEntityId() != sr.entity.getEntityId()) 32 | return false; 33 | if (type == 3 && !phenomena.equals(sr.phenomena)) 34 | return false; 35 | } 36 | return true; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.wands; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | 6 | /** 7 | * 8 | * @author azanor 9 | * 10 | * Implemented by a class that you wish to be called whenever a wand with this rod performs its 11 | * update tick. 12 | * 13 | */ 14 | public interface IWandRodOnUpdate { 15 | void onUpdate(ItemStack itemstack, EntityPlayer player); 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/wands/IWandTriggerManager.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.wands; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface IWandTriggerManager { 8 | 9 | /** 10 | * This class will be called by wands with the proper parameters. It is up to you to decide what to do with them. 11 | */ 12 | public boolean performTrigger(World world, ItemStack wand, EntityPlayer player, 13 | int x, int y, int z, int side, int event); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/wands/IWandable.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.wands; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | /** 8 | * 9 | * @author azanor 10 | * 11 | * Add this to a tile entity that you wish wands to interact with in some way. 12 | * 13 | */ 14 | 15 | public interface IWandable { 16 | 17 | public int onWandRightClick(World world, ItemStack wandstack, EntityPlayer player, int x, int y, int z, int side, int md); 18 | 19 | public ItemStack onWandRightClick(World world, ItemStack wandstack, EntityPlayer player); 20 | 21 | public void onUsingWandTick(ItemStack wandstack, EntityPlayer player, int count); 22 | 23 | public void onWandStoppedUsing(ItemStack wandstack, World world, EntityPlayer player, int count); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/truetyper/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/api/java/truetyper/README.md -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/brew/IBrewContainer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Nov 1, 2014, 6:26:40 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.brew; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An Item that implements this counts as a Brew Container, by which 17 | * it can be used a center item for brew recipes and can contain 18 | * a brew. 19 | */ 20 | public interface IBrewContainer { 21 | 22 | /** 23 | * Returs an ItemStack that should be an item that has the brew 24 | * passed in. 25 | */ 26 | public ItemStack getItemForBrew(Brew brew, ItemStack stack); 27 | 28 | /** 29 | * Gets the cost to add this brew onto this container. Return -1 30 | * to not allow for the brew to be added. Normally you'd 31 | * use brew.getManaCost(stack); 32 | */ 33 | public int getManaCost(Brew brew, ItemStack stack); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/brew/IBrewItem.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Nov 1, 2014, 9:20:33 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.brew; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An Item that implements this is a Brew item, by which it contains 17 | * a brew. This is only used in vanilla to prevent the brew item 18 | * from going back into the brewery but other mods might use it for whatever. 19 | */ 20 | public interface IBrewItem { 21 | 22 | public Brew getBrew(ItemStack brew); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/corporea/CorporeaRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | */ 10 | package vazkii.botania.api.corporea; 11 | 12 | public class CorporeaRequest { 13 | public Object matcher; 14 | public boolean checkNBT; 15 | public int count; 16 | public int foundItems = 0; 17 | public int extractedItems = 0; 18 | 19 | public CorporeaRequest(Object matcher, boolean checkNBT, int count) { 20 | super(); 21 | this.matcher = matcher; 22 | this.checkNBT = checkNBT; 23 | this.count = count; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/corporea/CorporeaRequestEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Apr 30, 2015, 2:55:57 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.corporea; 12 | 13 | import cpw.mods.fml.common.eventhandler.Cancelable; 14 | import cpw.mods.fml.common.eventhandler.Event; 15 | 16 | /** 17 | * Fired when a corporea request is initiated. Can be cancelled. 18 | */ 19 | @Cancelable 20 | public class CorporeaRequestEvent extends Event { 21 | 22 | public final Object request; 23 | public final int count; 24 | public final ICorporeaSpark spark; 25 | public final boolean checkNBT; 26 | /** 27 | * If false then items won't be pulled. 28 | */ 29 | public final boolean realRequest; 30 | 31 | public CorporeaRequestEvent(Object request, int count, ICorporeaSpark spark, boolean nbt, boolean real) { 32 | this.request = request; 33 | this.count = count; 34 | this.spark = spark; 35 | checkNBT = nbt; 36 | realRequest = real; 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/corporea/ICorporeaAutoCompleteController.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [June 8, 2015, 1:04:05 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.corporea; 12 | 13 | import cpw.mods.fml.relauncher.Side; 14 | import cpw.mods.fml.relauncher.SideOnly; 15 | 16 | /** 17 | * An interface for systems which may control if the item auto complete system should be active 18 | */ 19 | public interface ICorporeaAutoCompleteController { 20 | 21 | /** 22 | * Return true if auto completion should be enabled. 23 | */ 24 | @SideOnly(Side.CLIENT) 25 | public boolean shouldAutoComplete(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/corporea/ICorporeaRequestor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Sep 28, 2015, 11:25:48 AM (GMT)] 10 | */ 11 | package vazkii.botania.api.corporea; 12 | 13 | /** 14 | * A TileEntity that implements this be called by other TileEntities 15 | * to allow for it to do any request at any time. This is used by the 16 | * Corporea Retainer for example. 17 | */ 18 | public interface ICorporeaRequestor { 19 | 20 | /* 21 | * Executes the passed in request. 22 | */ 23 | public void doCorporeaRequest(Object request, int count, ICorporeaSpark spark); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/internal/DummyPage.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 14, 2014, 6:41:23 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.internal; 12 | 13 | import vazkii.botania.api.lexicon.LexiconPage; 14 | import cpw.mods.fml.relauncher.Side; 15 | import cpw.mods.fml.relauncher.SideOnly; 16 | 17 | /** 18 | * A dummy page. It does absolutely nothing and is only 19 | * existant to make sure everything goes right even if 20 | * Botania isn't loaded. 21 | */ 22 | public class DummyPage extends LexiconPage { 23 | 24 | public DummyPage(String unlocalizedName) { 25 | super(unlocalizedName); 26 | } 27 | 28 | @Override 29 | @SideOnly(Side.CLIENT) 30 | public void renderScreen(IGuiLexiconEntry gui, int x, int y) { 31 | // NO-OP 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/internal/DummySubTile.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 24, 2014, 4:17:33 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.internal; 12 | 13 | import vazkii.botania.api.subtile.SubTileEntity; 14 | 15 | public class DummySubTile extends SubTileEntity { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/internal/ShaderCallback.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Oct 29, 2014, 6:31:35 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.internal; 12 | 13 | /** 14 | * A Callback for when a shader is called. Used to define shader uniforms. 15 | */ 16 | public abstract class ShaderCallback { 17 | 18 | public abstract void call(int shader); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IAncientWillContainer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 30, 2015, 11:24:54 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An item that implements this can have Ancient Wills 17 | * crafted onto it. 18 | */ 19 | public interface IAncientWillContainer { 20 | 21 | public void addAncientWill(ItemStack stack, int will); 22 | 23 | public boolean hasAncientWill(ItemStack stack, int will); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IAvatarTile.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Oct 24, 2015, 7:00:21 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.inventory.IInventory; 14 | import vazkii.botania.api.mana.IManaReceiver; 15 | 16 | /** 17 | * A TileEntity that implements this is considered an Avatar. 18 | */ 19 | public interface IAvatarTile extends IInventory, IManaReceiver { 20 | 21 | /** 22 | * Gets the amount of ticks that have elapsed on this avatar while it's functional 23 | * (has redstone signal). 24 | */ 25 | public int getElapsedFunctionalTicks(); 26 | 27 | /** 28 | * Gets if this avatar is enabled (isn't powered by a redstone signal). 29 | */ 30 | public boolean isEnabled(); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IAvatarWieldable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Oct 24, 2015, 6:45:50 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.item.ItemStack; 14 | import net.minecraft.util.ResourceLocation; 15 | 16 | /** 17 | * An Item that implements this can be wielded by an Avatar. 18 | */ 19 | public interface IAvatarWieldable { 20 | 21 | /** 22 | * Called on update of the avatar tile. 23 | */ 24 | public void onAvatarUpdate(IAvatarTile tile, ItemStack stack); 25 | 26 | /** 27 | * Gets the overlay resource to render on top of the avatar tile. 28 | */ 29 | public ResourceLocation getOverlayResource(IAvatarTile tile, ItemStack stack); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IBurstViewerBauble.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 24, 2015, 3:08:40 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | /** 14 | * Base Interface for the Manaseer Monocle and items of the sort. 15 | * Having a IBauble of this type equipped on the 0th slot (amulet) 16 | * will draw bursts without depth testing and to see sub tile radiuses. 17 | */ 18 | public interface IBurstViewerBauble { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/ICosmeticAttachable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Feb 22, 2015, 8:31:39 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An Item that implements this interface can have cosmetic items attached to it. 17 | * The item does not have to be a bauble, but it is the render is automatically 18 | * handled by botania internally. Recipes to add and remove the cosmetic items will be 19 | * handled internally, but the cosmetic item has to be set as a container item. 20 | */ 21 | public interface ICosmeticAttachable { 22 | 23 | /** 24 | * Gets the cosmetic item stored in the stack passed in. 25 | */ 26 | public ItemStack getCosmeticItem(ItemStack stack); 27 | 28 | /** 29 | * Sets the stack's cosmetic item to the one passed in. 30 | */ 31 | public void setCosmeticItem(ItemStack stack, ItemStack cosmetic); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/ICosmeticBauble.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Feb 22, 2015, 2:02:02 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | /** 14 | * A bauble that counts as a cosmetic only item. These can be added to 15 | * other baubles to add the render to them. Other cosmetic baubles 16 | * can't be stacked on this. 17 | */ 18 | public interface ICosmeticBauble extends IBaubleRender { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IDyablePool.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 18, 2015, 12:20:44 AM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | 14 | /** 15 | * Used to define a Mana Pool that can be dyed through floral powder. 16 | */ 17 | public interface IDyablePool { 18 | 19 | public int getColor(); 20 | 21 | public void setColor(int color); 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IExoflameHeatable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Aug 30, 2014, 4:28:29 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | /** 14 | * A TileEntity that implements this can be heated by an Exoflame flower. 15 | */ 16 | public interface IExoflameHeatable { 17 | 18 | /** 19 | * Can this TileEntity smelt its contents. If true, the Exoflame is allowed 20 | * to fuel it. 21 | */ 22 | public boolean canSmelt(); 23 | 24 | /** 25 | * Gets the amount of ticks left for the fuel. If below 2, the exoflame 26 | * will call boostBurnTime. 27 | */ 28 | public int getBurnTime(); 29 | 30 | /** 31 | * Called to increase the amount of time this furnace should be burning 32 | * the fuel for. Even if it doesn't have any fuel. 33 | */ 34 | public void boostBurnTime(); 35 | 36 | /** 37 | * Called once every two ticks to increase the speed of the furnace. Feel 38 | * free to not do anything if all you want is to allow the exoflame to feed 39 | * it, not make it faster. 40 | */ 41 | public void boostCookTime(); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IExtendedPlayerController.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Aug 6, 2014, 6:02:29 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | /** 14 | * An interface that defines an instance of PlayerControllerMP with 15 | * the ability to modify reach. See vazkii.botania.client.core.handler.BotaniaPlayerController 16 | */ 17 | public interface IExtendedPlayerController { 18 | 19 | /** 20 | * Sets the extra reach the player should have. 21 | */ 22 | public void setReachDistanceExtension(float f); 23 | 24 | /** 25 | * Gets the current reach extension. 26 | */ 27 | public float getReachDistanceExtension(); 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IExtendedWireframeCoordinateListProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Apr 30, 2015, 1:43:17 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | import net.minecraft.util.ChunkCoordinates; 16 | 17 | /** 18 | * An extension of IWireframeCoordinateListProvider that allows for 19 | * rendering a single thicker wireframe. 20 | */ 21 | public interface IExtendedWireframeCoordinateListProvider extends IWireframeCoordinateListProvider { 22 | 23 | /** 24 | * Gets the source wireframe to draw, this one will be drawn thicker. 25 | */ 26 | public ChunkCoordinates getSourceWireframe(EntityPlayer player, ItemStack stack); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IFlowerPlaceable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [17/11/2015, 20:10:53 (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | import net.minecraft.block.Block; 13 | import net.minecraft.item.ItemStack; 14 | import vazkii.botania.api.subtile.SubTileEntity; 15 | 16 | /** 17 | * An Item that implements this can be placed by a Rannuncarpus. 18 | */ 19 | public interface IFlowerPlaceable { 20 | 21 | /** 22 | * Gets the block to be placed, return null to not place anything. 23 | */ 24 | public Block getBlockToPlaceByFlower(ItemStack stack, SubTileEntity flower, int x, int y, int z); 25 | 26 | public void onBlockPlacedByFlower(ItemStack stack, SubTileEntity flower, int x, int y, int z); 27 | } 28 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IFlowerlessBiome.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [? (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | import net.minecraft.world.World; 13 | /** 14 | * A BiomeGenBase that implements this will not have Botania flowers generated. 15 | */ 16 | public interface IFlowerlessBiome { 17 | /** 18 | * @return Should this world be allowed to generate flowers? 19 | */ 20 | public boolean canGenerateFlowers(World world, int x, int z); 21 | } -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IFlowerlessWorld.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [? (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.world.World; 14 | 15 | /** 16 | * A WorldProvider that implements this will not have Botania flowers generated. 17 | */ 18 | public interface IFlowerlessWorld { 19 | 20 | /** 21 | * @return Should this world be allowed to generate flowers? 22 | */ 23 | public boolean generateFlowers(World world); 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IGrassHornExcempt.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Oct 29, 2014, 4:52:04 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.world.World; 14 | 15 | /** 16 | * A BlockBush can implement this to check if it can be broken 17 | * by a Horn/Drum of the Wild or not. 18 | * @Deprecated Use IHornHarvestable instead 19 | */ 20 | @Deprecated 21 | public interface IGrassHornExcempt { 22 | 23 | public boolean canUproot(World world, int x, int y, int z); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IManaDissolvable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 18, 2015, 12:10:00 AM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.entity.item.EntityItem; 14 | import net.minecraft.item.ItemStack; 15 | import vazkii.botania.api.mana.IManaPool; 16 | 17 | /** 18 | * An item that implements this will have a function called when its standing atop 19 | * a mana pool. 20 | */ 21 | public interface IManaDissolvable { 22 | 23 | /** 24 | * Called for every tick the item is on a mana pool. If the stack has stack 25 | * size 0 the item is killed. This is called in both the server and client. 26 | */ 27 | public void onDissolveTick(IManaPool pool, ItemStack stack, EntityItem item); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IPetalApothecary.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Aug 30, 2014, 4:22:15 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | /** 14 | * Base Interface for the Petal Apothecary block. Can 15 | * be safely casted to TileEntity. 16 | */ 17 | public interface IPetalApothecary { 18 | 19 | /** 20 | * Sets if the the apothecary has water or not. 21 | */ 22 | public void setWater(boolean water); 23 | 24 | /** 25 | * Does the apothecary have water in it? 26 | */ 27 | public boolean hasWater(); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IPhantomInkable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 17, 2015, 4:57:44 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An Item that implements this can be crafted with Phantom Ink. 17 | */ 18 | public interface IPhantomInkable { 19 | 20 | public boolean hasPhantomInk(ItemStack stack); 21 | 22 | public void setPhantomInk(ItemStack stack, boolean ink); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IPixieSpawner.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Aug 6, 2014, 6:06:27 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * Any item that implements this allows for pixies to be spawned when the player takes damage when...
17 | * - Case the item is armor, having it equipped.
18 | * - Case the item is a bauble, having it worn.
19 | * - On any other case, having the item being the current held item. 20 | */ 21 | public interface IPixieSpawner { 22 | 23 | /** 24 | * The chance this item adds for pixies to be spawned. From 0.0 to 1.0. All values 25 | * are put together when calculating. 26 | */ 27 | public float getPixieChance(ItemStack stack); 28 | 29 | } -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IRelic.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 29, 2015, 7:17:41 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.item.ItemStack; 14 | import net.minecraft.stats.Achievement; 15 | 16 | /** 17 | * An item that implements this counts as a Relic item. This is purely for interaction 18 | * and other mod items should not implement this interface. 19 | */ 20 | public interface IRelic { 21 | 22 | /** 23 | * Binds to the player name passed in. 24 | */ 25 | public void bindToUsername(String playerName, ItemStack stack); 26 | 27 | /** 28 | * Gets the username of the person this relic is bound to. 29 | */ 30 | public String getSoulbindUsername(ItemStack stack); 31 | 32 | /** 33 | * Sets the achievement that this relic binds to. 34 | */ 35 | public void setBindAchievement(Achievement achievement); 36 | 37 | /** 38 | * Gets the achievement that this relic binds to. 39 | */ 40 | public Achievement getBindAchievement(); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/ISequentialBreaker.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 30, 2015, 2:46:05 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * An item that implements this can break multiple blocks at once 18 | * with a Ring of Loki. Usage of this interface requires an implementation 19 | * (see ItemTerraPick). 20 | */ 21 | public interface ISequentialBreaker { 22 | 23 | public void breakOtherBlock(EntityPlayer player, ItemStack stack, int x, int y, int z, int originX, int originY, int originZ, int side); 24 | 25 | public boolean disposeOfTrashBlocks(ItemStack stack); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/IWireframeCoordinateListProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 29, 2015, 11:30:41 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import java.util.List; 14 | 15 | import net.minecraft.entity.player.EntityPlayer; 16 | import net.minecraft.item.ItemStack; 17 | import net.minecraft.util.ChunkCoordinates; 18 | import cpw.mods.fml.relauncher.Side; 19 | import cpw.mods.fml.relauncher.SideOnly; 20 | 21 | /** 22 | * An item that implements this will allow for various wireframes to be drawn 23 | * around the player. This will be called while the item is in the inventory, 24 | * armor slot or bauble slots. 25 | */ 26 | public interface IWireframeCoordinateListProvider { 27 | 28 | /** 29 | * Returns a list of ChunkCoordinates for the wireframes to draw. 30 | * Can be null. 31 | */ 32 | @SideOnly(Side.CLIENT) 33 | public List getWireframesToDraw(EntityPlayer player, ItemStack stack); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/item/TinyPotatoRenderEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jul 25, 2015, 8:02:41 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.item; 12 | 13 | import net.minecraft.tileentity.TileEntity; 14 | import cpw.mods.fml.common.eventhandler.Event; 15 | import cpw.mods.fml.relauncher.Side; 16 | import cpw.mods.fml.relauncher.SideOnly; 17 | 18 | /** 19 | * Why would you ever want this ._. 20 | */ 21 | @SideOnly(Side.CLIENT) 22 | public class TinyPotatoRenderEvent extends Event { 23 | 24 | public final TileEntity tile; 25 | public final String name; 26 | public final double x, y, z; 27 | public final float partTicks; 28 | 29 | public TinyPotatoRenderEvent(TileEntity tile, String name, double x, double y, double z, float partTicks) { 30 | this.tile = tile; 31 | this.name = name; 32 | this.x = x; 33 | this.y = y; 34 | this.z = z; 35 | this.partTicks = partTicks; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/BotaniaTutorialStartEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [04/12/2015, 18:29:56 (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon; 12 | 13 | import java.util.Queue; 14 | 15 | import cpw.mods.fml.common.eventhandler.Event; 16 | 17 | /** 18 | * Fired when the Lexica Botania's tutorial is started. You can add your 19 | * own entries to the tutorial here. Please use this responsibly. 20 | */ 21 | public class BotaniaTutorialStartEvent extends Event { 22 | 23 | public final Queue tutorial; 24 | 25 | public BotaniaTutorialStartEvent(Queue tutorial) { 26 | this.tutorial = tutorial; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/IAddonEntry.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jun 8, 2014, 7:02:48 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon; 12 | 13 | /** 14 | * Have a LexiconEntry implement this to signify it's an "Addon entry", as 15 | * in, one provided by an Addon. This allows it to draw a subtitle of 16 | * sorts, to prevent the [Mod tag here] nonsense that happened with thaumcraft 17 | * addons. It can also be used for other purposes, such as stating an 18 | * entry is WIP. 19 | */ 20 | public interface IAddonEntry { 21 | 22 | /** 23 | * Returns the unlocalized subtitle to show below the title. Here you'd 24 | * return something like "(This Entry is provided by the Botanic Tinkerer addon)". 25 | */ 26 | public String getSubtitle(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/ILexicon.java: -------------------------------------------------------------------------------- 1 | package vazkii.botania.api.lexicon; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | /** 6 | * Basic interface for the Lexica Botania. 7 | */ 8 | public interface ILexicon { 9 | 10 | /** 11 | * Gets if a specific knowledge is unlocked. Check the knowledge types in 12 | * BotaniaAPI. 13 | */ 14 | public boolean isKnowledgeUnlocked(ItemStack stack, KnowledgeType knowledge); 15 | 16 | /** 17 | * Unlocks a specfic type of knowledge. 18 | */ 19 | public void unlockKnowledge(ItemStack stack, KnowledgeType knowledge); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/ILexiconable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 20, 2014, 7:05:44 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon; 12 | 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * Any block that implements this can be right clicked with 19 | * a Lexica Botania to open a entry page. 20 | */ 21 | public interface ILexiconable { 22 | 23 | /** 24 | * Gets the lexicon entry to open at this location. null works too. 25 | */ 26 | public LexiconEntry getEntry(World world, int x, int y, int z, EntityPlayer player, ItemStack lexicon); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/IRecipeKeyProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 20, 2014, 6:08:48 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * Have an Item implement this so that the method used for mapping it into 17 | * the lexicon recipe mappings isn't the typical id:meta key. 18 | */ 19 | public interface IRecipeKeyProvider { 20 | 21 | public String getKey(ItemStack stack); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/ITwoNamedPage.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Nov 3, 2014, 2:59:55 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon; 12 | 13 | /** 14 | * A LexiconPage that implements this has two unlocalized names 15 | * rather than one. (See brew pages) 16 | */ 17 | public interface ITwoNamedPage { 18 | 19 | public void setSecondUnlocalizedName(String name); 20 | 21 | public String getSecondUnlocalizedName(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/KnowledgeType.java: -------------------------------------------------------------------------------- 1 | package vazkii.botania.api.lexicon; 2 | 3 | import net.minecraft.util.EnumChatFormatting; 4 | 5 | public class KnowledgeType { 6 | 7 | public final String id; 8 | public final EnumChatFormatting color; 9 | public final boolean autoUnlock; 10 | 11 | public KnowledgeType(String id, EnumChatFormatting color, boolean autoUnlock) { 12 | this.id = id; 13 | this.color = color; 14 | this.autoUnlock = autoUnlock; 15 | } 16 | 17 | public String getUnlocalizedName() { 18 | return "botania.knowledge." + id; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/multiblock/IMultiblockRenderHook.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jun 27, 2015, 7:48:47 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon.multiblock; 12 | 13 | import java.util.HashMap; 14 | import java.util.Map; 15 | 16 | import net.minecraft.block.Block; 17 | import net.minecraft.client.renderer.RenderBlocks; 18 | import net.minecraft.world.IBlockAccess; 19 | import vazkii.botania.api.lexicon.multiblock.component.MultiblockComponent; 20 | 21 | /** 22 | * A hook for rendering blocks in the multiblock display. 23 | */ 24 | public interface IMultiblockRenderHook { 25 | 26 | public static Map renderHooks = new HashMap(); 27 | 28 | public void renderBlockForMultiblock(IBlockAccess world, Multiblock mb, Block block, int meta, RenderBlocks renderBlocks, MultiblockComponent comp, float alpha); 29 | 30 | public boolean needsTranslate(Block block); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/multiblock/MultiblockSet.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jun 27, 2015, 7:31:58 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon.multiblock; 12 | 13 | import net.minecraft.entity.Entity; 14 | import net.minecraft.util.MathHelper; 15 | 16 | /** 17 | * A set of Multiblock objects for various rotations. 18 | */ 19 | public class MultiblockSet { 20 | 21 | private final Multiblock[] mbs; 22 | 23 | public MultiblockSet(Multiblock[] mbs) { 24 | this.mbs = mbs; 25 | } 26 | 27 | public MultiblockSet(Multiblock mb) { 28 | this(mb.createRotations()); 29 | } 30 | 31 | public Multiblock getForEntity(Entity e) { 32 | return getForRotation(e.rotationYaw); 33 | } 34 | 35 | public Multiblock getForRotation(double rotation) { 36 | int facing = MathHelper.floor_double(rotation * 4.0 / 360.0 + 0.5) & 3; 37 | return getForIndex(facing); 38 | } 39 | 40 | public Multiblock getForIndex(int index) { 41 | return mbs[Math.min(mbs.length - 1, index)]; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/multiblock/component/AnyComponent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [01/11/2015, 19:05:57 (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon.multiblock.component; 12 | 13 | import net.minecraft.block.Block; 14 | import net.minecraft.util.ChunkCoordinates; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * A multiblock component that matches any non air blocks that have a collision box. 19 | */ 20 | public class AnyComponent extends MultiblockComponent { 21 | 22 | public AnyComponent(ChunkCoordinates relPos, Block block, int meta) { 23 | super(relPos, block, meta); 24 | } 25 | 26 | @Override 27 | public boolean matches(World world, int x, int y, int z) { 28 | Block block = world.getBlock(x, y, z); 29 | return !block.isAir(world, x, y, z) && block.getCollisionBoundingBoxFromPool(world, x, y, z) != null; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/lexicon/multiblock/component/FlowerComponent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jun 28, 2015, 3:23:15 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.lexicon.multiblock.component; 12 | 13 | import net.minecraft.block.Block; 14 | import net.minecraft.util.ChunkCoordinates; 15 | import net.minecraft.world.World; 16 | import vazkii.botania.api.BotaniaAPI; 17 | 18 | /** 19 | * A multiblock component that matches any botania flower. 20 | */ 21 | public class FlowerComponent extends ColorSwitchingComponent { 22 | 23 | public FlowerComponent(ChunkCoordinates relPos, Block block) { 24 | super(relPos, block); 25 | } 26 | 27 | @Override 28 | public boolean matches(World world, int x, int y, int z) { 29 | return BotaniaAPI.internalHandler.isBotaniaFlower(world, x, y, z); 30 | } 31 | 32 | @Override 33 | public MultiblockComponent copy() { 34 | return new FlowerComponent(relPos, block); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/BurstProperties.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 31, 2014, 3:49:30 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * The properties of a mana burst, when shot. This is passed to the lens 15 | * currently on the mana spreader to apply changes. 16 | */ 17 | public final class BurstProperties { 18 | 19 | public int maxMana; 20 | public int ticksBeforeManaLoss; 21 | public float manaLossPerTick; 22 | public float gravity; 23 | public float motionModifier; 24 | 25 | public int color; 26 | 27 | public BurstProperties(int maxMana, int ticksBeforeManaLoss, float manaLossPerTick, float gravity, float motionModifier, int color) { 28 | this.maxMana = maxMana; 29 | this.ticksBeforeManaLoss = ticksBeforeManaLoss; 30 | this.manaLossPerTick = manaLossPerTick; 31 | this.gravity = gravity; 32 | this.motionModifier = motionModifier; 33 | this.color = color; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IClientManaHandler.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jul 2, 2014, 5:26:02 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * A TileEntity that implements this will get it's recieveMana call 15 | * called on both client and server. If this is not implemented 16 | * the call will only occur on the server. 17 | */ 18 | public interface IClientManaHandler extends IManaReceiver { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/ICompositableLens.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Nov 23, 2015, 10:30:34 AM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * Have an Item implement this to be counted as a lens that can be combined with an ItemLens. 17 | */ 18 | public interface ICompositableLens extends ILens { 19 | 20 | /** 21 | * Returns the properties of the itemstack, used to check if two lenses can combine. 22 | */ 23 | public int getProps(ItemStack stack); 24 | 25 | /** 26 | * Checks if the lens is combinable. 27 | */ 28 | public boolean isCombinable(ItemStack stack); 29 | 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/ICreativeManaProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [May 25, 2014, 7:34:00 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * Have an item implement this to flag it as an infinite 17 | * mana source for the purposes of the HUD rendered when 18 | * an IManaUserItem implementing item is present. 19 | */ 20 | public interface ICreativeManaProvider { 21 | 22 | public boolean isCreative(ItemStack stack); 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IDirectioned.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [15/11/2015, 19:27:07 (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * Any TileEntity that implements this is defined as having a direction, 15 | * and has two rotations (X and Y). 16 | * An example of this is the Mana Spreader. 17 | */ 18 | public interface IDirectioned { 19 | 20 | public float getRotationX(); 21 | 22 | public float getRotationY(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IIdentifiable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jun 19, 2015, 10:05:24 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import java.util.UUID; 14 | 15 | /** 16 | * This interface marks a TileEntity that can be identified through 17 | * an UUID. This UUID must presist between sessions. 18 | */ 19 | public interface IIdentifiable { 20 | 21 | public UUID getIdentifier(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IKeyLocked.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jul 11, 2014, 4:29:32 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * A TileEntity that implements this interface has an IO key lock. This 15 | * interface defines an input and output key.

16 | * 17 | * A Spreader can only shoot mana into a IKeyLocked interfaced TE if the Input 18 | * key of the TE is equal to the Output key of the Spreader.

19 | * 20 | * A Spreader can only pull mana from a IKeyLocked interfaced IManaPool TE if the 21 | * Output key of the IManaPool is equal to the Input key of the Spreader. 22 | */ 23 | public interface IKeyLocked { 24 | 25 | public String getInputKey(); 26 | 27 | public String getOutputKey(); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/ILaputaImmobile.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jul 26, 2014, 9:51:58 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.world.World; 14 | 15 | /** 16 | * A block that implements this has a flag for whether it can be moved by the Shard of Laputa. 17 | */ 18 | public interface ILaputaImmobile { 19 | 20 | public boolean canMove(World world, int x, int y, int z); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/ILensControl.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [15/11/2015, 21:00:32 (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An extension of ILens that allows for the lens item to control the 17 | * spreader's behaviour. 18 | */ 19 | public interface ILensControl extends ILens { 20 | 21 | public boolean isControlLens(ItemStack stack); 22 | 23 | public boolean allowBurstShooting(ItemStack stack, IManaSpreader spreader, boolean redstone); 24 | 25 | /** 26 | * Used for the tick of a non-redstone spreader. 27 | */ 28 | public void onControlledSpreaderTick(ItemStack stack, IManaSpreader spreader, boolean redstone); 29 | 30 | /** 31 | * Used for when a redstone spreader gets a pulse. 32 | */ 33 | public void onControlledSpreaderPulse(ItemStack stack, IManaSpreader spreader, boolean redstone); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaBlock.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 22, 2014, 4:59:05 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * A TileEntity that implements this is considered a Mana Block. 15 | * Just being a Mana Block doesn't mean much, look at the other IMana 16 | * interfaces. 17 | */ 18 | public interface IManaBlock { 19 | 20 | /** 21 | * Gets the amount of mana currently in this block. 22 | */ 23 | public int getCurrentMana(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaCollisionGhost.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 10, 2014, 7:49:19 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * Any TileEntity that implements this can be counted as a "ghost" block of 15 | * sorts, that won't call the collision code for the mana bursts. 16 | */ 17 | public interface IManaCollisionGhost { 18 | 19 | public boolean isGhost(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaDiscountArmor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 28, 2015, 9:22:53 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * An armor item that implements this can provide a mana discount for mana tools. 18 | * Mana tools are the ones on the main toolset (Pick, Shovel, Axe, Sword and Shovel) 19 | * as well as Rods. 20 | */ 21 | public interface IManaDiscountArmor { 22 | 23 | /** 24 | * Gets the mana discount that this piece of armor provides. This is added 25 | * together to create the full discount. 26 | * Value is to be from 0.0 to 1.0. 0.1 is 10% discount, as an example. 27 | * You can also return negative values to make tools cost more. 28 | */ 29 | public float getDiscount(ItemStack stack, int slot, EntityPlayer player); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaGivingItem.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [08/12/2015, 18:10:29 (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * An item that implements this is an item that can give mana to other items. 15 | * This is used in botania for the terra shatterer to not be constantly 16 | * receiving mana from these items.. 17 | */ 18 | public interface IManaGivingItem { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaPool.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 22, 2014, 5:03:09 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * Any TileEntity that implements this is considered a Mana Pool, 15 | * by which nearby functional flowers will pull mana from it.
16 | * Mana Distributors will also accept it as valid output.

17 | * 18 | * Implementation Instructions:
19 | * - Override invalidate() and onChunkUnload(), calling ManaNetworkEvent.removePool(this); on both.
20 | * - On the first tick of onUpdate(), call ManaNetworkEvent.addPool(this); 21 | */ 22 | public interface IManaPool extends IManaReceiver { 23 | 24 | /** 25 | * Returns false if the mana pool is accepting power from other power items, 26 | * true if it's sending power into them. 27 | */ 28 | public boolean isOutputtingPower(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaReceiver.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 22, 2014, 4:55:00 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * Any TileEntity that implements this can receive mana from mana bursts. 15 | */ 16 | public interface IManaReceiver extends IManaBlock { 17 | 18 | /** 19 | * Is this Mana Receiver is full? Being full means no mana bursts will be sent. 20 | */ 21 | public boolean isFull(); 22 | 23 | /** 24 | * Called when this receiver receives mana. 25 | */ 26 | public void recieveMana(int mana); 27 | 28 | /** 29 | * Can this tile receive mana from bursts? Generally set to false for 30 | * implementations of IManaCollector. 31 | */ 32 | public boolean canRecieveManaFromBursts(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaSpreader.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Apr 18, 2015, 7:30:00 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | 14 | /** 15 | * Any TileEntity that implements this is considered a Mana Spreader, 16 | * by which can fire mana bursts as a spreader. 17 | */ 18 | public interface IManaSpreader extends IManaBlock, IPingable, IDirectioned { 19 | 20 | public void setCanShoot(boolean canShoot); 21 | 22 | public int getBurstParticleTick(); 23 | 24 | public void setBurstParticleTick(int i); 25 | 26 | public int getLastBurstDeathTick(); 27 | 28 | public void setLastBurstDeathTick(int ticksExisted); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaTooltipDisplay.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Oct 23, 2015, 3:54:03 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * An Item that implements this has a mana tooltip display (like how the Mana Tablet 17 | * and Mana Mirror) do. 18 | */ 19 | public interface IManaTooltipDisplay { 20 | 21 | /** 22 | * Returns the fraction of mana in this item for display. From 0 to 1 (exclusive). 23 | */ 24 | public float getManaFractionForDisplay(ItemStack stack); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaTrigger.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [May 16, 2014, 7:52:53 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.world.World; 14 | import vazkii.botania.api.internal.IManaBurst; 15 | 16 | /** 17 | * Have a block implement this class to make it do something when a mana burst collides with it. 18 | */ 19 | public interface IManaTrigger { 20 | 21 | public void onBurstCollision(IManaBurst burst, World world, int x, int y, int z); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaUsingItem.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [May 25, 2014, 7:32:10 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * Any item that implements this interface is an item that would use mana 17 | * from the player's inventory. If there's any items in the inventory or 18 | * equipped in either the baubles or armor inventories that implement 19 | * this interface, a mana bar will be rendered. 20 | */ 21 | public interface IManaUsingItem { 22 | 23 | public boolean usesMana(ItemStack stack); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IPingable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jun 19, 2015, 9:52:05 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import java.util.UUID; 14 | 15 | import vazkii.botania.api.internal.IManaBurst; 16 | 17 | /** 18 | * This describes an interface of a Mana Sender block that should be able to pingbackable 19 | * by a burst to tell it that the burst is still alive. 20 | */ 21 | public interface IPingable extends IIdentifiable { 22 | 23 | /** 24 | * Pings this object back, telling it that the burst passed in is still alive 25 | * in the world. The UUID parameter should be the UUID with which the burst 26 | * was created, this is used to let the object handle the check for if it's the 27 | * correct ID internally. IManaBurst implementations should do this every tick. 28 | */ 29 | public void pingback(IManaBurst burst, UUID expectedIdentity); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IPoolOverlayProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jul 2, 2014, 6:36:54 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.util.IIcon; 14 | import net.minecraft.world.World; 15 | 16 | /** 17 | * A block that implements this can provide an IIcon (block icons only) 18 | * to be used as an overlay for the mana pool, similarly to the mana void 19 | * and catalysts. 20 | */ 21 | public interface IPoolOverlayProvider { 22 | 23 | public IIcon getIcon(World world, int x, int y, int z); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IRedirectable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [15/11/2015, 19:28:18 (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * This is an extension of IDirectioned for TileEntities 15 | * that allow for their rotation to be public and modifiable outside. 16 | * This is used in botania for the Redirective mana lens. 17 | */ 18 | public interface IRedirectable extends IDirectioned { 19 | 20 | public void setRotationX(float rot); 21 | 22 | public void setRotationY(float rot); 23 | 24 | /** 25 | * This should be called after rotation setting is done to allow 26 | * for the block to re-calculate. 27 | */ 28 | public void commitRedirection(); 29 | } 30 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IThrottledPacket.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Apr 12, 2015, 3:08:09 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | /** 14 | * A TileEntity that will only send a few packets rather than one per every entity collision. 15 | * markDispatchable marks that this TE needs to send a packet. Further handling is to be done 16 | * in the TE itself. 17 | */ 18 | public interface IThrottledPacket { 19 | 20 | public void markDispatchable(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/ITinyPlanetExcempt.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jul 22, 2014, 2:26:14 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | /** 16 | * Any Item that implements ILensEffect and this will have 17 | * a check before being pulled by the Tiny Planet. 18 | */ 19 | public interface ITinyPlanetExcempt { 20 | 21 | public boolean shouldPull(ItemStack stack); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/TileSignature.java: -------------------------------------------------------------------------------- 1 | package vazkii.botania.api.mana; 2 | 3 | import net.minecraft.tileentity.TileEntity; 4 | 5 | public class TileSignature { 6 | 7 | public final TileEntity tile; 8 | public final boolean remoteWorld; 9 | 10 | public TileSignature(TileEntity tile, boolean remoteWorld) { 11 | this.tile = tile; 12 | this.remoteWorld = remoteWorld; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/spark/SparkHelper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Aug 21, 2014, 7:16:11 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.mana.spark; 12 | 13 | import java.util.List; 14 | 15 | import net.minecraft.util.AxisAlignedBB; 16 | import net.minecraft.world.World; 17 | 18 | public final class SparkHelper { 19 | 20 | public static final int SPARK_SCAN_RANGE = 12; 21 | 22 | public static List getSparksAround(World world, double x, double y, double z) { 23 | return SparkHelper.getEntitiesAround(ISparkEntity.class, world, x, y, z); 24 | } 25 | 26 | public static List getEntitiesAround(Class clazz, World world, double x, double y, double z) { 27 | int r = SPARK_SCAN_RANGE; 28 | List entities = world.getEntitiesWithinAABB(clazz, AxisAlignedBB.getBoundingBox(x - r, y - r, z - r, x + r, y + r, z + r)); 29 | return entities; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/package-info.java: -------------------------------------------------------------------------------- 1 | @API(owner = "Botania", apiVersion = "76", provides = "BotaniaAPI") 2 | package vazkii.botania.api; 3 | import cpw.mods.fml.common.API; 4 | 5 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/recipe/IElvenItem.java: -------------------------------------------------------------------------------- 1 | package vazkii.botania.api.recipe; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | /** 6 | * Any Item that implements this is classified as an "Elven Item", by which, 7 | * it'll not go through the alfheim portal. Any item that comes out of it 8 | * must implement this or it'll just go back in. 9 | */ 10 | public interface IElvenItem { 11 | 12 | public boolean isElvenItem(ItemStack stack); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/recipe/IFlowerComponent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Feb 15, 2014, 2:36:35 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.recipe; 12 | 13 | import net.minecraft.inventory.IInventory; 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * Have an Item implement this to allow it to be used in the Petal Apothecary. 18 | */ 19 | public interface IFlowerComponent { 20 | 21 | public boolean canFit(ItemStack stack, IInventory apothecary); 22 | 23 | public int getParticleColor(ItemStack stack); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/recipe/RecipeMiniFlower.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Apr 22, 2015, 5:57:59 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.recipe; 12 | 13 | import net.minecraft.item.ItemStack; 14 | import vazkii.botania.api.BotaniaAPI; 15 | 16 | public class RecipeMiniFlower extends RecipeManaInfusion { 17 | 18 | public RecipeMiniFlower(String flower, String mini, int mana) { 19 | super(BotaniaAPI.internalHandler.getSubTileAsStack(flower), BotaniaAPI.internalHandler.getSubTileAsStack(mini), mana); 20 | setAlchemy(true); 21 | } 22 | 23 | @Override 24 | public boolean matches(ItemStack stack) { 25 | String key = BotaniaAPI.internalHandler.getStackSubTileKey(stack); 26 | String input = this.input instanceof String ? (String) this.input : BotaniaAPI.internalHandler.getStackSubTileKey((ItemStack) this.input); 27 | return key != null && key.equals(input); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/recipe/RecipeRuneAltar.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Feb 5, 2014, 1:41:14 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.recipe; 12 | 13 | import net.minecraft.item.ItemStack; 14 | 15 | public class RecipeRuneAltar extends RecipePetals { 16 | 17 | int mana; 18 | 19 | public RecipeRuneAltar(ItemStack output, int mana, Object... inputs) { 20 | super(output, inputs); 21 | this.mana = mana; 22 | } 23 | 24 | public int getManaUsage() { 25 | return mana; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/subtile/ISpecialFlower.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 22, 2014, 7:12:28 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.subtile; 12 | 13 | /** 14 | * The special flowers in botania implement this. Used for cases where 15 | * BlockFlower would be checked against, but isn't convenient for 16 | * the special flowers with effects. For Azanor and Lycaon. 17 | */ 18 | public interface ISpecialFlower { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/subtile/ISubTileContainer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Aug 26, 2014, 5:42:16 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.subtile; 12 | 13 | /** 14 | * A TileEntity that implements this contains a SubTileEntity. 15 | */ 16 | public interface ISubTileContainer { 17 | 18 | /** 19 | * Gets the SubTile in this block. Generally shouldn't return null, but in that 20 | * case use the fallback DummySubTile. 21 | */ 22 | public SubTileEntity getSubTile(); 23 | 24 | /** 25 | * Sets the SubTile on this block from it's name. 26 | */ 27 | public void setSubTile(String name); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/subtile/ISubTileSlowableContainer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [29/12/2015, 23:00:06 (GMT)] 10 | */ 11 | package vazkii.botania.api.subtile; 12 | 13 | /** 14 | * An extension of ISubTileContainer that allows for the SubTile to be "slowed down". 15 | * Slowing down is the action that happens when a flower is planted in Podzol or Mycellium. 16 | * Any flowers that pick up items from the ground should have a delay on the time the item 17 | * needs to be on the floor equal to the value of getSlowDownFactor(). 18 | */ 19 | public interface ISubTileSlowableContainer extends ISubTileContainer { 20 | 21 | public static final int SLOWDOWN_FACTOR_PODZOL = 5; 22 | public static final int SLOWDOWN_FACTOR_MYCEL = 10; 23 | 24 | public int getSlowdownFactor(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/subtile/signature/PassiveFlower.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [04/12/2015, 16:47:01 (GMT)] 10 | */ 11 | package vazkii.botania.api.subtile.signature; 12 | 13 | import static java.lang.annotation.ElementType.TYPE; 14 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 15 | 16 | import java.lang.annotation.Retention; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * This annotation used for detecting whether a SubTileEntity 21 | * is a passive flower without having to instantiate it. This 22 | * is used for the flowers' tooltips. 23 | */ 24 | @Retention(value = RUNTIME) 25 | @Target(value = TYPE) 26 | public @interface PassiveFlower { 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wand/ICoordBoundItem.java: -------------------------------------------------------------------------------- 1 | package vazkii.botania.api.wand; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.util.ChunkCoordinates; 5 | import cpw.mods.fml.relauncher.Side; 6 | import cpw.mods.fml.relauncher.SideOnly; 7 | 8 | /** 9 | * The item equivalent of ITileBound, renders when the 10 | * item is in hand. 11 | * @see ITileBound 12 | */ 13 | public interface ICoordBoundItem { 14 | 15 | @SideOnly(Side.CLIENT) 16 | public ChunkCoordinates getBinding(ItemStack stack); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wand/ITileBound.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Mar 24, 2014, 6:47:53 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.wand; 12 | 13 | import net.minecraft.util.ChunkCoordinates; 14 | import cpw.mods.fml.relauncher.Side; 15 | import cpw.mods.fml.relauncher.SideOnly; 16 | 17 | /** 18 | * Any TileEntity that implements this is technically bound 19 | * to something, and the binding will be shown when hovering 20 | * over with a Wand of the Forest. 21 | */ 22 | public interface ITileBound { 23 | 24 | /** 25 | * Gets where this block is bound to, can return null. 26 | */ 27 | @SideOnly(Side.CLIENT) 28 | public ChunkCoordinates getBinding(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wand/IWandBindable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Oct 9, 2014, 3:01:58 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.wand; 12 | 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * A TileEntity that implements this can be bound to another block 18 | * via the Wand of the Forest. Also see IWireframeAABBProvider to change 19 | * the displayed bounding box. 20 | */ 21 | public interface IWandBindable extends ITileBound { 22 | 23 | /** 24 | * Return true if the Wand can select this tile. 25 | */ 26 | public boolean canSelect(EntityPlayer player, ItemStack wand, int x, int y, int z, int side); 27 | 28 | /** 29 | * Call to bind the TileEntity to where the player clicked. Return true to deselect 30 | * the TileEntity for another bind or false case the TileEntity should stay selected. 31 | */ 32 | public boolean bindTo(EntityPlayer player, ItemStack wand, int x, int y, int z, int side); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wand/IWandHUD.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Feb 5, 2014, 1:34:44 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.wand; 12 | 13 | import net.minecraft.client.Minecraft; 14 | import net.minecraft.client.gui.ScaledResolution; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * Any block that implements this has a HUD rendered when being hovered 19 | * with a Wand of the Forest. 20 | */ 21 | public interface IWandHUD { 22 | 23 | public void renderHUD(Minecraft mc, ScaledResolution res, World world, int x, int y, int z); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wand/IWandable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Jan 22, 2014, 5:12:53 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.wand; 12 | 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * Any block that implements this can be used with the Wand for the Forest for some purpose. 19 | */ 20 | public interface IWandable { 21 | 22 | /** 23 | * Called when the block is used by a wand. Note that the player parameter can be null 24 | * if this function is called from a dispenser. 25 | */ 26 | public boolean onUsedByWand(EntityPlayer player, ItemStack stack, World world, int x, int y, int z, int side); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wand/IWireframeAABBProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Apr 19, 2014, 7:23:59 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.wand; 12 | 13 | import net.minecraft.util.AxisAlignedBB; 14 | import net.minecraft.world.World; 15 | 16 | /** 17 | * A block that implements this can provide a custom AABB 18 | * for rendering the wireframe with ITileBound. 19 | */ 20 | public interface IWireframeAABBProvider { 21 | 22 | public AxisAlignedBB getWireframeAABB(World world, int x, int y, int z); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wiki/IWikiProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This class was created by . It's distributed as 3 | * part of the Botania Mod. Get the Source Code in github: 4 | * https://github.com/Vazkii/Botania 5 | * 6 | * Botania is Open Source and distributed under the 7 | * Botania License: http://botaniamod.net/license.php 8 | * 9 | * File Created @ [Sep 2, 2014, 5:57:35 PM (GMT)] 10 | */ 11 | package vazkii.botania.api.wiki; 12 | 13 | import net.minecraft.util.MovingObjectPosition; 14 | import net.minecraft.world.World; 15 | 16 | /** 17 | * An interface for a Wiki Provider, these are registered to allow a mod to provide a wiki 18 | * for all the blocks in them, used for the world interaction with the Lexica Botania. 19 | * A simple, mostly all-inclusive implementation can be found on SimpleWikiProvider. 20 | */ 21 | public interface IWikiProvider { 22 | 23 | /** 24 | * Gets the name of the block being looked at for display. 25 | */ 26 | public String getBlockName(World world, MovingObjectPosition pos); 27 | 28 | /** 29 | * Gets the URL to open when the block is clicked. 30 | */ 31 | public String getWikiURL(World world, MovingObjectPosition pos); 32 | 33 | /** 34 | * Gets the name of the wiki for display. 35 | */ 36 | public String getWikiName(World world, MovingObjectPosition pos); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/CommonProxy.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden; 2 | 3 | public class CommonProxy { 4 | 5 | public void registerRenderInfo(){ 6 | 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/LogHandler.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden; 2 | 3 | import org.apache.logging.log4j.Level; 4 | import org.apache.logging.log4j.LogManager; 5 | import org.apache.logging.log4j.Logger; 6 | 7 | public class LogHandler { 8 | public static final Logger logger = LogManager.getLogger("Forbidden Magic"); 9 | 10 | public static void log(Level level, Throwable e, String message) { 11 | log(level, message); 12 | e.printStackTrace(); 13 | } 14 | 15 | public static void log(Level level, String message) { 16 | logger.log(level, message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/XPReflectionHelper.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden; 2 | 3 | import java.lang.reflect.Field; 4 | 5 | import cpw.mods.fml.relauncher.ReflectionHelper; 6 | import net.minecraft.entity.EntityLiving; 7 | import org.apache.logging.log4j.Level; 8 | 9 | public class XPReflectionHelper { 10 | public static Field stupidMojangProtectedVariable; 11 | 12 | static { 13 | try { 14 | stupidMojangProtectedVariable = ReflectionHelper.findField(EntityLiving.class, "experienceValue", "field_70728_aV"); 15 | stupidMojangProtectedVariable.setAccessible(true); 16 | } 17 | catch(Exception e){ 18 | LogHandler.log(Level.ERROR, e.toString()); 19 | e.printStackTrace(); 20 | } 21 | } 22 | 23 | public static int getXP(EntityLiving entityLiving) { 24 | try { 25 | return stupidMojangProtectedVariable.getInt(entityLiving); 26 | } catch (Exception e) { 27 | e.printStackTrace(); 28 | } 29 | 30 | return 0; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/blocks/BlockPlanksTainted.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.blocks; 2 | 3 | import fox.spiteful.forbidden.Forbidden; 4 | import net.minecraft.block.Block; 5 | import thaumcraft.common.config.Config; 6 | 7 | public class BlockPlanksTainted extends Block{ 8 | 9 | public BlockPlanksTainted(){ 10 | super(Config.taintMaterial); 11 | setCreativeTab(Forbidden.tab); 12 | setStepSound(Block.soundTypeWood); 13 | setHardness(2.0F); 14 | setResistance(5.0F); 15 | setBlockTextureName("forbidden:taint_planks"); 16 | this.setHarvestLevel("axe", 0); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/blocks/BlockResource.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.blocks; 2 | 3 | import fox.spiteful.forbidden.Forbidden; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.block.material.Material; 6 | import net.minecraft.world.IBlockAccess; 7 | 8 | public class BlockResource extends Block { 9 | public BlockResource() { 10 | 11 | super(Material.iron); 12 | this.setCreativeTab(Forbidden.tab); 13 | setHardness(5.0F); 14 | setStepSound(Block.soundTypeMetal); 15 | this.setBlockTextureName("forbidden:starblock"); 16 | } 17 | 18 | @Override 19 | public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) { 20 | 21 | return true; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/blocks/ItemBlockStoneTainted.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.blocks; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.item.ItemBlock; 5 | import net.minecraft.item.ItemStack; 6 | 7 | public class ItemBlockStoneTainted extends ItemBlock { 8 | public ItemBlockStoneTainted(Block block){ 9 | super(block); 10 | this.setHasSubtypes(true); 11 | } 12 | 13 | @Override 14 | public int getMetadata(int meta) 15 | { 16 | return meta; 17 | } 18 | @Override 19 | public String getUnlocalizedName(ItemStack itemStack) 20 | { 21 | return "tile.TaintStone_" + (itemStack.getItemDamage() == 0 ? "Smooth" : "Brick"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/client/ClientProxy.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.client; 2 | 3 | import cpw.mods.fml.common.registry.VillagerRegistry; 4 | import fox.spiteful.forbidden.CommonProxy; 5 | import fox.spiteful.forbidden.Config; 6 | import fox.spiteful.forbidden.tiles.TileEntityWrathCage; 7 | 8 | import cpw.mods.fml.client.registry.ClientRegistry; 9 | import net.minecraft.util.ResourceLocation; 10 | 11 | public class ClientProxy extends CommonProxy { 12 | 13 | @Override 14 | public void registerRenderInfo() { 15 | ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWrathCage.class, new TileEntityWrathCageRenderer()); 16 | VillagerRegistry.instance().registerVillagerSkin(Config.hereticID, new ResourceLocation("forbidden", "textures/models/heretic.png")); 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/compat/ForbiddenLexicon.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.compat; 2 | 3 | import vazkii.botania.api.BotaniaAPI; 4 | import vazkii.botania.api.lexicon.IAddonEntry; 5 | import vazkii.botania.api.lexicon.LexiconCategory; 6 | import vazkii.botania.api.lexicon.LexiconEntry; 7 | 8 | public class ForbiddenLexicon extends LexiconEntry implements IAddonEntry { 9 | 10 | 11 | public ForbiddenLexicon(String name, LexiconCategory category){ 12 | super(name, category); 13 | BotaniaAPI.addEntry(this, category); 14 | } 15 | 16 | @Override 17 | public String getSubtitle(){ 18 | return "[Forbidden Magic x Botania]"; 19 | } 20 | 21 | @Override 22 | public String getUnlocalizedName() { 23 | return "forbidden.lexicon." + super.getUnlocalizedName(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/enchantments/EnchantmentCluster.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.enchantments; 2 | 3 | import fox.spiteful.forbidden.items.tools.ItemMorphPickaxe; 4 | import net.minecraft.enchantment.Enchantment; 5 | import net.minecraft.enchantment.EnumEnchantmentType; 6 | import net.minecraft.item.ItemStack; 7 | 8 | public class EnchantmentCluster extends Enchantment { 9 | public EnchantmentCluster(int id) { 10 | super(id, 1, EnumEnchantmentType.digger); 11 | setName("cluster"); 12 | } 13 | 14 | @Override 15 | public int getMaxLevel() { 16 | return 4; 17 | } 18 | 19 | @Override 20 | public boolean canApplyTogether(Enchantment ench) { 21 | return super.canApplyTogether(ench) && ench.effectId != Enchantment.fortune.effectId; 22 | } 23 | 24 | @Override 25 | public boolean canApply(ItemStack item) { 26 | if (item.getItem() instanceof ItemMorphPickaxe) 27 | return true; 28 | else 29 | return false; 30 | } 31 | 32 | @Override 33 | public boolean canApplyAtEnchantingTable(ItemStack stack) { 34 | return false; 35 | } 36 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/enchantments/EnchantmentConsuming.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.enchantments; 2 | 3 | import net.minecraft.enchantment.Enchantment; 4 | import net.minecraft.enchantment.EnumEnchantmentType; 5 | import net.minecraft.item.ItemPickaxe; 6 | import net.minecraft.item.ItemSpade; 7 | import net.minecraft.item.ItemStack; 8 | import thaumcraft.common.items.equipment.ItemPrimalCrusher; 9 | 10 | public class EnchantmentConsuming extends Enchantment { 11 | public EnchantmentConsuming(int id) { 12 | super(id, 5, EnumEnchantmentType.digger); 13 | setName("consuming"); 14 | } 15 | 16 | @Override 17 | public int getMaxLevel() { 18 | return 1; 19 | } 20 | 21 | @Override 22 | public boolean canApplyTogether(Enchantment ench) { 23 | return super.canApplyTogether(ench) && ench.effectId != Enchantment.silkTouch.effectId; 24 | } 25 | 26 | @Override 27 | public boolean canApply(ItemStack item) { 28 | if (item.getItem() instanceof ItemPickaxe || item.getItem() instanceof ItemSpade || item.getItem() instanceof ItemPrimalCrusher) 29 | return true; 30 | else 31 | return false; 32 | } 33 | 34 | @Override 35 | public boolean canApplyAtEnchantingTable(ItemStack stack) { 36 | return false; 37 | } 38 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/enchantments/EnchantmentCorrupting.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.enchantments; 2 | 3 | import net.minecraft.enchantment.Enchantment; 4 | import net.minecraft.enchantment.EnumEnchantmentType; 5 | import net.minecraft.item.ItemPickaxe; 6 | import net.minecraft.item.ItemStack; 7 | import thaumcraft.common.items.equipment.ItemPrimalCrusher; 8 | 9 | public class EnchantmentCorrupting extends Enchantment { 10 | public EnchantmentCorrupting(int id) { 11 | super(id, 1, EnumEnchantmentType.digger); 12 | setName("corrupting"); 13 | } 14 | 15 | @Override 16 | public int getMaxLevel() { 17 | return 1; 18 | } 19 | 20 | @Override 21 | public int getMinEnchantability(int par1) { 22 | return 20; 23 | } 24 | 25 | @Override 26 | public int getMaxEnchantability(int par1) { 27 | return super.getMinEnchantability(par1) + 50; 28 | } 29 | 30 | @Override 31 | public boolean canApply(ItemStack item) { 32 | if (item.getItem() instanceof ItemPickaxe || item.getItem() instanceof ItemPrimalCrusher) 33 | return true; 34 | else 35 | return false; 36 | } 37 | 38 | @Override 39 | public boolean canApplyAtEnchantingTable(ItemStack stack) { 40 | return false; 41 | } 42 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/enchantments/EnchantmentEducational.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.enchantments; 2 | 3 | import net.minecraft.enchantment.Enchantment; 4 | import net.minecraft.enchantment.EnumEnchantmentType; 5 | import net.minecraft.item.ItemStack; 6 | 7 | public class EnchantmentEducational extends Enchantment { 8 | public EnchantmentEducational(int id) { 9 | super(id, 5, EnumEnchantmentType.weapon); 10 | setName("educational"); 11 | } 12 | 13 | @Override 14 | public int getMaxLevel() { 15 | return 5; 16 | } 17 | 18 | @Override 19 | public boolean canApplyTogether(Enchantment ench) { 20 | return super.canApplyTogether(ench) && ench.effectId != Enchantment.looting.effectId && ench.effectId != DarkEnchantments.greedy.effectId; 21 | } 22 | 23 | @Override 24 | public boolean canApplyAtEnchantingTable(ItemStack stack) { 25 | return false; 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/enchantments/EnchantmentGreedy.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.enchantments; 2 | 3 | import net.minecraft.enchantment.Enchantment; 4 | import net.minecraft.enchantment.EnumEnchantmentType; 5 | import net.minecraft.item.ItemStack; 6 | 7 | public class EnchantmentGreedy extends Enchantment { 8 | public EnchantmentGreedy(int id) { 9 | super(id, 1, EnumEnchantmentType.weapon); 10 | setName("greedy"); 11 | } 12 | 13 | @Override 14 | public int getMaxLevel() { 15 | return 1; 16 | } 17 | 18 | @Override 19 | public int getMinEnchantability(int par1) { 20 | return 20; 21 | } 22 | 23 | @Override 24 | public int getMaxEnchantability(int par1) { 25 | return super.getMinEnchantability(par1) + 50; 26 | } 27 | 28 | @Override 29 | public boolean canApplyTogether(Enchantment ench) { 30 | return super.canApplyTogether(ench) && ench.effectId != Enchantment.looting.effectId && ench.effectId != DarkEnchantments.educational.effectId; 31 | } 32 | 33 | @Override 34 | public boolean canApplyAtEnchantingTable(ItemStack stack) { 35 | return false; 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/enchantments/EnchantmentImpact.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.enchantments; 2 | 3 | import fox.spiteful.forbidden.items.tools.ItemMorphPickaxe; 4 | import fox.spiteful.forbidden.items.tools.ItemMorphShovel; 5 | import net.minecraft.enchantment.Enchantment; 6 | import net.minecraft.enchantment.EnumEnchantmentType; 7 | import net.minecraft.item.ItemStack; 8 | 9 | public class EnchantmentImpact extends Enchantment { 10 | public EnchantmentImpact(int id) { 11 | super(id, 1, EnumEnchantmentType.digger); 12 | setName("impact"); 13 | } 14 | 15 | @Override 16 | public int getMaxLevel() { 17 | return 1; 18 | } 19 | 20 | @Override 21 | public int getMinEnchantability(int par1) { 22 | return 30; 23 | } 24 | 25 | @Override 26 | public int getMaxEnchantability(int par1) { 27 | return super.getMinEnchantability(par1) + 10; 28 | } 29 | 30 | @Override 31 | public boolean canApply(ItemStack item) { 32 | return (item.getItem() instanceof ItemMorphPickaxe || item.getItem() instanceof ItemMorphShovel); 33 | } 34 | 35 | @Override 36 | public boolean canApplyAtEnchantingTable(ItemStack stack) { 37 | return false; 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/items/ItemGluttonyShard.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.items; 2 | 3 | import fox.spiteful.forbidden.Forbidden; 4 | import net.minecraft.client.renderer.texture.IIconRegister; 5 | import net.minecraft.item.ItemFood; 6 | import net.minecraft.util.IIcon; 7 | 8 | import cpw.mods.fml.relauncher.Side; 9 | import cpw.mods.fml.relauncher.SideOnly; 10 | 11 | public class ItemGluttonyShard extends ItemFood { 12 | IIcon icon; 13 | 14 | public ItemGluttonyShard() { 15 | super(2, 0.1F, false); 16 | this.setCreativeTab(Forbidden.tab); 17 | } 18 | 19 | @Override 20 | @SideOnly(Side.CLIENT) 21 | public void registerIcons(IIconRegister ir) { 22 | this.icon = ir.registerIcon("forbidden:gluttonyshard"); 23 | } 24 | 25 | @Override 26 | @SideOnly(Side.CLIENT) 27 | public IIcon getIconFromDamage(int par1) { 28 | return this.icon; 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/items/ItemTaintCoal.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.items; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import fox.spiteful.forbidden.Forbidden; 6 | import net.minecraft.client.renderer.texture.IIconRegister; 7 | import net.minecraft.item.Item; 8 | 9 | public class ItemTaintCoal extends Item { 10 | 11 | public ItemTaintCoal(){ 12 | super(); 13 | setCreativeTab(Forbidden.tab); 14 | } 15 | 16 | @Override 17 | @SideOnly(Side.CLIENT) 18 | public void registerIcons(IIconRegister iconRegister) { 19 | this.itemIcon = iconRegister.registerIcon("forbidden:taint_charcoal"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/items/wands/CreativeWandUpdate.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.items.wands; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import thaumcraft.api.aspects.Aspect; 6 | import thaumcraft.api.wands.IWandRodOnUpdate; 7 | import thaumcraft.common.items.wands.ItemWandCasting; 8 | 9 | public class CreativeWandUpdate implements IWandRodOnUpdate { 10 | 11 | Aspect primals[] = Aspect.getPrimalAspects().toArray(new Aspect[0]); 12 | 13 | public void onUpdate(ItemStack itemstack, EntityPlayer player) { 14 | for (int x = 0; x < primals.length; x++) { 15 | if (((ItemWandCasting) itemstack.getItem()).getVis(itemstack, primals[x]) < ((ItemWandCasting) itemstack.getItem()).getMaxVis(itemstack)) { 16 | ((ItemWandCasting) itemstack.getItem()).addVis(itemstack, primals[x], ((ItemWandCasting) itemstack.getItem()).getMaxVis(itemstack) - ((ItemWandCasting) itemstack.getItem()).getVis(itemstack, primals[x]), true); 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/items/wands/DarkWandCap.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.items.wands; 2 | 3 | import java.util.List; 4 | 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.util.ResourceLocation; 7 | import thaumcraft.api.aspects.Aspect; 8 | import thaumcraft.api.wands.WandCap; 9 | 10 | /** 11 | * This class is used to keep the material information for the various caps. It 12 | * is also used to generate the wand recipes ingame. 13 | * 14 | * @author Azanor 15 | * 16 | */ 17 | public class DarkWandCap extends WandCap { 18 | public DarkWandCap(String tag, float discount, ItemStack item, int craftCost, ResourceLocation skin) { 19 | super(tag, discount, item, craftCost); 20 | setTexture(skin); 21 | } 22 | 23 | public DarkWandCap(String tag, float discount, List specialAspects, float discountSpecial, ItemStack item, int craftCost, ResourceLocation skin) { 24 | super(tag, discount, specialAspects, discountSpecial, item, craftCost); 25 | setTexture(skin); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/items/wands/TaintedWandUpdate.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.items.wands; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import thaumcraft.api.aspects.Aspect; 6 | import thaumcraft.api.wands.IWandRodOnUpdate; 7 | import thaumcraft.common.items.wands.ItemWandCasting; 8 | 9 | import fox.spiteful.forbidden.Config; 10 | 11 | public class TaintedWandUpdate implements IWandRodOnUpdate { 12 | 13 | Aspect primals[] = Aspect.getPrimalAspects().toArray(new Aspect[0]); 14 | 15 | public void onUpdate(ItemStack itemstack, EntityPlayer player) { 16 | if(player.ticksExisted % 100 == 0 && player.worldObj.getBiomeGenForCoords((int)player.posX, (int)player.posZ).biomeID == thaumcraft.common.config.Config.biomeTaintID){ 17 | for(int x = 0;x < primals.length;x++){ 18 | if(((ItemWandCasting)itemstack.getItem()).getVis(itemstack, primals[x]) < ((ItemWandCasting)itemstack.getItem()).getMaxVis(itemstack) / 10) { 19 | ((ItemWandCasting)itemstack.getItem()).addVis(itemstack, primals[x], 1, true); 20 | } 21 | } 22 | } 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/fox/spiteful/forbidden/potions/PotionBloodSeal.java: -------------------------------------------------------------------------------- 1 | package fox.spiteful.forbidden.potions; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.Minecraft; 6 | import net.minecraft.potion.Potion; 7 | 8 | public class PotionBloodSeal extends Potion { 9 | public PotionBloodSeal(int id){ 10 | super(id, true, 0xAC1919); 11 | this.setPotionName("potion.blood_seal"); 12 | this.setIconIndex(4, 0); 13 | } 14 | 15 | @SideOnly(Side.CLIENT) 16 | public int getStatusIconIndex() { 17 | Minecraft.getMinecraft().renderEngine.bindTexture(DarkPotions.icons); 18 | return super.getStatusIconIndex(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/desidia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/desidia.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/gula.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/gula.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/infernus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/infernus.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/invidia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/invidia.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/ira.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/ira.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/luxuria.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/luxuria.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/aspects/superbia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/aspects/superbia.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/arcanewoodblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/arcanewoodblock.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/bloodthorn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/bloodthorn.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/cake_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/cake_bottom.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/cake_inner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/cake_inner.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/cake_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/cake_side.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/cake_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/cake_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/euclidaisy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/euclidaisy.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/flower_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/flower_black.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/sapling_taint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/sapling_taint.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/spirit_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/spirit_box.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/starblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/starblock.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_leaves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_leaves.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_leaves_opaque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_leaves_opaque.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_log_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_log_bottom.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_log_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_log_side.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_log_side_gross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_log_side_gross.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_log_side_gross2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_log_side_gross2.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_plank_fancy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_plank_fancy.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_planks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_planks.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_stone_brick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_stone_brick.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/taint_stone_smooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/taint_stone_smooth.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/tainthistle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/tainthistle.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/umbral_rose_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/umbral_rose_bottom.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/umbral_rose_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/umbral_rose_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/blocks/whisperweed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/blocks/whisperweed.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/blood_rapier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/blood_rapier.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/bloodwell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/bloodwell.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/bound_shears.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/bound_shears.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/boundwell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/boundwell.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/cake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/cake.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/chameleonaxe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/chameleonaxe.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/chameleonpick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/chameleonpick.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/chameleonshovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/chameleonshovel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/chameleonsword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/chameleonsword.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/collar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/collar.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/crop.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/crop_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/crop_black.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/crystalwell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/crystalwell.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/despairshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/despairshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/divineorb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/divineorb.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/divineorb.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 1 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/dragonslayer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/dragonslayer.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/dye_powder_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/dye_powder_black.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/emerald_nugget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/emerald_nugget.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/emptycrystal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/emptycrystal.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/envyshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/envyshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/eyeaxe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/eyeaxe.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/eyepick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/eyepick.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/eyeshovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/eyeshovel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/eyesword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/eyesword.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/focus_blink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/focus_blink.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/focus_blink_orn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/focus_blink_orn.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/fork.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/gluttonyshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/gluttonyshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/greedshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/greedshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/hexiteingot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/hexiteingot.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/lustshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/lustshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/mobcrystal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/mobcrystal.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/nuggetelementium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/nuggetelementium.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/nuggetmanasteel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/nuggetmanasteel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/prideshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/prideshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/prideshard.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 2 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/primewell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/primewell.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/ring_nutrition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/ring_nutrition.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/skullaxe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/skullaxe.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/slothshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/slothshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/spork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/spork.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taint_charcoal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/taint_charcoal.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taint_charcoal.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3, 4 | "frames": [ 5 | 0, 6 | 0, 7 | 0, 8 | 0, 9 | 1, 10 | 2, 11 | 1 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taint_fruit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/taint_fruit.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/tainted_blood_shard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/tainted_blood_shard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/tainted_blood_shard.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taintfruit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/taintfruit.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taintpickaxe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/taintpickaxe.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taintshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/taintshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taintshard.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/taintshovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/taintshovel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_alchemical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_alchemical.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_alchemical.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3, 4 | "frames": [ 5 | 0, 6 | 1, 7 | 2, 8 | 1 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_elementium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_elementium.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_elementium.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3, 4 | "frames": [ 5 | 0, 6 | 1, 7 | 2, 8 | 1 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_elementium_inert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_elementium_inert.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_manasteel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_manasteel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_manasteel.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3, 4 | "frames": [ 5 | 0, 6 | 1, 7 | 2, 8 | 1 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_manasteel_inert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_manasteel_inert.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_terrasteel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_terrasteel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_vinteum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_cap_vinteum.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_cap_vinteum.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 3, 4 | "frames": [ 5 | 0, 6 | 1, 7 | 2, 8 | 1 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_blood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_blood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_blood_inert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_blood_inert.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_blood_staff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_blood_staff.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_dreamwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_dreamwood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_dreamwood_inert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_dreamwood_inert.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_dreamwood_staff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_dreamwood_staff.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_infernal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_infernal.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_livingwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_livingwood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_livingwood_inert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_livingwood_inert.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_profane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_profane.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_soul.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_soul.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_tainted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_tainted.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_totem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_totem.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_witchwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_witchwood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wand_rod_witchwood_staff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wand_rod_witchwood_staff.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wrathshard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/items/wrathshard.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/items/wrathshard.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 4 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/consuming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/consuming.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/corrupting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/corrupting.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/educational.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/educational.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/forbidden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/forbidden.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/greedy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/greedy.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/hellfire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/hellfire.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/impact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/impact.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/lucrative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/lucrative.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/pandemonium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/pandemonium.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/potions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/potions.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/research.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/research.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/runecircle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/runecircle.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/voidtouched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/voidtouched.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/misc/wrath.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/misc/wrath.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/heretic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/heretic.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_cap_alchemical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_cap_alchemical.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_cap_elementium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_cap_elementium.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_cap_manasteel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_cap_manasteel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_cap_orichalcum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_cap_orichalcum.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_cap_terrasteel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_cap_terrasteel.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_cap_vinteum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_cap_vinteum.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_blood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_blood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_dreamwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_dreamwood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_equivalent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_equivalent.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_infernal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_infernal.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_livingwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_livingwood.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_neutronium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_neutronium.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_profane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_profane.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_profaned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_profaned.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_soul.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_soul.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_tainted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_tainted.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_totem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_totem.png -------------------------------------------------------------------------------- /src/main/resources/assets/forbidden/textures/models/wand_rod_witchwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SpitefulFox/ForbiddenMagic/821a18910f6bad249ee350f6525e1a24c2ff44d1/src/main/resources/assets/forbidden/textures/models/wand_rod_witchwood.png -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid" : "ForbiddenMagic", 4 | "name" : "Forbidden Magic", 5 | "version": "${version}", 6 | "mcversion": "${mcversion}", 7 | "url" : "http://www.minecraftforum.net/topic/2305054-/", 8 | "credits" : "Azanor, joshiejack, Killajoke, LycaonX, Nieue, Succubism, Vazkii, Dylan4ever, Nekosune, Kihira", 9 | "authorList": [ "SpitefulFox" ], 10 | "description": "Forbidden Magic is an addon to add many dark-themed things to Thaumcraft.", 11 | "logoFile" : "", 12 | "updateUrl" : "", 13 | "parent" : "", 14 | "screenshots": [ 15 | ] 16 | } 17 | ] -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "pack_format": 1, 4 | "description": "Resources used for Forbidden Magic" 5 | } 6 | } --------------------------------------------------------------------------------