├── .gitignore ├── LICENCE.txt ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── api └── java │ ├── WayofTime │ └── alchemicalWizardry │ │ └── api │ │ ├── ColourAndCoords.java │ │ ├── ILimitingLogic.java │ │ ├── Int3.java │ │ ├── RoutingFocusLogic.java │ │ ├── RoutingFocusParadigm.java │ │ ├── RoutingFocusPosAndFacing.java │ │ ├── Vector3.java │ │ ├── alchemy │ │ ├── AlchemicalPotionCreationHandler.java │ │ ├── AlchemyPotionHandlerComponent.java │ │ ├── AlchemyPotionHelper.java │ │ ├── AlchemyRecipe.java │ │ ├── AlchemyRecipeRegistry.java │ │ └── energy │ │ │ ├── IAlchemyGoggles.java │ │ │ ├── IReagentContainer.java │ │ │ ├── IReagentHandler.java │ │ │ ├── ISegmentedReagentHandler.java │ │ │ ├── Reagent.java │ │ │ ├── ReagentContainer.java │ │ │ ├── ReagentContainerInfo.java │ │ │ ├── ReagentRegistry.java │ │ │ ├── ReagentStack.java │ │ │ ├── TileReagentHandler.java │ │ │ └── TileSegmentedReagentHandler.java │ │ ├── altarRecipeRegistry │ │ ├── AltarRecipe.java │ │ ├── AltarRecipeRegistry.java │ │ └── IFadedRune.java │ │ ├── bindingRegistry │ │ ├── BindingRecipe.java │ │ ├── BindingRegistry.java │ │ ├── UnbindingRecipe.java │ │ └── UnbindingRegistry.java │ │ ├── compress │ │ ├── CompressionHandler.java │ │ └── CompressionRegistry.java │ │ ├── event │ │ ├── AddToNetworkEvent.java │ │ ├── ItemBindEvent.java │ │ ├── ItemDrainInContainerEvent.java │ │ ├── ItemDrainNetworkEvent.java │ │ ├── PlayerAddToNetworkEvent.java │ │ ├── PlayerDrainNetworkEvent.java │ │ ├── RitualActivatedEvent.java │ │ ├── RitualEvent.java │ │ ├── RitualRunEvent.java │ │ ├── RitualStopEvent.java │ │ ├── SacrificeKnifeUsedEvent.java │ │ ├── SoulNetworkEvent.java │ │ └── TeleposeEvent.java │ │ ├── harvest │ │ ├── HarvestRegistry.java │ │ └── IHarvestHandler.java │ │ ├── items │ │ ├── IAltarManipulator.java │ │ ├── ItemSpellMultiTool.java │ │ ├── ShapedBloodOrbRecipe.java │ │ ├── ShapelessBloodOrbRecipe.java │ │ └── interfaces │ │ │ ├── ArmourUpgrade.java │ │ │ ├── IBindable.java │ │ │ ├── IBloodOrb.java │ │ │ ├── IHolding.java │ │ │ ├── ILPGauge.java │ │ │ ├── IReagentManipulator.java │ │ │ ├── IRitualDiviner.java │ │ │ └── ISigil.java │ │ ├── renderer │ │ └── MRSRenderer.java │ │ ├── rituals │ │ ├── IMasterRitualStone.java │ │ ├── IRitualStone.java │ │ ├── ITileRitualStone.java │ │ ├── LocalRitualStorage.java │ │ ├── RitualBreakMethod.java │ │ ├── RitualComponent.java │ │ ├── RitualEffect.java │ │ └── Rituals.java │ │ ├── sacrifice │ │ ├── IIncense.java │ │ └── PlayerSacrificeHandler.java │ │ ├── soulNetwork │ │ ├── ComplexNetworkHandler.java │ │ ├── LifeEssenceNetwork.java │ │ └── SoulNetworkHandler.java │ │ ├── spell │ │ ├── APISpellHelper.java │ │ ├── ComplexSpellEffect.java │ │ ├── ComplexSpellModifier.java │ │ ├── ComplexSpellType.java │ │ ├── EntitySpellProjectile.java │ │ ├── ExtrapolatedMeleeEntityEffect.java │ │ ├── IDigAreaEffect.java │ │ ├── IItemManipulator.java │ │ ├── ILeftClickEffect.java │ │ ├── IMeleeSpellEntityEffect.java │ │ ├── IMeleeSpellWorldEffect.java │ │ ├── IOnBanishTool.java │ │ ├── IOnBreakBlock.java │ │ ├── IOnSummonTool.java │ │ ├── IProjectileImpactEffect.java │ │ ├── IProjectileUpdateEffect.java │ │ ├── IRightClickEffect.java │ │ ├── ISelfSpellEffect.java │ │ ├── ISpecialDamageEffect.java │ │ ├── IToolUpdateEffect.java │ │ ├── MeleeSpellCenteredWorldEffect.java │ │ ├── MeleeSpellWorldEffect.java │ │ ├── ProjectileImpactEffect.java │ │ ├── ProjectileUpdateEffect.java │ │ ├── SelfSpellEffect.java │ │ ├── SpellEffect.java │ │ ├── SpellEffectRegistry.java │ │ ├── SpellEnhancement.java │ │ ├── SpellEnhancementCost.java │ │ ├── SpellEnhancementPotency.java │ │ ├── SpellEnhancementPower.java │ │ ├── SpellParadigm.java │ │ ├── SpellParadigmMelee.java │ │ ├── SpellParadigmProjectile.java │ │ ├── SpellParadigmSelf.java │ │ └── SpellParadigmTool.java │ │ ├── summoningRegistry │ │ ├── SummoningHelper.java │ │ ├── SummoningRegistry.java │ │ └── SummoningRegistryComponent.java │ │ └── tile │ │ ├── IBloodAltar.java │ │ ├── ISpellParadigmTile.java │ │ └── ISpellTile.java │ ├── baubles │ └── api │ │ ├── BaubleType.java │ │ ├── BaublesApi.java │ │ └── IBauble.java │ ├── thaumcraft │ └── api │ │ ├── IGoggles.java │ │ ├── IRepairable.java │ │ ├── IRepairableExtended.java │ │ ├── IRunicArmor.java │ │ ├── IScribeTools.java │ │ ├── IVisDiscountGear.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 │ │ └── ITaintedMob.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 │ │ ├── IWandFocus.java │ │ ├── IWandRodOnUpdate.java │ │ ├── IWandTriggerManager.java │ │ ├── IWandable.java │ │ ├── ItemFocusBasic.java │ │ ├── StaffRod.java │ │ ├── WandCap.java │ │ ├── WandRod.java │ │ └── WandTriggerRegistry.java │ └── vazkii │ └── botania │ └── api │ ├── BotaniaAPI.java │ ├── boss │ ├── IBotaniaBoss.java │ └── IBotaniaBossWithShader.java │ ├── brew │ ├── Brew.java │ ├── IBrewContainer.java │ └── IBrewItem.java │ ├── internal │ ├── DummyManaNetwork.java │ ├── DummyMethodHandler.java │ ├── DummyPage.java │ ├── DummySubTile.java │ ├── IGuiLexiconEntry.java │ ├── IInternalMethodHandler.java │ ├── IManaBurst.java │ ├── IManaNetwork.java │ └── ShaderCallback.java │ ├── item │ ├── IBaubleRender.java │ ├── IExoflameHeatable.java │ ├── IExtendedPlayerController.java │ ├── IFlowerlessBiome.java │ ├── IFlowerlessWorld.java │ ├── IGrassHornExcempt.java │ ├── IPetalApothecary.java │ └── IPixieSpawner.java │ ├── lexicon │ ├── IAddonEntry.java │ ├── ILexicon.java │ ├── ILexiconable.java │ ├── IRecipeKeyProvider.java │ ├── ITwoNamedPage.java │ ├── KnowledgeType.java │ ├── LexiconCategory.java │ ├── LexiconEntry.java │ ├── LexiconPage.java │ └── LexiconRecipeMappings.java │ ├── mana │ ├── BurstProperties.java │ ├── IClientManaHandler.java │ ├── ICreativeManaProvider.java │ ├── IKeyLocked.java │ ├── ILaputaImmobile.java │ ├── ILens.java │ ├── ILensEffect.java │ ├── IManaBlock.java │ ├── IManaCollector.java │ ├── IManaCollisionGhost.java │ ├── IManaItem.java │ ├── IManaPool.java │ ├── IManaReceiver.java │ ├── IManaTrigger.java │ ├── IManaUsingItem.java │ ├── IPoolOverlayProvider.java │ ├── ITinyPlanetExcempt.java │ ├── ManaItemHandler.java │ ├── ManaNetworkEvent.java │ ├── TileSignature.java │ └── spark │ │ ├── ISparkAttachable.java │ │ ├── ISparkEntity.java │ │ └── SparkHelper.java │ ├── package-info.java │ ├── recipe │ ├── IElvenItem.java │ ├── IFlowerComponent.java │ ├── RecipeBrew.java │ ├── RecipeElvenTrade.java │ ├── RecipeManaInfusion.java │ ├── RecipePetals.java │ └── RecipeRuneAltar.java │ ├── subtile │ ├── ISpecialFlower.java │ ├── ISubTileContainer.java │ ├── SubTileEntity.java │ ├── SubTileFunctional.java │ ├── SubTileGenerating.java │ └── signature │ │ ├── BasicSignature.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 ├── chbachman │ ├── api │ │ ├── configurability │ │ │ ├── Configurable.java │ │ │ ├── ConfigurableField.java │ │ │ ├── FieldList.java │ │ │ └── Percentage.java │ │ ├── item │ │ │ ├── ArmourLogic.java │ │ │ ├── IModularItem.java │ │ │ └── UpgradeLogic.java │ │ ├── nbt │ │ │ ├── NBTSerializer.java │ │ │ ├── SerializationException.java │ │ │ ├── helper │ │ │ │ ├── NBTBoolean.java │ │ │ │ ├── NBTDouble.java │ │ │ │ ├── NBTHelper.java │ │ │ │ ├── NBTInteger.java │ │ │ │ ├── NBTList.java │ │ │ │ └── NBTStorage.java │ │ │ └── serializers │ │ │ │ ├── PercentageNBT.java │ │ │ │ └── UpgradeNBT.java │ │ ├── registry │ │ │ ├── IItemListener.java │ │ │ ├── IUpgradeListener.java │ │ │ ├── ModularItemRegistry.java │ │ │ ├── UpgradeList.java │ │ │ └── UpgradeRegistry.java │ │ ├── upgrade │ │ │ ├── IArmourUpgrade.java │ │ │ ├── IUpgrade.java │ │ │ ├── Recipe.java │ │ │ └── Upgrade.java │ │ └── util │ │ │ ├── ArmourSlot.java │ │ │ ├── Array.java │ │ │ ├── ImmutableArray.java │ │ │ ├── ObjectMap.java │ │ │ └── OrderedMap.java │ └── armour │ │ ├── ModularArmour.java │ │ ├── gui │ │ ├── GuiHandler.java │ │ ├── GuiHelper.java │ │ ├── crafting │ │ │ ├── ArmourContainer.java │ │ │ └── ArmourGui.java │ │ ├── element │ │ │ ├── ElementBackground.java │ │ │ ├── ElementButtonIcon.java │ │ │ ├── ElementItem.java │ │ │ ├── ElementText.java │ │ │ ├── ElementUpgradeListBox.java │ │ │ ├── TabCompatible.java │ │ │ ├── TabConfig.java │ │ │ ├── TabCrafting.java │ │ │ ├── TabError.java │ │ │ ├── TabRecipeList.java │ │ │ └── TabUpgradeRemoval.java │ │ ├── recipe │ │ │ ├── RecipeContainer.java │ │ │ └── RecipeGui.java │ │ └── tablet │ │ │ ├── TabletContainer.java │ │ │ ├── TabletGui.java │ │ │ └── TabletPage.java │ │ ├── handler │ │ ├── CommandHandler.java │ │ ├── DamageEventHandler.java │ │ ├── GenericEventHandler.java │ │ ├── PlayerArmour.java │ │ └── UpgradeHandler.java │ │ ├── items │ │ ├── armour │ │ │ ├── BotaniaModularArmour.java │ │ │ ├── ICModularArmour.java │ │ │ ├── ItemModularArmour.java │ │ │ ├── LPModularArmour.java │ │ │ ├── RFModularArmour.java │ │ │ ├── logic │ │ │ │ ├── ICUpgradeLogic.java │ │ │ │ ├── LPUpgradeLogic.java │ │ │ │ ├── ManaUpgradeLogic.java │ │ │ │ ├── RFUpgradeLogic.java │ │ │ │ └── UpgradeLogicAdv.java │ │ │ └── renderer │ │ │ │ ├── AdvancedArmourModel.java │ │ │ │ └── JetpackModel.java │ │ ├── bauble │ │ │ ├── BotaniaBauble.java │ │ │ ├── ItemBauble.java │ │ │ ├── LPBauble.java │ │ │ └── RFBauble.java │ │ └── tablet │ │ │ └── ItemTablet.java │ │ ├── network │ │ ├── ArmourPacket.java │ │ ├── IContainerSyncable.java │ │ └── IInputHandler.java │ │ ├── proxy │ │ ├── ClientProxy.java │ │ ├── CommonProxy.java │ │ ├── IProxy.java │ │ └── ServerProxy.java │ │ ├── reference │ │ └── Reference.java │ │ ├── register │ │ ├── Baubles.java │ │ ├── BloodMagic.java │ │ ├── Botania.java │ │ ├── Enviromine.java │ │ ├── IndustrialCraft2.java │ │ ├── ItemRegister.java │ │ ├── MineTweaker.java │ │ ├── Module.java │ │ ├── SolarExpansion.java │ │ ├── Thaumcraft.java │ │ └── Vanilla.java │ │ ├── upgrade │ │ ├── KeybindUpgrade.java │ │ ├── UpgradeException.java │ │ ├── UpgradeProjectile.java │ │ ├── UpgradeProtective.java │ │ └── upgradeList │ │ │ ├── UpgradeArthropod.java │ │ │ ├── UpgradeAttackBonus.java │ │ │ ├── UpgradeAutoFeeder.java │ │ │ ├── UpgradeBasic.java │ │ │ ├── UpgradeCamelPack.java │ │ │ ├── UpgradeDecorative.java │ │ │ ├── UpgradeElectrolyzer.java │ │ │ ├── UpgradeEnergy.java │ │ │ ├── UpgradeFallDamage.java │ │ │ ├── UpgradeGasMask.java │ │ │ ├── UpgradeHook.java │ │ │ ├── UpgradeHoverJetpack.java │ │ │ ├── UpgradeJumpBoost.java │ │ │ ├── UpgradeMagnet.java │ │ │ ├── UpgradeMana.java │ │ │ ├── UpgradeModel.java │ │ │ ├── UpgradePlayerProtection.java │ │ │ ├── UpgradePotion.java │ │ │ ├── UpgradeSolar.java │ │ │ ├── UpgradeSpeed.java │ │ │ ├── UpgradeStepAssist.java │ │ │ └── UpgradeUndead.java │ │ └── util │ │ ├── BaublesUtil.java │ │ ├── ConfigHelper.java │ │ ├── EnergyUtil.java │ │ ├── FakeInventory.java │ │ ├── InventoryUtil.java │ │ ├── MiscUtil.java │ │ ├── ModularCreativeTab.java │ │ ├── OutputHandler.java │ │ ├── UpgradeUtil.java │ │ └── json │ │ ├── CustomIUpgradeJson.java │ │ ├── CustomItemStackJson.java │ │ ├── CustomNBTJson.java │ │ ├── CustomRecipeJson.java │ │ └── JsonRegister.java └── com │ └── badlogic │ └── gdx │ ├── math │ ├── FloatCounter.java │ ├── MathUtils.java │ ├── RandomXS128.java │ └── WindowedMean.java │ └── utils │ ├── Align.java │ ├── ArrayMap.java │ ├── AtomicQueue.java │ ├── Base64Coder.java │ ├── BinaryHeap.java │ ├── Bits.java │ ├── BooleanArray.java │ ├── ByteArray.java │ ├── CharArray.java │ ├── Clipboard.java │ ├── ComparableTimSort.java │ ├── DataInput.java │ ├── DataOutput.java │ ├── DelayedRemovalArray.java │ ├── Disposable.java │ ├── FloatArray.java │ ├── GdxRuntimeException.java │ ├── IdentityMap.java │ ├── IntArray.java │ ├── IntFloatMap.java │ ├── IntIntMap.java │ ├── IntMap.java │ ├── IntSet.java │ ├── JsonReader.rl │ ├── LittleEndianInputStream.java │ ├── LongArray.java │ ├── LongMap.java │ ├── NumberUtils.java │ ├── ObjectFloatMap.java │ ├── ObjectIntMap.java │ ├── ObjectSet.java │ ├── OrderedSet.java │ ├── PauseableThread.java │ ├── PerformanceCounter.java │ ├── PerformanceCounters.java │ ├── Pool.java │ ├── PooledLinkedList.java │ ├── Pools.java │ ├── Predicate.java │ ├── PropertiesUtils.java │ ├── QuickSelect.java │ ├── ReflectionPool.java │ ├── Select.java │ ├── SerializationException.java │ ├── ShortArray.java │ ├── SnapshotArray.java │ ├── Sort.java │ ├── SortedIntList.java │ ├── StringBuilder.java │ ├── TextFormatter.java │ ├── TimSort.java │ ├── TimeUtils.java │ ├── XmlReader.rl │ ├── arial-15.fnt │ ├── arial-15.png │ ├── async │ ├── AsyncExecutor.java │ ├── AsyncResult.java │ ├── AsyncTask.java │ └── ThreadUtils.java │ ├── compression │ ├── CRC.java │ ├── ICodeProgress.java │ ├── Lzma.java │ ├── lz │ │ ├── BinTree.java │ │ ├── InWindow.java │ │ └── OutWindow.java │ ├── lzma │ │ ├── Base.java │ │ ├── Decoder.java │ │ └── Encoder.java │ └── rangecoder │ │ ├── BitTreeDecoder.java │ │ ├── BitTreeEncoder.java │ │ ├── Decoder.java │ │ └── Encoder.java │ └── reflect │ ├── Annotation.java │ ├── ArrayReflection.java │ ├── ClassReflection.java │ ├── Constructor.java │ ├── Field.java │ ├── Method.java │ └── ReflectionException.java └── resources ├── META-INF ├── CoFH_at.cfg ├── cofhlib_at.cfg └── modulararmour_at.cfg ├── assets └── modulararmour │ ├── lang │ ├── de_DE.lang │ ├── en_US.lang │ └── zh_CN.lang │ ├── logo.png │ └── textures │ ├── armour │ ├── Advanced_Armour.png │ ├── Modular_1.png │ ├── Modular_1_Amber.png │ ├── Modular_1_INVERTED.png │ ├── Modular_1_Lime.png │ ├── Modular_1_Orange.png │ ├── Modular_1_Pink.png │ ├── Modular_1_Red.png │ ├── Modular_1_Yellow.png │ ├── Modular_1_greyscale.png │ ├── Modular_2.png │ ├── Modular_COLOR_OVERLAY.png │ ├── Shad0wB1ade_1.png │ ├── Shad0wB1ade_2.png │ ├── Thomaz_1.png │ └── Thomaz_2.png │ ├── gui │ ├── armourGui.png │ ├── recipeGui.png │ ├── tabletBackground.png │ └── tabletGui.png │ └── items │ ├── ItemBelt.png │ ├── ItemPendant.png │ ├── ItemRing.png │ ├── ModularBoots.png │ ├── ModularBootsIC.png │ ├── ModularBootsLP.png │ ├── ModularBootsMana.png │ ├── ModularChestplate.png │ ├── ModularChestplateIC.png │ ├── ModularChestplateLP.png │ ├── ModularChestplateMana.png │ ├── ModularHelmet.png │ ├── ModularHelmetIC.png │ ├── ModularHelmetLP.png │ ├── ModularHelmetMana.png │ ├── ModularLegs.png │ ├── ModularLegsIC.png │ ├── ModularLegsLP.png │ ├── ModularLegsMana.png │ ├── icons │ ├── Icon_Accept.png │ └── Icon_Wrench.png │ ├── material │ ├── HeatedElectrum.png │ └── TemperedElectrum.png │ └── upgrade │ └── ItemUpgrade.png └── mcmod.info /.gitignore: -------------------------------------------------------------------------------- 1 | #General use .gitignore for Minecraft modding. 2 | 3 | #Folders 4 | /.gradle/* 5 | /build/* 6 | /eclipse/* 7 | /run/* 8 | /out/* 9 | /asm/* 10 | /bin/* 11 | /libs/* 12 | /lib/* 13 | /assets/* 14 | 15 | #File Extensions 16 | *.psd 17 | *.iml 18 | *.ipr 19 | *.iws 20 | *.classpath 21 | *.settings 22 | *.project 23 | *.zip 24 | *.DS_Store 25 | 26 | #Specific files 27 | Thumbs.db 28 | /bin/ 29 | /sources/ 30 | 31 | 32 | 33 | version.properties 34 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 08 21:43:22 CDT 2015 2 | minetweaker_version=Dev-1.7.10-3.0.9C 3 | package_group=chbachman.modularArmour 4 | cofhcore_version=[1.7.10]3.0.3-305-dev 5 | forge_version=10.13.4.1448-1.7.10 6 | mc_version=1.7.10 7 | ic2_version=2.2.485 8 | mod_name=ModularArmour 9 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jul 02 15:54:47 CDT 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-2.0-bin.zip 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'ModularArmour' -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | public class ColourAndCoords 6 | { 7 | public int colourRed; 8 | public int colourGreen; 9 | public int colourBlue; 10 | public int colourIntensity; 11 | 12 | public int xCoord; 13 | public int yCoord; 14 | public int zCoord; 15 | 16 | public ColourAndCoords(int red, int green, int blue, int intensity, int x, int y, int z) 17 | { 18 | this.colourRed = red; 19 | this.colourGreen = green; 20 | this.colourBlue = blue; 21 | this.colourIntensity = intensity; 22 | 23 | this.xCoord = x; 24 | this.yCoord = y; 25 | this.zCoord = z; 26 | } 27 | 28 | public static ColourAndCoords readFromNBT(NBTTagCompound tag) 29 | { 30 | return new ColourAndCoords(tag.getInteger("colourRed"), tag.getInteger("colourGreen"), tag.getInteger("colourBlue"), tag.getInteger("colourIntensity"), tag.getInteger("xCoord"), tag.getInteger("yCoord"), tag.getInteger("zCoord")); 31 | } 32 | 33 | public NBTTagCompound writeToNBT(NBTTagCompound tag) 34 | { 35 | tag.setInteger("colourRed", colourRed); 36 | tag.setInteger("colourGreen", colourGreen); 37 | tag.setInteger("colourBlue", colourBlue); 38 | tag.setInteger("colourIntensity", colourIntensity); 39 | tag.setInteger("xCoord", xCoord); 40 | tag.setInteger("yCoord", yCoord); 41 | tag.setInteger("zCoord", zCoord); 42 | 43 | return tag; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/ILimitingLogic.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | public interface ILimitingLogic 4 | { 5 | public int getRoutingLimit(); 6 | } 7 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/Int3.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | 6 | public class Int3 7 | { 8 | public int xCoord; 9 | public int yCoord; 10 | public int zCoord; 11 | 12 | public Int3(int xCoord, int yCoord, int zCoord) 13 | { 14 | this.xCoord = xCoord; 15 | this.yCoord = yCoord; 16 | this.zCoord = zCoord; 17 | } 18 | 19 | public static Int3 readFromNBT(NBTTagCompound tag) 20 | { 21 | return new Int3(tag.getInteger("xCoord"), tag.getInteger("yCoord"), tag.getInteger("zCoord")); 22 | } 23 | 24 | public NBTTagCompound writeToNBT(NBTTagCompound tag) 25 | { 26 | tag.setInteger("xCoord", xCoord); 27 | tag.setInteger("yCoord", yCoord); 28 | tag.setInteger("zCoord", zCoord); 29 | 30 | return tag; 31 | } 32 | 33 | @Override 34 | public boolean equals(Object o) 35 | { 36 | return o instanceof Int3 ? ((Int3) o).xCoord == this.xCoord && ((Int3) o).yCoord == this.yCoord && ((Int3) o).zCoord == this.zCoord : false; 37 | } 38 | 39 | @Override 40 | public int hashCode() 41 | { 42 | return this.xCoord + this.yCoord << 8 + this.zCoord << 16; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/RoutingFocusLogic.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class RoutingFocusLogic 6 | { 7 | public boolean getDefaultMatch(ItemStack keyStack, ItemStack checkedStack) 8 | { 9 | return (keyStack != null ? checkedStack != null && keyStack.getItem() == checkedStack.getItem() && (keyStack.getItem().getHasSubtypes() ? keyStack.getItemDamage() == checkedStack.getItemDamage() : true) : false); 10 | } 11 | 12 | public boolean doesItemMatch(boolean previous, ItemStack keyStack, ItemStack checkedStack) 13 | { 14 | return previous || this.getDefaultMatch(keyStack, checkedStack); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | import java.util.LinkedList; 4 | import java.util.List; 5 | 6 | import net.minecraft.item.ItemStack; 7 | 8 | public class RoutingFocusParadigm 9 | { 10 | public List logicList = new LinkedList(); 11 | 12 | public List locationList = new LinkedList(); 13 | 14 | public int maximumAmount = 0; 15 | 16 | public void addRoutingFocusPosAndFacing(RoutingFocusPosAndFacing facing) 17 | { 18 | locationList.add(facing); 19 | } 20 | 21 | public void addLogic(RoutingFocusLogic logic) 22 | { 23 | if(logic instanceof ILimitingLogic) 24 | { 25 | maximumAmount += ((ILimitingLogic)logic).getRoutingLimit(); 26 | } 27 | logicList.add(logic); 28 | } 29 | 30 | public boolean doesItemMatch(ItemStack keyStack, ItemStack checkedStack) 31 | { 32 | boolean isGood = false; 33 | boolean isFirst = true; 34 | for(RoutingFocusLogic logic : logicList) 35 | { 36 | if(isFirst) 37 | { 38 | isGood = logic.getDefaultMatch(keyStack, checkedStack); 39 | isFirst = false; 40 | continue; 41 | } 42 | isGood = logic.doesItemMatch(isGood, keyStack, checkedStack); 43 | } 44 | 45 | return isGood; 46 | } 47 | 48 | public void clear() 49 | { 50 | logicList.clear(); 51 | locationList.clear(); 52 | maximumAmount = 0; 53 | } 54 | 55 | public void setMaximumAmount(int amt) 56 | { 57 | this.maximumAmount = amt; 58 | } 59 | 60 | public int getMaximumAmount() 61 | { 62 | return this.maximumAmount; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/RoutingFocusPosAndFacing.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | public class RoutingFocusPosAndFacing 6 | { 7 | public Int3 location; 8 | public ForgeDirection facing; 9 | 10 | public RoutingFocusPosAndFacing(Int3 location, ForgeDirection facing) 11 | { 12 | this.location = location; 13 | this.facing = facing; 14 | } 15 | 16 | @Override 17 | public boolean equals(Object obj) 18 | { 19 | return obj instanceof RoutingFocusPosAndFacing ? facing.equals(((RoutingFocusPosAndFacing)obj).facing) && location.equals(((RoutingFocusPosAndFacing)obj).location) : false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/Vector3.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api; 2 | 3 | /* 4 | * Created in Scala by Alex-Hawks 5 | * Translated and implemented by Arcaratus 6 | */ 7 | public class Vector3 8 | { 9 | public int x, y, z; 10 | 11 | public Vector3(int x, int y, int z) 12 | { 13 | this.x = x; 14 | this.y = y; 15 | this.z = z; 16 | } 17 | 18 | public Vector3 add(Vector3 vec1) 19 | { 20 | return new Vector3(this.x + vec1.x, this.y + vec1.y, this.z + vec1.z); 21 | } 22 | 23 | @Override 24 | public String toString() 25 | { 26 | return "V3(" + x + "}, " + y + "}," + z + "})"; 27 | } 28 | 29 | private boolean canEqual(Object object) 30 | { 31 | return object instanceof Vector3; 32 | } 33 | 34 | @Override 35 | public boolean equals(Object object) 36 | { 37 | return object == this || object instanceof Vector3 && canEqual(this) && this.x == ((Vector3) object).x && this.y == ((Vector3) object).y && this.z == ((Vector3) object).z; 38 | } 39 | 40 | @Override 41 | public int hashCode() 42 | { 43 | return 48131 * x - 95021 * y + z; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.alchemy.energy; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface IAlchemyGoggles 8 | { 9 | boolean showIngameHUD(World world, ItemStack stack, EntityPlayer player); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.alchemy.energy; 2 | 3 | public interface IReagentContainer 4 | { 5 | ReagentStack getReagent(); 6 | 7 | int getReagentStackAmount(); 8 | 9 | int getCapacity(); 10 | 11 | int fill(ReagentStack resource, boolean doFill); 12 | 13 | ReagentStack drain(int maxDrain, boolean doDrain); 14 | 15 | ReagentContainerInfo getInfo(); 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.alchemy.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | public interface IReagentHandler 6 | { 7 | int fill(ForgeDirection from, ReagentStack resource, boolean doFill); 8 | 9 | ReagentStack drain(ForgeDirection from, ReagentStack resource, boolean doDrain); 10 | 11 | ReagentStack drain(ForgeDirection from, int maxDrain, boolean doDrain); 12 | 13 | boolean canFill(ForgeDirection from, Reagent reagent); 14 | 15 | boolean canDrain(ForgeDirection from, Reagent reagent); 16 | 17 | ReagentContainerInfo[] getContainerInfo(ForgeDirection from); 18 | } 19 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.alchemy.energy; 2 | 3 | import java.util.Map; 4 | 5 | public interface ISegmentedReagentHandler extends IReagentHandler 6 | { 7 | int getNumberOfTanks(); 8 | 9 | int getTanksTunedToReagent(Reagent reagent); 10 | 11 | void setTanksTunedToReagent(Reagent reagent, int total); 12 | 13 | Map getAttunedTankMap(); 14 | } 15 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.alchemy.energy; 2 | 3 | public class Reagent 4 | { 5 | public final String name; 6 | 7 | public static final int REAGENT_SIZE = 1000; 8 | 9 | private int colourRed = 0; 10 | private int colourGreen = 0; 11 | private int colourBlue = 0; 12 | private int colourIntensity = 255; 13 | 14 | public Reagent(String name) 15 | { 16 | this.name = name; 17 | } 18 | 19 | public void setColour(int red, int green, int blue, int intensity) 20 | { 21 | this.colourRed = red; 22 | this.colourGreen = green; 23 | this.colourBlue = blue; 24 | this.colourIntensity = intensity; 25 | } 26 | 27 | public int getColourRed() 28 | { 29 | return colourRed; 30 | } 31 | 32 | public int getColourGreen() 33 | { 34 | return colourGreen; 35 | } 36 | 37 | public int getColourBlue() 38 | { 39 | return colourBlue; 40 | } 41 | 42 | public int getColourIntensity() 43 | { 44 | return colourIntensity; 45 | } 46 | 47 | @Override 48 | public boolean equals(Object o) 49 | { 50 | return o instanceof Reagent && this == o && name.equals(((Reagent) o).name); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.alchemy.energy; 2 | 3 | public final class ReagentContainerInfo 4 | { 5 | public final ReagentStack reagent; 6 | public final int capacity; 7 | 8 | public ReagentContainerInfo(ReagentStack reagent, int capacity) 9 | { 10 | this.reagent = reagent; 11 | this.capacity = capacity; 12 | } 13 | 14 | public ReagentContainerInfo(IReagentContainer tank) 15 | { 16 | this.reagent = tank.getReagent(); 17 | this.capacity = tank.getCapacity(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/IFadedRune.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.altarRecipeRegistry; 2 | 3 | public interface IFadedRune 4 | { 5 | int getAltarTierLimit(int meta); 6 | } 7 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRecipe.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.bindingRegistry; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class BindingRecipe 6 | { 7 | public ItemStack requiredItem; 8 | public ItemStack outputItem; 9 | 10 | public BindingRecipe(ItemStack outputItem, ItemStack requiredItem) 11 | { 12 | this.requiredItem = requiredItem; 13 | this.outputItem = outputItem; 14 | } 15 | 16 | public boolean doesRequiredItemMatch(ItemStack testStack) 17 | { 18 | return !(testStack == null || this.requiredItem == null) && this.requiredItem.isItemEqual(testStack); 19 | } 20 | 21 | public ItemStack getResult(ItemStack inputItem) 22 | { 23 | return this.getResult(); 24 | } 25 | 26 | public ItemStack getResult() 27 | { 28 | return this.outputItem; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/bindingRegistry/UnbindingRecipe.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.bindingRegistry; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class UnbindingRecipe 6 | { 7 | public ItemStack requiredItem; 8 | public ItemStack outputItem; 9 | 10 | public UnbindingRecipe(ItemStack outputItem, ItemStack requiredItem) 11 | { 12 | this.requiredItem = requiredItem; 13 | this.outputItem = outputItem; 14 | } 15 | 16 | public boolean doesRequiredItemMatch(ItemStack testStack) 17 | { 18 | return !(testStack == null || this.requiredItem == null) && this.requiredItem.isItemEqual(testStack); 19 | } 20 | 21 | public ItemStack getResult(ItemStack inputItem) 22 | { 23 | return this.getResult(); 24 | } 25 | 26 | public ItemStack getResult() 27 | { 28 | return this.outputItem; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/compress/CompressionHandler.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.compress; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.world.World; 5 | 6 | public abstract class CompressionHandler 7 | { 8 | /** 9 | * Called to look at the inventory and syphons the required stack. Returns resultant stack if successful, and null if not. 10 | * @param inv The inventory iterated through 11 | * @return The result of the compression 12 | */ 13 | public abstract ItemStack compressInventory(ItemStack[] inv, World world); 14 | } 15 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/AddToNetworkEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import cpw.mods.fml.common.eventhandler.Cancelable; 4 | import cpw.mods.fml.common.eventhandler.Event; 5 | 6 | @Cancelable 7 | public class AddToNetworkEvent extends Event 8 | { 9 | public String ownerNetwork; 10 | public int addedAmount; 11 | public int maximum; 12 | 13 | /** 14 | * This event is called whenever the network is added to. If cancelled, no LP will be drained from the source. If result is set to Result.DENY, 15 | * the LP will still be drained but the soul network will not be added to. 16 | * 17 | * @param ownerNetwork Key used for the soul network 18 | * @param addedAmount Amount added 19 | * @param maximum Ceiling that the network can add to 20 | */ 21 | public AddToNetworkEvent(String ownerNetwork, int addedAmount, int maximum) 22 | { 23 | super(); 24 | this.ownerNetwork = ownerNetwork; 25 | this.addedAmount = addedAmount; 26 | this.maximum = maximum; 27 | } 28 | 29 | public String getOwnerNetwork() 30 | { 31 | return this.ownerNetwork; 32 | } 33 | 34 | public int getAddedAmount() 35 | { 36 | return this.addedAmount; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/ItemBindEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import cpw.mods.fml.common.eventhandler.Cancelable; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | import cpw.mods.fml.common.eventhandler.Event; 7 | 8 | @Cancelable 9 | public class ItemBindEvent extends Event 10 | { 11 | public final EntityPlayer player; 12 | public String key; 13 | public ItemStack itemStack; 14 | 15 | public ItemBindEvent(EntityPlayer player, String key, ItemStack itemStack) 16 | { 17 | super(); 18 | this.player = player; 19 | this.key = key; 20 | this.itemStack = itemStack; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/ItemDrainInContainerEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import cpw.mods.fml.common.eventhandler.Cancelable; 5 | 6 | @Cancelable 7 | public class ItemDrainInContainerEvent extends SoulNetworkEvent 8 | { 9 | public ItemStack stack; 10 | public ItemDrainInContainerEvent(ItemStack stack, String ownerNetwork, int drainAmount) 11 | { 12 | super(ownerNetwork, drainAmount); 13 | this.stack = stack; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/ItemDrainNetworkEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import cpw.mods.fml.common.eventhandler.Cancelable; 6 | 7 | @Cancelable 8 | public class ItemDrainNetworkEvent extends PlayerDrainNetworkEvent 9 | { 10 | public final ItemStack itemStack; 11 | public boolean shouldDamage; //If true, will damage regardless of if the network had enough inside it 12 | public float damageAmount; //Amount of damage that would incur if the network could not drain properly 13 | 14 | /** 15 | * Set result to deny the action i.e. damage/drain anyways. Cancelling event prevents action without penalties 16 | * 17 | * @param player Player using the item 18 | * @param ownerNetwork Network that the item is tied to 19 | * @param itemStack Item used 20 | * @param drainAmount Original drain amount - change to alter cost 21 | */ 22 | public ItemDrainNetworkEvent(EntityPlayer player, String ownerNetwork, ItemStack itemStack, int drainAmount) 23 | { 24 | super(player, ownerNetwork, drainAmount); 25 | this.itemStack = itemStack; 26 | this.shouldDamage = false; 27 | this.damageAmount = (float)(drainAmount) / 100.0f; 28 | } 29 | } -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/PlayerAddToNetworkEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import cpw.mods.fml.common.eventhandler.Cancelable; 6 | 7 | @Cancelable 8 | public class PlayerAddToNetworkEvent extends AddToNetworkEvent 9 | { 10 | public final EntityPlayer player; 11 | public ItemStack itemStack; 12 | public PlayerAddToNetworkEvent(EntityPlayer player, ItemStack itemStack, String ownerNetwork, int addedAmount, int maximum) 13 | { 14 | super(ownerNetwork, addedAmount, maximum); 15 | this.player = player; 16 | this.itemStack = itemStack; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/PlayerDrainNetworkEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import cpw.mods.fml.common.eventhandler.Cancelable; 5 | 6 | @Cancelable 7 | public class PlayerDrainNetworkEvent extends SoulNetworkEvent 8 | { 9 | public final EntityPlayer player; //Player that activated the event 10 | public PlayerDrainNetworkEvent(EntityPlayer player, String ownerNetwork, int drainAmount) 11 | { 12 | super(ownerNetwork, drainAmount); 13 | this.player = player; 14 | } 15 | 16 | public EntityPlayer getPlayer() 17 | { 18 | return player; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/RitualActivatedEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; 6 | import cpw.mods.fml.common.eventhandler.Cancelable; 7 | 8 | @Cancelable 9 | public class RitualActivatedEvent extends RitualEvent 10 | { 11 | public final EntityPlayer player; 12 | public final ItemStack crystalStack; 13 | public int crystalTier; 14 | 15 | public RitualActivatedEvent(IMasterRitualStone mrs, String ownerKey, String ritualKey, EntityPlayer player, ItemStack activationCrystal, int crystalTier) 16 | { 17 | super(mrs, ownerKey, ritualKey); 18 | 19 | this.player = player; 20 | this.crystalStack = activationCrystal; 21 | this.crystalTier = crystalTier; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/RitualEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; 4 | import cpw.mods.fml.common.eventhandler.Event; 5 | 6 | public class RitualEvent extends Event 7 | { 8 | public final IMasterRitualStone mrs; 9 | public String ownerKey; 10 | public final String ritualKey; 11 | 12 | public RitualEvent(IMasterRitualStone mrs, String ownerKey, String ritualKey) 13 | { 14 | this.mrs = mrs; 15 | this.ownerKey = ownerKey; 16 | this.ritualKey = ritualKey; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/RitualRunEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; 4 | import cpw.mods.fml.common.eventhandler.Cancelable; 5 | 6 | @Cancelable 7 | public class RitualRunEvent extends RitualEvent 8 | { 9 | 10 | 11 | public RitualRunEvent(IMasterRitualStone mrs, String ownerKey, String ritualKey) 12 | { 13 | super(mrs, ownerKey, ritualKey); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/RitualStopEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; 4 | import WayofTime.alchemicalWizardry.api.rituals.RitualBreakMethod; 5 | 6 | public class RitualStopEvent extends RitualEvent 7 | { 8 | public final RitualBreakMethod method; 9 | public RitualStopEvent(IMasterRitualStone mrs, String ownerKey, String ritualKey, RitualBreakMethod method) 10 | { 11 | super(mrs, ownerKey, ritualKey); 12 | 13 | this.method = method; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/SacrificeKnifeUsedEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import cpw.mods.fml.common.eventhandler.Cancelable; 5 | import cpw.mods.fml.common.eventhandler.Event; 6 | 7 | @Cancelable 8 | public class SacrificeKnifeUsedEvent extends Event 9 | { 10 | public final EntityPlayer player; 11 | public boolean shouldDrainHealth; 12 | public boolean shouldFillAltar; 13 | public final int healthDrained; 14 | 15 | public SacrificeKnifeUsedEvent(EntityPlayer player, boolean shouldDrainHealth, boolean shouldFillAltar, int hp) 16 | { 17 | this.player = player; 18 | this.shouldDrainHealth = shouldDrainHealth; 19 | this.shouldFillAltar = shouldFillAltar; 20 | this.healthDrained = hp; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/event/SoulNetworkEvent.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.event; 2 | 3 | import cpw.mods.fml.common.eventhandler.Event; 4 | 5 | public class SoulNetworkEvent extends Event 6 | { 7 | public String ownerNetwork; 8 | public int drainAmount; 9 | 10 | public SoulNetworkEvent(String ownerNetwork, int drainAmount) 11 | { 12 | super(); 13 | this.ownerNetwork = ownerNetwork; 14 | this.drainAmount = drainAmount; 15 | } 16 | 17 | public String getOwnerNetwork() 18 | { 19 | return this.ownerNetwork; 20 | } 21 | 22 | public int getDrainAmount() 23 | { 24 | return this.drainAmount; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/harvest/HarvestRegistry.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.harvest; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.world.World; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class HarvestRegistry 10 | { 11 | public static List handlerList = new ArrayList(); 12 | 13 | public static void registerHarvestHandler(IHarvestHandler handler) 14 | { 15 | handlerList.add(handler); 16 | } 17 | 18 | public static boolean harvestBlock(World world, int xCoord, int yCoord, int zCoord) 19 | { 20 | Block block = world.getBlock(xCoord, yCoord, zCoord); 21 | int meta = world.getBlockMetadata(xCoord, yCoord, zCoord); 22 | 23 | for (IHarvestHandler handler : handlerList) 24 | { 25 | if (handler.harvestAndPlant(world, xCoord, yCoord, zCoord, block, meta)) 26 | { 27 | return true; 28 | } 29 | } 30 | 31 | return false; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/harvest/IHarvestHandler.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.harvest; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.world.World; 5 | 6 | public interface IHarvestHandler 7 | { 8 | /** 9 | * A handler that is used to harvest and replant the block at the specified location 10 | * 11 | * @param world 12 | * @param xCoord 13 | * @param yCoord 14 | * @param zCoord 15 | * @param block block at this given location 16 | * @param meta meta at this given location 17 | * @return true if successfully harvested, false if not 18 | */ 19 | boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta); 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/IAltarManipulator.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items; 2 | 3 | public interface IAltarManipulator 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/ArmourUpgrade.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface ArmourUpgrade 8 | { 9 | //Called when the armour ticks 10 | void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack); 11 | 12 | boolean isUpgrade(); 13 | 14 | int getEnergyForTenSeconds(); 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBindable.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | public interface IBindable 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBloodOrb.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | public interface IBloodOrb 4 | { 5 | int getMaxEssence(); 6 | 7 | int getOrbLevel(); 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/IHolding.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | public interface IHolding 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/ILPGauge.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public interface ILPGauge 6 | { 7 | boolean canSeeLPBar(ItemStack itemStack); 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/IReagentManipulator.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | /** 4 | * Implement this interface to have reagent blocks return false on activating them, to allow manipulation of said block 5 | */ 6 | public interface IReagentManipulator 7 | { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/IRitualDiviner.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public interface IRitualDiviner { 6 | int cycleDirection(ItemStack stack); 7 | String getCurrentRitual(ItemStack stack); 8 | int getDirection(ItemStack stack); 9 | int getMaxRuneDisplacement(ItemStack stack); 10 | String getNameForDirection(int direction); 11 | void setCurrentRitual(ItemStack stack, String ritualID); 12 | void setDirection(ItemStack stack, int direction); 13 | void setMaxRuneDisplacement(ItemStack stack, int displacement); 14 | } 15 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/items/interfaces/ISigil.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.items.interfaces; 2 | 3 | public interface ISigil { 4 | } 5 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/renderer/MRSRenderer.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.renderer; 2 | 3 | import net.minecraft.client.renderer.texture.TextureManager; 4 | import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; 5 | import net.minecraft.util.ResourceLocation; 6 | import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; 7 | 8 | public abstract class MRSRenderer 9 | { 10 | public abstract void renderAt(IMasterRitualStone tile, double x, double y, double z); 11 | 12 | protected void bindTexture(ResourceLocation p_147499_1_) 13 | { 14 | TextureManager texturemanager = TileEntityRendererDispatcher.instance.field_147553_e; 15 | 16 | if (texturemanager != null) 17 | { 18 | texturemanager.bindTexture(p_147499_1_); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/rituals/IMasterRitualStone.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.rituals; 2 | 3 | import WayofTime.alchemicalWizardry.api.alchemy.energy.ISegmentedReagentHandler; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | import net.minecraft.world.World; 6 | 7 | public interface IMasterRitualStone extends ISegmentedReagentHandler 8 | { 9 | void performRitual(World world, int x, int y, int z, String ritualID); 10 | 11 | String getOwner(); 12 | 13 | void setCooldown(int newCooldown); 14 | 15 | int getCooldown(); 16 | 17 | void setVar1(int newVar1); 18 | 19 | int getVar1(); 20 | 21 | void setActive(boolean active); 22 | 23 | int getDirection(); 24 | 25 | World getWorld(); 26 | 27 | int getXCoord(); 28 | 29 | int getYCoord(); 30 | 31 | int getZCoord(); 32 | 33 | NBTTagCompound getCustomRitualTag(); 34 | 35 | void setCustomRitualTag(NBTTagCompound tag); 36 | 37 | boolean areTanksEmpty(); 38 | 39 | int getRunningTime(); 40 | 41 | LocalRitualStorage getLocalStorage(); 42 | 43 | void setLocalStorage(LocalRitualStorage storage); 44 | } 45 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.rituals; 2 | 3 | import net.minecraft.world.World; 4 | 5 | public interface IRitualStone 6 | { 7 | /** 8 | * x, y, and z give the position of the Ritual Stone 9 | * @param world 10 | * @param x 11 | * @param y 12 | * @param z 13 | * @param meta 14 | * @param runeType 15 | * @return 16 | */ 17 | boolean isRuneType(World world, int x, int y, int z, int meta, int runeType); 18 | } 19 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/rituals/ITileRitualStone.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.rituals; 2 | 3 | public interface ITileRitualStone 4 | { 5 | boolean isRuneType(int runeType); 6 | } 7 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/rituals/LocalRitualStorage.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.rituals; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | import WayofTime.alchemicalWizardry.api.Int3; 5 | 6 | /** 7 | * This class is used to pass ritual-specific data into the RitualEffect from the containing Master Ritual Stone. This is basically used as auxillarary storage, 8 | * for when simply storing to NBT becomes... difficult. 9 | * 10 | */ 11 | public class LocalRitualStorage 12 | { 13 | public int xCoord; 14 | public int yCoord; 15 | public int zCoord; 16 | 17 | public void writeToNBT(NBTTagCompound tag) 18 | { 19 | tag.setInteger("xCoord", xCoord); 20 | tag.setInteger("yCoord", yCoord); 21 | tag.setInteger("zCoord", zCoord); 22 | } 23 | 24 | public void readFromNBT(NBTTagCompound tag) 25 | { 26 | this.xCoord = tag.getInteger("xCoord"); 27 | this.yCoord = tag.getInteger("yCoord"); 28 | this.zCoord = tag.getInteger("zCoord"); 29 | } 30 | 31 | public Int3 getLocation() 32 | { 33 | return new Int3(xCoord, yCoord, zCoord); 34 | } 35 | 36 | public void setLocation(Int3 location) 37 | { 38 | this.xCoord = location.xCoord; 39 | this.yCoord = location.yCoord; 40 | this.zCoord = location.zCoord; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/rituals/RitualBreakMethod.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.rituals; 2 | 3 | public enum RitualBreakMethod 4 | { 5 | REDSTONE, 6 | BREAK_MRS, 7 | BREAK_STONE, 8 | ACTIVATE, //When an activation crystal activates the MRS, overwriting the current ritual 9 | DEACTIVATE, 10 | EXPLOSION, //When the MRS is destroyed by an explosion 11 | } 12 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/sacrifice/IIncense.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.sacrifice; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public interface IIncense 6 | { 7 | int getMinLevel(ItemStack stack); 8 | 9 | int getMaxLevel(ItemStack stack); 10 | 11 | int getIncenseDuration(ItemStack stack); 12 | 13 | /** 14 | * @param stack 15 | * @return a float from 0 to 1 16 | */ 17 | float getRedColour(ItemStack stack); 18 | float getGreenColour(ItemStack stack); 19 | float getBlueColour(ItemStack stack); 20 | float getTickRate(ItemStack stack); 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/soulNetwork/LifeEssenceNetwork.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.soulNetwork; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | public class LifeEssenceNetwork extends net.minecraft.world.WorldSavedData 6 | { 7 | public int currentEssence; 8 | public int maxOrb; 9 | 10 | public LifeEssenceNetwork(String par1Str) 11 | { 12 | super(par1Str); 13 | currentEssence = 0; 14 | maxOrb = 0; 15 | } 16 | 17 | @Override 18 | public void readFromNBT(NBTTagCompound nbttagcompound) 19 | { 20 | currentEssence = nbttagcompound.getInteger("currentEssence"); 21 | maxOrb = nbttagcompound.getInteger("maxOrb"); 22 | } 23 | 24 | @Override 25 | public void writeToNBT(NBTTagCompound nbttagcompound) 26 | { 27 | nbttagcompound.setInteger("currentEssence", currentEssence); 28 | nbttagcompound.setInteger("maxOrb", maxOrb); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ComplexSpellModifier.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public class ComplexSpellModifier 4 | { 5 | public static ComplexSpellModifier DEFAULT = new ComplexSpellModifier(); 6 | public static ComplexSpellModifier OFFENSIVE = new ComplexSpellModifier(); 7 | public static ComplexSpellModifier DEFENSIVE = new ComplexSpellModifier(); 8 | public static ComplexSpellModifier ENVIRONMENTAL = new ComplexSpellModifier(); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ComplexSpellType.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public class ComplexSpellType 4 | { 5 | public static ComplexSpellType FIRE = new ComplexSpellType(); 6 | public static ComplexSpellType ICE = new ComplexSpellType(); 7 | public static ComplexSpellType EARTH = new ComplexSpellType(); 8 | public static ComplexSpellType WIND = new ComplexSpellType(); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IDigAreaEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import WayofTime.alchemicalWizardry.api.items.ItemSpellMultiTool; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.util.MovingObjectPosition; 7 | import net.minecraft.world.World; 8 | 9 | public interface IDigAreaEffect 10 | { 11 | int digSurroundingArea(ItemStack container, World world, EntityPlayer player, MovingObjectPosition blockPos, String usedToolClass, float blockHardness, int harvestLvl, ItemSpellMultiTool itemTool); 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IItemManipulator.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | import java.util.List; 6 | 7 | public interface IItemManipulator 8 | { 9 | public List handleItemsOnBlockBroken(ItemStack toolStack, List itemList); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ILeftClickEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.item.ItemStack; 5 | 6 | public interface ILeftClickEffect 7 | { 8 | int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IMeleeSpellEntityEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.world.World; 5 | 6 | public interface IMeleeSpellEntityEffect 7 | { 8 | void onEntityImpact(World world, EntityPlayer entityPlayer); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IMeleeSpellWorldEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.world.World; 5 | 6 | public interface IMeleeSpellWorldEffect 7 | { 8 | void onWorldEffect(World world, EntityPlayer entityPlayer); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IOnBanishTool.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface IOnBanishTool 8 | { 9 | int onBanishTool(ItemStack toolStack, World world, Entity entity, int invSlot, boolean inHand); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IOnBreakBlock.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.world.World; 7 | import net.minecraftforge.common.util.ForgeDirection; 8 | 9 | public interface IOnBreakBlock 10 | { 11 | int onBlockBroken(ItemStack container, World world, EntityPlayer player, Block block, int meta, int x, int y, int z, ForgeDirection sideBroken); 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IOnSummonTool.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface IOnSummonTool 8 | { 9 | int onSummonTool(ItemStack toolStack, World world, Entity entity); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IProjectileImpactEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.util.MovingObjectPosition; 5 | import net.minecraft.world.World; 6 | 7 | public interface IProjectileImpactEffect 8 | { 9 | void onEntityImpact(Entity mop, Entity projectile); 10 | 11 | void onTileImpact(World world, MovingObjectPosition mop); 12 | } 13 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IProjectileUpdateEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.Entity; 4 | 5 | public interface IProjectileUpdateEffect 6 | { 7 | void onUpdateEffect(Entity projectile); 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IRightClickEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.util.MovingObjectPosition; 6 | import net.minecraft.world.World; 7 | 8 | public interface IRightClickEffect 9 | { 10 | //public abstract int onRightClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder); 11 | 12 | int onRightClickBlock(ItemStack stack, EntityLivingBase weilder, World world, MovingObjectPosition mop); 13 | 14 | int onRightClickAir(ItemStack stack, EntityLivingBase weilder); 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ISelfSpellEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.world.World; 5 | 6 | public interface ISelfSpellEffect 7 | { 8 | void onSelfUse(World world, EntityPlayer player); 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ISpecialDamageEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.Entity; 4 | 5 | public interface ISpecialDamageEffect 6 | { 7 | float getDamageForEntity(Entity entity); 8 | 9 | String getKey(); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/IToolUpdateEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface IToolUpdateEffect 8 | { 9 | int onUpdate(ItemStack toolStack, World world, Entity par3Entity, int invSlot, boolean inHand); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/MeleeSpellCenteredWorldEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.util.Vec3; 5 | import net.minecraft.world.World; 6 | 7 | public abstract class MeleeSpellCenteredWorldEffect extends MeleeSpellWorldEffect 8 | { 9 | protected float range; 10 | 11 | public MeleeSpellCenteredWorldEffect(int power, int potency, int cost) 12 | { 13 | super(power, potency, cost); 14 | } 15 | 16 | @Override 17 | public void onWorldEffect(World world, EntityPlayer entityPlayer) 18 | { 19 | Vec3 lookVec = entityPlayer.getLook(range).normalize(); 20 | int x = (int) (entityPlayer.posX + lookVec.xCoord * range); 21 | int y = (int) (entityPlayer.posY + entityPlayer.getEyeHeight() + lookVec.yCoord * range); 22 | int z = (int) (entityPlayer.posZ + lookVec.zCoord * range); 23 | 24 | this.onCenteredWorldEffect(entityPlayer, world, x, y, z); 25 | } 26 | 27 | public void setRange(float range) 28 | { 29 | this.range = range; 30 | } 31 | 32 | public abstract void onCenteredWorldEffect(EntityPlayer player, World world, int posX, int posY, int posZ); 33 | } 34 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/MeleeSpellWorldEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.world.World; 5 | 6 | public abstract class MeleeSpellWorldEffect implements IMeleeSpellWorldEffect 7 | { 8 | protected int powerUpgrades; 9 | protected int potencyUpgrades; 10 | protected int costUpgrades; 11 | 12 | public MeleeSpellWorldEffect(int power, int potency, int cost) 13 | { 14 | this.powerUpgrades = power; 15 | this.potencyUpgrades = potency; 16 | this.costUpgrades = cost; 17 | } 18 | 19 | @Override 20 | public abstract void onWorldEffect(World world, EntityPlayer entityPlayer); 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ProjectileImpactEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public abstract class ProjectileImpactEffect implements IProjectileImpactEffect 4 | { 5 | protected int powerUpgrades; 6 | protected int potencyUpgrades; 7 | protected int costUpgrades; 8 | 9 | public ProjectileImpactEffect(int power, int potency, int cost) 10 | { 11 | this.powerUpgrades = power; 12 | this.potencyUpgrades = potency; 13 | this.costUpgrades = cost; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/ProjectileUpdateEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public abstract class ProjectileUpdateEffect implements IProjectileUpdateEffect 4 | { 5 | protected int powerUpgrades; 6 | protected int potencyUpgrades; 7 | protected int costUpgrades; 8 | 9 | public ProjectileUpdateEffect(int power, int potency, int cost) 10 | { 11 | this.powerUpgrades = power; 12 | this.potencyUpgrades = potency; 13 | this.costUpgrades = cost; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/SelfSpellEffect.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public abstract class SelfSpellEffect implements ISelfSpellEffect 4 | { 5 | protected int powerUpgrades; 6 | protected int potencyUpgrades; 7 | protected int costUpgrades; 8 | 9 | public SelfSpellEffect(int power, int potency, int cost) 10 | { 11 | this.powerUpgrades = power; 12 | this.potencyUpgrades = potency; 13 | this.costUpgrades = cost; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/SpellEnhancement.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public class SpellEnhancement 4 | { 5 | public static final int POWER = 0; 6 | public static final int EFFICIENCY = 1; 7 | public static final int POTENCY = 2; 8 | 9 | private int state = POWER; 10 | 11 | protected SpellEnhancement(int state) 12 | { 13 | this.state = state; 14 | } 15 | 16 | public int getState() 17 | { 18 | return this.state; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/SpellEnhancementCost.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public class SpellEnhancementCost extends SpellEnhancement 4 | { 5 | public SpellEnhancementCost() 6 | { 7 | super(SpellEnhancement.EFFICIENCY); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/SpellEnhancementPotency.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public class SpellEnhancementPotency extends SpellEnhancement 4 | { 5 | public SpellEnhancementPotency() 6 | { 7 | super(SpellEnhancement.POTENCY); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/SpellEnhancementPower.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | public class SpellEnhancementPower extends SpellEnhancement 4 | { 5 | public SpellEnhancementPower() 6 | { 7 | super(SpellEnhancement.POWER); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/spell/SpellParadigmSelf.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.spell; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.world.World; 9 | import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; 10 | 11 | public class SpellParadigmSelf extends SpellParadigm 12 | { 13 | public List selfSpellEffectList; 14 | 15 | public SpellParadigmSelf() 16 | { 17 | selfSpellEffectList = new ArrayList(); 18 | } 19 | 20 | @Override 21 | public void enhanceParadigm(SpellEnhancement enh) 22 | { 23 | 24 | } 25 | 26 | @Override 27 | public void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack) 28 | { 29 | this.applyAllSpellEffects(); 30 | 31 | int cost = this.getTotalCost(); 32 | 33 | if(!SoulNetworkHandler.syphonAndDamageFromNetwork(itemStack, entityPlayer, cost)) 34 | { 35 | return; 36 | } 37 | 38 | for (ISelfSpellEffect eff : selfSpellEffectList) 39 | { 40 | eff.onSelfUse(world, entityPlayer); 41 | } 42 | } 43 | 44 | public void addSelfSpellEffect(ISelfSpellEffect eff) 45 | { 46 | if (eff != null) 47 | { 48 | this.selfSpellEffectList.add(eff); 49 | } 50 | } 51 | 52 | @Override 53 | public int getDefaultCost() 54 | { 55 | return 100; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningHelper.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.summoningRegistry; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.world.World; 5 | 6 | public abstract class SummoningHelper 7 | { 8 | protected String id; 9 | 10 | public SummoningHelper(String id) 11 | { 12 | this.id = id; 13 | } 14 | 15 | public abstract EntityLivingBase getEntity(World worldObj); 16 | 17 | public String getSummoningHelperID() 18 | { 19 | return id; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/tile/IBloodAltar.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.tile; 2 | 3 | /** 4 | * Created by Pokefenn. 5 | */ 6 | public interface IBloodAltar 7 | { 8 | int getCapacity(); 9 | 10 | int getCurrentBlood(); 11 | 12 | int getTier(); 13 | 14 | int getProgress(); 15 | 16 | float getSacrificeMultiplier(); 17 | 18 | float getSelfSacrificeMultiplier(); 19 | 20 | float getOrbMultiplier(); 21 | 22 | float getDislocationMultiplier(); 23 | 24 | int getBufferCapacity(); 25 | 26 | void sacrificialDaggerCall(int amount, boolean b); 27 | 28 | void startCycle(); 29 | 30 | /** 31 | * Will set the altar to initiate a cooldown cycle after it crafts before starting to craft again, giving the user time to interact with the altar. 32 | * This can only be set while the altar is not active. 33 | * @param amount 34 | */ 35 | void requestPauseAfterCrafting(int amount); 36 | 37 | void addToDemonBloodDuration(int dur); 38 | 39 | boolean hasDemonBlood(); 40 | 41 | void decrementDemonBlood(); 42 | } 43 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/tile/ISpellParadigmTile.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.tile; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface ISpellParadigmTile extends ISpellTile 8 | { 9 | void castSpell(World world, EntityPlayer entity, ItemStack spellCasterStack); 10 | } 11 | -------------------------------------------------------------------------------- /src/api/java/WayofTime/alchemicalWizardry/api/tile/ISpellTile.java: -------------------------------------------------------------------------------- 1 | package WayofTime.alchemicalWizardry.api.tile; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | import WayofTime.alchemicalWizardry.api.spell.SpellParadigm; 5 | 6 | public interface ISpellTile 7 | { 8 | void modifySpellParadigm(SpellParadigm parad); 9 | 10 | boolean canInputRecieveOutput(ForgeDirection output); 11 | } 12 | -------------------------------------------------------------------------------- /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 | * @author Azanor 9 | * 10 | * This interface should be extended by items that can be worn in bauble slots 11 | * 12 | */ 13 | 14 | public interface IBauble { 15 | 16 | /** 17 | * This method return the type of bauble this is. 18 | * Type is used to determine the slots it can go into. 19 | */ 20 | public BaubleType getBaubleType(ItemStack itemstack); 21 | 22 | /** 23 | * This method is called once per tick if the bauble is being worn by a player 24 | */ 25 | public void onWornTick(ItemStack itemstack, EntityLivingBase player); 26 | 27 | /** 28 | * This method is called when the bauble is equipped by a player 29 | */ 30 | public void onEquipped(ItemStack itemstack, EntityLivingBase player); 31 | 32 | /** 33 | * This method is called when the bauble is unequipped by a player 34 | */ 35 | public void onUnequipped(ItemStack itemstack, EntityLivingBase player); 36 | 37 | /** 38 | * can this bauble be placed in a bauble slot 39 | */ 40 | public boolean canEquip(ItemStack itemstack, EntityLivingBase player); 41 | 42 | /** 43 | * Can this bauble be removed from a bauble slot 44 | */ 45 | public boolean canUnequip(ItemStack itemstack, EntityLivingBase player); 46 | } 47 | -------------------------------------------------------------------------------- /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/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 | 5 | /** 6 | * 7 | * @author azanor 8 | * 9 | * Used by wispy essences and essentia phials to hold their aspects. 10 | * Useful for similar item containers that store their aspect information in nbt form so TC 11 | * automatically picks up the aspects they contain 12 | * 13 | */ 14 | public interface IEssentiaContainerItem { 15 | public AspectList getAspects(ItemStack itemstack); 16 | public void setAspects(ItemStack itemstack, AspectList aspects); 17 | } 18 | 19 | //Example implementation 20 | /* 21 | @Override 22 | public AspectList getAspects(ItemStack itemstack) { 23 | if (itemstack.hasTagCompound()) { 24 | AspectList aspects = new AspectList(); 25 | aspects.readFromNBT(itemstack.getTagCompound()); 26 | return aspects.size()>0?aspects:null; 27 | } 28 | return null; 29 | } 30 | 31 | @Override 32 | public void setAspects(ItemStack itemstack, AspectList aspects) { 33 | if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound()); 34 | aspects.writeToNBT(itemstack.getTagCompound()); 35 | } 36 | */ -------------------------------------------------------------------------------- /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/ITaintedMob.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.entities; 2 | 3 | public interface ITaintedMob { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /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.0.0", provides = "Thaumcraft|API") 2 | package thaumcraft.api; 3 | 4 | import cpw.mods.fml.common.API; 5 | 6 | -------------------------------------------------------------------------------- /src/api/java/thaumcraft/api/potions/PotionVisExhaust.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.potions; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.entity.EntityLivingBase; 5 | import net.minecraft.potion.Potion; 6 | import net.minecraft.util.ResourceLocation; 7 | import cpw.mods.fml.relauncher.Side; 8 | import cpw.mods.fml.relauncher.SideOnly; 9 | 10 | public class PotionVisExhaust extends Potion 11 | { 12 | public static PotionVisExhaust instance = null; // will be instantiated at runtime 13 | private int statusIconIndex = -1; 14 | 15 | public PotionVisExhaust(int par1, boolean par2, int par3) 16 | { 17 | super(par1,par2,par3); 18 | setIconIndex(0, 0); 19 | } 20 | 21 | public static void init() 22 | { 23 | instance.setPotionName("potion.visexhaust"); 24 | instance.setIconIndex(5, 1); 25 | instance.setEffectiveness(0.25D); 26 | } 27 | 28 | @Override 29 | public boolean isBadEffect() { 30 | return true; 31 | } 32 | 33 | @Override 34 | @SideOnly(Side.CLIENT) 35 | public int getStatusIconIndex() { 36 | Minecraft.getMinecraft().renderEngine.bindTexture(rl); 37 | return super.getStatusIconIndex(); 38 | } 39 | 40 | static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); 41 | 42 | @Override 43 | public void performEffect(EntityLivingBase target, int par2) { 44 | 45 | } 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /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/thaumcraft/api/wands/StaffRod.java: -------------------------------------------------------------------------------- 1 | package thaumcraft.api.wands; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.util.ResourceLocation; 5 | 6 | /** 7 | * 8 | * @author Azanor 9 | * 10 | * This class is used to keep the material information for the various rods. 11 | * It is also used to generate the wand recipes ingame. 12 | * 13 | */ 14 | public class StaffRod extends WandRod { 15 | 16 | boolean runes=false; 17 | 18 | public StaffRod(String tag, int capacity, ItemStack item, int craftCost) { 19 | super(tag+"_staff", capacity, item, craftCost); 20 | this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); 21 | } 22 | 23 | public StaffRod(String tag, int capacity, ItemStack item, int craftCost, 24 | IWandRodOnUpdate onUpdate, ResourceLocation texture) { 25 | super(tag+"_staff", capacity, item, craftCost, onUpdate, texture); 26 | } 27 | 28 | public StaffRod(String tag, int capacity, ItemStack item, int craftCost, 29 | IWandRodOnUpdate onUpdate) { 30 | super(tag+"_staff", capacity, item, craftCost, onUpdate); 31 | this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); 32 | } 33 | 34 | public StaffRod(String tag, int capacity, ItemStack item, int craftCost, 35 | ResourceLocation texture) { 36 | super(tag+"_staff", capacity, item, craftCost, texture); 37 | } 38 | 39 | public boolean hasRunes() { 40 | return runes; 41 | } 42 | 43 | public void setRunes(boolean hasRunes) { 44 | this.runes = hasRunes; 45 | } 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Nov 1, 2014, 6:26:40 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.brew; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * An Item that implements this counts as a Brew Container, by which 18 | * it can be used a center item for brew recipes and can contain 19 | * a brew. 20 | */ 21 | public interface IBrewContainer { 22 | 23 | /** 24 | * Returs an ItemStack that should be an item that has the brew 25 | * passed in. 26 | */ 27 | public ItemStack getItemForBrew(Brew brew, ItemStack stack); 28 | 29 | /** 30 | * Gets the cost to add this brew onto this container. Return -1 31 | * to not allow for the brew to be added. Normally you'd 32 | * use brew.getManaCost(stack); 33 | */ 34 | public int getManaCost(Brew brew, ItemStack stack); 35 | 36 | } 37 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Nov 1, 2014, 9:20:33 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.brew; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * An Item that implements this is a Brew item, by which it contains 18 | * a brew. This is only used in vanilla to prevent the brew item 19 | * from going back into the brewery but other mods might use it for whatever. 20 | */ 21 | public interface IBrewItem { 22 | 23 | public Brew getBrew(ItemStack brew); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/internal/DummyManaNetwork.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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Mar 7, 2014, 3:47:43 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.internal; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | import net.minecraft.tileentity.TileEntity; 18 | import net.minecraft.util.ChunkCoordinates; 19 | import net.minecraft.world.World; 20 | import vazkii.botania.api.mana.TileSignature; 21 | 22 | public class DummyManaNetwork implements IManaNetwork { 23 | 24 | public static final DummyManaNetwork instance = new DummyManaNetwork(); 25 | 26 | @Override 27 | public void clear() { 28 | // NO-OP 29 | } 30 | 31 | @Override 32 | public TileEntity getClosestPool(ChunkCoordinates pos, World world, int limit) { 33 | return null; 34 | } 35 | 36 | @Override 37 | public TileEntity getClosestCollector(ChunkCoordinates pos, World world, int limit) { 38 | return null; 39 | } 40 | 41 | @Override 42 | public List getAllCollectorsInWorld(World world) { 43 | return new ArrayList(); 44 | } 45 | 46 | @Override 47 | public List getAllPoolsInWorld(World world) { 48 | return new ArrayList(); 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 14, 2014, 6:41:23 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.internal; 13 | 14 | import vazkii.botania.api.lexicon.LexiconPage; 15 | import cpw.mods.fml.relauncher.Side; 16 | import cpw.mods.fml.relauncher.SideOnly; 17 | 18 | /** 19 | * A dummy page. It does absolutely nothing and is only 20 | * existant to make sure everything goes right even if 21 | * Botania isn't loaded. 22 | */ 23 | public class DummyPage extends LexiconPage { 24 | 25 | public DummyPage(String unlocalizedName) { 26 | super(unlocalizedName); 27 | } 28 | 29 | @Override 30 | @SideOnly(Side.CLIENT) 31 | public void renderScreen(IGuiLexiconEntry gui, int x, int y) { 32 | // NO-OP 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 24, 2014, 4:17:33 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.internal; 13 | 14 | import vazkii.botania.api.subtile.SubTileEntity; 15 | 16 | public class DummySubTile extends SubTileEntity { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Oct 29, 2014, 6:31:35 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.internal; 13 | 14 | /** 15 | * A Callback for when a shader is called. Used to define shader uniforms. 16 | */ 17 | public abstract class ShaderCallback { 18 | 19 | public abstract void call(int shader); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Aug 30, 2014, 4:28:29 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | 14 | /** 15 | * A TileEntity that implements this can be heated by an Exoflame flower. 16 | */ 17 | public interface IExoflameHeatable { 18 | 19 | /** 20 | * Can this TileEntity smelt its contents. If true, the Exoflame is allowed 21 | * to fuel it. 22 | */ 23 | public boolean canSmelt(); 24 | 25 | /** 26 | * Gets the amount of ticks left for the fuel. If below 2, the exoflame 27 | * will call boostBurnTime. 28 | */ 29 | public int getBurnTime(); 30 | 31 | /** 32 | * Called to increase the amount of time this furnace should be burning 33 | * the fuel for. Even if it doesn't have any fuel. 34 | */ 35 | public void boostBurnTime(); 36 | 37 | /** 38 | * Called once every two ticks to increase the speed of the furnace. Feel 39 | * free to not do anything if all you want is to allow the exoflame to feed 40 | * it, not make it faster. 41 | */ 42 | public void boostCookTime(); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Aug 6, 2014, 6:02:29 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | 14 | /** 15 | * An interface that defines an instance of PlayerControllerMP with 16 | * the ability to modify reach. See vazkii.botania.client.core.handler.BotaniaPlayerController 17 | */ 18 | public interface IExtendedPlayerController { 19 | 20 | /** 21 | * Sets the extra reach the player should have. 22 | */ 23 | public void setReachDistanceExtension(float f); 24 | 25 | /** 26 | * Gets the current reach extension. 27 | */ 28 | public float getReachDistanceExtension(); 29 | } 30 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [? (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | import net.minecraft.world.World; 14 | /** 15 | * A BiomeGenBase that implements this will not have Botania flowers generated. 16 | */ 17 | public interface IFlowerlessBiome { 18 | /** 19 | * @return Should this world be allowed to generate flowers? 20 | */ 21 | public boolean canGenerateFlowers(World world, int x, int z); 22 | } -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [? (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | 14 | import net.minecraft.world.World; 15 | 16 | /** 17 | * A WorldProvider that implements this will not have Botania flowers generated. 18 | */ 19 | public interface IFlowerlessWorld { 20 | 21 | /** 22 | * @return Should this world be allowed to generate flowers? 23 | */ 24 | public boolean generateFlowers(World world); 25 | } 26 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Oct 29, 2014, 4:52:04 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | 14 | import net.minecraft.world.World; 15 | 16 | /** 17 | * A BlockBush can implement this to check if it can be broken 18 | * by a Horn/Drum of the Wild or not. 19 | */ 20 | public interface IGrassHornExcempt { 21 | 22 | public boolean canUproot(World world, int x, int y, int z); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Aug 30, 2014, 4:22:15 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | 14 | /** 15 | * Base Interface for the Petal Apothecary block. Can 16 | * be safely casted to TileEntity. 17 | */ 18 | public interface IPetalApothecary { 19 | 20 | /** 21 | * Sets if the the apothecary has water or not. 22 | */ 23 | public void setWater(boolean water); 24 | 25 | /** 26 | * Does the apothecary have water in it? 27 | */ 28 | public boolean hasWater(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Aug 6, 2014, 6:06:27 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.item; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * Any item that implements this allows for pixies to be spawned when the player takes damage when...
18 | * - Case the item is armor, having it equipped.
19 | * - Case the item is a bauble, having it worn.
20 | * - On any other case, having the item being the current held item. 21 | */ 22 | public interface IPixieSpawner { 23 | 24 | /** 25 | * The chance this item adds for pixies to be spawned. From 0.0 to 1.0. All values 26 | * are put together when calculating. 27 | */ 28 | public float getPixieChance(ItemStack stack); 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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jun 8, 2014, 7:02:48 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.lexicon; 13 | 14 | /** 15 | * Have a LexiconEntry implement this to signify it's an "Addon entry", as 16 | * in, one provided by an Addon. This allows it to draw a subtitle of 17 | * sorts, to prevent the [Mod tag here] nonsense that happened with thaumcraft 18 | * addons. It can also be used for other purposes, such as stating an 19 | * entry is WIP. 20 | */ 21 | public interface IAddonEntry { 22 | 23 | /** 24 | * Returns the unlocalized subtitle to show below the title. Here you'd 25 | * return something like "(This Entry is provided by the Botanic Tinkerer addon)". 26 | */ 27 | public String getSubtitle(); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 20, 2014, 7:05:44 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.lexicon; 13 | 14 | import net.minecraft.entity.player.EntityPlayer; 15 | import net.minecraft.item.ItemStack; 16 | import net.minecraft.world.World; 17 | 18 | /** 19 | * Any block that implements this can be right clicked with 20 | * a Lexica Botania to open a entry page. 21 | */ 22 | public interface ILexiconable { 23 | 24 | /** 25 | * Gets the lexicon entry to open at this location. null works too. 26 | */ 27 | public LexiconEntry getEntry(World world, int x, int y, int z, EntityPlayer player, ItemStack lexicon); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Mar 20, 2014, 6:08:48 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.lexicon; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * Have an Item implement this so that the method used for mapping it into 18 | * the lexicon recipe mappings isn't the typical id:meta key. 19 | */ 20 | public interface IRecipeKeyProvider { 21 | 22 | public String getKey(ItemStack stack); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Nov 3, 2014, 2:59:55 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.lexicon; 13 | 14 | /** 15 | * A LexiconPage that implements this has two unlocalized names 16 | * rather than one. (See brew pages) 17 | */ 18 | public interface ITwoNamedPage { 19 | 20 | public void setSecondUnlocalizedName(String name); 21 | 22 | public String getSecondUnlocalizedName(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /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/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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 31, 2014, 3:49:30 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * The properties of a mana burst, when shot. This is passed to the lens 16 | * currently on the mana spreader to apply changes. 17 | */ 18 | public final class BurstProperties { 19 | 20 | public int maxMana; 21 | public int ticksBeforeManaLoss; 22 | public float manaLossPerTick; 23 | public float gravity; 24 | public float motionModifier; 25 | 26 | public int color; 27 | 28 | public BurstProperties(int maxMana, int ticksBeforeManaLoss, float manaLossPerTick, float gravity, float motionModifier, int color) { 29 | this.maxMana = maxMana; 30 | this.ticksBeforeManaLoss = ticksBeforeManaLoss; 31 | this.manaLossPerTick = manaLossPerTick; 32 | this.gravity = gravity; 33 | this.motionModifier = motionModifier; 34 | this.color = color; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jul 2, 2014, 5:26:02 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * A TileEntity that implements this will get it's recieveMana call 16 | * called on both client and server. If this is not implemented 17 | * the call will only occur on the server. 18 | */ 19 | public interface IClientManaHandler extends IManaReceiver { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [May 25, 2014, 7:34:00 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * Have an item implement this to flag it as an infinite 18 | * mana source for the purposes of the HUD rendered when 19 | * an IManaUserItem implementing item is present. 20 | */ 21 | public interface ICreativeManaProvider { 22 | 23 | public boolean isCreative(ItemStack stack); 24 | 25 | } 26 | 27 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jul 11, 2014, 4:29:32 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * A TileEntity that implements this interface has an IO key lock. This 16 | * interface defines an input and output key.

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

20 | * 21 | * A Spreader can only pull mana from a IKeyLocked interfaced IManaPool TE if the 22 | * Output key of the IManaPool is equal to the Input key of the Spreader. 23 | */ 24 | public interface IKeyLocked { 25 | 26 | public String getInputKey(); 27 | 28 | public String getOutputKey(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jul 26, 2014, 9:51:58 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.world.World; 15 | 16 | /** 17 | * A block that implements this has a flag for whether it can be moved by the Shard of Laputa. 18 | */ 19 | public interface ILaputaImmobile { 20 | 21 | public boolean canMove(World world, int x, int y, int z); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/ILens.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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 31, 2014, 3:03:04 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.item.ItemStack; 15 | import cpw.mods.fml.relauncher.Side; 16 | import cpw.mods.fml.relauncher.SideOnly; 17 | 18 | /** 19 | * Have an Item implement this to be counted as a lens for the mana spreader. 20 | */ 21 | public interface ILens extends ILensEffect { 22 | 23 | @SideOnly(Side.CLIENT) 24 | public int getLensColor(ItemStack stack); 25 | 26 | /** 27 | * Can the source lens be combined with the composite lens? This is called 28 | * for both the ILens instance of ItemStack.getItem() of sourceLens and compositeLens. 29 | */ 30 | public boolean canCombineLenses(ItemStack sourceLens, ItemStack compositeLens); 31 | 32 | /** 33 | * Gets the composite lens in the stack passed in, return null for none. 34 | */ 35 | public ItemStack getCompositeLens(ItemStack stack); 36 | 37 | /** 38 | * Sets the composite lens for the sourceLens as the compositeLens, returns 39 | * the ItemStack with the combination. 40 | */ 41 | public ItemStack setCompositeLens(ItemStack sourceLens, ItemStack compositeLens); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 22, 2014, 4:59:05 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * A TileEntity that implements this is considered a Mana Block. 16 | * Just being a Mana Block doesn't mean much, look at the other IMana 17 | * interfaces. 18 | */ 19 | public interface IManaBlock { 20 | 21 | /** 22 | * Gets the amount of mana currently in this block. 23 | */ 24 | public int getCurrentMana(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/mana/IManaCollector.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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 22, 2014, 5:01:19 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import vazkii.botania.api.internal.IManaBurst; 15 | 16 | /** 17 | * Any TileEntity that implements this is considered a mana collector, by 18 | * which nearby generating flowers will pump mana into it.

19 | * 20 | * Implementation Instructions:
21 | * - Override invalidate() and onChunkUnload(), calling ManaNetworkEvent.removeCollector(this); on both.
22 | * - On the first tick of onUpdate(), call ManaNetworkEvent.addCollector(this); 23 | */ 24 | public interface IManaCollector extends IManaReceiver { 25 | 26 | /** 27 | * Called every tick on the client case the player is holding a Wand of the Forest. 28 | */ 29 | public void onClientDisplayTick(); 30 | 31 | /** 32 | * Get the multiplier of mana to input into the block, 1.0 is the original amount of mana 33 | * in the burst. 0.9, for example, is 90%, so 10% of the mana in the burst will get 34 | * dissipated. 35 | */ 36 | public float getManaYieldMultiplier(IManaBurst burst); 37 | 38 | /** 39 | * Gets the maximum amount of mana this collector can have. 40 | */ 41 | public int getMaxMana(); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Mar 10, 2014, 7:49:19 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * Any TileEntity that implements this can be counted as a "ghost" block of 16 | * sorts, that won't call the collision code for the mana bursts. 17 | */ 18 | public interface IManaCollisionGhost { 19 | 20 | public boolean isGhost(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 22, 2014, 5:03:09 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * Any TileEntity that implements this is considered a Mana Pool, 16 | * by which nearby functional flowers will pull mana from it.
17 | * Mana Distributors will also accept it as valid output.

18 | * 19 | * Implementation Instructions:
20 | * - Override invalidate() and onChunkUnload(), calling ManaNetworkEvent.removePool(this); on both.
21 | * - On the first tick of onUpdate(), call ManaNetworkEvent.addPool(this); 22 | */ 23 | public interface IManaPool extends IManaReceiver { 24 | 25 | /** 26 | * Returns false if the mana pool is accepting power from other power items, 27 | * true if it's sending power into them. 28 | */ 29 | public boolean isOutputtingPower(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 22, 2014, 4:55:00 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | /** 15 | * Any TileEntity that implements this can receive mana from mana bursts. 16 | */ 17 | public interface IManaReceiver extends IManaBlock { 18 | 19 | /** 20 | * Is this Mana Receiver is full? Being full means no mana bursts will be sent. 21 | */ 22 | public boolean isFull(); 23 | 24 | /** 25 | * Called when this receiver receives mana. 26 | */ 27 | public void recieveMana(int mana); 28 | 29 | /** 30 | * Can this tile receive mana from bursts? Generally set to false for 31 | * implementations of IManaCollector. 32 | */ 33 | public boolean canRecieveManaFromBursts(); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [May 16, 2014, 7:52:53 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.world.World; 15 | import vazkii.botania.api.internal.IManaBurst; 16 | 17 | /** 18 | * Have a block implement this class to make it do something when a mana burst collides with it. 19 | */ 20 | public interface IManaTrigger { 21 | 22 | public void onBurstCollision(IManaBurst burst, World world, int x, int y, int z); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [May 25, 2014, 7:32:10 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * Any item that implements this interface is an item that would use mana 18 | * from the player's inventory. If there's any items in the inventory or 19 | * equipped in either the baubles or armor inventories that implement 20 | * this interface, a mana bar will be rendered. 21 | */ 22 | public interface IManaUsingItem { 23 | 24 | public boolean usesMana(ItemStack stack); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jul 2, 2014, 6:36:54 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.util.IIcon; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * A block that implements this can provide an IIcon (block icons only) 19 | * to be used as an overlay for the mana pool, similarly to the mana void 20 | * and catalysts. 21 | */ 22 | public interface IPoolOverlayProvider { 23 | 24 | public IIcon getIcon(World world, int x, int y, int z); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jul 22, 2014, 2:26:14 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | /** 17 | * Any Item that implements ILensEffect and this will have 18 | * a check before being pulled by the Tiny Planet. 19 | */ 20 | public interface ITinyPlanetExcempt { 21 | 22 | public boolean shouldPull(ItemStack stack); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Aug 21, 2014, 7:16:11 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.mana.spark; 13 | 14 | import java.util.List; 15 | 16 | import net.minecraft.util.AxisAlignedBB; 17 | import net.minecraft.world.World; 18 | 19 | public final class SparkHelper { 20 | 21 | public static final int SPARK_SCAN_RANGE = 12; 22 | 23 | public static List getSparksAround(World world, double x, double y, double z) { 24 | return SparkHelper.getEntitiesAround(ISparkEntity.class, world, x, y, z); 25 | } 26 | 27 | public static List getEntitiesAround(Class clazz, World world, double x, double y, double z) { 28 | int r = SPARK_SCAN_RANGE; 29 | List entities = world.getEntitiesWithinAABB(clazz, AxisAlignedBB.getBoundingBox(x - r, y - r, z - r, x + r, y + r, z + r)); 30 | return entities; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/package-info.java: -------------------------------------------------------------------------------- 1 | @API(owner = "Botania", apiVersion = "28", 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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Feb 15, 2014, 2:36:35 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.recipe; 13 | 14 | import net.minecraft.inventory.IInventory; 15 | import net.minecraft.item.ItemStack; 16 | 17 | /** 18 | * Have an Item implement this to allow it to be used in the Petal Apothecary. 19 | */ 20 | public interface IFlowerComponent { 21 | 22 | public boolean canFit(ItemStack stack, IInventory apothecary); 23 | 24 | public int getParticleColor(ItemStack stack); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Feb 5, 2014, 1:41:14 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.recipe; 13 | 14 | import net.minecraft.item.ItemStack; 15 | 16 | public class RecipeRuneAltar extends RecipePetals { 17 | 18 | int mana; 19 | 20 | public RecipeRuneAltar(ItemStack output, int mana, Object... inputs) { 21 | super(output, inputs); 22 | this.mana = mana; 23 | } 24 | 25 | public int getManaUsage() { 26 | return mana; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 22, 2014, 7:12:28 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.subtile; 13 | 14 | /** 15 | * The special flowers in botania implement this. Used for cases where 16 | * BlockFlower would be checked against, but isn't convenient for 17 | * the special flowers with effects. For Azanor and Lycaon. 18 | */ 19 | public interface ISpecialFlower { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Aug 26, 2014, 5:42:16 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.subtile; 13 | 14 | /** 15 | * A TileEntity that implements this contains a SubTileEntity. 16 | */ 17 | public interface ISubTileContainer { 18 | 19 | /** 20 | * Gets the SubTile in this block. Generally shouldn't return null, but in that 21 | * case use the fallback DummySubTile. 22 | */ 23 | public SubTileEntity getSubTile(); 24 | 25 | /** 26 | * Sets the SubTile on this block from it's name. 27 | */ 28 | public void setSubTile(String name); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Mar 24, 2014, 6:47:53 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wand; 13 | 14 | import net.minecraft.util.ChunkCoordinates; 15 | import cpw.mods.fml.relauncher.Side; 16 | import cpw.mods.fml.relauncher.SideOnly; 17 | 18 | /** 19 | * Any TileEntity that implements this is technically bound 20 | * to something, and the binding will be shown when hovering 21 | * over with a Wand of the Forest. 22 | */ 23 | public interface ITileBound { 24 | 25 | /** 26 | * Gets where this block is bound to, can return null. 27 | */ 28 | @SideOnly(Side.CLIENT) 29 | public ChunkCoordinates getBinding(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Oct 9, 2014, 3:01:58 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wand; 13 | 14 | import net.minecraft.entity.player.EntityPlayer; 15 | import net.minecraft.item.ItemStack; 16 | 17 | /** 18 | * A TileEntity that implements this can be bound to another block 19 | * via the Wand of the Forest. Also see IWireframeAABBProvider to change 20 | * the displayed bounding box. 21 | */ 22 | public interface IWandBindable extends ITileBound { 23 | 24 | /** 25 | * Return true if the Wand can select this tile. 26 | */ 27 | public boolean canSelect(EntityPlayer player, ItemStack wand, int x, int y, int z, int side); 28 | 29 | /** 30 | * Call to bind the TileEntity to where the player clicked. Return true to deselect 31 | * the TileEntity for another bind or false case the TileEntity should stay selected. 32 | */ 33 | public boolean bindTo(EntityPlayer player, ItemStack wand, int x, int y, int z, int side); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Feb 5, 2014, 1:34:44 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wand; 13 | 14 | import net.minecraft.client.Minecraft; 15 | import net.minecraft.client.gui.ScaledResolution; 16 | import net.minecraft.world.World; 17 | 18 | /** 19 | * Any block that implements this has a HUD rendered when being hovered 20 | * with a Wand of the Forest. 21 | */ 22 | public interface IWandHUD { 23 | 24 | public void renderHUD(Minecraft mc, ScaledResolution res, World world, int x, int y, int z); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Jan 22, 2014, 5:12:53 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wand; 13 | 14 | import net.minecraft.entity.player.EntityPlayer; 15 | import net.minecraft.item.ItemStack; 16 | import net.minecraft.world.World; 17 | 18 | /** 19 | * Any block that implements this can be used with the Wand for the Forest for some purpose. 20 | */ 21 | public interface IWandable { 22 | 23 | /** 24 | * Called when the block is used by a wand. Note that the player parameter can be null 25 | * if this function is called from a dispenser. 26 | */ 27 | public boolean onUsedByWand(EntityPlayer player, ItemStack stack, World world, int x, int y, int z, int side); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Apr 19, 2014, 7:23:59 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wand; 13 | 14 | import net.minecraft.util.AxisAlignedBB; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * A block that implements this can provide a custom AABB 19 | * for rendering the wireframe with ITileBound. 20 | */ 21 | public interface IWireframeAABBProvider { 22 | 23 | public AxisAlignedBB getWireframeAABB(World world, int x, int y, int z); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Sep 2, 2014, 5:57:35 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wiki; 13 | 14 | import net.minecraft.util.MovingObjectPosition; 15 | import net.minecraft.world.World; 16 | 17 | /** 18 | * An interface for a Wiki Provider, these are registered to allow a mod to provide a wiki 19 | * for all the blocks in them, used for the world interaction with the Lexica Botania. 20 | * A simple, mostly all-inclusive implementation can be found on SimpleWikiProvider. 21 | */ 22 | public interface IWikiProvider { 23 | 24 | /** 25 | * Gets the name of the block being looked at for display. 26 | */ 27 | public String getBlockName(World world, MovingObjectPosition pos); 28 | 29 | /** 30 | * Gets the URL to open when the block is clicked. 31 | */ 32 | public String getWikiURL(World world, MovingObjectPosition pos); 33 | 34 | /** 35 | * Gets the name of the wiki for display. 36 | */ 37 | public String getWikiName(World world, MovingObjectPosition pos); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/api/java/vazkii/botania/api/wiki/WikiHooks.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 a 7 | * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 8 | * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) 9 | * 10 | * File Created @ [Sep 2, 2014, 6:05:03 PM (GMT)] 11 | */ 12 | package vazkii.botania.api.wiki; 13 | 14 | import java.util.HashMap; 15 | import java.util.Map; 16 | 17 | import net.minecraft.block.Block; 18 | import cpw.mods.fml.common.registry.GameRegistry; 19 | import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier; 20 | 21 | public class WikiHooks { 22 | 23 | private static final IWikiProvider FALLBACK_PROVIDER = new SimpleWikiProvider("FTB Wiki", "http://wiki.feed-the-beast.com/%s"); 24 | 25 | private static final Map modWikis = new HashMap(); 26 | 27 | public static IWikiProvider getWikiFor(Block block) { 28 | UniqueIdentifier mod = GameRegistry.findUniqueIdentifierFor(block); 29 | return getWikiFor(mod.modId.toLowerCase()); 30 | } 31 | 32 | public static IWikiProvider getWikiFor(String mod) { 33 | if(!modWikis.containsKey(mod)) 34 | modWikis.put(mod, FALLBACK_PROVIDER); 35 | 36 | return modWikis.get(mod); 37 | } 38 | 39 | public static void registerModWiki(String mod, IWikiProvider provider) { 40 | modWikis.put(mod.toLowerCase(), provider); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/configurability/Configurable.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.configurability; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface Configurable { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/configurability/FieldList.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.configurability; 2 | 3 | import java.lang.reflect.Field; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | import chbachman.api.registry.IUpgradeListener; 8 | import chbachman.api.upgrade.IUpgrade; 9 | 10 | public class FieldList implements IUpgradeListener { 11 | 12 | Field[] fields; 13 | 14 | public ConfigurableField[] getFieldList(IUpgrade upgrade) { 15 | ConfigurableField[] config = new ConfigurableField[fields.length]; 16 | 17 | for (int i = 0; i < fields.length; i++) { 18 | try { 19 | config[i] = (ConfigurableField) fields[i].get(upgrade); 20 | } catch (Exception e) { 21 | e.printStackTrace(); 22 | } 23 | 24 | } 25 | 26 | return config; 27 | } 28 | 29 | @Override 30 | public IUpgradeListener onUpgradeAdded(IUpgrade upgrade) { 31 | 32 | FieldList list = new FieldList(); 33 | 34 | Class upgradeClass = upgrade.getClass(); 35 | 36 | List storageList = new ArrayList(); 37 | 38 | for (Field field : upgradeClass.getFields()) { 39 | 40 | if (!field.isAnnotationPresent(Configurable.class)) { 41 | continue; 42 | } 43 | 44 | if (field.getType() != ConfigurableField.class) { 45 | continue; 46 | } 47 | 48 | storageList.add(field); 49 | } 50 | 51 | list.fields = storageList.toArray(new Field[0]); 52 | 53 | return list; 54 | 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/configurability/Percentage.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.configurability; 2 | 3 | public class Percentage { 4 | 5 | private byte percentage; 6 | 7 | public Percentage(int amount) { 8 | percentage = (byte) amount; 9 | } 10 | 11 | public float getPercentage() { 12 | return percentage / 100F; 13 | } 14 | 15 | public void setPercentage(int amount) { 16 | percentage = (byte) amount; 17 | } 18 | 19 | public int getAmount() { 20 | return percentage; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/NBTSerializer.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | public interface NBTSerializer { 6 | 7 | /** 8 | * Loads from NBTTagCompound 9 | * 10 | * @param d 11 | * @param context 12 | * @return Data, or null if does not exist. 13 | */ 14 | public E loadFromNBT(NBTTagCompound d); 15 | 16 | /** 17 | * Saves to NBTTagCompound 18 | * 19 | * @param data 20 | * @param d 21 | */ 22 | public void saveToNBT(E data, NBTTagCompound d); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/SerializationException.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt; 2 | 3 | public class SerializationException extends RuntimeException { 4 | 5 | public SerializationException() { 6 | super(); 7 | } 8 | 9 | public SerializationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 10 | super(message, cause, enableSuppression, writableStackTrace); 11 | } 12 | 13 | public SerializationException(String message, Throwable cause) { 14 | super(message, cause); 15 | } 16 | 17 | public SerializationException(String message) { 18 | super(message); 19 | } 20 | 21 | public SerializationException(Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | private static final long serialVersionUID = -8183140670675549506L; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/helper/NBTBoolean.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt.helper; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | public class NBTBoolean { 7 | 8 | String key; 9 | boolean def; 10 | 11 | public NBTBoolean() { 12 | } 13 | 14 | public NBTBoolean(String key) { 15 | this.key = key; 16 | } 17 | 18 | public NBTBoolean(String key, boolean defaul) { 19 | this.key = key; 20 | this.def = defaul; 21 | } 22 | 23 | public boolean set(ItemStack stack, boolean data) { 24 | boolean temp = this.get(stack); 25 | 26 | stack.stackTagCompound.setBoolean(key, data); 27 | 28 | return temp; 29 | } 30 | 31 | public boolean set(NBTTagCompound stack, boolean data) { 32 | boolean temp = this.get(stack); 33 | 34 | stack.setBoolean(key, data); 35 | 36 | return temp; 37 | } 38 | 39 | public boolean get(NBTTagCompound stack) { 40 | return stack == null ? def : stack.getBoolean(key); 41 | } 42 | 43 | public boolean get(ItemStack stack) { 44 | return get(stack.stackTagCompound); 45 | } 46 | 47 | public void setDefault(boolean def) { 48 | this.def = def; 49 | } 50 | 51 | public boolean getDefault() { 52 | return this.def; 53 | } 54 | 55 | public void setKey(String key) { 56 | this.key = key; 57 | } 58 | 59 | public String getKey() { 60 | return key; 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/helper/NBTDouble.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt.helper; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | public class NBTDouble { 7 | 8 | String key; 9 | double def; 10 | 11 | public NBTDouble() { 12 | } 13 | 14 | public NBTDouble(String key) { 15 | this.key = key; 16 | } 17 | 18 | public NBTDouble(String key, double defaul) { 19 | this.key = key; 20 | this.def = defaul; 21 | } 22 | 23 | public double set(ItemStack stack, double data) { 24 | double temp = this.get(stack); 25 | 26 | stack.stackTagCompound.setDouble(key, data); 27 | 28 | return temp; 29 | } 30 | 31 | public double set(NBTTagCompound stack, double data) { 32 | double temp = this.get(stack); 33 | 34 | stack.setDouble(key, data); 35 | 36 | return temp; 37 | } 38 | 39 | public double get(NBTTagCompound stack) { 40 | return stack == null ? def : stack.getInteger(key); 41 | } 42 | 43 | public double get(ItemStack stack) { 44 | return get(stack.stackTagCompound); 45 | } 46 | 47 | public void setDefault(double def) { 48 | this.def = def; 49 | } 50 | 51 | public double getDefault() { 52 | return this.def; 53 | } 54 | 55 | public void setKey(String key) { 56 | this.key = key; 57 | } 58 | 59 | public String getKey() { 60 | return key; 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/helper/NBTInteger.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt.helper; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | public class NBTInteger { 7 | 8 | String key; 9 | int def; 10 | 11 | public NBTInteger() { 12 | } 13 | 14 | public NBTInteger(String key) { 15 | this.key = key; 16 | } 17 | 18 | public NBTInteger(String key, int defaul) { 19 | this.key = key; 20 | this.def = defaul; 21 | } 22 | 23 | public int set(ItemStack stack, int data) { 24 | int temp = this.get(stack); 25 | 26 | stack.stackTagCompound.setInteger(key, data); 27 | 28 | return temp; 29 | } 30 | 31 | public int set(NBTTagCompound stack, int data) { 32 | int temp = this.get(stack); 33 | 34 | stack.setInteger(key, data); 35 | 36 | return temp; 37 | } 38 | 39 | public int get(NBTTagCompound stack) { 40 | return stack == null ? def : stack.getInteger(key); 41 | } 42 | 43 | public int get(ItemStack stack) { 44 | return get(stack.stackTagCompound); 45 | } 46 | 47 | public void setDefault(int def) { 48 | this.def = def; 49 | } 50 | 51 | public int getDefault() { 52 | return this.def; 53 | } 54 | 55 | public void setKey(String key) { 56 | this.key = key; 57 | } 58 | 59 | public String getKey() { 60 | return key; 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/serializers/PercentageNBT.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt.serializers; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | import chbachman.api.configurability.Percentage; 5 | import chbachman.api.nbt.NBTSerializer; 6 | 7 | public class PercentageNBT implements NBTSerializer { 8 | 9 | @Override 10 | public Percentage loadFromNBT(NBTTagCompound d) { 11 | return new Percentage(d.getByte("Data")); 12 | } 13 | 14 | @Override 15 | public void saveToNBT(Percentage data, NBTTagCompound d) { 16 | d.setByte("Data", (byte) data.getAmount()); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/nbt/serializers/UpgradeNBT.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.nbt.serializers; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | import chbachman.api.nbt.NBTSerializer; 5 | import chbachman.api.registry.UpgradeRegistry; 6 | import chbachman.api.upgrade.IUpgrade; 7 | 8 | public class UpgradeNBT implements NBTSerializer { 9 | 10 | @Override 11 | public IUpgrade loadFromNBT(NBTTagCompound d) { 12 | IUpgrade upgrade = UpgradeRegistry.getUpgrade(d.getString("ID")); 13 | 14 | return upgrade; 15 | } 16 | 17 | @Override 18 | public void saveToNBT(IUpgrade data, NBTTagCompound d) { 19 | d.setString("ID", data.getBaseName()); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/registry/IItemListener.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.registry; 2 | 3 | import chbachman.api.item.IModularItem; 4 | 5 | public interface IItemListener { 6 | 7 | IItemListener onItemAdded(IModularItem items); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/registry/IUpgradeListener.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.registry; 2 | 3 | import chbachman.api.upgrade.IUpgrade; 4 | 5 | /** 6 | * A Upgrade Listener is something that gets notified whenever an upgrade gets 7 | * added, and usually stores extra data per upgrade. 8 | * 9 | * @author Chbachman 10 | * 11 | */ 12 | public interface IUpgradeListener { 13 | 14 | /** 15 | * Create and return the UpgradeListener that stores data for the upgrade 16 | * 17 | * @param upgrade 18 | * @return 19 | */ 20 | IUpgradeListener onUpgradeAdded(IUpgrade upgrade); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/registry/UpgradeList.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.registry; 2 | 3 | import chbachman.api.upgrade.IUpgrade; 4 | import chbachman.api.upgrade.Upgrade; 5 | import chbachman.api.util.ObjectMap; 6 | 7 | public class UpgradeList extends ObjectMap { 8 | 9 | public IUpgrade get(Class clazz) { 10 | for (IUpgrade upgrade : this.values()) { 11 | if (upgrade.getClass() == clazz) { 12 | return upgrade; 13 | } 14 | } 15 | 16 | return null; 17 | } 18 | 19 | public IUpgrade put(IUpgrade upgrade) { 20 | return this.put(upgrade.getBaseName(), upgrade); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/chbachman/api/util/ArmourSlot.java: -------------------------------------------------------------------------------- 1 | package chbachman.api.util; 2 | 3 | public enum ArmourSlot { 4 | 5 | HELMET(0), CHESTPLATE(1), LEGS(2), BOOTS(3), BELT(4), RING(5), PENDANT(6), UNKNOWN(7); 6 | 7 | public int id; 8 | 9 | private ArmourSlot(int id) { 10 | this.id = id; 11 | } 12 | 13 | /** 14 | * Get the ArmourSlot for the given id; 15 | * 16 | * @param id 17 | * @return 18 | */ 19 | public static ArmourSlot getArmourSlot(int id) { 20 | for (ArmourSlot slot : ArmourSlot.values()) { 21 | if (slot.id == id) { 22 | return slot; 23 | } 24 | } 25 | 26 | return ArmourSlot.UNKNOWN; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/gui/GuiHelper.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.gui; 2 | 3 | import java.util.List; 4 | 5 | import cofh.lib.gui.GuiBase; 6 | 7 | public class GuiHelper { 8 | 9 | public static boolean isCoordsInBorders(int xCoord, int yCoord, int x, int x2, int y, int y2) { 10 | return xCoord > x && xCoord < x2 && yCoord > y && yCoord < y2; 11 | } 12 | 13 | @SuppressWarnings("unchecked") 14 | public static void drawStringBounded(GuiBase gui, String name, int width, int x, int y, int color) { 15 | List strings = gui.getFontRenderer().listFormattedStringToWidth(name, width); 16 | 17 | for (int i = 0; i < strings.size(); i++) { 18 | gui.drawString(gui.getFontRenderer(), strings.get(i), x, y + i * 10, color); 19 | } 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/gui/element/ElementText.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.gui.element; 2 | 3 | import cofh.lib.gui.GuiBase; 4 | import cofh.lib.gui.element.ElementBase; 5 | 6 | public class ElementText extends ElementBase { 7 | 8 | String s; 9 | 10 | public ElementText(GuiBase gui, int posX, int posY) { 11 | super(gui, posX, posY); 12 | } 13 | 14 | public ElementText(GuiBase gui, int posX, int posY, int width, int height) { 15 | super(gui, posX, posY, width, height); 16 | } 17 | 18 | public ElementText setText(String toDisplay) { 19 | s = toDisplay; 20 | return this; 21 | } 22 | 23 | public String getText() { 24 | return s; 25 | } 26 | 27 | @Override 28 | public void drawBackground(int mouseX, int mouseY, float gameTicks) { 29 | 30 | } 31 | 32 | @Override 33 | public void drawForeground(int mouseX, int mouseY) { 34 | this.getFontRenderer().drawString(s, this.posX, this.posY, 0xFFFFFFFF); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/gui/element/TabError.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.gui.element; 2 | 3 | import java.util.List; 4 | 5 | import cofh.core.gui.element.TabInfo; 6 | import cofh.lib.gui.GuiBase; 7 | 8 | public class TabError extends TabInfo { 9 | 10 | private List myTextSave; 11 | 12 | public TabError(GuiBase gui, String infoString) { 13 | super(gui, infoString); 14 | } 15 | 16 | public void setString(String string) { 17 | 18 | this.myTextSave = this.myText; 19 | 20 | this.myText = this.getFontRenderer().listFormattedStringToWidth(string, this.maxWidth - 16); 21 | this.numLines = Math.min(this.myText.size(), (this.maxHeight - 24) / this.getFontRenderer().FONT_HEIGHT); 22 | this.maxFirstLine = this.myText.size() - this.numLines; 23 | 24 | } 25 | 26 | public void reset() { 27 | 28 | this.myText = this.myTextSave; 29 | 30 | this.numLines = Math.min(this.myText.size(), (this.maxHeight - 24) / this.getFontRenderer().FONT_HEIGHT); 31 | this.maxFirstLine = this.myText.size() - this.numLines; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/gui/tablet/TabletContainer.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.gui.tablet; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.entity.player.InventoryPlayer; 5 | import net.minecraft.inventory.Container; 6 | import net.minecraft.inventory.Slot; 7 | 8 | public class TabletContainer extends Container { 9 | 10 | public TabletContainer(EntityPlayer player) { 11 | this.bindPlayerInventory(player.inventory); 12 | } 13 | 14 | protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) { 15 | for (int i = 0; i < 3; i++) { 16 | for (int j = 0; j < 9; j++) { 17 | this.addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 10, 10)); 18 | } 19 | } 20 | 21 | for (int i = 0; i < 9; i++) { 22 | this.addSlotToContainer(new Slot(inventoryPlayer, i, 10, 10)); 23 | } 24 | } 25 | 26 | @Override 27 | public boolean canInteractWith(EntityPlayer player) { 28 | return true; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/items/armour/LPModularArmour.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.items.armour; 2 | 3 | import chbachman.armour.items.armour.logic.LPUpgradeLogic; 4 | 5 | public class LPModularArmour extends ItemModularArmour { 6 | 7 | public LPModularArmour(ArmorMaterial material, int type) { 8 | super(material, type); 9 | this.holder = new LPUpgradeLogic(this); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/items/bauble/LPBauble.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.items.bauble; 2 | 3 | import chbachman.armour.items.armour.logic.LPUpgradeLogic; 4 | 5 | public class LPBauble extends ItemBauble { 6 | 7 | public LPBauble() { 8 | this.holder = new LPUpgradeLogic(this); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/items/bauble/RFBauble.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.items.bauble; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import chbachman.armour.items.armour.logic.RFUpgradeLogic; 5 | import cofh.api.energy.IEnergyContainerItem; 6 | 7 | public class RFBauble extends ItemBauble implements IEnergyContainerItem { 8 | 9 | public RFBauble() { 10 | this.holder = new RFUpgradeLogic(this); 11 | } 12 | 13 | public RFUpgradeLogic getHolder() { 14 | return (RFUpgradeLogic) this.holder; 15 | } 16 | 17 | // IEnergyContainerItem 18 | @Override 19 | public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) { 20 | return this.getHolder().receiveEnergy(container, maxReceive, simulate); 21 | } 22 | 23 | @Override 24 | public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) { 25 | return this.getHolder().extractEnergy(container, maxExtract, simulate); 26 | } 27 | 28 | @Override 29 | public int getEnergyStored(ItemStack container) { 30 | return this.getHolder().getEnergyStored(container); 31 | } 32 | 33 | @Override 34 | public int getMaxEnergyStored(ItemStack container) { 35 | return this.getHolder().getMaxEnergyStored(container); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/items/tablet/ItemTablet.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.items.tablet; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | import chbachman.armour.ModularArmour; 7 | import chbachman.armour.gui.GuiHandler; 8 | import cofh.core.item.ItemBase; 9 | 10 | public class ItemTablet extends ItemBase { 11 | 12 | @Override 13 | public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { 14 | player.openGui(ModularArmour.instance, GuiHandler.TABLET_ID, world, 0, 0, 0); 15 | return stack; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/network/IContainerSyncable.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.network; 2 | 3 | public interface IContainerSyncable { 4 | 5 | void clientLoad(ArmourPacket p); 6 | 7 | void serverLoad(ArmourPacket p); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/network/IInputHandler.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.network; 2 | 3 | public interface IInputHandler { 4 | 5 | /** 6 | * Called when a button is clicked on the server side. 7 | * 8 | * @param packet 9 | * @param name 10 | */ 11 | public void onButtonClick(ArmourPacket packet, String name); 12 | 13 | /** 14 | * Called when a key is typed on the server side; 15 | * 16 | * @param packet 17 | * @param key 18 | * @param keyCode 19 | */ 20 | public void onKeyTyped(ArmourPacket packet, char key, int keyCode); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/proxy/CommonProxy.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.proxy; 2 | 3 | import chbachman.api.registry.UpgradeRegistry; 4 | import chbachman.api.upgrade.IUpgrade; 5 | import chbachman.armour.network.ArmourPacket; 6 | import chbachman.armour.upgrade.KeybindUpgrade; 7 | import cofh.core.key.CoFHKeyHandler; 8 | import cofh.core.network.PacketHandler; 9 | 10 | public abstract class CommonProxy implements IProxy { 11 | 12 | @Override 13 | public void registerPacketInformation() { 14 | PacketHandler.instance.registerPacket(ArmourPacket.class); 15 | } 16 | 17 | @Override 18 | public void registerKeyBinds() { 19 | 20 | for (IUpgrade upgrade : UpgradeRegistry.getUpgradeList()) { 21 | if (upgrade instanceof KeybindUpgrade) { 22 | CoFHKeyHandler.addServerKeyBind((KeybindUpgrade) upgrade); 23 | } 24 | } 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/proxy/IProxy.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.proxy; 2 | 3 | import java.util.List; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.world.World; 7 | import net.minecraftforge.client.event.TextureStitchEvent; 8 | 9 | public interface IProxy { 10 | 11 | void registerKeyBinds(); 12 | 13 | void registerIcons(TextureStitchEvent.Pre event); 14 | 15 | EntityPlayer getClientPlayer(); 16 | 17 | boolean isOp(String commandSenderName); 18 | 19 | boolean isClient(); 20 | 21 | boolean isServer(); 22 | 23 | float getSoundVolume(int category); 24 | 25 | List getPlayerList(); 26 | 27 | World getClientWorld(); 28 | 29 | EntityPlayer findPlayer(String player); 30 | 31 | void registerPacketInformation(); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/reference/Reference.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.reference; 2 | 3 | public class Reference { 4 | 5 | public final static String MODID = "ModularArmour"; 6 | public final static String MODNAME = "Modular Armour"; 7 | public final static String VERSION = "1.0.0"; 8 | public final static String CHANNEL = "ModularArmour"; 9 | public final static String DEPENDENCIES = "required-after:CoFHCore@[1.7.10R3.0.3B2,);" + 10 | "after:Thaumcraft;" + 11 | "after:ThermalExpansion;" + 12 | "after:Baubles;" + 13 | "after:Botania;" + 14 | "after:AWWayOfTime;" + 15 | "after:MineTweaker3;"; 16 | 17 | // ;after:ThermalExpansion 18 | 19 | public final static String TEXTURE_LOCATION = "modulararmour:textures"; 20 | public final static String ARMOUR_LOATION = TEXTURE_LOCATION + "/armour/"; 21 | public final static String ITEM_LOCATION = "modulararmour:"; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/register/Enviromine.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.register; 2 | 3 | import chbachman.api.registry.UpgradeRegistry; 4 | import chbachman.api.upgrade.IUpgrade; 5 | import chbachman.api.upgrade.Recipe; 6 | import chbachman.armour.upgrade.upgradeList.UpgradeCamelPack; 7 | import chbachman.armour.upgrade.upgradeList.UpgradeGasMask; 8 | import cpw.mods.fml.common.registry.GameRegistry; 9 | 10 | public class Enviromine implements Module { 11 | 12 | public static IUpgrade camelPack; 13 | public static IUpgrade gasMask; 14 | 15 | @Override 16 | public void preInit() { 17 | 18 | } 19 | 20 | @Override 21 | public void init() { 22 | 23 | } 24 | 25 | @Override 26 | public void postInit() { 27 | 28 | } 29 | 30 | @Override 31 | public void registerUpgrades() { 32 | camelPack = new UpgradeCamelPack(); 33 | gasMask = new UpgradeGasMask(); 34 | } 35 | 36 | @Override 37 | public void registerUpgradeRecipes() { 38 | UpgradeRegistry.registerRecipe(new Recipe(camelPack, "iii", "ici", "iii", 'i', "ingotIron", 'c', GameRegistry.findItemStack("enviromine", "camelPack", 1))); 39 | UpgradeRegistry.registerRecipe(new Recipe(gasMask, "iii", "ici", "iii", 'i', "ingotIron", 'c', GameRegistry.findItemStack("enviromine", "gasMask", 1))); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/register/Module.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.register; 2 | 3 | public interface Module { 4 | 5 | /** 6 | * Called during preinit. See 7 | * {@link cpw.mods.fml.common.event.FMLPreInitializationEvent} 8 | */ 9 | public void preInit(); 10 | 11 | /** 12 | * Called during init. See 13 | * {@link cpw.mods.fml.common.event.FMLInitializationEvent} 14 | */ 15 | public void init(); 16 | 17 | /** 18 | * Called during postInit. See 19 | * {@link cpw.mods.fml.common.event.FMLPostInitializationEvent} 20 | */ 21 | public void postInit(); 22 | 23 | /** 24 | * Called when you should create and register your upgrades, or right after 25 | * preInit. 26 | */ 27 | public void registerUpgrades(); 28 | 29 | /** 30 | * Called when you should register your recipes for your upgrades, or right 31 | * after postInit; 32 | */ 33 | public void registerUpgradeRecipes(); 34 | 35 | } -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/KeybindUpgrade.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import chbachman.api.upgrade.Upgrade; 5 | import chbachman.armour.ModularArmour; 6 | import cofh.core.key.IKeyBinding; 7 | import cofh.lib.util.helpers.StringHelper; 8 | 9 | public abstract class KeybindUpgrade extends Upgrade implements IKeyBinding { 10 | 11 | public KeybindUpgrade(String name) { 12 | super(name); 13 | } 14 | 15 | @Override 16 | public boolean keyPress() { 17 | return this.keyPress(ModularArmour.proxy.getClientPlayer()); 18 | } 19 | 20 | public abstract boolean keyPress(EntityPlayer player); 21 | 22 | @Override 23 | public String getUUID() { 24 | return this.getLocalizationString(); 25 | } 26 | 27 | @Override 28 | public boolean hasServerSide() { 29 | return true; 30 | } 31 | 32 | public String getKeyName() { 33 | return StringHelper.localize(this.getLocalizationString() + ".key"); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/UpgradeException.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade; 2 | 3 | import chbachman.api.upgrade.IUpgrade; 4 | 5 | @SuppressWarnings("serial") 6 | public class UpgradeException extends RuntimeException { 7 | public IUpgrade cause; 8 | 9 | public UpgradeException() { 10 | } 11 | 12 | public UpgradeException(String message, Object... objects) { 13 | super(String.format(message, objects)); 14 | } 15 | 16 | public UpgradeException(String message, IUpgrade cause) { 17 | this(message); 18 | 19 | this.cause = cause; 20 | } 21 | 22 | public UpgradeException(Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | public UpgradeException(String message, Throwable cause) { 27 | super(message, cause); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/UpgradeProjectile.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.entity.projectile.EntityThrowable; 5 | import net.minecraft.util.MovingObjectPosition; 6 | import net.minecraft.world.World; 7 | 8 | public abstract class UpgradeProjectile extends KeybindUpgrade { 9 | 10 | public UpgradeProjectile(String name) { 11 | super(name); 12 | } 13 | 14 | @Override 15 | public void keyPressServer(EntityPlayer player) { 16 | 17 | } 18 | 19 | @Override 20 | public boolean keyPress(EntityPlayer player) { 21 | return false; 22 | } 23 | 24 | @SuppressWarnings("unused") 25 | private static class EntityBaseProjectile extends EntityThrowable { 26 | 27 | public EntityBaseProjectile(World p_i1582_1_) { 28 | super(p_i1582_1_); 29 | } 30 | 31 | @Override 32 | protected void onImpact(MovingObjectPosition p_70184_1_) { 33 | 34 | } 35 | 36 | @Override 37 | protected float getGravityVelocity() { 38 | return 0; 39 | } 40 | 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeArthropod.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.entity.EntityLivingBase; 5 | import net.minecraft.entity.EnumCreatureAttribute; 6 | import net.minecraft.entity.monster.EntityMob; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.util.DamageSource; 9 | import chbachman.api.util.ArmourSlot; 10 | import chbachman.armour.upgrade.UpgradeProtective; 11 | 12 | public class UpgradeArthropod extends UpgradeProtective { 13 | 14 | public UpgradeArthropod() { 15 | super("arthropod", 75); 16 | } 17 | 18 | @Override 19 | public boolean shouldDefend(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, ArmourSlot slot) { 20 | Entity entity = source.getSourceOfDamage(); 21 | 22 | if (entity == null) { 23 | return false; 24 | } 25 | 26 | if (!(entity instanceof EntityMob)) { 27 | return false; 28 | } 29 | 30 | EntityMob entityMob = (EntityMob) entity; 31 | 32 | return entityMob.getCreatureAttribute() == EnumCreatureAttribute.ARTHROPOD; 33 | } 34 | 35 | @Override 36 | public int getEnergyPerDamage(ItemStack stack) { 37 | return 100; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeAttackBonus.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraftforge.event.entity.living.LivingAttackEvent; 5 | import chbachman.armour.util.UpgradeUtil; 6 | import cpw.mods.fml.common.eventhandler.SubscribeEvent; 7 | 8 | public class UpgradeAttackBonus extends UpgradeBasic { 9 | 10 | public UpgradeAttackBonus(String name) { 11 | super(name); 12 | } 13 | 14 | @SubscribeEvent 15 | public void onPlayerAttack(LivingAttackEvent e) { 16 | 17 | if (e.source.getEntity() instanceof EntityPlayer) { 18 | 19 | if (UpgradeUtil.doesPlayerHaveUpgrade((EntityPlayer) e.source.getEntity(), this)) { 20 | 21 | } 22 | 23 | } 24 | 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeCamelPack.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import chbachman.api.item.IModularItem; 5 | import chbachman.api.nbt.helper.NBTHelper; 6 | import chbachman.api.upgrade.Upgrade; 7 | import chbachman.api.util.ArmourSlot; 8 | 9 | public class UpgradeCamelPack extends Upgrade { 10 | 11 | final int maxWaterStorage = 100; 12 | 13 | public UpgradeCamelPack() { 14 | super("camelPack"); 15 | } 16 | 17 | @Override 18 | public void onUpgradeAddition(IModularItem item, ItemStack stack) { 19 | NBTHelper.createDefaultStackTag(stack); 20 | 21 | stack.stackTagCompound.setInteger("camelPackFill", 0); 22 | stack.stackTagCompound.setBoolean("isCamelPack", true); 23 | stack.stackTagCompound.setInteger("camelPackMax", 100); 24 | 25 | } 26 | 27 | @Override 28 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 29 | return armorType == ArmourSlot.CHESTPLATE.id; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeDecorative.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import chbachman.api.item.IModularItem; 5 | import chbachman.api.util.ArmourSlot; 6 | 7 | public class UpgradeDecorative extends UpgradeBasic { 8 | 9 | String textureName; 10 | String textureColor; 11 | 12 | public UpgradeDecorative(String name) { 13 | super(name); 14 | } 15 | 16 | public UpgradeDecorative setTextureName(String name) { 17 | textureName = name; 18 | 19 | return this; 20 | } 21 | 22 | public UpgradeDecorative setTextureColor(String color) { 23 | textureColor = color; 24 | 25 | return this; 26 | } 27 | 28 | @Override 29 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 30 | return super.isCompatible(item, stack, armorType) && item.isArmour(); 31 | } 32 | 33 | @Override 34 | public String getArmourTexture(ItemStack stack, ArmourSlot slot) { 35 | return textureName; 36 | } 37 | 38 | @Override 39 | public String getArmourColor(ItemStack stack, ArmourSlot slot) { 40 | return textureColor; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeElectrolyzer.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | import chbachman.api.item.IModularItem; 7 | import chbachman.api.upgrade.Upgrade; 8 | import chbachman.api.util.ArmourSlot; 9 | import chbachman.armour.util.ConfigHelper; 10 | import chbachman.armour.util.EnergyUtil; 11 | 12 | public class UpgradeElectrolyzer extends Upgrade { 13 | 14 | public UpgradeElectrolyzer() { 15 | super("electrolyzer"); 16 | } 17 | 18 | private int cost; 19 | 20 | @Override 21 | public void registerConfigOptions() { 22 | cost = ConfigHelper.get(ConfigHelper.SPEED, this, "cost for air to be refilled.", 100); 23 | } 24 | 25 | @Override 26 | public int onTick(World world, EntityPlayer player, ItemStack stack, ArmourSlot slot) { 27 | if (player.getAir() <= 90 && EnergyUtil.getEnergyStored(stack) > 1000) { 28 | 29 | player.setAir(300); 30 | return cost; 31 | } 32 | 33 | return 0; 34 | } 35 | 36 | @Override 37 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 38 | return armorType == ArmourSlot.HELMET.id; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeEnergy.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import chbachman.api.item.IModularItem; 5 | import chbachman.api.upgrade.IUpgrade; 6 | import chbachman.api.upgrade.Upgrade; 7 | import chbachman.armour.items.armour.logic.RFUpgradeLogic; 8 | 9 | public class UpgradeEnergy extends Upgrade { 10 | 11 | public final int maxTransfer; 12 | public final int capacity; 13 | 14 | private IUpgrade dependency = null; 15 | 16 | public UpgradeEnergy(String name, int maxTransfer, int capacity) { 17 | super(name); 18 | this.maxTransfer = maxTransfer; 19 | this.capacity = capacity; 20 | } 21 | 22 | @Override 23 | public void onUpgradeAddition(IModularItem armour, ItemStack stack) { 24 | 25 | RFUpgradeLogic holder = (RFUpgradeLogic) armour.getLogic(); 26 | 27 | holder.setCapacity(stack, capacity); 28 | holder.setMaxTransfer(stack, maxTransfer); 29 | } 30 | 31 | @Override 32 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 33 | return item.getLogic() instanceof RFUpgradeLogic; 34 | } 35 | 36 | @Override 37 | public IUpgrade[] getDependencies() { 38 | if (dependency == null) { 39 | return null; 40 | } 41 | 42 | return new IUpgrade[] { this.dependency }; 43 | } 44 | 45 | public UpgradeEnergy setDependencies(IUpgrade upgrade) { 46 | this.dependency = upgrade; 47 | return this; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeFallDamage.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | import chbachman.api.configurability.Configurable; 7 | import chbachman.api.configurability.ConfigurableField; 8 | import chbachman.api.item.IModularItem; 9 | import chbachman.api.upgrade.Upgrade; 10 | import chbachman.api.util.ArmourSlot; 11 | import chbachman.armour.util.ConfigHelper; 12 | import chbachman.armour.util.EnergyUtil; 13 | 14 | public class UpgradeFallDamage extends Upgrade { 15 | 16 | public UpgradeFallDamage() { 17 | super("fallDamage"); 18 | } 19 | 20 | @Configurable 21 | public ConfigurableField f = new ConfigurableField(this, "fallDamage"); 22 | 23 | private int cost; 24 | 25 | @Override 26 | public void registerConfigOptions() { 27 | cost = ConfigHelper.get(ConfigHelper.SPEED, this, "cost to fall for every 2 blocks", 100); 28 | } 29 | 30 | @Override 31 | public int onTick(World world, EntityPlayer player, ItemStack stack, ArmourSlot slot) { 32 | if (player.fallDistance > (30 - 28 * f.get(stack).getPercentage()) && EnergyUtil.getEnergyStored(stack) > 100) { 33 | player.fallDistance = 0; 34 | return cost; 35 | } 36 | 37 | return 0; 38 | } 39 | 40 | @Override 41 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 42 | return armorType == ArmourSlot.BOOTS.id; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeGasMask.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import chbachman.api.item.IModularItem; 5 | import chbachman.api.nbt.helper.NBTHelper; 6 | import chbachman.api.upgrade.Upgrade; 7 | import chbachman.api.util.ArmourSlot; 8 | 9 | public class UpgradeGasMask extends Upgrade { 10 | 11 | public UpgradeGasMask() { 12 | super("gasMask"); 13 | } 14 | 15 | @Override 16 | public void onUpgradeAddition(IModularItem item, ItemStack stack) { 17 | NBTHelper.createDefaultStackTag(stack); 18 | 19 | stack.stackTagCompound.setInteger("gasMaskFill", 1000); 20 | stack.stackTagCompound.setInteger("gasMaskMax", 1000); 21 | } 22 | 23 | @Override 24 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 25 | return armorType == ArmourSlot.HELMET.id; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeHook.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import org.lwjgl.input.Keyboard; 4 | 5 | import chbachman.armour.upgrade.UpgradeProjectile; 6 | 7 | public class UpgradeHook extends UpgradeProjectile { 8 | 9 | public UpgradeHook() { 10 | super("hook"); 11 | } 12 | 13 | @Override 14 | public int getKey() { 15 | return Keyboard.KEY_D; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeMana.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import chbachman.api.item.IModularItem; 5 | import chbachman.armour.items.armour.logic.ManaUpgradeLogic; 6 | 7 | public class UpgradeMana extends UpgradeBasic { 8 | 9 | public final int capacity; 10 | 11 | public UpgradeMana(String name, int capacity) { 12 | super(name); 13 | this.capacity = capacity; 14 | } 15 | 16 | @Override 17 | public void onUpgradeAddition(IModularItem armour, ItemStack stack) { 18 | 19 | ManaUpgradeLogic holder = (ManaUpgradeLogic) armour.getLogic(); 20 | 21 | holder.maxMana.set(stack, capacity); 22 | } 23 | 24 | @Override 25 | public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { 26 | return item.getLogic() instanceof ManaUpgradeLogic; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradePlayerProtection.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.entity.EntityLivingBase; 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraft.util.DamageSource; 8 | import chbachman.api.util.ArmourSlot; 9 | import chbachman.armour.upgrade.UpgradeProtective; 10 | 11 | public class UpgradePlayerProtection extends UpgradeProtective { 12 | 13 | public UpgradePlayerProtection() { 14 | super("playerProtection", 90); 15 | } 16 | 17 | @Override 18 | public boolean shouldDefend(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, ArmourSlot slot) { 19 | Entity entity = source.getSourceOfDamage(); 20 | 21 | if (entity == null) { 22 | return false; 23 | } 24 | 25 | return entity instanceof EntityPlayer; 26 | 27 | } 28 | 29 | @Override 30 | public int getEnergyPerDamage(ItemStack stack) { 31 | return 100; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeStepAssist.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | import chbachman.api.item.IModularItem; 7 | import chbachman.api.upgrade.Upgrade; 8 | import chbachman.api.util.ArmourSlot; 9 | 10 | public class UpgradeStepAssist extends Upgrade { 11 | 12 | public UpgradeStepAssist() { 13 | super("stepAssist"); 14 | } 15 | 16 | @Override 17 | public boolean isCompatible(IModularItem item, ItemStack stack, int armourType) { 18 | return armourType == ArmourSlot.LEGS.id; 19 | } 20 | 21 | @Override 22 | public void onEquip(World world, EntityPlayer player, ItemStack stack, ArmourSlot slot) { 23 | player.stepHeight = 1; 24 | } 25 | 26 | @Override 27 | public void onDequip(World world, EntityPlayer player, ItemStack stack, ArmourSlot slot) { 28 | player.stepHeight = .5F; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/upgrade/upgradeList/UpgradeUndead.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.upgrade.upgradeList; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.entity.EntityLivingBase; 5 | import net.minecraft.entity.EnumCreatureAttribute; 6 | import net.minecraft.entity.monster.EntityMob; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.util.DamageSource; 9 | import chbachman.api.util.ArmourSlot; 10 | import chbachman.armour.upgrade.UpgradeProtective; 11 | 12 | public class UpgradeUndead extends UpgradeProtective { 13 | 14 | public UpgradeUndead() { 15 | super("undead", 75); 16 | } 17 | 18 | @Override 19 | public boolean shouldDefend(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, ArmourSlot slot) { 20 | 21 | Entity entity = source.getSourceOfDamage(); 22 | 23 | if (entity == null) { 24 | return false; 25 | } 26 | 27 | if (!(entity instanceof EntityMob)) { 28 | return false; 29 | } 30 | 31 | EntityMob entityMob = (EntityMob) entity; 32 | 33 | return entityMob.getCreatureAttribute() == EnumCreatureAttribute.UNDEAD; 34 | } 35 | 36 | @Override 37 | public int getEnergyPerDamage(ItemStack stack) { 38 | return 100; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/util/ConfigHelper.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.util; 2 | 3 | import static chbachman.armour.ModularArmour.config; 4 | import chbachman.api.upgrade.IUpgrade; 5 | 6 | public final class ConfigHelper { 7 | 8 | private ConfigHelper() { 9 | } 10 | 11 | public static final String ENERGY = "energy values"; 12 | public static final String SPEED = "speed values"; 13 | public static final String OTHER = "other values"; 14 | 15 | public static int get(String category, IUpgrade upgrade, String description, int def) { 16 | if (upgrade == null) { 17 | return def; 18 | } 19 | 20 | return config.get(category, new StringBuilder(upgrade.getName()).append(":").append(description).toString(), def); 21 | } 22 | 23 | public static double get(String category, IUpgrade upgrade, String description, double def) { 24 | if (upgrade == null) { 25 | return def; 26 | } 27 | 28 | return config.get(category, new StringBuilder(upgrade.getName()).append(":").append(description).toString(), def); 29 | 30 | } 31 | 32 | public static float get(String category, IUpgrade upgrade, String description, float def) { 33 | return (float) get(category, upgrade, description, (double) def); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/util/MiscUtil.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.util; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.world.World; 5 | 6 | public final class MiscUtil { 7 | 8 | private MiscUtil() { 9 | } 10 | 11 | public static boolean isServer(Entity entity) { 12 | return !entity.worldObj.isRemote; 13 | } 14 | 15 | public static boolean isClient(Entity entity) { 16 | return entity.worldObj.isRemote; 17 | } 18 | 19 | public static boolean isClient(World world) { 20 | return world.isRemote; 21 | } 22 | 23 | public static boolean isServer(World world) { 24 | return !world.isRemote; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/util/ModularCreativeTab.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.util; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import net.minecraft.block.Block; 7 | import net.minecraft.creativetab.CreativeTabs; 8 | import net.minecraft.item.Item; 9 | import net.minecraft.item.ItemStack; 10 | import chbachman.armour.register.Vanilla; 11 | 12 | public class ModularCreativeTab extends CreativeTabs { 13 | 14 | List itemList = new ArrayList(); 15 | 16 | public ModularCreativeTab() { 17 | super("modularCreativeTab"); 18 | } 19 | 20 | @Override 21 | public Item getTabIconItem() { 22 | return Vanilla.chestplateModular; 23 | } 24 | 25 | @SuppressWarnings({ "unchecked", "rawtypes" }) 26 | @Override 27 | public void displayAllReleventItems(List toDisplay) { 28 | super.displayAllReleventItems(toDisplay); 29 | toDisplay.addAll(itemList); 30 | } 31 | 32 | public ItemStack registerItemStack(ItemStack stack) { 33 | itemList.add(stack); 34 | return stack; 35 | } 36 | 37 | public Block registerBlock(Block block) { 38 | itemList.add(new ItemStack(block)); 39 | return block; 40 | } 41 | 42 | public Item registerItem(Item item) { 43 | itemList.add(new ItemStack(item)); 44 | return item; 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/util/json/CustomIUpgradeJson.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.util.json; 2 | 3 | import java.lang.reflect.Type; 4 | 5 | import chbachman.api.registry.UpgradeRegistry; 6 | import chbachman.api.upgrade.IUpgrade; 7 | 8 | import com.google.gson.JsonDeserializationContext; 9 | import com.google.gson.JsonDeserializer; 10 | import com.google.gson.JsonElement; 11 | import com.google.gson.JsonParseException; 12 | import com.google.gson.JsonPrimitive; 13 | import com.google.gson.JsonSerializationContext; 14 | import com.google.gson.JsonSerializer; 15 | 16 | public class CustomIUpgradeJson implements JsonDeserializer, JsonSerializer { 17 | 18 | @Override 19 | public JsonElement serialize(IUpgrade src, Type typeOfSrc, JsonSerializationContext context) { 20 | return new JsonPrimitive(src.getBaseName()); 21 | } 22 | 23 | @Override 24 | public IUpgrade deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { 25 | return UpgradeRegistry.getUpgrade(json.getAsString()); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/chbachman/armour/util/json/CustomNBTJson.java: -------------------------------------------------------------------------------- 1 | package chbachman.armour.util.json; 2 | 3 | import java.lang.reflect.Type; 4 | 5 | import net.minecraft.nbt.JsonToNBT; 6 | import net.minecraft.nbt.NBTException; 7 | import net.minecraft.nbt.NBTTagCompound; 8 | 9 | import com.google.gson.JsonDeserializationContext; 10 | import com.google.gson.JsonDeserializer; 11 | import com.google.gson.JsonElement; 12 | import com.google.gson.JsonParseException; 13 | import com.google.gson.JsonPrimitive; 14 | import com.google.gson.JsonSerializationContext; 15 | import com.google.gson.JsonSerializer; 16 | 17 | public class CustomNBTJson implements JsonDeserializer, JsonSerializer { 18 | 19 | @Override 20 | public JsonElement serialize(NBTTagCompound src, Type typeOfSrc, JsonSerializationContext context) { 21 | return new JsonPrimitive(src.toString()); 22 | } 23 | 24 | @Override 25 | public NBTTagCompound deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { 26 | 27 | try { 28 | return (NBTTagCompound) JsonToNBT.func_150315_a(json.getAsString()); 29 | } catch (NBTException e) { 30 | throw new JsonParseException(e); 31 | } 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/Align.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils; 18 | 19 | /** 20 | * Provides bit flag constants for alignment. 21 | * 22 | * @author Nathan Sweet 23 | */ 24 | public class Align { 25 | static public final int center = 1 << 0; 26 | static public final int top = 1 << 1; 27 | static public final int bottom = 1 << 2; 28 | static public final int left = 1 << 3; 29 | static public final int right = 1 << 4; 30 | 31 | static public final int topLeft = top | left; 32 | static public final int topRight = top | right; 33 | static public final int bottomLeft = bottom | left; 34 | static public final int bottomRight = bottom | right; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/Clipboard.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils; 18 | 19 | /** 20 | * A very simple clipboard interface for text content. 21 | * 22 | * @author mzechner 23 | */ 24 | public interface Clipboard { 25 | /** 26 | * gets the current content of the clipboard if it contains text 27 | * 28 | * @return the clipboard content or null 29 | */ 30 | public String getContents(); 31 | 32 | /** 33 | * Sets the content of the system clipboard. 34 | * 35 | * @param content 36 | * the content 37 | */ 38 | public void setContents(String content); 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/Disposable.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils; 18 | 19 | /** 20 | * Interface for disposable resources. 21 | * 22 | * @author mzechner 23 | */ 24 | public interface Disposable { 25 | /** Releases all resources of this object. */ 26 | public void dispose(); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/GdxRuntimeException.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils; 18 | 19 | /** 20 | * Typed runtime exception used throughout libgdx 21 | * 22 | * @author mzechner 23 | */ 24 | public class GdxRuntimeException extends RuntimeException { 25 | private static final long serialVersionUID = 6735854402467673117L; 26 | 27 | public GdxRuntimeException(String message) { 28 | super(message); 29 | } 30 | 31 | public GdxRuntimeException(Throwable t) { 32 | super(t); 33 | } 34 | 35 | public GdxRuntimeException(String message, Throwable t) { 36 | super(message, t); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/arial-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/java/com/badlogic/gdx/utils/arial-15.png -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/async/AsyncTask.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils.async; 18 | 19 | /** 20 | * Task to be submitted to an {@link AsyncExecutor}, returning a result of type 21 | * T. 22 | * 23 | * @author badlogic 24 | */ 25 | public interface AsyncTask { 26 | public T call() throws Exception; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/async/ThreadUtils.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils.async; 18 | 19 | /** 20 | * Utilities for threaded programming. 21 | * 22 | * @author badlogic 23 | */ 24 | public class ThreadUtils { 25 | public static void yield() { 26 | Thread.yield(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/compression/CRC.java: -------------------------------------------------------------------------------- 1 | // SevenZip/CRC.java 2 | 3 | package com.badlogic.gdx.utils.compression; 4 | 5 | public class CRC { 6 | static public int[] Table = new int[256]; 7 | 8 | static { 9 | for (int i = 0; i < 256; i++) { 10 | int r = i; 11 | for (int j = 0; j < 8; j++) 12 | if ((r & 1) != 0) 13 | r = (r >>> 1) ^ 0xEDB88320; 14 | else 15 | r >>>= 1; 16 | Table[i] = r; 17 | } 18 | } 19 | 20 | int _value = -1; 21 | 22 | public void Init() { 23 | _value = -1; 24 | } 25 | 26 | public void Update(byte[] data, int offset, int size) { 27 | for (int i = 0; i < size; i++) 28 | _value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8); 29 | } 30 | 31 | public void Update(byte[] data) { 32 | int size = data.length; 33 | for (int i = 0; i < size; i++) 34 | _value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8); 35 | } 36 | 37 | public void UpdateByte(int b) { 38 | _value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8); 39 | } 40 | 41 | public int GetDigest() { 42 | return _value ^ (-1); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/compression/ICodeProgress.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils.compression; 18 | 19 | public interface ICodeProgress { 20 | public void SetProgress(long inSize, long outSize); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/reflect/Annotation.java: -------------------------------------------------------------------------------- 1 | package com.badlogic.gdx.utils.reflect; 2 | 3 | /** 4 | * Provides information about, and access to, an annotation of a field, class or 5 | * interface. 6 | * 7 | * @author dludwig 8 | */ 9 | public final class Annotation { 10 | 11 | private java.lang.annotation.Annotation annotation; 12 | 13 | Annotation(java.lang.annotation.Annotation annotation) { 14 | this.annotation = annotation; 15 | } 16 | 17 | @SuppressWarnings("unchecked") 18 | public T getAnnotation(Class annotationType) { 19 | if (annotation.annotationType().equals(annotationType)) { 20 | return (T) annotation; 21 | } 22 | return null; 23 | } 24 | 25 | public Class getAnnotationType() { 26 | return annotation.annotationType(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/badlogic/gdx/utils/reflect/ReflectionException.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2011 See AUTHORS file. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ******************************************************************************/ 16 | 17 | package com.badlogic.gdx.utils.reflect; 18 | 19 | /** 20 | * Thrown when an exception occurs during reflection. 21 | * 22 | * @author nexsoftware 23 | */ 24 | public class ReflectionException extends Exception { 25 | 26 | public ReflectionException() { 27 | super(); 28 | } 29 | 30 | public ReflectionException(String message) { 31 | super(message); 32 | } 33 | 34 | public ReflectionException(Throwable cause) { 35 | super(cause); 36 | } 37 | 38 | public ReflectionException(String message, Throwable cause) { 39 | super(message, cause); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/cofhlib_at.cfg: -------------------------------------------------------------------------------- 1 | 2 | protected net.minecraft.inventory.Container * # senseless to have private stuff here 3 | protected net.minecraft.client.gui.inventory.GuiContainer * # senseless to have private stuff here 4 | public net.minecraft.util.RegistrySimple field_82596_a # registryObjects 5 | public-f net.minecraft.util.RegistryNamespaced field_148759_a # underlyingIntegerMap 6 | 7 | public net.minecraft.server.management.PlayerManager func_72690_a(IIZ)Lnet/minecraft/server/management/PlayerManager$PlayerInstance; # getOrCreateChunkWatcher 8 | public net.minecraft.server.management.PlayerManager$PlayerInstance 9 | -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/logo.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Advanced_Armour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Advanced_Armour.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_Amber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_Amber.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_INVERTED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_INVERTED.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_Lime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_Lime.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_Orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_Orange.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_Pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_Pink.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_Red.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_Yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_Yellow.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_1_greyscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_1_greyscale.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Modular_COLOR_OVERLAY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Modular_COLOR_OVERLAY.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Shad0wB1ade_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Shad0wB1ade_1.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Shad0wB1ade_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Shad0wB1ade_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Thomaz_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Thomaz_1.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/armour/Thomaz_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/armour/Thomaz_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/gui/armourGui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/gui/armourGui.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/gui/recipeGui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/gui/recipeGui.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/gui/tabletBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/gui/tabletBackground.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/gui/tabletGui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/gui/tabletGui.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ItemBelt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ItemBelt.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ItemPendant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ItemPendant.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ItemRing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ItemRing.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularBoots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularBoots.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularBootsIC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularBootsIC.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularBootsLP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularBootsLP.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularBootsMana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularBootsMana.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularChestplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularChestplate.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularChestplateIC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularChestplateIC.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularChestplateLP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularChestplateLP.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularChestplateMana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularChestplateMana.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularHelmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularHelmet.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularHelmetIC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularHelmetIC.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularHelmetLP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularHelmetLP.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularHelmetMana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularHelmetMana.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularLegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularLegs.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularLegsIC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularLegsIC.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularLegsLP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularLegsLP.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/ModularLegsMana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/ModularLegsMana.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/icons/Icon_Accept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/icons/Icon_Accept.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/icons/Icon_Wrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/icons/Icon_Wrench.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/material/HeatedElectrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/material/HeatedElectrum.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/material/TemperedElectrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/material/TemperedElectrum.png -------------------------------------------------------------------------------- /src/main/resources/assets/modulararmour/textures/items/upgrade/ItemUpgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chbachman/ModularArmour/ff8a29d519dadf3a5926341fc3a900462c264cc2/src/main/resources/assets/modulararmour/textures/items/upgrade/ItemUpgrade.png -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "ModularArmour", 4 | "name": "Modular Armour", 5 | "description": "A Mod that makes a modular armour set, with upgrades", 6 | "version": "${version}", 7 | "mcversion": "${mcversion}", 8 | "url": "", 9 | "updateUrl": "", 10 | "authors": ["chbachman"], 11 | "credits": "KL, Skyboy, and Zeldo for CoFH Core, BBoldt for textures.", 12 | "logoFile": "assets/modulararmour/textures/logo.png", 13 | "screenshots": [], 14 | "dependencies": [] 15 | } 16 | ] --------------------------------------------------------------------------------