From c2c7618e66cf3f38cfd26ccbb1c6aeab5216484b Mon Sep 17 00:00:00 2001 From: Shinoow Date: Sat, 29 Nov 2014 19:50:50 +0100 Subject: [PATCH] AbyssalCraft 1.8.0 First things first, HAPPY BIRTHDAY ABYSSALCRAFT! New Thaumcraft integration, bugsplats, memory leak found and removed, coin engraving will now be a thing. Fixes #22 and implements the feature suggested in #17 --- build.gradle | 7 - build.properties | 3 +- mods/Core_dummy.jar | Bin 402 -> 0 bytes src/api/java/thaumcraft/api/IGoggles.java | 22 + src/api/java/thaumcraft/api/IRepairable.java | 13 + .../thaumcraft/api/IRepairableExtended.java | 17 + src/api/java/thaumcraft/api/IRunicArmor.java | 23 + src/api/java/thaumcraft/api/IScribeTools.java | 14 + .../java/thaumcraft/api/IVisDiscountGear.java | 20 + src/api/java/thaumcraft/api/ItemApi.java | 70 ++ src/api/java/thaumcraft/api/ItemRunic.java | 21 + .../java/thaumcraft/api/ThaumcraftApi.java | 470 +++++++++++ .../thaumcraft/api/ThaumcraftApiHelper.java | 268 ++++++ .../java/thaumcraft/api/aspects/Aspect.java | 201 +++++ .../thaumcraft/api/aspects/AspectList.java | 256 ++++++ .../api/aspects/AspectSourceHelper.java | 58 ++ .../api/aspects/IAspectContainer.java | 80 ++ .../thaumcraft/api/aspects/IAspectSource.java | 16 + .../api/aspects/IEssentiaContainerItem.java | 37 + .../api/aspects/IEssentiaTransport.java | 100 +++ .../api/crafting/CrucibleRecipe.java | 74 ++ .../api/crafting/IArcaneRecipe.java | 35 + .../api/crafting/IInfusionStabiliser.java | 19 + .../crafting/InfusionEnchantmentRecipe.java | 156 ++++ .../api/crafting/InfusionRecipe.java | 128 +++ .../api/crafting/ShapedArcaneRecipe.java | 261 ++++++ .../api/crafting/ShapelessArcaneRecipe.java | 157 ++++ .../DamageSourceIndirectThaumcraftEntity.java | 32 + .../damagesource/DamageSourceThaumcraft.java | 46 ++ .../thaumcraft/api/entities/ITaintedMob.java | 5 + src/api/java/thaumcraft/api/nodes/INode.java | 53 ++ .../java/thaumcraft/api/nodes/IRevealer.java | 22 + .../thaumcraft/api/nodes/NodeModifier.java | 6 + .../java/thaumcraft/api/nodes/NodeType.java | 6 + .../api/potions/PotionFluxTaint.java | 67 ++ .../api/research/IScanEventHandler.java | 9 + .../api/research/ResearchCategories.java | 101 +++ .../api/research/ResearchCategoryList.java | 37 + .../thaumcraft/api/research/ResearchItem.java | 367 +++++++++ .../thaumcraft/api/research/ResearchPage.java | 174 ++++ .../thaumcraft/api/research/ScanResult.java | 39 + .../java/thaumcraft/api/wands/IWandFocus.java | 64 ++ .../api/wands/IWandRodOnUpdate.java | 16 + .../api/wands/IWandTriggerManager.java | 12 + .../java/thaumcraft/api/wands/IWandable.java | 25 + .../thaumcraft/api/wands/ItemFocusBasic.java | 166 ++++ .../java/thaumcraft/api/wands/StaffRod.java | 48 ++ .../java/thaumcraft/api/wands/WandCap.java | 122 +++ .../java/thaumcraft/api/wands/WandRod.java | 151 ++++ .../api/wands/WandTriggerRegistry.java | 72 ++ src/main/build.gradle | 94 +++ src/main/build.properties | 3 + .../shinoow/abyssalcraft/AbyssalCraft.java | 473 ++++++----- .../abyssalcraft/api/AbyssalCraftAPI.java | 765 ++++++++++++++++++ .../{core => }/api/addon/ACAddon.java | 23 +- .../abyssalcraft/api/addon/IACAddon.java | 44 + .../abyssalcraft/api/addon/package-info.java | 3 + .../{core => }/api/block/ACBlocks.java | 25 +- .../abyssalcraft/api/block/package-info.java | 3 + .../abyssalcraft/api/entity/IAntiEntity.java | 26 + .../api/entity/ICoraliumEntity.java | 26 + .../abyssalcraft/api/entity/IDreadEntity.java | 26 + .../abyssalcraft/api/entity/package-info.java | 3 + .../{core => }/api/item/ACItems.java | 27 +- .../abyssalcraft/api/item/ItemEngraving.java | 48 ++ .../{core => }/api/item/ItemUpgradeKit.java | 29 +- .../abyssalcraft/api/item/package-info.java | 3 + .../abyssalcraft/api/package-info.java | 3 + .../recipe}/CrystallizerRecipes.java | 35 +- .../api/recipe/EngraverRecipes.java | 152 ++++ .../recipe}/TransmutatorRecipes.java | 38 +- .../abyssalcraft/api/recipe/package-info.java | 3 + .../{core => }/api/render/Block3DRender.java | 23 +- .../abyssalcraft/api/render/package-info.java | 3 + .../abyssalcraft/client/ACParticleFX.java | 21 +- .../abyssalcraft/client/ClientProxy.java | 30 +- .../client/config/ACConfigGUI.java | 59 +- .../client/config/ACGuiFactory.java | 21 +- .../client/gui/GuiCrystallizer.java | 21 +- .../abyssalcraft/client/gui/GuiEngraver.java | 60 ++ .../client/gui/GuiTransmutator.java | 21 +- .../client/lib/ParticleEffects.java | 21 +- .../client/model/block/ModelAltar.java | 21 +- .../client/model/block/ModelDGhead.java | 21 +- .../model/block/ModelDreadAltarBottom.java | 21 +- .../model/block/ModelDreadAltarTop.java | 21 +- .../client/model/block/ModelEngraver.java | 141 ++++ .../client/model/block/ModelODB.java | 21 +- .../client/model/entity/ModelAntiBat.java | 21 +- .../model/entity/ModelAntiSkeleton.java | 21 +- .../client/model/entity/ModelChagaroth.java | 21 +- .../model/entity/ModelChagarothFist.java | 21 +- .../model/entity/ModelChagarothSpawn.java | 16 + .../client/model/entity/ModelDG.java | 21 +- .../client/model/entity/ModelDragonBoss.java | 16 + .../model/entity/ModelDragonMinion.java | 16 + .../client/model/entity/ModelDreadSpawn.java | 16 + .../client/model/entity/ModelDreadling.java | 21 +- .../client/model/entity/ModelJzahar.java | 21 +- .../client/model/entity/ModelSacthoth.java | 21 +- .../client/model/entity/ModelShadowBeast.java | 21 +- .../model/entity/ModelShadowCreature.java | 21 +- .../model/entity/ModelShadowMonster.java | 21 +- .../model/entity/ModelSkeletonGoliath.java | 21 +- .../client/model/item/ModelCudgel.java | 21 +- .../model/item/ModelDreadiumSamuraiArmor.java | 16 + .../client/model/item/ModelHilt.java | 21 +- .../client/model/item/ModelKatana.java | 21 +- .../client/model/item/ModelStaff.java | 21 +- .../model/player}/ModelStarSpawnPlayer.java | 23 +- .../client/render/block/RenderODB.java | 21 +- .../client/render/block/RenderODBc.java | 21 +- .../render/block/TileEntityAltarRenderer.java | 21 +- .../block/TileEntityDGheadRenderer.java | 21 +- .../TileEntityDreadAltarBottomRenderer.java | 21 +- .../TileEntityDreadAltarTopRenderer.java | 21 +- .../block/TileEntityEngraverRenderer.java | 68 ++ .../render/block/TileEntityODBRenderer.java | 21 +- .../render/block/TileEntityOheadRenderer.java | 21 +- .../render/block/TileEntityPSDLRenderer.java | 21 +- .../render/block/TileEntityPheadRenderer.java | 21 +- .../render/block/TileEntityWheadRenderer.java | 21 +- .../render/entity/RenderAbyssalZombie.java | 21 +- .../entity/RenderAntiAbyssalZombie.java | 21 +- .../client/render/entity/RenderAntiBat.java | 21 +- .../render/entity/RenderAntiChicken.java | 21 +- .../client/render/entity/RenderAntiCow.java | 21 +- .../render/entity/RenderAntiCreeper.java | 21 +- .../client/render/entity/RenderAntiGhoul.java | 21 +- .../client/render/entity/RenderAntiPig.java | 21 +- .../render/entity/RenderAntiPlayer.java | 21 +- .../render/entity/RenderAntiSkeleton.java | 21 +- .../render/entity/RenderAntiSpider.java | 21 +- .../render/entity/RenderAntiZombie.java | 21 +- .../client/render/entity/RenderChagaroth.java | 21 +- .../render/entity/RenderChagarothFist.java | 21 +- .../render/entity/RenderChagarothSpawn.java | 21 +- .../client/render/entity/RenderDemonPig.java | 21 +- .../render/entity/RenderDepthsghoul.java | 21 +- .../render/entity/RenderDragonBoss.java | 21 +- .../render/entity/RenderDragonMinion.java | 24 +- .../render/entity/RenderDreadSpawn.java | 21 +- .../client/render/entity/RenderDreadling.java | 21 +- .../client/render/entity/RenderJzahar.java | 21 +- .../client/render/entity/RenderPig.java | 21 +- .../client/render/entity/RenderSacthoth.java | 21 +- .../render/entity/RenderShadowBeast.java | 21 +- .../render/entity/RenderShadowCreature.java | 21 +- .../render/entity/RenderShadowMonster.java | 21 +- .../render/entity/RenderSkeletonGoliath.java | 21 +- .../client/render/entity/Renderabygolem.java | 21 +- .../render/entity/Renderdreadgolem.java | 21 +- .../render/entity/Renderdreadguard.java | 21 +- .../client/render/item/RenderCudgel.java | 21 +- .../client/render/item/RenderHilt.java | 21 +- .../client/render/item/RenderKatana.java | 21 +- .../client/render/item/RenderStaff.java | 21 +- .../render/player}/RenderPlayerAC.java | 31 +- .../abyssalcraft/common/AbyssalCrafting.java | 364 +++++---- .../abyssalcraft/common/CommonProxy.java | 38 +- .../common/CreativeTabs/TabACBlocks.java | 21 +- .../common/CreativeTabs/TabACCombat.java | 21 +- .../common/CreativeTabs/TabACDecoration.java | 21 +- .../common/CreativeTabs/TabACFood.java | 21 +- .../common/CreativeTabs/TabACItems.java | 21 +- .../common/CreativeTabs/TabACTools.java | 21 +- .../common/blocks/BlockACBasic.java | 21 +- .../common/blocks/BlockACButton.java | 21 +- .../common/blocks/BlockACDoubleSlab.java | 21 +- .../common/blocks/BlockACFence.java | 21 +- .../common/blocks/BlockACOre.java | 21 +- .../common/blocks/BlockACPressureplate.java | 21 +- .../common/blocks/BlockACSingleSlab.java | 21 +- .../common/blocks/BlockACStairs.java | 21 +- .../common/blocks/BlockAbyssPortal.java | 21 +- .../common/blocks/BlockAltar.java | 21 +- .../common/blocks/BlockAntiliquid.java | 23 +- .../common/blocks/BlockCLiquid.java | 23 +- .../blocks/BlockChagarothFistSpawner.java | 21 +- .../common/blocks/BlockChagarothSpawner.java | 21 +- .../common/blocks/BlockCoraliumfire.java | 21 +- .../common/blocks/BlockCoraliumstone.java | 21 +- .../common/blocks/BlockCrate.java | 21 +- .../common/blocks/BlockCrystallizer.java | 21 +- .../common/blocks/BlockDGhead.java | 21 +- .../common/blocks/BlockDLTLeaves.java | 21 +- .../common/blocks/BlockDLTLog.java | 21 +- .../common/blocks/BlockDLTSapling.java | 21 +- .../common/blocks/BlockDSGlow.java | 21 +- .../common/blocks/BlockDarklandsgrass.java | 21 +- .../common/blocks/BlockDarkstone.java | 21 +- .../blocks/BlockDarkstonecobblewall.java | 21 +- .../common/blocks/BlockDarkstoneslab.java | 21 +- .../blocks/BlockDarkstoneslabdouble.java | 21 +- .../common/blocks/BlockDreadAltarBottom.java | 23 +- .../common/blocks/BlockDreadAltarTop.java | 23 +- .../common/blocks/BlockDreadFire.java | 21 +- .../common/blocks/BlockDreadgrass.java | 21 +- .../common/blocks/BlockDreadguardSpawner.java | 21 +- .../common/blocks/BlockDreadlandsPortal.java | 21 +- .../common/blocks/BlockDreadleaves.java | 21 +- .../common/blocks/BlockDreadlog.java | 21 +- .../common/blocks/BlockDreadore.java | 21 +- .../common/blocks/BlockDreadsapling.java | 21 +- .../common/blocks/BlockEngraver.java | 216 +++++ .../common/blocks/BlockEthaxiumBrick.java | 21 +- .../common/blocks/BlockEthaxiumPillar.java | 21 +- .../abyssalcraft/common/blocks/BlockODB.java | 21 +- .../common/blocks/BlockODBcore.java | 21 +- .../common/blocks/BlockOhead.java | 21 +- .../common/blocks/BlockOmotholFire.java | 21 +- .../common/blocks/BlockOmotholPortal.java | 21 +- .../abyssalcraft/common/blocks/BlockPSDL.java | 23 +- .../common/blocks/BlockPhead.java | 21 +- .../common/blocks/BlockSolidLava.java | 21 +- .../common/blocks/BlockTransmutator.java | 21 +- .../common/blocks/BlockWhead.java | 21 +- .../common/blocks/IngotBlock.java | 21 +- .../itemblock/ItemAbyDreadbrickSlab.java | 21 +- .../common/blocks/itemblock/ItemAbySlab.java | 21 +- .../common/blocks/itemblock/ItemAltar.java | 21 +- .../blocks/itemblock/ItemBlockColorName.java | 21 +- .../blocks/itemblock/ItemCstonebrickSlab.java | 21 +- .../common/blocks/itemblock/ItemDLTSlab.java | 21 +- .../blocks/itemblock/ItemDarkbrickSlab.java | 21 +- .../blocks/itemblock/ItemDarkcobbleSlab.java | 21 +- .../blocks/itemblock/ItemDarkstoneSlab.java | 21 +- .../blocks/itemblock/ItemDreadbrickSlab.java | 21 +- .../blocks/itemblock/ItemMetadataBlock.java | 21 +- .../common/blocks/itemblock/ItemODB.java | 21 +- .../common/blocks/tile/TileEntityAltar.java | 21 +- .../tile/TileEntityChagarothFistSpawner.java | 21 +- .../tile/TileEntityChagarothSpawner.java | 21 +- .../common/blocks/tile/TileEntityCrate.java | 21 +- .../blocks/tile/TileEntityCrystallizer.java | 39 +- .../common/blocks/tile/TileEntityDGhead.java | 21 +- .../tile/TileEntityDreadAltarBottom.java | 21 +- .../blocks/tile/TileEntityDreadAltarTop.java | 21 +- .../tile/TileEntityDreadguardSpawner.java | 21 +- .../blocks/tile/TileEntityEngraver.java | 283 +++++++ .../common/blocks/tile/TileEntityODB.java | 21 +- .../common/blocks/tile/TileEntityOhead.java | 21 +- .../common/blocks/tile/TileEntityPSDL.java | 21 +- .../common/blocks/tile/TileEntityPhead.java | 21 +- .../blocks/tile/TileEntityTransmutator.java | 34 +- .../common/blocks/tile/TileEntityWhead.java | 21 +- .../common/creativetabs/TabACCoins.java | 46 ++ .../common/creativetabs/TabACCrystals.java | 21 +- .../enchantments/EnchantmentIronWall.java | 24 +- .../enchantments/EnchantmentLightPierce.java | 34 +- .../EnchantmentWeaponInfusion.java | 21 +- .../common/entity/EntityAbyssalZombie.java | 25 +- .../common/entity/EntityChagaroth.java | 23 +- .../common/entity/EntityChagarothFist.java | 23 +- .../common/entity/EntityChagarothSpawn.java | 23 +- .../common/entity/EntityDemonPig.java | 21 +- .../common/entity/EntityDepthsghoul.java | 74 +- .../common/entity/EntityDragonBoss.java | 23 +- .../common/entity/EntityDragonMinion.java | 23 +- .../common/entity/EntityDreadSpawn.java | 23 +- .../common/entity/EntityDreadling.java | 23 +- .../common/entity/EntityGatekeeperMinion.java | 18 +- .../common/entity/EntityJzahar.java | 23 +- .../common/entity/EntityLesserShoggoth.java | 49 +- .../common/entity/EntityODBPrimed.java | 21 +- .../common/entity/EntityODBcPrimed.java | 21 +- .../common/entity/EntityOmotholGhoul.java | 16 + .../common/entity/EntityOmotholWarden.java | 16 + .../common/entity/EntityPSDLTracker.java | 21 +- .../common/entity/EntityRemnant.java | 16 + .../common/entity/EntitySacthoth.java | 28 +- .../common/entity/EntityShadowBeast.java | 26 +- .../common/entity/EntityShadowCreature.java | 23 +- .../common/entity/EntityShadowMonster.java | 26 +- .../common/entity/EntityShadowTitan.java | 24 +- .../common/entity/EntitySkeletonGoliath.java | 16 + .../common/entity/Entityabygolem.java | 21 +- .../common/entity/Entitydreadgolem.java | 23 +- .../common/entity/Entitydreadguard.java | 23 +- .../common/entity/Entityevilpig.java | 21 +- .../entity/ai/EntityAIAntiCreeperSwell.java | 21 +- .../entity/anti/EntityAntiAbyssalZombie.java | 23 +- .../common/entity/anti/EntityAntiBat.java | 23 +- .../common/entity/anti/EntityAntiChicken.java | 23 +- .../common/entity/anti/EntityAntiCow.java | 23 +- .../common/entity/anti/EntityAntiCreeper.java | 23 +- .../common/entity/anti/EntityAntiGhoul.java | 23 +- .../common/entity/anti/EntityAntiPig.java | 23 +- .../common/entity/anti/EntityAntiPlayer.java | 23 +- .../entity/anti/EntityAntiSkeleton.java | 23 +- .../common/entity/anti/EntityAntiSpider.java | 23 +- .../common/entity/anti/EntityAntiZombie.java | 23 +- .../handlers/AbyssalCraftEventHooks.java | 147 ++-- .../common/handlers/BucketHandler.java | 16 + .../common/handlers/FurnaceFuelHandler.java | 21 +- .../inventory/ContainerCrystallizer.java | 23 +- .../common/inventory/ContainerEngraver.java | 141 ++++ .../inventory/ContainerTransmutator.java | 29 +- .../common/inventory/SlotCrystallizer.java | 23 +- .../common/inventory/SlotEngraverOutput.java | 106 +++ .../common/inventory/SlotEngraving.java | 36 + .../common/inventory/SlotTransmutator.java | 23 +- .../common/items/AbyssalCraftTool.java | 21 +- .../common/items/ItemACBasic.java | 30 +- .../common/items/ItemAbyssalniteAxe.java | 21 +- .../common/items/ItemAbyssalniteCAxe.java | 21 +- .../common/items/ItemAbyssalniteCHoe.java | 21 +- .../common/items/ItemAbyssalniteCPickaxe.java | 21 +- .../common/items/ItemAbyssalniteCShovel.java | 21 +- .../common/items/ItemAbyssalniteCSword.java | 21 +- .../common/items/ItemAbyssalniteHoe.java | 21 +- .../common/items/ItemAbyssalnitePickaxe.java | 21 +- .../common/items/ItemAbyssalniteShovel.java | 21 +- .../common/items/ItemAbyssalniteSword.java | 21 +- .../common/items/ItemAntiBucket.java | 21 +- .../common/items/ItemAntiFood.java | 21 +- .../common/items/ItemCBucket.java | 21 +- .../abyssalcraft/common/items/ItemCoin.java | 22 +- .../common/items/ItemCoraliumAxe.java | 21 +- .../common/items/ItemCoraliumBow.java | 21 +- .../common/items/ItemCoraliumHoe.java | 21 +- .../common/items/ItemCoraliumPickaxe.java | 21 +- .../common/items/ItemCoraliumShovel.java | 21 +- .../common/items/ItemCoraliumSword.java | 21 +- .../common/items/ItemCoraliumcluster.java | 21 +- .../abyssalcraft/common/items/ItemCorb.java | 21 +- .../common/items/ItemCorbone.java | 21 +- .../common/items/ItemCorflesh.java | 21 +- .../common/items/ItemCrystal.java | 21 +- .../abyssalcraft/common/items/ItemCudgel.java | 21 +- .../common/items/ItemDarkstoneAxe.java | 21 +- .../common/items/ItemDarkstoneHoe.java | 21 +- .../common/items/ItemDarkstonePickaxe.java | 21 +- .../common/items/ItemDarkstoneShovel.java | 21 +- .../common/items/ItemDarkstoneSword.java | 21 +- .../common/items/ItemDreadiumAxe.java | 21 +- .../common/items/ItemDreadiumHoe.java | 21 +- .../common/items/ItemDreadiumKatana.java | 21 +- .../common/items/ItemDreadiumPickaxe.java | 21 +- .../common/items/ItemDreadiumShovel.java | 21 +- .../common/items/ItemDreadiumSword.java | 21 +- .../abyssalcraft/common/items/ItemEoA.java | 21 +- .../common/items/ItemEthaxiumAxe.java | 21 +- .../common/items/ItemEthaxiumHoe.java | 21 +- .../common/items/ItemEthaxiumPickaxe.java | 21 +- .../common/items/ItemEthaxiumShovel.java | 21 +- .../common/items/ItemEthaxiumSword.java | 21 +- .../common/items/ItemFriedegg.java | 21 +- .../abyssalcraft/common/items/ItemOC.java | 21 +- .../common/items/ItemPlatefood.java | 21 +- .../common/items/ItemPortalPlacer.java | 21 +- .../common/items/ItemPortalPlacerDL.java | 21 +- .../common/items/ItemPortalPlacerJzh.java | 42 +- .../common/items/ItemShoggothFlesh.java | 64 ++ .../common/items/ItemSoulReaper.java | 21 +- .../abyssalcraft/common/items/ItemStaff.java | 21 +- .../common/items/ItemTrackerPSDL.java | 21 +- .../common/items/ItemWashCloth.java | 21 +- .../items/armor/ItemAbyssalniteArmor.java | 21 +- .../items/armor/ItemAbyssalniteCArmor.java | 21 +- .../common/items/armor/ItemCoraliumArmor.java | 21 +- .../items/armor/ItemCoraliumPArmor.java | 21 +- .../common/items/armor/ItemDepthsArmor.java | 116 ++- .../common/items/armor/ItemDreadArmor.java | 21 +- .../common/items/armor/ItemDreadiumArmor.java | 21 +- .../items/armor/ItemDreadiumSamuraiArmor.java | 21 +- .../common/items/armor/ItemEthaxiumArmor.java | 21 +- .../common/potion/PotionAntimatter.java | 27 +- .../common/potion/PotionCplague.java | 27 +- .../common/potion/PotionDplague.java | 27 +- .../common/structures/abyss/Abypillar.java | 21 +- .../abyss/stronghold/MapGenAbyStronghold.java | 21 +- .../StructureAbyStrongholdPieces.java | 23 +- .../structures/dreadlands/chagarothlair.java | 21 +- .../mineshaft/MapGenDreadlandsMine.java | 21 +- .../StructureDreadlandsMinePieces.java | 21 +- .../StructureDreadlandsMineStart.java | 21 +- .../common/structures/overworld/AChouse1.java | 21 +- .../common/structures/overworld/AChouse2.java | 21 +- .../structures/overworld/ACplatform1.java | 21 +- .../structures/overworld/ACplatform2.java | 21 +- .../common/structures/overworld/ACscion1.java | 21 +- .../common/structures/overworld/ACscion2.java | 21 +- .../abyssalcraft/common/util/ACLogger.java | 21 +- .../common/util/EnumToolMaterialAC.java | 21 +- .../common/util/ExplosionUtil.java | 21 +- .../common/util/RandomFiltered.java | 40 + .../{core => common}/util/SalvageHandler.java | 23 +- .../common/util/SpecialTextUtil.java | 21 +- .../common/world/ACExplosion.java | 16 + .../world/AbyssalCraftWorldGenerator.java | 21 +- .../common/world/ChunkProviderAbyss.java | 117 +-- .../common/world/ChunkProviderDarkRealm.java | 149 +--- .../common/world/ChunkProviderDreadlands.java | 23 +- .../common/world/ChunkProviderOmothol.java | 246 +++--- .../common/world/TeleporterAbyss.java | 21 +- .../common/world/TeleporterDreadlands.java | 21 +- .../common/world/TeleporterOmothol.java | 21 +- .../world/WorldChunkManagerDreadlands.java | 21 +- .../common/world/WorldProviderAbyss.java | 21 +- .../common/world/WorldProviderDarkRealm.java | 22 +- .../common/world/WorldProviderDreadlands.java | 21 +- .../common/world/WorldProviderOmothol.java | 39 +- .../world/biome/BiomeGenAbyDreadlands.java | 93 +-- .../world/biome/BiomeGenAbywasteland.java | 31 +- .../common/world/biome/BiomeGenCorOcean.java | 28 +- .../common/world/biome/BiomeGenCorSwamp.java | 50 +- .../common/world/biome/BiomeGenDarkRealm.java | 27 +- .../common/world/biome/BiomeGenDarklands.java | 84 +- .../world/biome/BiomeGenDarklandsForest.java | 83 +- .../world/biome/BiomeGenDarklandsHills.java | 97 +-- .../biome/BiomeGenDarklandsMountains.java | 54 +- .../world/biome/BiomeGenDarklandsPlains.java | 84 +- .../world/biome/BiomeGenDreadlands.java | 63 +- .../world/biome/BiomeGenDreadlandsBase.java | 156 ++++ .../world/biome/BiomeGenForestDreadlands.java | 40 +- .../biome/BiomeGenMountainDreadlands.java | 41 +- .../common/world/biome/BiomeGenOmothol.java | 21 +- .../common/world/gen/WorldGenAbyLake.java | 21 +- .../world/gen/WorldGenAntimatterLake.java | 21 +- .../common/world/gen/WorldGenDLT.java | 21 +- .../common/world/gen/WorldGenDrT.java | 21 +- .../world/gen/layer/GenLayerBiomesDL.java | 21 +- .../common/world/gen/layer/GenLayerDL.java | 21 +- .../abyssalcraft/core/ACCorePlugin.java | 64 -- .../com/shinoow/abyssalcraft/core/Core.java | 211 ----- .../shinoow/abyssalcraft/core/api/ACMod.java | 33 - .../abyssalcraft/core/api/addon/IACAddon.java | 43 - .../core/api/addon/package-info.java | 3 - .../core/api/block/package-info.java | 3 - .../core/api/damagesource/ACDamageSource.java | 31 - .../core/api/damagesource/package-info.java | 3 - .../core/api/enchantment/ACEnchantments.java | 31 - .../core/api/enchantment/package-info.java | 3 - .../core/api/entity/ACEntities.java | 64 -- .../core/api/entity/IAntiEntity.java | 25 - .../core/api/entity/ICoraliumEntity.java | 25 - .../core/api/entity/IDreadEntity.java | 25 - .../core/api/entity/package-info.java | 3 - .../core/api/item/package-info.java | 3 - .../abyssalcraft/core/api/package-info.java | 3 - .../core/api/potion/ACPotions.java | 30 - .../core/api/potion/package-info.java | 3 - .../core/api/render/package-info.java | 3 - .../abyssalcraft/core/client/ClientProxy.java | 36 - .../core/client/config/ACCoreConfigGUI.java | 30 - .../core/client/config/ACCoreGuiFactory.java | 44 - .../abyssalcraft/core/common/CommonProxy.java | 47 -- .../core/handlers/CraftingHandler.java | 60 -- .../abyssalcraft/core/util/CoreLogger.java | 47 -- .../abyssalcraft/core/util/CoreRegistry.java | 353 -------- .../core/util/RandomFiltered.java | 24 - .../nei/CrystallizerRecipeHandler.java | 18 +- .../nei/EngraverRecipeHandler.java | 173 ++++ .../integration/nei/NEIACConfig.java | 20 + .../nei/TransmutatorRecipeHandler.java | 18 +- .../thaumcraft/ACThaumcraftIntegration.java | 111 +++ .../abyssalcraft/update/IUpdateProxy.java | 21 +- .../update/UpdateProxyClient.java | 21 +- .../update/UpdateProxyServer.java | 21 +- .../assets/abyssalcraft/lang/en_US.lang | 2 +- .../resources/assets/abyssalcraft/sounds.json | 20 +- .../abyssalcraft/sounds/ghoul/death.ogg | Bin 0 -> 29243 bytes .../sounds/ghoul/normal/idle1.ogg | Bin 0 -> 17458 bytes .../sounds/ghoul/normal/idle2.ogg | Bin 0 -> 17564 bytes .../sounds/ghoul/normal/idle3.ogg | Bin 0 -> 16677 bytes .../sounds/ghoul/normal/idle4.ogg | Bin 0 -> 15097 bytes .../sounds/ghoul/normal/idle5.ogg | Bin 0 -> 22495 bytes .../sounds/shadow/sacthoth/death.ogg | Bin 0 -> 100291 bytes .../textures/armor/abyssalnite_1.png | Bin 5163 -> 4497 bytes .../textures/armor/abyssalnite_2.png | Bin 3618 -> 3576 bytes .../textures/armor/coralium_1.png | Bin 4557 -> 4174 bytes .../textures/armor/coralium_2.png | Bin 3436 -> 3436 bytes .../abyssalcraft/textures/armor/dread_1.png | Bin 5338 -> 5336 bytes .../textures/armor/dreadium_1.png | Bin 4390 -> 4073 bytes .../textures/armor/dreadium_2.png | Bin 3418 -> 3403 bytes .../abyssalcraft/textures/blocks/DSsSides.png | Bin 3285 -> 3261 bytes .../abyssalcraft/textures/blocks/DSsTop.png | Bin 3261 -> 3257 bytes .../abyssalcraft/textures/blocks/EB.png | Bin 3358 -> 3460 bytes .../abyssalcraft/textures/blocks/EBC.png | Bin 3404 -> 3436 bytes .../textures/font/aklo-ascii-256x.png | Bin 0 -> 3053 bytes .../textures/gui/container/engraver.png | Bin 0 -> 4027 bytes .../abyssalcraft/textures/items/AAC.png | Bin 2983 -> 2995 bytes .../abyssalcraft/textures/items/AAH.png | Bin 2943 -> 2940 bytes .../abyssalcraft/textures/items/ACC.png | Bin 3185 -> 3144 bytes .../abyssalcraft/textures/items/ACH.png | Bin 3055 -> 3042 bytes .../abyssalcraft/textures/items/ADDC.png | Bin 2943 -> 2958 bytes .../abyssalcraft/textures/items/ADDH.png | Bin 2927 -> 2932 bytes .../abyssalcraft/textures/items/DDSW.png | Bin 2990 -> 2985 bytes .../assets/abyssalcraft/textures/items/TG.png | Bin 3296 -> 3194 bytes .../abyssalcraft/textures/items/coin.png | Bin 3184 -> 3125 bytes .../textures/items/cthulhucoin.png | Bin 0 -> 3184 bytes .../abyssalcraft/textures/items/eldercoin.png | Bin 0 -> 3177 bytes .../textures/items/eldritchScale.png | Bin 0 -> 3006 bytes .../textures/items/engraving_blank.png | Bin 0 -> 2844 bytes .../textures/items/engraving_cthulhu.png | Bin 0 -> 2905 bytes .../textures/items/engraving_elder.png | Bin 0 -> 2899 bytes .../textures/items/engraving_jzahar.png | Bin 0 -> 2913 bytes .../textures/items/jzaharcoin.png | Bin 0 -> 3186 bytes .../abyssalcraft/textures/items/methane.png | Bin 3009 -> 3028 bytes .../abyssalcraft/textures/items/nitre.png | Bin 3086 -> 3119 bytes .../textures/items/shoggothFlesh.png | Bin 0 -> 3267 bytes .../abyssalcraft/textures/logo_core.png | Bin 22720 -> 0 bytes .../textures/model/blocks/Engraver.png | Bin 0 -> 4482 bytes .../textures/model/elite/dragonminion.png | Bin 14610 -> 17790 bytes .../model/elite/dragonminion_eyes.png | Bin 78231 -> 17796 bytes src/main/resources/version.properties | 1 - version.txt | 2 +- 508 files changed, 12211 insertions(+), 5796 deletions(-) delete mode 100644 mods/Core_dummy.jar create mode 100644 src/api/java/thaumcraft/api/IGoggles.java create mode 100644 src/api/java/thaumcraft/api/IRepairable.java create mode 100644 src/api/java/thaumcraft/api/IRepairableExtended.java create mode 100644 src/api/java/thaumcraft/api/IRunicArmor.java create mode 100644 src/api/java/thaumcraft/api/IScribeTools.java create mode 100644 src/api/java/thaumcraft/api/IVisDiscountGear.java create mode 100644 src/api/java/thaumcraft/api/ItemApi.java create mode 100644 src/api/java/thaumcraft/api/ItemRunic.java create mode 100644 src/api/java/thaumcraft/api/ThaumcraftApi.java create mode 100644 src/api/java/thaumcraft/api/ThaumcraftApiHelper.java create mode 100644 src/api/java/thaumcraft/api/aspects/Aspect.java create mode 100644 src/api/java/thaumcraft/api/aspects/AspectList.java create mode 100644 src/api/java/thaumcraft/api/aspects/AspectSourceHelper.java create mode 100644 src/api/java/thaumcraft/api/aspects/IAspectContainer.java create mode 100644 src/api/java/thaumcraft/api/aspects/IAspectSource.java create mode 100644 src/api/java/thaumcraft/api/aspects/IEssentiaContainerItem.java create mode 100644 src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java create mode 100644 src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java create mode 100644 src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java create mode 100644 src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java create mode 100644 src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java create mode 100644 src/api/java/thaumcraft/api/crafting/InfusionRecipe.java create mode 100644 src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java create mode 100644 src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java create mode 100644 src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java create mode 100644 src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java create mode 100644 src/api/java/thaumcraft/api/entities/ITaintedMob.java create mode 100644 src/api/java/thaumcraft/api/nodes/INode.java create mode 100644 src/api/java/thaumcraft/api/nodes/IRevealer.java create mode 100644 src/api/java/thaumcraft/api/nodes/NodeModifier.java create mode 100644 src/api/java/thaumcraft/api/nodes/NodeType.java create mode 100644 src/api/java/thaumcraft/api/potions/PotionFluxTaint.java create mode 100644 src/api/java/thaumcraft/api/research/IScanEventHandler.java create mode 100644 src/api/java/thaumcraft/api/research/ResearchCategories.java create mode 100644 src/api/java/thaumcraft/api/research/ResearchCategoryList.java create mode 100644 src/api/java/thaumcraft/api/research/ResearchItem.java create mode 100644 src/api/java/thaumcraft/api/research/ResearchPage.java create mode 100644 src/api/java/thaumcraft/api/research/ScanResult.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandFocus.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandTriggerManager.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandable.java create mode 100644 src/api/java/thaumcraft/api/wands/ItemFocusBasic.java create mode 100644 src/api/java/thaumcraft/api/wands/StaffRod.java create mode 100644 src/api/java/thaumcraft/api/wands/WandCap.java create mode 100644 src/api/java/thaumcraft/api/wands/WandRod.java create mode 100644 src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java create mode 100644 src/main/build.gradle create mode 100644 src/main/build.properties create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/AbyssalCraftAPI.java rename src/main/java/com/shinoow/abyssalcraft/{core => }/api/addon/ACAddon.java (56%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/addon/IACAddon.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/addon/package-info.java rename src/main/java/com/shinoow/abyssalcraft/{core => }/api/block/ACBlocks.java (92%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/block/package-info.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/entity/IAntiEntity.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/entity/ICoraliumEntity.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/entity/IDreadEntity.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/entity/package-info.java rename src/main/java/com/shinoow/abyssalcraft/{core => }/api/item/ACItems.java (94%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/item/ItemEngraving.java rename src/main/java/com/shinoow/abyssalcraft/{core => }/api/item/ItemUpgradeKit.java (61%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/item/package-info.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/package-info.java rename src/main/java/com/shinoow/abyssalcraft/{core/util/recipes => api/recipe}/CrystallizerRecipes.java (70%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/recipe/EngraverRecipes.java rename src/main/java/com/shinoow/abyssalcraft/{core/util/recipes => api/recipe}/TransmutatorRecipes.java (74%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/recipe/package-info.java rename src/main/java/com/shinoow/abyssalcraft/{core => }/api/render/Block3DRender.java (66%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/api/render/package-info.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/client/gui/GuiEngraver.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelEngraver.java rename src/main/java/com/shinoow/abyssalcraft/{core/client/model => client/model/player}/ModelStarSpawnPlayer.java (93%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityEngraverRenderer.java rename src/main/java/com/shinoow/abyssalcraft/{core/client/render => client/render/player}/RenderPlayerAC.java (92%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEngraver.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityEngraver.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCoins.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerEngraver.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraverOutput.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraving.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/items/ItemShoggothFlesh.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/util/RandomFiltered.java rename src/main/java/com/shinoow/abyssalcraft/{core => common}/util/SalvageHandler.java (82%) create mode 100644 src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlandsBase.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/ACCorePlugin.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/Core.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/ACMod.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/addon/IACAddon.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/addon/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/block/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/ACDamageSource.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/ACEnchantments.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/entity/ACEntities.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/entity/IAntiEntity.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/entity/ICoraliumEntity.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/entity/IDreadEntity.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/entity/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/item/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/potion/ACPotions.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/potion/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/api/render/package-info.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/client/ClientProxy.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreConfigGUI.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreGuiFactory.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/common/CommonProxy.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/handlers/CraftingHandler.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/util/CoreLogger.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/util/CoreRegistry.java delete mode 100644 src/main/java/com/shinoow/abyssalcraft/core/util/RandomFiltered.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/integration/nei/EngraverRecipeHandler.java create mode 100644 src/main/java/com/shinoow/abyssalcraft/integration/thaumcraft/ACThaumcraftIntegration.java create mode 100644 src/main/resources/assets/abyssalcraft/sounds/ghoul/death.ogg create mode 100644 src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle1.ogg create mode 100644 src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle2.ogg create mode 100644 src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle3.ogg create mode 100644 src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle4.ogg create mode 100644 src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle5.ogg create mode 100644 src/main/resources/assets/abyssalcraft/sounds/shadow/sacthoth/death.ogg create mode 100644 src/main/resources/assets/abyssalcraft/textures/font/aklo-ascii-256x.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/gui/container/engraver.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/cthulhucoin.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/eldercoin.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/eldritchScale.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/engraving_blank.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/engraving_cthulhu.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/engraving_elder.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/engraving_jzahar.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/jzaharcoin.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/items/shoggothFlesh.png delete mode 100644 src/main/resources/assets/abyssalcraft/textures/logo_core.png create mode 100644 src/main/resources/assets/abyssalcraft/textures/model/blocks/Engraver.png diff --git a/build.gradle b/build.gradle index 4efbf1825..6e6116963 100644 --- a/build.gradle +++ b/build.gradle @@ -62,7 +62,6 @@ processResources expand ([ 'version':project.version, 'acversion':project.props.ac_version, - 'coreversion':project.props.core_version, 'mcversion':project.props.mc_version, 'forgeversion':project.props.forge_version ]) @@ -74,12 +73,6 @@ processResources exclude 'version.properties' } } - jar { - manifest { - attributes("FMLCorePlugin": "com.shinoow.abyssalcraft.core.ACCorePlugin") - attributes("FMLCorePluginContainsFMLMod": "true") - } - } task srcJar(type: Jar) { from sourceSets.main.allSource diff --git a/build.properties b/build.properties index d55ac2561..0c55e9450 100644 --- a/build.properties +++ b/build.properties @@ -1,4 +1,3 @@ mc_version=1.7.2 forge_version=10.12.2.1147 -ac_version=1.7.8.1 -core_version=1.2.0 \ No newline at end of file +ac_version=1.8.0 \ No newline at end of file diff --git a/mods/Core_dummy.jar b/mods/Core_dummy.jar deleted file mode 100644 index 233403222c92ada66fd850b55d95180ccd597cb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmWIWW@h1H0D(tBHqKxMl;8x?zOEsTx}JV+`T;;?B0vES1`pobF7a`kB}qWu3?K%H z!j<_t`gyv!28ZbRx_$ONbK1vSSMMUPx31Q?Gv_x48C)@b@U-aj*TQr9Uc4tXeb2LW zsXl-HN;Ey?+0*CKU#qHxiixW~QxR8PHuZ%nv*=4pE9EPTGE2{$*Y-SfMw^Z6*R$mh z3{MCiDr76H*jcfYA;6oFNuB|h<5hs}0s#RCg>WMmg92EHkwJpN*gy2ygWcyCVRVtx zx_=jee2CGwJPb1$WR5xzWAi?;EiEnz&NC*SXS7-t;s~PuOrG9rp?Dr>3o9GQDNI0k K5J>L^aTow portableHoleBlackList = new ArrayList(); + + + //RESEARCH///////////////////////////////////////// + public static ArrayList scanEventhandlers = new ArrayList(); + public static ArrayList scanEntities = new ArrayList(); + public static class EntityTagsNBT { + public EntityTagsNBT(String name, Object value) { + this.name = name; + this.value = value; + } + public String name; + public Object value; + } + public static class EntityTags { + public EntityTags(String entityName, AspectList aspects, EntityTagsNBT... nbts) { + this.entityName = entityName; + this.nbts = nbts; + this.aspects = aspects; + } + public String entityName; + public EntityTagsNBT[] nbts; + public AspectList aspects; + } + + /** + * not really working atm, so ignore it for now + * @param scanEventHandler + */ + public static void registerScanEventhandler(IScanEventHandler scanEventHandler) { + scanEventhandlers.add(scanEventHandler); + } + + /** + * This is used to add aspects to entities which you can then scan using a thaumometer. + * Also used to calculate vis drops from mobs. + * @param entityName + * @param aspects + * @param nbt you can specify certain nbt keys and their values + * to differentiate between mobs.
For example the normal and wither skeleton: + *
ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 5)); + *
ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 8), new NBTTagByte("SkeletonType",(byte) 1)); + */ + public static void registerEntityTag(String entityName, AspectList aspects, EntityTagsNBT... nbt ) { + scanEntities.add(new EntityTags(entityName,aspects,nbt)); + } + + //RECIPES///////////////////////////////////////// + private static ArrayList craftingRecipes = new ArrayList(); + private static HashMap smeltingBonus = new HashMap(); + + /** + * This method is used to determine what bonus items are generated when the infernal furnace smelts items + * @param in The input of the smelting operation. e.g. new ItemStack(Block.oreGold) + * @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0). + * Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced. + */ + public static void addSmeltingBonus(ItemStack in, ItemStack out) { + smeltingBonus.put( + Arrays.asList(in.getItem(),in.getItemDamage()), + new ItemStack(out.getItem(),0,out.getItemDamage())); + } + + /** + * This method is used to determine what bonus items are generated when the infernal furnace smelts items + * @param in The ore dictionary input of the smelting operation. e.g. "oreGold" + * @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0). + * Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced. + */ + public static void addSmeltingBonus(String in, ItemStack out) { + smeltingBonus.put( in, new ItemStack(out.getItem(),0,out.getItemDamage())); + } + + /** + * Returns the bonus item produced from a smelting operation in the infernal furnace + * @param in The input of the smelting operation. e.g. new ItemStack(oreGold) + * @return the The bonus item that can be produced + */ + public static ItemStack getSmeltingBonus(ItemStack in) { + ItemStack out = smeltingBonus.get(Arrays.asList(in.getItem(),in.getItemDamage())); + if (out==null) { + out = smeltingBonus.get(Arrays.asList(in.getItem(),OreDictionary.WILDCARD_VALUE)); + } + if (out==null) { + String od = OreDictionary.getOreName( OreDictionary.getOreID(in)); + out = smeltingBonus.get(od); + } + return out; + } + + public static List getCraftingRecipes() { + return craftingRecipes; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param result the recipe output + * @param aspects the vis cost per aspect. + * @param recipe The recipe. Format is exactly the same as vanilla recipes. Input itemstacks are NBT sensitive. + */ + public static ShapedArcaneRecipe addArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe) + { + ShapedArcaneRecipe r= new ShapedArcaneRecipe(research, result, aspects, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param result the recipe output + * @param aspects the vis cost per aspect + * @param recipe The recipe. Format is exactly the same as vanilla shapeless recipes. Input itemstacks are NBT sensitive. + */ + public static ShapelessArcaneRecipe addShapelessArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe) + { + ShapelessArcaneRecipe r = new ShapelessArcaneRecipe(research, result, aspects, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param result the recipe output. It can either be an itemstack or an nbt compound tag that will be added to the central item + * @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an + * instability effect each second while the crafting is in progress + * @param aspects the essentia cost per aspect. + * @param aspects input the central item to be infused + * @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive. + * Infusion crafting components are automatically "fuzzy" and the oredict will be checked for possible matches. + * + */ + public static InfusionRecipe addInfusionCraftingRecipe(String research, Object result, int instability, AspectList aspects, ItemStack input,ItemStack[] recipe) + { + if (!(result instanceof ItemStack || result instanceof Object[])) return null; + InfusionRecipe r= new InfusionRecipe(research, result, instability, aspects, input, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param enchantment the enchantment that will be applied to the item + * @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an + * instability effect each second while the crafting is in progress + * @param aspects the essentia cost per aspect. + * @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive. + * Infusion crafting components are automatically "fuzzy" and the oredict will be checked for possible matches. + * + */ + public static InfusionEnchantmentRecipe addInfusionEnchantmentRecipe(String research, Enchantment enchantment, int instability, AspectList aspects, ItemStack[] recipe) + { + InfusionEnchantmentRecipe r= new InfusionEnchantmentRecipe(research, enchantment, instability, aspects, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param stack the recipe result + * @return the recipe + */ + public static InfusionRecipe getInfusionRecipe(ItemStack res) { + for (Object r:getCraftingRecipes()) { + if (r instanceof InfusionRecipe) { + if (((InfusionRecipe)r).getRecipeOutput() instanceof ItemStack) { + if (((ItemStack) ((InfusionRecipe)r).getRecipeOutput()).isItemEqual(res)) + return (InfusionRecipe)r; + } + } + } + return null; + } + + + /** + * @param key the research key required for this recipe to work. + * @param result the output result + * @param catalyst an itemstack of the catalyst or a string if it is an ore dictionary item + * @param cost the vis cost + * @param tags the aspects required to craft this + */ + public static CrucibleRecipe addCrucibleRecipe(String key, ItemStack result, Object catalyst, AspectList tags) { + CrucibleRecipe rc = new CrucibleRecipe(key, result, catalyst, tags); + getCraftingRecipes().add(rc); + return rc; + } + + + /** + * @param stack the recipe result + * @return the recipe + */ + public static CrucibleRecipe getCrucibleRecipe(ItemStack stack) { + for (Object r:getCraftingRecipes()) { + if (r instanceof CrucibleRecipe) { + if (((CrucibleRecipe)r).getRecipeOutput().isItemEqual(stack)) + return (CrucibleRecipe)r; + } + } + return null; + } + + /** + * Used by the thaumonomicon drilldown feature. + * @param stack the item + * @return the thaumcraft recipe key that produces that item. + */ + private static HashMap keyCache = new HashMap(); + + public static Object[] getCraftingRecipeKey(EntityPlayer player, ItemStack stack) { + int[] key = new int[] {Item.getIdFromItem(stack.getItem()),stack.getItemDamage()}; + if (keyCache.containsKey(key)) { + if (keyCache.get(key)==null) return null; + if (ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), (String)(keyCache.get(key))[0])) + return keyCache.get(key); + else + return null; + } + for (ResearchCategoryList rcl:ResearchCategories.researchCategories.values()) { + for (ResearchItem ri:rcl.research.values()) { + if (ri.getPages()==null) continue; + for (int a=0;a objectTags = new ConcurrentHashMap(); + + /** + * Checks to see if the passed item/block already has aspects associated with it. + * @param id + * @param meta + * @return + */ + public static boolean exists(Item item, int meta) { + AspectList tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,meta)); + if (tmp==null) { + tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,OreDictionary.WILDCARD_VALUE)); + if (meta==OreDictionary.WILDCARD_VALUE && tmp==null) { + int index=0; + do { + tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,index)); + index++; + } while (index<16 && tmp==null); + } + if (tmp==null) return false; + } + + return true; + } + + /** + * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:

+ * ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + * @param item the item passed. Pass OreDictionary.WILDCARD_VALUE if all damage values of this item/block should have the same aspects + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerObjectTag(ItemStack item, AspectList aspects) { + if (aspects==null) aspects=new AspectList(); + try { + objectTags.put(Arrays.asList(item.getItem(),item.getItemDamage()), aspects); + } catch (Exception e) {} + } + + + /** + * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:

+ * ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), new int[]{0,1}, (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + * @param item + * @param meta A range of meta values if you wish to lump several item meta's together as being the "same" item (i.e. stair orientations) + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerObjectTag(ItemStack item, int[] meta, AspectList aspects) { + if (aspects==null) aspects=new AspectList(); + try { + objectTags.put(Arrays.asList(item.getItem(),meta), aspects); + } catch (Exception e) {} + } + + /** + * Used to assign apsects to the given ore dictionary item. + * @param oreDict the ore dictionary name + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerObjectTag(String oreDict, AspectList aspects) { + if (aspects==null) aspects=new AspectList(); + ArrayList ores = OreDictionary.getOres(oreDict); + if (ores!=null && ores.size()>0) { + for (ItemStack ore:ores) { + try { + objectTags.put(Arrays.asList(ore.getItem(), ore.getItemDamage()), aspects); + } catch (Exception e) {} + } + } + } + + /** + * Used to assign aspects to the given item/block. + * Attempts to automatically generate aspect tags by checking registered recipes. + * Here is an example of the declaration for pistons:

+ * ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 4)); + * @param item, pass OreDictionary.WILDCARD_VALUE to meta if all damage values of this item/block should have the same aspects + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerComplexObjectTag(ItemStack item, AspectList aspects ) { + if (!exists(item.getItem(),item.getItemDamage())) { + AspectList tmp = ThaumcraftApiHelper.generateTags(item.getItem(), item.getItemDamage()); + if (tmp != null && tmp.size()>0) { + for(Aspect tag:tmp.getAspects()) { + aspects.add(tag, tmp.getAmount(tag)); + } + } + registerObjectTag(item,aspects); + } else { + AspectList tmp = ThaumcraftApiHelper.getObjectAspects(item); + for(Aspect tag:aspects.getAspects()) { + tmp.merge(tag, tmp.getAmount(tag)); + } + registerObjectTag(item,tmp); + } + } + + //CROPS ////////////////////////////////////////////////////////////////////////////////////////// + + /** + * To define mod crops you need to use FMLInterModComms in your @Mod.Init method. + * There are two 'types' of crops you can add. Standard crops and clickable crops. + * + * Standard crops work like normal vanilla crops - they grow until a certain metadata + * value is reached and you harvest them by destroying the block and collecting the blocks. + * You need to create and ItemStack that tells the golem what block id and metadata represents + * the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get + * checked. + * Example for vanilla wheat: + * FMLInterModComms.sendMessage("Thaumcraft", "harvestStandardCrop", new ItemStack(Block.crops,1,7)); + * + * Clickable crops are crops that you right click to gather their bounty instead of destroying them. + * As for standard crops, you need to create and ItemStack that tells the golem what block id + * and metadata represents the crop when fully grown. The golem will trigger the blocks onBlockActivated method. + * Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked. + * Example (this will technically do nothing since clicking wheat does nothing, but you get the idea): + * FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(Block.crops,1,7)); + * + * Stacked crops (like reeds) are crops that you wish the bottom block should remain after harvesting. + * As for standard crops, you need to create and ItemStack that tells the golem what block id + * and metadata represents the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the actualy md won't get + * checked. If it has the order upgrade it will only harvest if the crop is more than one block high. + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "harvestStackedCrop", new ItemStack(Block.reed,1,7)); + */ + + //NATIVE CLUSTERS ////////////////////////////////////////////////////////////////////////////////// + + /** + * You can define certain ores that will have a chance to produce native clusters via FMLInterModComms + * in your @Mod.Init method using the "nativeCluster" string message. + * The format should be: + * "[ore item/block id],[ore item/block metadata],[cluster item/block id],[cluster item/block metadata],[chance modifier float]" + * + * NOTE: The chance modifier is a multiplier applied to the default chance for that cluster to be produced (default 27.5% for a pickaxe of the core) + * + * Example for vanilla iron ore to produce one of my own native iron clusters (assuming default id's) at double the default chance: + * FMLInterModComms.sendMessage("Thaumcraft", "nativeCluster","15,0,25016,16,2.0"); + */ + + //LAMP OF GROWTH BLACKLIST /////////////////////////////////////////////////////////////////////////// + /** + * You can blacklist crops that should not be effected by the Lamp of Growth via FMLInterModComms + * in your @Mod.Init method using the "lampBlacklist" itemstack message. + * Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked. + * Example for vanilla wheat: + * FMLInterModComms.sendMessage("Thaumcraft", "lampBlacklist", new ItemStack(Block.crops,1,OreDictionary.WILDCARD_VALUE)); + */ + + //DIMENSION BLACKLIST /////////////////////////////////////////////////////////////////////////// + /** + * You can blacklist a dimension to not spawn certain thaumcraft features + * in your @Mod.Init method using the "dimensionBlacklist" string message in the format "[dimension]:[level]" + * The level values are as follows: + * [0] stop all tc spawning and generation + * [1] allow ore and node generation + * [2] allow mob spawning + * [3] allow ore and node gen + mob spawning + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "dimensionBlacklist", "15:1"); + */ + + //BIOME BLACKLIST /////////////////////////////////////////////////////////////////////////// + /** + * You can blacklist a biome to not spawn certain thaumcraft features + * in your @Mod.Init method using the "biomeBlacklist" string message in the format "[biome id]:[level]" + * The level values are as follows: + * [0] stop all tc spawning and generation + * [1] allow ore and node generation + * [2] allow mob spawning + * [3] allow ore and node gen + mob spawning + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "biomeBlacklist", "180:2"); + */ +} diff --git a/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java b/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java new file mode 100644 index 000000000..b5feb068a --- /dev/null +++ b/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java @@ -0,0 +1,268 @@ +package thaumcraft.api; + +import java.lang.reflect.Method; +import java.util.HashMap; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IEssentiaTransport; +import cpw.mods.fml.common.FMLLog; + +public class ThaumcraftApiHelper { + + public static AspectList cullTags(AspectList temp) { + AspectList temp2 = new AspectList(); + for (Aspect tag:temp.getAspects()) { + if (tag!=null) + temp2.add(tag, temp.getAmount(tag)); + } + while (temp2!=null && temp2.size()>10) { + Aspect lowest = null; + int low = Integer.MAX_VALUE; + for (Aspect tag:temp2.getAspects()) { + if (tag==null) continue; + if (temp2.getAmount(tag) allAspects= new HashMap(); + private static HashMap allCompoundAspects= new HashMap(); + + public static AspectList getAllAspects(int amount) { + if (allAspects.get(amount)==null) { + AspectList al = new AspectList(); + for (Aspect aspect:Aspect.aspects.values()) { + al.add(aspect, amount); + } + allAspects.put(amount, al); + } + return allAspects.get(amount); + } + + public static AspectList getAllCompoundAspects(int amount) { + if (allCompoundAspects.get(amount)==null) { + AspectList al = new AspectList(); + for (Aspect aspect:Aspect.getCompoundAspects()) { + al.add(aspect, amount); + } + allCompoundAspects.put(amount, al); + } + return allCompoundAspects.get(amount); + } + + static Method consumeVisFromWand; + /** + * Use to subtract vis from a wand for most operations + * Wands store vis differently so "real" vis costs need to be multiplied by 100 before calling this method + * @param wand the wand itemstack + * @param player the player using the wand + * @param cost the cost of the operation. + * @param doit actually subtract the vis from the wand if true - if false just simulate the result + * @param crafting is this a crafting operation or not - if + * false then things like frugal and potency will apply to the costs + * @return was the vis successfully subtracted + */ + public static boolean consumeVisFromWand(ItemStack wand, EntityPlayer player, + AspectList cost, boolean doit, boolean crafting) { + boolean ot = false; + try { + if(consumeVisFromWand == null) { + Class fake = Class.forName("thaumcraft.common.items.wands.ItemWandCasting"); + consumeVisFromWand = fake.getMethod("consumeAllVis", + ItemStack.class, EntityPlayer.class, AspectList.class, boolean.class, boolean.class); + } + ot = (Boolean) consumeVisFromWand.invoke( + consumeVisFromWand.getDeclaringClass().cast(wand.getItem()), wand, player, cost, doit, crafting); + } catch(Exception ex) { + FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.items.wands.ItemWandCasting method consumeAllVis"); + } + return ot; + } + + static Method consumeVisFromWandCrafting; + /** + * Subtract vis for use by a crafting mechanic. Costs are calculated slightly + * differently and things like the frugal enchant is ignored + * Must NOT be multiplied by 100 - send the actual vis cost + * @param wand the wand itemstack + * @param player the player using the wand + * @param cost the cost of the operation. + * @param doit actually subtract the vis from the wand if true - if false just simulate the result + * @return was the vis successfully subtracted + */ + public static boolean consumeVisFromWandCrafting(ItemStack wand, EntityPlayer player, + AspectList cost, boolean doit) { + boolean ot = false; + try { + if(consumeVisFromWandCrafting == null) { + Class fake = Class.forName("thaumcraft.common.items.wands.ItemWandCasting"); + consumeVisFromWandCrafting = fake.getMethod("consumeAllVisCrafting", + ItemStack.class, EntityPlayer.class, AspectList.class, boolean.class); + } + ot = (Boolean) consumeVisFromWandCrafting.invoke( + consumeVisFromWandCrafting.getDeclaringClass().cast(wand.getItem()), wand, player, cost, doit); + } catch(Exception ex) { + FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.items.wands.ItemWandCasting method consumeAllVisCrafting"); + } + return ot; + } + + static Method consumeVisFromInventory; + /** + * Subtract vis from a wand the player is carrying. Works like consumeVisFromWand in that actual vis + * costs should be multiplied by 100. The costs are handled like crafting however and things like + * frugal don't effect them + * @param player the player using the wand + * @param cost the cost of the operation. + * @return was the vis successfully subtracted + */ + public static boolean consumeVisFromInventory(EntityPlayer player, AspectList cost) { + boolean ot = false; + try { + if(consumeVisFromInventory == null) { + Class fake = Class.forName("thaumcraft.common.items.wands.WandManager"); + consumeVisFromInventory = fake.getMethod("consumeVisFromInventory", + EntityPlayer.class, AspectList.class); + } + ot = (Boolean) consumeVisFromInventory.invoke(null, player, cost); + } catch(Exception ex) { + FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.items.wands.WandManager method consumeVisFromInventory"); + } + return ot; + } +} diff --git a/src/api/java/thaumcraft/api/aspects/Aspect.java b/src/api/java/thaumcraft/api/aspects/Aspect.java new file mode 100644 index 000000000..3c33a4a7a --- /dev/null +++ b/src/api/java/thaumcraft/api/aspects/Aspect.java @@ -0,0 +1,201 @@ +package thaumcraft.api.aspects; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +import org.apache.commons.lang3.text.WordUtils; + +public class Aspect { + + String tag; + Aspect[] components; + int color; + private String chatcolor; + ResourceLocation image; + int blend; + + /** + * Use this constructor to register your own aspects. + * @param tag the key that will be used to reference this aspect, as well as its latin display name + * @param color color to display the tag in + * @param components the aspects this one is formed from + * @param image ResourceLocation pointing to a 32x32 icon of the aspect + * @param blend GL11 blendmode (1 or 771). Used for rendering nodes. Default is 1 + */ + public Aspect(String tag, int color, Aspect[] components, ResourceLocation image, int blend) { + if (aspects.containsKey(tag)) throw new IllegalArgumentException(tag+" already registered!"); + this.tag = tag; + this.components = components; + this.color = color; + this.image = image; + this.blend = blend; + aspects.put(tag, this); + } + + /** + * Shortcut constructor I use for the default aspects - you shouldn't be using this. + */ + public Aspect(String tag, int color, Aspect[] components) { + this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),1); + } + + /** + * Shortcut constructor I use for the default aspects - you shouldn't be using this. + */ + public Aspect(String tag, int color, Aspect[] components, int blend) { + this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),blend); + } + + /** + * Shortcut constructor I use for the primal aspects - + * you shouldn't use this as making your own primal aspects will break all the things. + */ + public Aspect(String tag, int color, String chatcolor, int blend) { + this(tag,color,(Aspect[])null, blend); + this.setChatcolor(chatcolor); + } + + public int getColor() { + return color; + } + + public String getName() { + return WordUtils.capitalizeFully(tag); + } + + public String getLocalizedDescription() { + return StatCollector.translateToLocal("tc.aspect."+tag); + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public Aspect[] getComponents() { + return components; + } + + public void setComponents(Aspect[] components) { + this.components = components; + } + + public ResourceLocation getImage() { + return image; + } + + public static Aspect getAspect(String tag) { + return aspects.get(tag); + } + + public int getBlend() { + return blend; + } + + public void setBlend(int blend) { + this.blend = blend; + } + + public boolean isPrimal() { + return getComponents()==null || getComponents().length!=2; + } + + /////////////////////////////// + public static ArrayList getPrimalAspects() { + ArrayList primals = new ArrayList(); + Collection pa = aspects.values(); + for (Aspect aspect:pa) { + if (aspect.isPrimal()) primals.add(aspect); + } + return primals; + } + + public static ArrayList getCompoundAspects() { + ArrayList compounds = new ArrayList(); + Collection pa = aspects.values(); + for (Aspect aspect:pa) { + if (!aspect.isPrimal()) compounds.add(aspect); + } + return compounds; + } + + public String getChatcolor() { + return chatcolor; + } + + public void setChatcolor(String chatcolor) { + this.chatcolor = chatcolor; + } + + + /////////////////////////////// + public static LinkedHashMap aspects = new LinkedHashMap(); + + //PRIMAL + public static final Aspect AIR = new Aspect("aer",0xffff7e,"e",1); + public static final Aspect EARTH = new Aspect("terra",0x56c000,"2",1); + public static final Aspect FIRE = new Aspect("ignis",0xff5a01,"c",1); + public static final Aspect WATER = new Aspect("aqua",0x3cd4fc,"3",1); + public static final Aspect ORDER = new Aspect("ordo",0xd5d4ec,"7",1); + public static final Aspect ENTROPY = new Aspect("perditio",0x404040,"8",771); + + //SECONDARY + public static final Aspect VOID = new Aspect("vacuos",0x888888, new Aspect[] {AIR, ENTROPY},771); + public static final Aspect LIGHT = new Aspect("lux",0xfff663, new Aspect[] {AIR, FIRE}); + public static final Aspect WEATHER = new Aspect("tempestas",0xFFFFFF, new Aspect[] {AIR, WATER}); + public static final Aspect MOTION = new Aspect("motus",0xcdccf4, new Aspect[] {AIR, ORDER}); + public static final Aspect COLD = new Aspect("gelum",0xe1ffff, new Aspect[] {FIRE, ENTROPY}); + public static final Aspect CRYSTAL = new Aspect("vitreus",0x80ffff, new Aspect[] {EARTH, ORDER}); + public static final Aspect LIFE = new Aspect("victus",0xde0005, new Aspect[] {WATER, EARTH}); + public static final Aspect POISON = new Aspect("venenum",0x89f000, new Aspect[] {WATER, ENTROPY}); + public static final Aspect ENERGY = new Aspect("potentia",0xc0ffff, new Aspect[] {ORDER, FIRE}); + public static final Aspect EXCHANGE = new Aspect("permutatio",0x578357, new Aspect[] {ENTROPY, ORDER}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {AIR, EARTH}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, EARTH}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, WATER}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {ORDER, WATER}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {EARTH, ENTROPY}); + + //TERTIARY + public static final Aspect METAL = new Aspect("metallum",0xb5b5cd, new Aspect[] {EARTH, CRYSTAL}); + public static final Aspect DEATH = new Aspect("mortuus",0x887788, new Aspect[] {LIFE, ENTROPY}); + public static final Aspect FLIGHT = new Aspect("volatus",0xe7e7d7, new Aspect[] {AIR, MOTION}); + public static final Aspect DARKNESS = new Aspect("tenebrae",0x222222, new Aspect[] {VOID, LIGHT}); + public static final Aspect SOUL = new Aspect("spiritus",0xebebfb, new Aspect[] {LIFE, DEATH}); + public static final Aspect HEAL = new Aspect("sano",0xff2f34, new Aspect[] {LIFE, ORDER}); + public static final Aspect TRAVEL = new Aspect("iter",0xe0585b, new Aspect[] {MOTION, EARTH}); + public static final Aspect ELDRITCH = new Aspect("alienis",0x805080, new Aspect[] {VOID, DARKNESS}); + public static final Aspect MAGIC = new Aspect("praecantatio",0x9700c0, new Aspect[] {VOID, ENERGY}); + public static final Aspect AURA = new Aspect("auram",0xffc0ff, new Aspect[] {MAGIC, AIR}); + public static final Aspect TAINT = new Aspect("vitium",0x800080, new Aspect[] {MAGIC, ENTROPY}); + public static final Aspect SLIME = new Aspect("limus",0x01f800, new Aspect[] {LIFE, WATER}); + public static final Aspect PLANT = new Aspect("herba",0x01ac00, new Aspect[] {LIFE, EARTH}); + public static final Aspect TREE = new Aspect("arbor",0x876531, new Aspect[] {AIR, PLANT}); + public static final Aspect BEAST = new Aspect("bestia",0x9f6409, new Aspect[] {MOTION, LIFE}); + public static final Aspect FLESH = new Aspect("corpus",0xee478d, new Aspect[] {DEATH, BEAST}); + public static final Aspect UNDEAD = new Aspect("exanimis",0x3a4000, new Aspect[] {MOTION, DEATH}); + public static final Aspect MIND = new Aspect("cognitio",0xffc2b3, new Aspect[] {EARTH, SOUL}); + public static final Aspect SENSES = new Aspect("sensus",0x0fd9ff, new Aspect[] {AIR, SOUL}); + public static final Aspect MAN = new Aspect("humanus",0xffd7c0, new Aspect[] {BEAST, MIND}); + public static final Aspect CROP = new Aspect("messis",0xe1b371, new Aspect[] {PLANT, MAN}); + public static final Aspect MINE = new Aspect("perfodio",0xdcd2d8, new Aspect[] {MAN, EARTH}); + public static final Aspect TOOL = new Aspect("instrumentum",0x4040ee, new Aspect[] {MAN, ORDER}); + public static final Aspect HARVEST = new Aspect("meto",0xeead82, new Aspect[] {CROP, TOOL}); + public static final Aspect WEAPON = new Aspect("telum",0xc05050, new Aspect[] {TOOL, ENTROPY}); + public static final Aspect ARMOR = new Aspect("tutamen",0x00c0c0, new Aspect[] {TOOL, EARTH}); + public static final Aspect HUNGER = new Aspect("fames",0x9a0305, new Aspect[] {LIFE, VOID}); + public static final Aspect GREED = new Aspect("lucrum",0xe6be44, new Aspect[] {MAN, HUNGER}); + public static final Aspect CRAFT = new Aspect("fabrico",0x809d80, new Aspect[] {MAN, TOOL}); + public static final Aspect CLOTH = new Aspect("pannus",0xeaeac2, new Aspect[] {TOOL, BEAST}); + public static final Aspect MECHANISM = new Aspect("machina",0x8080a0, new Aspect[] {MOTION, TOOL}); + public static final Aspect TRAP = new Aspect("vinculum",0x9a8080, new Aspect[] {MOTION, ENTROPY}); + + +} diff --git a/src/api/java/thaumcraft/api/aspects/AspectList.java b/src/api/java/thaumcraft/api/aspects/AspectList.java new file mode 100644 index 000000000..6b9dfcef8 --- /dev/null +++ b/src/api/java/thaumcraft/api/aspects/AspectList.java @@ -0,0 +1,256 @@ +package thaumcraft.api.aspects; + +import java.io.Serializable; +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import thaumcraft.api.ThaumcraftApiHelper; + +public class AspectList implements Serializable { + + public LinkedHashMap aspects = new LinkedHashMap();//aspects associated with this object + + + /** + * this creates a new aspect list with preloaded values based off the aspects of the given item. + * @param the itemstack of the given item + */ + public AspectList(ItemStack stack) { + try { + AspectList temp = ThaumcraftApiHelper.getObjectAspects(stack); + if (temp!=null) + for (Aspect tag:temp.getAspects()) { + add(tag,temp.getAmount(tag)); + } + } catch (Exception e) {} + } + + public AspectList() { + } + + public AspectList copy() { + AspectList out = new AspectList(); + for (Aspect a:this.getAspects()) + out.add(a, this.getAmount(a)); + return out; + } + + /** + * @return the amount of different aspects in this collection + */ + public int size() { + return aspects.size(); + } + + /** + * @return the amount of total vis in this collection + */ + public int visSize() { + int q = 0; + + for (Aspect as:aspects.keySet()) { + q+=this.getAmount(as); + } + + return q; + } + + /** + * @return an array of all the aspects in this collection + */ + public Aspect[] getAspects() { + Aspect[] q = new Aspect[1]; + return aspects.keySet().toArray(q); + } + + /** + * @return an array of all the aspects in this collection + */ + public Aspect[] getPrimalAspects() { + AspectList t = new AspectList(); + for (Aspect as:aspects.keySet()) { + if (as.isPrimal()) { + t.add(as,1); + } + } + Aspect[] q = new Aspect[1]; + return t.aspects.keySet().toArray(q); + } + + /** + * @return an array of all the aspects in this collection sorted by name + */ + public Aspect[] getAspectsSorted() { + try { + Aspect[] out = aspects.keySet().toArray(new Aspect[1]); + boolean change=false; + do { + change=false; + for(int a=0;a0) { + out[a] = e2; + out[a+1] = e1; + change = true; + break; + } + } + } while (change==true); + return out; + } catch (Exception e) { + return this.getAspects(); + } + } + + /** + * @return an array of all the aspects in this collection sorted by amount + */ + public Aspect[] getAspectsSortedAmount() { + try { + Aspect[] out = aspects.keySet().toArray(new Aspect[1]); + boolean change=false; + do { + change=false; + for(int a=0;a0 && e2>0 && e2>e1) { + Aspect ea = out[a]; + Aspect eb = out[a+1]; + out[a] = eb; + out[a+1] = ea; + change = true; + break; + } + } + } while (change==true); + return out; + } catch (Exception e) { + return this.getAspects(); + } + } + + /** + * @param key + * @return the amount associated with the given aspect in this collection + */ + public int getAmount(Aspect key) { + return aspects.get(key)==null?0:aspects.get(key); + } + + /** + * Reduces the amount of an aspect in this collection by the given amount. + * @param key + * @param amount + * @return + */ + public boolean reduce(Aspect key, int amount) { + if (getAmount(key)>=amount) { + int am = getAmount(key)-amount; + aspects.put(key, am); + return true; + } + return false; + } + + /** + * Reduces the amount of an aspect in this collection by the given amount. + * If reduced to 0 or less the aspect will be removed completely. + * @param key + * @param amount + * @return + */ + public AspectList remove(Aspect key, int amount) { + int am = getAmount(key)-amount; + if (am<=0) aspects.remove(key); else + this.aspects.put(key, am); + return this; + } + + /** + * Simply removes the aspect from the list + * @param key + * @param amount + * @return + */ + public AspectList remove(Aspect key) { + aspects.remove(key); + return this; + } + + /** + * Adds this aspect and amount to the collection. + * If the aspect exists then its value will be increased by the given amount. + * @param aspect + * @param amount + * @return + */ + public AspectList add(Aspect aspect, int amount) { + if (this.aspects.containsKey(aspect)) { + int oldamount = this.aspects.get(aspect); + amount+=oldamount; + } + this.aspects.put( aspect, amount ); + return this; + } + + + /** + * Adds this aspect and amount to the collection. + * If the aspect exists then only the highest of the old or new amount will be used. + * @param aspect + * @param amount + * @return + */ + public AspectList merge(Aspect aspect, int amount) { + if (this.aspects.containsKey(aspect)) { + int oldamount = this.aspects.get(aspect); + if (amount0?aspects:null; + } + return null; + } + + @Override + public void setAspects(ItemStack itemstack, AspectList aspects) { + if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound()); + aspects.writeToNBT(itemstack.getTagCompound()); + } +*/ \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java b/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java new file mode 100644 index 000000000..fecbc1608 --- /dev/null +++ b/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java @@ -0,0 +1,100 @@ +package thaumcraft.api.aspects; + +import net.minecraftforge.common.util.ForgeDirection; + + +/** + * @author Azanor + * This interface is used by tiles that use or transport vis. + * Only tiles that implement this interface will be able to connect to vis conduits or other thaumic devices + */ +public interface IEssentiaTransport { + /** + * Is this tile able to connect to other vis users/sources on the specified side? + * @param face + * @return + */ + public boolean isConnectable(ForgeDirection face); + + /** + * Is this side used to input essentia? + * @param face + * @return + */ + boolean canInputFrom(ForgeDirection face); + + /** + * Is this side used to output essentia? + * @param face + * @return + */ + boolean canOutputTo(ForgeDirection face); + + /** + * Sets the amount of suction this block will apply + * @param suction + */ + public void setSuction(Aspect aspect, int amount); + + /** + * Returns the type of suction this block is applying. + * @param loc + * the location from where the suction is being checked + * @return + * a return type of null indicates the suction is untyped and the first thing available will be drawn + */ + public Aspect getSuctionType(ForgeDirection face); + + /** + * Returns the strength of suction this block is applying. + * @param loc + * the location from where the suction is being checked + * @return + */ + public int getSuctionAmount(ForgeDirection face); + + /** + * remove the specified amount of essentia from this transport tile + * @return how much was actually taken + */ + public int takeEssentia(Aspect aspect, int amount, ForgeDirection face); + + /** + * add the specified amount of essentia to this transport tile + * @return how much was actually added + */ + public int addEssentia(Aspect aspect, int amount, ForgeDirection face); + + /** + * What type of essentia this contains + * @param face + * @return + */ + public Aspect getEssentiaType(ForgeDirection face); + + /** + * How much essentia this block contains + * @param face + * @return + */ + public int getEssentiaAmount(ForgeDirection face); + + + + /** + * Essentia will not be drawn from this container unless the suction exceeds this amount. + * @return the amount + */ + public int getMinimumSuction(); + + /** + * Return true if you want the conduit to extend a little further into the block. + * Used by jars and alembics that have smaller than normal hitboxes + * @return + */ + boolean renderExtendedTube(); + + + +} + diff --git a/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java b/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java new file mode 100644 index 000000000..ebd84791a --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java @@ -0,0 +1,74 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class CrucibleRecipe { + + private ItemStack recipeOutput; + + + public Object catalyst; + public AspectList aspects; + public String key; + + public CrucibleRecipe(String researchKey, ItemStack result, Object cat, AspectList tags) { + recipeOutput = result; + this.aspects = tags; + this.key = researchKey; + this.catalyst = cat; + if (cat instanceof String) { + this.catalyst = OreDictionary.getOres((String) cat); + } + } + + + public boolean matches(AspectList itags, ItemStack cat) { + if (catalyst instanceof ItemStack && + !ThaumcraftApiHelper.itemMatches((ItemStack) catalyst,cat,false)) { + return false; + } else + if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { + if (!ThaumcraftApiHelper.containsMatch(true, ((ArrayList)catalyst).toArray(new ItemStack[]{}), cat)) return false; + } + if (itags==null) return false; + for (Aspect tag:aspects.getAspects()) { + if (itags.getAmount(tag))catalyst).size()>0) { + if (ThaumcraftApiHelper.containsMatch(true, + ((ArrayList)catalyst).toArray(new ItemStack[]{}), cat)) return true; + } + return false; + } + + public AspectList removeMatching(AspectList itags) { + AspectList temptags = new AspectList(); + temptags.aspects.putAll(itags.aspects); + + for (Aspect tag:aspects.getAspects()) { + temptags.remove(tag, aspects.getAmount(tag)); +// if (!temptags.remove(tag, aspects.getAmount(tag))) return null; + } + + itags = temptags; + return itags; + } + + public ItemStack getRecipeOutput() { + return recipeOutput; + } + +} diff --git a/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java new file mode 100644 index 000000000..bb5036d20 --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java @@ -0,0 +1,35 @@ +package thaumcraft.api.crafting; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import thaumcraft.api.aspects.AspectList; + +public interface IArcaneRecipe +{ + + + /** + * Used to check if a recipe matches current crafting inventory + * @param player + */ + boolean matches(IInventory var1, World world, EntityPlayer player); + + /** + * Returns an Item that is the result of this recipe + */ + ItemStack getCraftingResult(IInventory var1); + + /** + * Returns the size of the recipe area + */ + int getRecipeSize(); + + ItemStack getRecipeOutput(); + AspectList getAspects(); + AspectList getAspects(IInventory var1); + String getResearch(); + + +} diff --git a/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java b/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java new file mode 100644 index 000000000..d137ff24e --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java @@ -0,0 +1,19 @@ +package thaumcraft.api.crafting; + +import net.minecraft.world.World; + +/** + * + * @author Azanor + * + * Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls + * + */ +public interface IInfusionStabiliser { + + /** + * returns true if the block can stabilise things + */ + public boolean canStabaliseInfusion(World world, int x, int y, int z); + +} diff --git a/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java b/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java new file mode 100644 index 000000000..6fb4d63de --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java @@ -0,0 +1,156 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.AspectList; + +public class InfusionEnchantmentRecipe +{ + + public AspectList aspects; + public String research; + public ItemStack[] components; + public Enchantment enchantment; + public int recipeXP; + public int instability; + + public InfusionEnchantmentRecipe(String research, Enchantment input, int inst, + AspectList aspects2, ItemStack[] recipe) { + this.research = research; + this.enchantment = input; + this.aspects = aspects2; + this.components = recipe; + this.instability = inst; + this.recipeXP = Math.max(1, input.getMinEnchantability(1)/3); + } + + /** + * Used to check if a recipe matches current crafting inventory + * @param player + */ + public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player) { + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + + if (!enchantment.canApply(central) || !central.getItem().isItemTool(central)) { + return false; + } + + Map map1 = EnchantmentHelper.getEnchantments(central); + Iterator iterator = map1.keySet().iterator(); + while (iterator.hasNext()) + { + int j1 = ((Integer)iterator.next()).intValue(); + Enchantment ench = Enchantment.enchantmentsList[j1]; + if (j1 == enchantment.effectId && + EnchantmentHelper.getEnchantmentLevel(j1, central)>=ench.getMaxLevel()) + return false; + if (enchantment.effectId != ench.effectId && + (!enchantment.canApplyTogether(ench) || + !ench.canApplyTogether(enchantment))) { + return false; + } + } + + ItemStack i2 = null; + + ArrayList ii = new ArrayList(); + for (ItemStack is:input) { + ii.add(is.copy()); + } + + for (ItemStack comp:components) { + boolean b=false; + for (int a=0;a stack0.getMaxStackSize() ? false : t1)); + } + + + public Enchantment getEnchantment() { + return enchantment; + + } + + public AspectList getAspects() { + return aspects; + + } + + public String getResearch() { + return research; + + } + + public int calcInstability(ItemStack recipeInput) { + int i = 0; + Map map1 = EnchantmentHelper.getEnchantments(recipeInput); + Iterator iterator = map1.keySet().iterator(); + while (iterator.hasNext()) + { + int j1 = ((Integer)iterator.next()).intValue(); + i += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput); + } + return (i/2) + instability; + } + + public int calcXP(ItemStack recipeInput) { + return recipeXP * (1+EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput)); + } + + public float getEssentiaMod(ItemStack recipeInput) { + float mod = EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput); + Map map1 = EnchantmentHelper.getEnchantments(recipeInput); + Iterator iterator = map1.keySet().iterator(); + while (iterator.hasNext()) + { + int j1 = ((Integer)iterator.next()).intValue(); + if (j1 != enchantment.effectId) + mod += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput) * .1f; + } + return mod; + } + +} diff --git a/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java b/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java new file mode 100644 index 000000000..fef0a3471 --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java @@ -0,0 +1,128 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.AspectList; + +public class InfusionRecipe +{ + protected AspectList aspects; + protected String research; + private ItemStack[] components; + private ItemStack recipeInput; + protected Object recipeOutput; + protected int instability; + + public InfusionRecipe(String research, Object output, int inst, + AspectList aspects2, ItemStack input, ItemStack[] recipe) { + this.research = research; + this.recipeOutput = output; + this.recipeInput = input; + this.aspects = aspects2; + this.components = recipe; + this.instability = inst; + } + + /** + * Used to check if a recipe matches current crafting inventory + * @param player + */ + public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player) { + if (getRecipeInput()==null) return false; + + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + + ItemStack i2 = central.copy(); + if (getRecipeInput().getItemDamage()==OreDictionary.WILDCARD_VALUE) { + i2.setItemDamage(OreDictionary.WILDCARD_VALUE); + } + + if (!areItemStacksEqual(i2, getRecipeInput(), true)) return false; + + ArrayList ii = new ArrayList(); + for (ItemStack is:input) { + ii.add(is.copy()); + } + + for (ItemStack comp:getComponents()) { + boolean b=false; + for (int a=0;a stack0.getMaxStackSize() ? false : t1)); + } + + + public Object getRecipeOutput() { + return getRecipeOutput(this.getRecipeInput()); + } + + public AspectList getAspects() { + return getAspects(this.getRecipeInput()); + } + + public int getInstability() { + return getInstability(this.getRecipeInput()); + } + + public String getResearch() { + return research; + } + + public ItemStack getRecipeInput() { + return recipeInput; + } + + public ItemStack[] getComponents() { + return components; + } + + public Object getRecipeOutput(ItemStack input) { + return recipeOutput; + } + + public AspectList getAspects(ItemStack input) { + return aspects; + } + + public int getInstability(ItemStack input) { + return instability; + } +} diff --git a/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java new file mode 100644 index 000000000..40c7bc27e --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java @@ -0,0 +1,261 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; +import java.util.HashMap; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.AspectList; + +public class ShapedArcaneRecipe implements IArcaneRecipe +{ + //Added in for future ease of change, but hard coded for now. + private static final int MAX_CRAFT_GRID_WIDTH = 3; + private static final int MAX_CRAFT_GRID_HEIGHT = 3; + + public ItemStack output = null; + public Object[] input = null; + public AspectList aspects = null; + public String research; + public int width = 0; + public int height = 0; + private boolean mirrored = true; + + public ShapedArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe){ this(research, new ItemStack(result), aspects, recipe); } + public ShapedArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe){ this(research, new ItemStack(result), aspects, recipe); } + public ShapedArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe) + { + output = result.copy(); + this.research = research; + this.aspects = aspects; + String shape = ""; + + int idx = 0; + + if (recipe[idx] instanceof Boolean) + { + mirrored = (Boolean)recipe[idx]; + if (recipe[idx+1] instanceof Object[]) + { + recipe = (Object[])recipe[idx+1]; + } + else + { + idx = 1; + } + } + + if (recipe[idx] instanceof String[]) + { + String[] parts = ((String[])recipe[idx++]); + + for (String s : parts) + { + width = s.length(); + shape += s; + } + + height = parts.length; + } + else + { + while (recipe[idx] instanceof String) + { + String s = (String)recipe[idx++]; + shape += s; + width = s.length(); + height++; + } + } + + if (width * height != shape.length()) + { + String ret = "Invalid shaped ore recipe: "; + for (Object tmp : recipe) + { + ret += tmp + ", "; + } + ret += output; + throw new RuntimeException(ret); + } + + HashMap itemMap = new HashMap(); + + for (; idx < recipe.length; idx += 2) + { + Character chr = (Character)recipe[idx]; + Object in = recipe[idx + 1]; + + if (in instanceof ItemStack) + { + itemMap.put(chr, ((ItemStack)in).copy()); + } + else if (in instanceof Item) + { + itemMap.put(chr, new ItemStack((Item)in)); + } + else if (in instanceof Block) + { + itemMap.put(chr, new ItemStack((Block)in, 1, OreDictionary.WILDCARD_VALUE)); + } + else if (in instanceof String) + { + itemMap.put(chr, OreDictionary.getOres((String)in)); + } + else + { + String ret = "Invalid shaped ore recipe: "; + for (Object tmp : recipe) + { + ret += tmp + ", "; + } + ret += output; + throw new RuntimeException(ret); + } + } + + input = new Object[width * height]; + int x = 0; + for (char chr : shape.toCharArray()) + { + input[x++] = itemMap.get(chr); + } + } + + @Override + public ItemStack getCraftingResult(IInventory var1){ return output.copy(); } + + @Override + public int getRecipeSize(){ return input.length; } + + @Override + public ItemStack getRecipeOutput(){ return output; } + + @Override + public boolean matches(IInventory inv, World world, EntityPlayer player) + { + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + for (int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++) + { + for (int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y) + { + if (checkMatch(inv, x, y, false)) + { + return true; + } + + if (mirrored && checkMatch(inv, x, y, true)) + { + return true; + } + } + } + + return false; + } + + private boolean checkMatch(IInventory inv, int startX, int startY, boolean mirror) + { + for (int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++) + { + for (int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++) + { + int subX = x - startX; + int subY = y - startY; + Object target = null; + + if (subX >= 0 && subY >= 0 && subX < width && subY < height) + { + if (mirror) + { + target = input[width - subX - 1 + subY * width]; + } + else + { + target = input[subX + subY * width]; + } + } + + ItemStack slot = ThaumcraftApiHelper.getStackInRowAndColumn(inv, x, y); + + if (target instanceof ItemStack) + { + if (!checkItemEquals((ItemStack)target, slot)) + { + return false; + } + } + else if (target instanceof ArrayList) + { + boolean matched = false; + + for (ItemStack item : (ArrayList)target) + { + matched = matched || checkItemEquals(item, slot); + } + + if (!matched) + { + return false; + } + } + else if (target == null && slot != null) + { + return false; + } + } + } + + return true; + } + + private boolean checkItemEquals(ItemStack target, ItemStack input) + { + if (input == null && target != null || input != null && target == null) + { + return false; + } + return (target.getItem() == input.getItem() && + (!target.hasTagCompound() || ItemStack.areItemStackTagsEqual(target, input)) && + (target.getItemDamage() == OreDictionary.WILDCARD_VALUE|| target.getItemDamage() == input.getItemDamage())); + } + + public ShapedArcaneRecipe setMirrored(boolean mirror) + { + mirrored = mirror; + return this; + } + + /** + * Returns the input for this recipe, any mod accessing this value should never + * manipulate the values in this array as it will effect the recipe itself. + * @return The recipes input vales. + */ + public Object[] getInput() + { + return this.input; + } + + @Override + public AspectList getAspects() { + return aspects; + } + + @Override + public AspectList getAspects(IInventory inv) { + return aspects; + } + + @Override + public String getResearch() { + return research; + } +} diff --git a/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java new file mode 100644 index 000000000..3d4ed5088 --- /dev/null +++ b/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java @@ -0,0 +1,157 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; +import java.util.Iterator; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.AspectList; + +public class ShapelessArcaneRecipe implements IArcaneRecipe +{ + private ItemStack output = null; + private ArrayList input = new ArrayList(); + + public AspectList aspects = null; + public String research; + + public ShapelessArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe){ this(research,new ItemStack(result),aspects, recipe); } + public ShapelessArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe){ this(research,new ItemStack(result),aspects, recipe); } + + public ShapelessArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe) + { + output = result.copy(); + this.research = research; + this.aspects = aspects; + for (Object in : recipe) + { + if (in instanceof ItemStack) + { + input.add(((ItemStack)in).copy()); + } + else if (in instanceof Item) + { + input.add(new ItemStack((Item)in)); + } + else if (in instanceof Block) + { + input.add(new ItemStack((Block)in)); + } + else if (in instanceof String) + { + input.add(OreDictionary.getOres((String)in)); + } + else + { + String ret = "Invalid shapeless ore recipe: "; + for (Object tmp : recipe) + { + ret += tmp + ", "; + } + ret += output; + throw new RuntimeException(ret); + } + } + } + + @Override + public int getRecipeSize(){ return input.size(); } + + @Override + public ItemStack getRecipeOutput(){ return output; } + + @Override + public ItemStack getCraftingResult(IInventory var1){ return output.copy(); } + + @Override + public boolean matches(IInventory var1, World world, EntityPlayer player) + { + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + + ArrayList required = new ArrayList(input); + + for (int x = 0; x < 9; x++) + { + ItemStack slot = var1.getStackInSlot(x); + + if (slot != null) + { + boolean inRecipe = false; + Iterator req = required.iterator(); + + while (req.hasNext()) + { + boolean match = false; + + Object next = req.next(); + + if (next instanceof ItemStack) + { + match = checkItemEquals((ItemStack)next, slot); + } + else if (next instanceof ArrayList) + { + for (ItemStack item : (ArrayList)next) + { + match = match || checkItemEquals(item, slot); + } + } + + if (match) + { + inRecipe = true; + required.remove(next); + break; + } + } + + if (!inRecipe) + { + return false; + } + } + } + + return required.isEmpty(); + } + + private boolean checkItemEquals(ItemStack target, ItemStack input) + { + return (target.getItem() == input.getItem() && + (!target.hasTagCompound() || ItemStack.areItemStackTagsEqual(target, input)) && + (target.getItemDamage() == OreDictionary.WILDCARD_VALUE || target.getItemDamage() == input.getItemDamage())); + } + + /** + * Returns the input for this recipe, any mod accessing this value should never + * manipulate the values in this array as it will effect the recipe itself. + * @return The recipes input vales. + */ + public ArrayList getInput() + { + return this.input; + } + + @Override + public AspectList getAspects() { + return aspects; + } + + @Override + public AspectList getAspects(IInventory inv) { + return aspects; + } + + @Override + public String getResearch() { + return research; + } +} diff --git a/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java b/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java new file mode 100644 index 000000000..1562d052f --- /dev/null +++ b/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java @@ -0,0 +1,32 @@ +package thaumcraft.api.damagesource; + +import net.minecraft.entity.Entity; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSourceIndirect; + +public class DamageSourceIndirectThaumcraftEntity extends EntityDamageSourceIndirect { + + private boolean fireDamage; + private float hungerDamage; + private boolean isUnblockable; + + + public DamageSourceIndirectThaumcraftEntity(String par1Str, + Entity par2Entity, Entity par3Entity) { + super(par1Str, par2Entity, par3Entity); + } + + + public DamageSource setFireDamage() + { + this.fireDamage = true; + return this; + } + + public DamageSource setDamageBypassesArmor() + { + this.isUnblockable = true; + this.hungerDamage = 0.0F; + return this; + } +} diff --git a/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java b/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java new file mode 100644 index 000000000..7c277f28e --- /dev/null +++ b/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java @@ -0,0 +1,46 @@ +package thaumcraft.api.damagesource; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; + +public class DamageSourceThaumcraft extends DamageSource +{ + + public static DamageSource taint = new DamageSourceThaumcraft("taint").setDamageBypassesArmor().setMagicDamage(); + public static DamageSource tentacle = new DamageSourceThaumcraft("tentacle"); + public static DamageSource swarm = new DamageSourceThaumcraft("swarm"); + + protected DamageSourceThaumcraft(String par1Str) { + super(par1Str); + } + + /** This kind of damage can be blocked or not. */ + private boolean isUnblockable = false; + private boolean isDamageAllowedInCreativeMode = false; + private float hungerDamage = 0.3F; + + /** This kind of damage is based on fire or not. */ + private boolean fireDamage; + + /** This kind of damage is based on a projectile or not. */ + private boolean projectile; + + /** + * Whether this damage source will have its damage amount scaled based on the current difficulty. + */ + private boolean difficultyScaled; + private boolean magicDamage = false; + private boolean explosion = false; + + public static DamageSource causeSwarmDamage(EntityLivingBase par0EntityLiving) + { + return new EntityDamageSource("swarm", par0EntityLiving); + } + + public static DamageSource causeTentacleDamage(EntityLivingBase par0EntityLiving) + { + return new EntityDamageSource("tentacle", par0EntityLiving); + } + +} diff --git a/src/api/java/thaumcraft/api/entities/ITaintedMob.java b/src/api/java/thaumcraft/api/entities/ITaintedMob.java new file mode 100644 index 000000000..83fb1fcbd --- /dev/null +++ b/src/api/java/thaumcraft/api/entities/ITaintedMob.java @@ -0,0 +1,5 @@ +package thaumcraft.api.entities; + +public interface ITaintedMob { + +} diff --git a/src/api/java/thaumcraft/api/nodes/INode.java b/src/api/java/thaumcraft/api/nodes/INode.java new file mode 100644 index 000000000..8c71414d9 --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/INode.java @@ -0,0 +1,53 @@ +package thaumcraft.api.nodes; + +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IAspectContainer; + +public interface INode extends IAspectContainer { + + /** + * Unique identifier to distinguish nodes. Normal node id's are based on world id and coordinates + * @return + */ + public String getId(); + + public AspectList getAspectsBase(); + + /** + * Return the type of node + * @return + */ + public NodeType getNodeType(); + + /** + * Set the type of node + * @return + */ + public void setNodeType(NodeType nodeType); + + /** + * Return the node modifier + * @return + */ + public void setNodeModifier(NodeModifier nodeModifier); + + /** + * Set the node modifier + * @return + */ + public NodeModifier getNodeModifier(); + + /** + * Return the maximum capacity of each aspect the node can hold + * @return + */ + public int getNodeVisBase(Aspect aspect); + + /** + * Set the maximum capacity of each aspect the node can hold + * @return + */ + public void setNodeVisBase(Aspect aspect, short nodeVisBase); + +} diff --git a/src/api/java/thaumcraft/api/nodes/IRevealer.java b/src/api/java/thaumcraft/api/nodes/IRevealer.java new file mode 100644 index 000000000..14a19b54d --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/IRevealer.java @@ -0,0 +1,22 @@ +package thaumcraft.api.nodes; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +/** + * + * @author Azanor + * + * Equipped head slot items that extend this class will make nodes visible in world. + * + */ + +public interface IRevealer { + + /* + * If this method returns true the nodes will be visible. + */ + public boolean showNodes(ItemStack itemstack, EntityLivingBase player); + + +} diff --git a/src/api/java/thaumcraft/api/nodes/NodeModifier.java b/src/api/java/thaumcraft/api/nodes/NodeModifier.java new file mode 100644 index 000000000..885b8678a --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/NodeModifier.java @@ -0,0 +1,6 @@ +package thaumcraft.api.nodes; + +public enum NodeModifier +{ + BRIGHT, PALE, FADING +} \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/nodes/NodeType.java b/src/api/java/thaumcraft/api/nodes/NodeType.java new file mode 100644 index 000000000..355324b51 --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/NodeType.java @@ -0,0 +1,6 @@ +package thaumcraft.api.nodes; + +public enum NodeType +{ + NORMAL, UNSTABLE, DARK, TAINTED, HUNGRY, PURE +} \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java b/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java new file mode 100644 index 000000000..b718de4b7 --- /dev/null +++ b/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java @@ -0,0 +1,67 @@ +package thaumcraft.api.potions; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.util.ResourceLocation; +import thaumcraft.api.damagesource.DamageSourceThaumcraft; +import thaumcraft.api.entities.ITaintedMob; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class PotionFluxTaint extends Potion +{ + public static PotionFluxTaint instance = null; // will be instantiated at runtime + private int statusIconIndex = -1; + + public PotionFluxTaint(int par1, boolean par2, int par3) + { + super(par1,par2,par3); + setIconIndex(0, 0); + } + + public static void init() + { + instance.setPotionName("potion.fluxtaint"); + instance.setIconIndex(3, 1); + instance.setEffectiveness(0.25D); + } + + @Override + public boolean isBadEffect() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public int getStatusIconIndex() { + Minecraft.getMinecraft().renderEngine.bindTexture(rl); + return super.getStatusIconIndex(); + } + + ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); + + @Override + public void performEffect(EntityLivingBase target, int par2) { + if (target instanceof ITaintedMob) { + target.heal(1); + } else + if (!target.isEntityUndead() && !(target instanceof EntityPlayer)) + { + target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); + } + else + if (!target.isEntityUndead() && (target.getMaxHealth() > 1 || (target instanceof EntityPlayer))) + { + target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); + } + } + + public boolean isReady(int par1, int par2) + { + int k = 40 >> par2; + return k > 0 ? par1 % k == 0 : true; + } + +} diff --git a/src/api/java/thaumcraft/api/research/IScanEventHandler.java b/src/api/java/thaumcraft/api/research/IScanEventHandler.java new file mode 100644 index 000000000..d0efac5fc --- /dev/null +++ b/src/api/java/thaumcraft/api/research/IScanEventHandler.java @@ -0,0 +1,9 @@ +package thaumcraft.api.research; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public interface IScanEventHandler { + ScanResult scanPhenomena(ItemStack stack, World world, EntityPlayer player); +} diff --git a/src/api/java/thaumcraft/api/research/ResearchCategories.java b/src/api/java/thaumcraft/api/research/ResearchCategories.java new file mode 100644 index 000000000..82309b369 --- /dev/null +++ b/src/api/java/thaumcraft/api/research/ResearchCategories.java @@ -0,0 +1,101 @@ +package thaumcraft.api.research; + +import java.util.Collection; +import java.util.LinkedHashMap; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +import org.apache.logging.log4j.Level; + +import cpw.mods.fml.common.FMLLog; + +public class ResearchCategories { + + //Research + public static LinkedHashMap researchCategories = new LinkedHashMap (); + + /** + * @param key + * @return the research item linked to this key + */ + public static ResearchCategoryList getResearchList(String key) { + return researchCategories.get(key); + } + + /** + * @param key + * @return the name of the research category linked to this key. + * Must be stored as localization information in the LanguageRegistry. + */ + public static String getCategoryName(String key) { + return StatCollector.translateToLocal("tc.research_category."+key); + } + + /** + * @param key the research key + * @return the ResearchItem object. + */ + public static ResearchItem getResearch(String key) { + Collection rc = researchCategories.values(); + for (Object cat:rc) { + Collection rl = ((ResearchCategoryList)cat).research.values(); + for (Object ri:rl) { + if ((((ResearchItem)ri).key).equals(key)) return (ResearchItem)ri; + } + } + return null; + } + + /** + * This should only be done at the PostInit stage + * @param key the key used for this category + * @param icon the icon to be used for the research category tab + * @param background the resource location of the background image to use for this category + * @return the name of the research linked to this key + */ + public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background) { + if (getResearchList(key)==null) { + ResearchCategoryList rl = new ResearchCategoryList(icon, background); + researchCategories.put(key, rl); + } + } + + public static void addResearch(ResearchItem ri) { + ResearchCategoryList rl = getResearchList(ri.category); + if (rl!=null && !rl.research.containsKey(ri.key)) { + + if (!ri.isVirtual()) { + for (ResearchItem rr:rl.research.values()) { + if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) { + FMLLog.log(Level.FATAL, "[Thaumcraft] Research ["+ri.getName()+"] not added as it overlaps with existing research ["+rr.getName()+"]"); + return; + } + } + } + + + rl.research.put(ri.key, ri); + + if (ri.displayColumn < rl.minDisplayColumn) + { + rl.minDisplayColumn = ri.displayColumn; + } + + if (ri.displayRow < rl.minDisplayRow) + { + rl.minDisplayRow = ri.displayRow; + } + + if (ri.displayColumn > rl.maxDisplayColumn) + { + rl.maxDisplayColumn = ri.displayColumn; + } + + if (ri.displayRow > rl.maxDisplayRow) + { + rl.maxDisplayRow = ri.displayRow; + } + } + } +} diff --git a/src/api/java/thaumcraft/api/research/ResearchCategoryList.java b/src/api/java/thaumcraft/api/research/ResearchCategoryList.java new file mode 100644 index 000000000..7eed0101e --- /dev/null +++ b/src/api/java/thaumcraft/api/research/ResearchCategoryList.java @@ -0,0 +1,37 @@ +package thaumcraft.api.research; + +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.util.ResourceLocation; + +public class ResearchCategoryList { + + /** Is the smallest column used on the GUI. */ + public int minDisplayColumn; + + /** Is the smallest row used on the GUI. */ + public int minDisplayRow; + + /** Is the biggest column used on the GUI. */ + public int maxDisplayColumn; + + /** Is the biggest row used on the GUI. */ + public int maxDisplayRow; + + /** display variables **/ + public ResourceLocation icon; + public ResourceLocation background; + + public ResearchCategoryList(ResourceLocation icon, ResourceLocation background) { + this.icon = icon; + this.background = background; + } + + //Research + public Map research = new HashMap(); + + + + +} diff --git a/src/api/java/thaumcraft/api/research/ResearchItem.java b/src/api/java/thaumcraft/api/research/ResearchItem.java new file mode 100644 index 000000000..55b3820ca --- /dev/null +++ b/src/api/java/thaumcraft/api/research/ResearchItem.java @@ -0,0 +1,367 @@ +package thaumcraft.api.research; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class ResearchItem +{ + /** + * A short string used as a key for this research. Must be unique + */ + public final String key; + + /** + * A short string used as a reference to the research category to which this must be added. + */ + public final String category; + + /** + * The aspect tags and their values required to complete this research + */ + public final AspectList tags; + + /** + * This links to any research that needs to be completed before this research can be discovered or learnt. + */ + public String[] parents = null; + + /** + * Like parent above, but a line will not be displayed in the thaumonomicon linking them. Just used to prevent clutter. + */ + public String[] parentsHidden = null; + /** + * any research linked to this that will be unlocked automatically when this research is complete + */ + public String[] siblings = null; + + /** + * the horizontal position of the research icon + */ + public final int displayColumn; + + /** + * the vertical position of the research icon + */ + public final int displayRow; + + /** + * the icon to be used for this research + */ + public final ItemStack icon_item; + + /** + * the icon to be used for this research + */ + public final ResourceLocation icon_resource; + + /** + * How large the research grid is. Valid values are 1 to 3. + */ + private int complexity; + + /** + * Special research has a spiky border. Used for important research milestones. + */ + private boolean isSpecial; + + /** + * Research that can be directly purchased with RP in normal research difficulty. + */ + private boolean isSecondary; + + /** + * This indicates if the research should use a circular icon border. Usually used for "passive" research + * that doesn't have recipes and grants passive effects, or that unlock automatically. + */ + private boolean isRound; + + /** + * Stub research cannot be discovered by normal means, but can be unlocked via the sibling system. + */ + private boolean isStub; + + /** + * This indicated that the research is completely hidden and cannot be discovered by any + * player-controlled means. The recipes will never show up in the thaumonomicon. + * Usually used to unlock "hidden" recipes via sibling unlocking, like + * the various cap and rod combos for wands. + */ + private boolean isVirtual; + + @Deprecated + private boolean isLost; + + /** + * Concealed research does not display in the thaumonomicon until parent researches are discovered. + */ + private boolean isConcealed; + + /** + * Hidden research can only be discovered via scanning or knowledge fragments + */ + private boolean isHidden; + + /** + * These research items will automatically unlock for all players on game start + */ + private boolean isAutoUnlock; + + /** + * Scanning these items will have a chance of revealing hidden knowledge in the thaumonomicon + */ + private ItemStack[] itemTriggers; + + /** + * Scanning these entities will have a chance of revealing hidden knowledge in the thaumonomicon + */ + private String[] entityTriggers; + + /** + * Scanning things with these aspects will have a chance of revealing hidden knowledge in the thaumonomicon + */ + private Aspect[] aspectTriggers; + + private ResearchPage[] pages = null; + + public ResearchItem(String key, String category) + { + this.key = key; + this.category = category; + this.tags = new AspectList(); + this.icon_resource = null; + this.icon_item = null; + this.displayColumn = 0; + this.displayRow = 0; + this.setVirtual(); + + } + + public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, ResourceLocation icon) + { + this.key = key; + this.category = category; + this.tags = tags; + this.icon_resource = icon; + this.icon_item = null; + this.displayColumn = col; + this.displayRow = row; + this.complexity = complex; + if (complexity < 1) this.complexity = 1; + if (complexity > 3) this.complexity = 3; + } + + public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, ItemStack icon) + { + this.key = key; + this.category = category; + this.tags = tags; + this.icon_item = icon; + this.icon_resource = null; + this.displayColumn = col; + this.displayRow = row; + this.complexity = complex; + if (complexity < 1) this.complexity = 1; + if (complexity > 3) this.complexity = 3; + } + + public ResearchItem setSpecial() + { + this.isSpecial = true; + return this; + } + + public ResearchItem setStub() + { + this.isStub = true; + return this; + } + + @Deprecated + public ResearchItem setLost() + { + this.isLost = true; + return this; + } + + public ResearchItem setConcealed() + { + this.isConcealed = true; + return this; + } + + public ResearchItem setHidden() + { + this.isHidden = true; + return this; + } + + public ResearchItem setVirtual() + { + this.isVirtual = true; + return this; + } + + public ResearchItem setParents(String... par) + { + this.parents = par; + return this; + } + + + + public ResearchItem setParentsHidden(String... par) + { + this.parentsHidden = par; + return this; + } + + public ResearchItem setSiblings(String... sib) + { + this.siblings = sib; + return this; + } + + public ResearchItem setPages(ResearchPage... par) + { + this.pages = par; + return this; + } + + public ResearchPage[] getPages() { + return pages; + } + + public ResearchItem setItemTriggers(ItemStack... par) + { + this.itemTriggers = par; + return this; + } + + public ResearchItem setEntityTriggers(String... par) + { + this.entityTriggers = par; + return this; + } + + public ResearchItem setAspectTriggers(Aspect... par) + { + this.aspectTriggers = par; + return this; + } + + public ItemStack[] getItemTriggers() { + return itemTriggers; + } + + public String[] getEntityTriggers() { + return entityTriggers; + } + + public Aspect[] getAspectTriggers() { + return aspectTriggers; + } + + public ResearchItem registerResearchItem() + { + ResearchCategories.addResearch(this); + return this; + } + + public String getName() + { + return StatCollector.translateToLocal("tc.research_name."+key); + } + + public String getText() + { + return StatCollector.translateToLocal("tc.research_text."+key); + } + + public boolean isSpecial() + { + return this.isSpecial; + } + + public boolean isStub() + { + return this.isStub; + } + + @Deprecated + public boolean isLost() + { + return this.isLost; + } + + public boolean isConcealed() + { + return this.isConcealed; + } + + public boolean isHidden() + { + return this.isHidden; + } + + public boolean isVirtual() + { + return this.isVirtual; + } + + public boolean isAutoUnlock() { + return isAutoUnlock; + } + + public ResearchItem setAutoUnlock() + { + this.isAutoUnlock = true; + return this; + } + + public boolean isRound() { + return isRound; + } + + public ResearchItem setRound() { + this.isRound = true; + return this; + } + + public boolean isSecondary() { + return isSecondary; + } + + public ResearchItem setSecondary() { + this.isSecondary = true; + return this; + } + + public int getComplexity() { + return complexity; + } + + public ResearchItem setComplexity(int complexity) { + this.complexity = complexity; + return this; + } + + /** + * @return the aspect aspects ordinal with the highest value. Used to determine scroll color and similar things + */ + public Aspect getResearchPrimaryTag() { + Aspect aspect=null; + int highest=0; + if (tags!=null) + for (Aspect tag:tags.getAspects()) { + if (tags.getAmount(tag)>highest) { + aspect=tag; + highest=tags.getAmount(tag); + }; + } + return aspect; + } + +} diff --git a/src/api/java/thaumcraft/api/research/ResearchPage.java b/src/api/java/thaumcraft/api/research/ResearchPage.java new file mode 100644 index 000000000..a2e7824a5 --- /dev/null +++ b/src/api/java/thaumcraft/api/research/ResearchPage.java @@ -0,0 +1,174 @@ +package thaumcraft.api.research; + +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.CrucibleRecipe; +import thaumcraft.api.crafting.IArcaneRecipe; +import thaumcraft.api.crafting.InfusionEnchantmentRecipe; +import thaumcraft.api.crafting.InfusionRecipe; + +public class ResearchPage { + public static enum PageType + { + TEXT, + TEXT_CONCEALED, + IMAGE, + CRUCIBLE_CRAFTING, + ARCANE_CRAFTING, + ASPECTS, + NORMAL_CRAFTING, + INFUSION_CRAFTING, + COMPOUND_CRAFTING, + INFUSION_ENCHANTMENT + } + + public PageType type = PageType.TEXT; + + public String text=null; + public String research=null; + public ResourceLocation image=null; + public AspectList aspects=null; + public Object recipe=null; + public ItemStack recipeOutput=null; + + /** + * @param text this can (but does not have to) be a reference to a localization variable, not the actual text. + */ + public ResearchPage(String text) { + this.type = PageType.TEXT; + this.text = text; + } + + /** + * @param research this page will only be displayed if the player has discovered this research + * @param text this can (but does not have to) be a reference to a localization variable, not the actual text. + */ + public ResearchPage(String research, String text) { + this.type = PageType.TEXT_CONCEALED; + this.research = research; + this.text = text; + } + + /** + * @param recipe a vanilla crafting recipe. + */ + public ResearchPage(IRecipe recipe) { + this.type = PageType.NORMAL_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + /** + * @param recipe a collection of vanilla crafting recipes. + */ + public ResearchPage(IRecipe[] recipe) { + this.type = PageType.NORMAL_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a collection of arcane crafting recipes. + */ + public ResearchPage(IArcaneRecipe[] recipe) { + this.type = PageType.ARCANE_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a collection of infusion crafting recipes. + */ + public ResearchPage(InfusionRecipe[] recipe) { + this.type = PageType.INFUSION_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a compound crafting recipe. + */ + public ResearchPage(List recipe) { + this.type = PageType.COMPOUND_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe an arcane worktable crafting recipe. + */ + public ResearchPage(IArcaneRecipe recipe) { + this.type = PageType.ARCANE_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + /** + * @param recipe an alchemy crafting recipe. + */ + public ResearchPage(CrucibleRecipe recipe) { + this.type = PageType.CRUCIBLE_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + /** + * @param recipe an infusion crafting recipe. + */ + public ResearchPage(InfusionRecipe recipe) { + this.type = PageType.INFUSION_CRAFTING; + this.recipe = recipe; + if (recipe.getRecipeOutput() instanceof ItemStack) { + this.recipeOutput = (ItemStack) recipe.getRecipeOutput(); + } else { + this.recipeOutput = recipe.getRecipeInput(); + } + } + + /** + * @param recipe an infusion crafting recipe. + */ + public ResearchPage(InfusionEnchantmentRecipe recipe) { + this.type = PageType.INFUSION_ENCHANTMENT; + this.recipe = recipe; +// if (recipe.recipeOutput instanceof ItemStack) { +// this.recipeOutput = (ItemStack) recipe.recipeOutput; +// } else { +// this.recipeOutput = recipe.recipeInput; +// } + } + + /** + * @param image + * @param caption this can (but does not have to) be a reference to a localization variable, not the actual text. + */ + public ResearchPage(ResourceLocation image, String caption) { + this.type = PageType.IMAGE; + this.image = image; + this.text = caption; + } + + /** + * This function should really not be called directly - used internally + */ + public ResearchPage(AspectList as) { + this.type = PageType.ASPECTS; + this.aspects = as; + } + + /** + * returns a localized text of the text field (if one exists). Returns the text field itself otherwise. + * @return + */ + public String getTranslatedText() { + String ret=""; + if (text != null) { + ret = StatCollector.translateToLocal(text); + if (ret.isEmpty()) ret = text; + } + return ret; + } + + +} diff --git a/src/api/java/thaumcraft/api/research/ScanResult.java b/src/api/java/thaumcraft/api/research/ScanResult.java new file mode 100644 index 000000000..e1498f310 --- /dev/null +++ b/src/api/java/thaumcraft/api/research/ScanResult.java @@ -0,0 +1,39 @@ +package thaumcraft.api.research; + +import net.minecraft.entity.Entity; + +public class ScanResult { + public byte type = 0; //1=blocks,2=entities,3=phenomena + public int id; + public int meta; + public Entity entity; + public String phenomena; + + public ScanResult(byte type, int blockId, int blockMeta, Entity entity, + String phenomena) { + super(); + this.type = type; + this.id = blockId; + this.meta = blockMeta; + this.entity = entity; + this.phenomena = phenomena; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ScanResult) { + ScanResult sr = (ScanResult) obj; + if (type != sr.type) + return false; + if (type == 1 + && (id != sr.id || meta != sr.meta)) + return false; + if (type == 2 && entity.getEntityId() != sr.entity.getEntityId()) + return false; + if (type == 3 && !phenomena.equals(sr.phenomena)) + return false; + } + return true; + } + +} diff --git a/src/api/java/thaumcraft/api/wands/IWandFocus.java b/src/api/java/thaumcraft/api/wands/IWandFocus.java new file mode 100644 index 000000000..da4b9ae90 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandFocus.java @@ -0,0 +1,64 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import thaumcraft.api.aspects.AspectList; + + +public interface IWandFocus { + + public enum WandFocusAnimation { + WAVE, CHARGE; + } + + /** + * @return The color the focus should be changed to. + */ + public int getFocusColor(); + + /** + * @return An icon that will be drawn as a block inside the focus "block". + */ + IIcon getFocusDepthLayerIcon(); + + public IIcon getOrnament(); + + public WandFocusAnimation getAnimation(); + + /** + * Gets the amount of vis used per aspect per click or tick. This cost is actually listed as + * a hundredth of a single point of vis, so a cost of 100 will equal one vis per tick/click. + * It is returned as an AspectList to allow for multiple vis types in different ratios. + */ + public AspectList getVisCost(); + + public boolean isVisCostPerTick(); + + public ItemStack onFocusRightClick(ItemStack itemstack, World world, EntityPlayer player, MovingObjectPosition movingobjectposition); + + public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player, int count); + + public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world, EntityPlayer player, int count); + + /** + * Helper method to determine in what order foci should be iterated through when + * the user presses the 'change focus' keybinding. + * @return a string of characters that foci will be sorted against. + * For example AA00 will be placed before FG12 + *
As a guide build the sort string from two alphanumeric characters followed by + * two numeric characters based on... whatever. + */ + public String getSortingHelper(ItemStack itemstack); + + boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player); + + public boolean acceptsEnchant(int id); + + + + + +} diff --git a/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java b/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java new file mode 100644 index 000000000..4ef8c8494 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java @@ -0,0 +1,16 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** + * + * @author azanor + * + * Implemented by a class that you wish to be called whenever a wand with this rod performs its + * update tick. + * + */ +public interface IWandRodOnUpdate { + void onUpdate(ItemStack itemstack, EntityPlayer player); +} diff --git a/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java b/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java new file mode 100644 index 000000000..474655528 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java @@ -0,0 +1,12 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public interface IWandTriggerManager { + + public boolean performTrigger(World world, ItemStack wand, EntityPlayer player, + int x, int y, int z, int side, int event); + +} diff --git a/src/api/java/thaumcraft/api/wands/IWandable.java b/src/api/java/thaumcraft/api/wands/IWandable.java new file mode 100644 index 000000000..aeb9bac79 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandable.java @@ -0,0 +1,25 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +/** + * + * @author azanor + * + * Add this to a tile entity that you wish wands to interact with in some way. + * + */ + +public interface IWandable { + + public int onWandRightClick(World world, ItemStack wandstack, EntityPlayer player, int x, int y, int z, int side, int md); + + public ItemStack onWandRightClick(World world, ItemStack wandstack, EntityPlayer player); + + public void onUsingWandTick(ItemStack wandstack, EntityPlayer player, int count); + + public void onWandStoppedUsing(ItemStack wandstack, World world, EntityPlayer player, int count); + +} diff --git a/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java b/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java new file mode 100644 index 000000000..35900520c --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java @@ -0,0 +1,166 @@ +package thaumcraft.api.wands; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemFocusBasic extends Item implements IWandFocus { + + public ItemFocusBasic () + { + super(); + maxStackSize = 1; + canRepair=false; + this.setMaxDamage(0); + } + + public IIcon icon; + + @SideOnly(Side.CLIENT) + @Override + public IIcon getIconFromDamage(int par1) { + return icon; + } + + @Override + public boolean isItemTool(ItemStack par1ItemStack) + { + return true; + } + + @Override + public boolean isDamageable() { + return true; + } + + @Override + public void addInformation(ItemStack stack,EntityPlayer player, List list, boolean par4) { + AspectList al = this.getVisCost(); + if (al!=null && al.size()>0) { + list.add(StatCollector.translateToLocal(isVisCostPerTick()?"item.Focus.cost2":"item.Focus.cost1")); + for (Aspect aspect:al.getAspectsSorted()) { + DecimalFormat myFormatter = new DecimalFormat("#####.##"); + String amount = myFormatter.format(al.getAmount(aspect)/100f); + list.add(" \u00A7"+aspect.getChatcolor()+aspect.getName()+"\u00A7r x "+ amount); + + } + } + } + + @Override + public int getItemEnchantability() { + return 5; + } + + @Override + public EnumRarity getRarity(ItemStack itemstack) + { + return EnumRarity.rare; + } + + + @Override + public int getFocusColor() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public AspectList getVisCost() { + // TODO Auto-generated method stub + return null; + } + + @Override + public ItemStack onFocusRightClick(ItemStack itemstack, World world, + EntityPlayer player, MovingObjectPosition movingobjectposition) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player, + int count) { + // TODO Auto-generated method stub + } + + @Override + public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world, + EntityPlayer player, int count) { + // TODO Auto-generated method stub + + } + + /** + * Just insert two alphanumeric characters before this string in your focus item class + */ + @Override + public String getSortingHelper(ItemStack itemstack) { + Map ench = EnchantmentHelper.getEnchantments(itemstack); + String out=""; + for (Integer lvl:ench.values()) { + out = out + lvl + ""; + } + return out; + } + + @Override + public boolean isVisCostPerTick() { + return false; + } + + @Override + public IIcon getOrnament() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y, + int z, EntityPlayer player) { + // TODO Auto-generated method stub + return false; + } + + @Override + public WandFocusAnimation getAnimation() { + return WandFocusAnimation.WAVE; + } + + @Override + public IIcon getFocusDepthLayerIcon() { + // TODO Auto-generated method stub + return null; + } + + /** + * @see thaumcraft.api.wands.IWandFocus#acceptsEnchant(int) + * By default fortune is off for all wands + **/ + @Override + public boolean acceptsEnchant(int id) { + if (id==ThaumcraftApi.enchantFrugal|| + id==ThaumcraftApi.enchantPotency) return true; + return false; + } + + + + + +} diff --git a/src/api/java/thaumcraft/api/wands/StaffRod.java b/src/api/java/thaumcraft/api/wands/StaffRod.java new file mode 100644 index 000000000..e7ae90f06 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/StaffRod.java @@ -0,0 +1,48 @@ +package thaumcraft.api.wands; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * + * @author Azanor + * + * This class is used to keep the material information for the various rods. + * It is also used to generate the wand recipes ingame. + * + */ +public class StaffRod extends WandRod { + + boolean runes=false; + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost) { + super(tag+"_staff", capacity, item, craftCost); + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); + } + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost, + IWandRodOnUpdate onUpdate, ResourceLocation texture) { + super(tag+"_staff", capacity, item, craftCost, onUpdate, texture); + } + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost, + IWandRodOnUpdate onUpdate) { + super(tag+"_staff", capacity, item, craftCost, onUpdate); + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); + } + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost, + ResourceLocation texture) { + super(tag+"_staff", capacity, item, craftCost, texture); + } + + public boolean hasRunes() { + return runes; + } + + public void setRunes(boolean hasRunes) { + this.runes = hasRunes; + } + + +} diff --git a/src/api/java/thaumcraft/api/wands/WandCap.java b/src/api/java/thaumcraft/api/wands/WandCap.java new file mode 100644 index 000000000..1fc9ba1ca --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/WandCap.java @@ -0,0 +1,122 @@ +package thaumcraft.api.wands; + +import java.util.LinkedHashMap; +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import thaumcraft.api.aspects.Aspect; + +/** + * This class is used to keep the material information for the various caps. + * It is also used to generate the wand recipes ingame. + * @author Azanor + * + */ +public class WandCap { + + private String tag; + + /** + * Cost to craft this wand. Combined with the rod cost. + */ + private int craftCost; + + /** + * the amount by which all aspect costs are multiplied + */ + float baseCostModifier; + + /** + * specifies a list of primal aspects that use the special discount figure instead of the normal discount. + */ + List specialCostModifierAspects; + + /** + * the amount by which the specified aspect costs are multiplied + */ + float specialCostModifier; + + /** + * The texture that will be used for the ingame wand cap + */ + ResourceLocation texture; + + /** + * the actual item that makes up this cap and will be used to generate the wand recipes + */ + ItemStack item; + + public static LinkedHashMap caps = new LinkedHashMap(); + + public WandCap (String tag, float discount, ItemStack item, int craftCost) { + this.setTag(tag); + this.baseCostModifier = discount; + this.specialCostModifierAspects = null; + texture = new ResourceLocation("thaumcraft","textures/models/wand_cap_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + caps.put(tag, this); + } + + public WandCap (String tag, float discount, List specialAspects, float discountSpecial, ItemStack item, int craftCost) { + this.setTag(tag); + this.baseCostModifier = discount; + this.specialCostModifierAspects = specialAspects; + this.specialCostModifier = discountSpecial; + texture = new ResourceLocation("thaumcraft","textures/models/wand_cap_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + caps.put(tag, this); + } + + public float getBaseCostModifier() { + return baseCostModifier; + } + + public List getSpecialCostModifierAspects() { + return specialCostModifierAspects; + } + + public float getSpecialCostModifier() { + return specialCostModifier; + } + + public ResourceLocation getTexture() { + return texture; + } + + public void setTexture(ResourceLocation texture) { + this.texture = texture; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + + public ItemStack getItem() { + return item; + } + + public void setItem(ItemStack item) { + this.item = item; + } + + public int getCraftCost() { + return craftCost; + } + + public void setCraftCost(int craftCost) { + this.craftCost = craftCost; + } + + // Some examples: + // WandCap WAND_CAP_IRON = new WandCap("iron", 1.1f, Arrays.asList(Aspect.ORDER),1, new ItemStack(ConfigItems.itemWandCap,1,0),1); + // WandCap WAND_CAP_GOLD = new WandCap("gold", 1f, new ItemStack(ConfigItems.itemWandCap,1,1),3); + +} diff --git a/src/api/java/thaumcraft/api/wands/WandRod.java b/src/api/java/thaumcraft/api/wands/WandRod.java new file mode 100644 index 000000000..6b43cd470 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/WandRod.java @@ -0,0 +1,151 @@ +package thaumcraft.api.wands; + +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * + * @author Azanor + * + * This class is used to keep the material information for the various rods. + * It is also used to generate the wand recipes ingame. + * + */ +public class WandRod { + + + private String tag; + + /** + * Cost to craft this wand. Combined with the rod cost. + */ + private int craftCost; + + /** + * The amount of vis that can be stored - this number is actually multiplied + * by 100 for use by the wands internals + */ + int capacity; + + /** + * The texture that will be used for the ingame wand rod + */ + protected ResourceLocation texture; + + /** + * the actual item that makes up this rod and will be used to generate the wand recipes + */ + ItemStack item; + + /** + * A class that will be called whenever the wand onUpdate tick is run + */ + IWandRodOnUpdate onUpdate; + + /** + * Does the rod glow in the dark? + */ + boolean glow; + + public static LinkedHashMap rods = new LinkedHashMap(); + + public WandRod (String tag, int capacity, ItemStack item, int craftCost, ResourceLocation texture) { + this.setTag(tag); + this.capacity = capacity; + this.texture = texture; + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + } + + public WandRod (String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate, ResourceLocation texture) { + this.setTag(tag); + this.capacity = capacity; + this.texture = texture; + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + this.onUpdate = onUpdate; + } + + public WandRod (String tag, int capacity, ItemStack item, int craftCost) { + this.setTag(tag); + this.capacity = capacity; + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + } + + public WandRod (String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate) { + this.setTag(tag); + this.capacity = capacity; + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + this.onUpdate = onUpdate; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + public ResourceLocation getTexture() { + return texture; + } + + public void setTexture(ResourceLocation texture) { + this.texture = texture; + } + + public ItemStack getItem() { + return item; + } + + public void setItem(ItemStack item) { + this.item = item; + } + + public int getCraftCost() { + return craftCost; + } + + public void setCraftCost(int craftCost) { + this.craftCost = craftCost; + } + + public IWandRodOnUpdate getOnUpdate() { + return onUpdate; + } + + public void setOnUpdate(IWandRodOnUpdate onUpdate) { + this.onUpdate = onUpdate; + } + + public boolean isGlowing() { + return glow; + } + + public void setGlowing(boolean hasGlow) { + this.glow = hasGlow; + } + + // Some examples: + // WandRod WAND_ROD_WOOD = new WandRod("wood",25,new ItemStack(Item.stick),1); + // WandRod WAND_ROD_BLAZE = new WandRod("blaze",100,new ItemStack(Item.blazeRod),7,new WandRodBlazeOnUpdate()); +} diff --git a/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java b/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java new file mode 100644 index 000000000..68655cb7a --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java @@ -0,0 +1,72 @@ +package thaumcraft.api.wands; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +/** + * This class serves a similar function to IWandable in that it allows wands to interact + * with object in the world. In this case it is most useful for adding interaction with non-mod + * blocks where you can't control what happens in their code. + * Example where it is used is in crafting the thaumonomicon from a bookshelf and the + * crucible from a cauldron + * + * @author azanor + * + */ +public class WandTriggerRegistry { + + /** + * Registers an action to perform when a casting wand right clicks on a specific block. + * A manager class needs to be created that implements IWandTriggerManager. + * @param manager + * @param event a logical number that you can use to differentiate different events or actions + * @param block + * @param meta send -1 as a wildcard value for all possible meta values + */ + public static void registerWandBlockTrigger(IWandTriggerManager manager, int event, Block block, int meta) { + triggers.put(Arrays.asList(block,meta), + Arrays.asList(manager,event)); + + } + + private static HashMap triggers = new HashMap(); + + public static boolean hasTrigger(Block block, int meta) { + if (triggers.containsKey(Arrays.asList(block,meta)) || + triggers.containsKey(Arrays.asList(block,-1))) return true; + return false; + } + + /** + * This is called by the onItemUseFirst function in wands. + * Parameters and return value functions like you would expect for that function. + * @param world + * @param wand + * @param player + * @param x + * @param y + * @param z + * @param side + * @param block + * @param meta + * @return + */ + public static boolean performTrigger(World world, ItemStack wand, EntityPlayer player, + int x, int y, int z, int side, Block block, int meta) { + + List l = triggers.get(Arrays.asList(block,meta)); + if (l==null) l = triggers.get(Arrays.asList(block,-1)); + if (l==null) return false; + + IWandTriggerManager manager = (IWandTriggerManager) l.get(0); + int event = (Integer) l.get(1); + return manager.performTrigger(world, wand, player, x, y, z, side, event); + } + +} diff --git a/src/main/build.gradle b/src/main/build.gradle new file mode 100644 index 000000000..6e6116963 --- /dev/null +++ b/src/main/build.gradle @@ -0,0 +1,94 @@ +buildscript { + repositories { + mavenCentral() + maven { + name = "forge" + url = "http://files.minecraftforge.net/maven" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/repositories/snapshots/" + } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + } +} + +apply plugin: 'forge' + +ext.propFile = file "build.properties" + +propFile.withReader { + + def prop = new Properties() + prop.load(it) + project.ext.props = new ConfigSlurper().parse prop +} + +version = props.ac_version +group= "com.shinoow.abyssalcraft" // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = "AbyssalCraft" + +minecraft { + version = "1.7.2-10.12.2.1147" + runDir = "eclipse/assets" + + replaceIn "AbyssalCraft.java" + replace "forgeversion", props.forge_version +} + +dependencies { + +} + +version = "${props.mc_version}-${props.ac_version}" + +processResources +{ + // I really don't want that file to exist anywhere + exclude '**/Thumbs.db' + + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + include 'version.properties' + + // replace version and mcversion + expand ([ + 'version':project.version, + 'acversion':project.props.ac_version, + 'mcversion':project.props.mc_version, + 'forgeversion':project.props.forge_version + ]) + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + exclude 'version.properties' + } +} + + task srcJar(type: Jar) { + from sourceSets.main.allSource + + extension = 'jar' + classifier = 'src' +} + + task devJar(type: Jar, dependsOn: 'classes') { + from(sourceSets.main.output) { + include '**' + } + + extension = 'jar' + classifier = 'dev' +} + artifacts { + archives srcJar, devJar +} diff --git a/src/main/build.properties b/src/main/build.properties new file mode 100644 index 000000000..0c55e9450 --- /dev/null +++ b/src/main/build.properties @@ -0,0 +1,3 @@ +mc_version=1.7.2 +forge_version=10.12.2.1147 +ac_version=1.8.0 \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/AbyssalCraft.java b/src/main/java/com/shinoow/abyssalcraft/AbyssalCraft.java index 5249a6fac..41565a4bb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/AbyssalCraft.java +++ b/src/main/java/com/shinoow/abyssalcraft/AbyssalCraft.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft; @@ -26,22 +27,23 @@ import net.minecraft.entity.EntityList.EntityEggInfo; import net.minecraft.init.Items; import net.minecraft.item.*; -import net.minecraft.item.Item.ToolMaterial; -import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.potion.*; import net.minecraft.stats.*; import net.minecraft.util.WeightedRandomChestContent; +import net.minecraft.world.WorldProvider; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraftforge.common.*; import net.minecraftforge.common.BiomeDictionary.Type; import net.minecraftforge.common.BiomeManager.BiomeEntry; import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fluids.*; import net.minecraftforge.oredict.OreDictionary; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.item.ItemEngraving; +import com.shinoow.abyssalcraft.api.item.ItemUpgradeKit; import com.shinoow.abyssalcraft.common.*; import com.shinoow.abyssalcraft.common.blocks.*; import com.shinoow.abyssalcraft.common.blocks.itemblock.*; @@ -59,8 +61,7 @@ import com.shinoow.abyssalcraft.common.util.*; import com.shinoow.abyssalcraft.common.world.*; import com.shinoow.abyssalcraft.common.world.biome.*; -import com.shinoow.abyssalcraft.core.api.item.ItemUpgradeKit; -import com.shinoow.abyssalcraft.core.util.CoreRegistry; +import com.shinoow.abyssalcraft.integration.thaumcraft.ACThaumcraftIntegration; import com.shinoow.abyssalcraft.update.IUpdateProxy; import cpw.mods.fml.client.event.ConfigChangedEvent; @@ -71,10 +72,10 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.*; -@Mod(modid = AbyssalCraft.modid, name = AbyssalCraft.name, version = AbyssalCraft.version, dependencies = "required-after:Forge@[forgeversion,);required-after:accore", useMetadata = false, guiFactory = "com.shinoow.abyssalcraft.client.config.ACGuiFactory") +@Mod(modid = AbyssalCraft.modid, name = AbyssalCraft.name, version = AbyssalCraft.version, dependencies = "required-after:Forge@[forgeversion,);after:Thaumcraft", useMetadata = false, guiFactory = "com.shinoow.abyssalcraft.client.config.ACGuiFactory") public class AbyssalCraft { - public static final String version = "1.7.8.1"; + public static final String version = "1.8.0"; public static final String modid = "abyssalcraft"; public static final String name = "AbyssalCraft"; @@ -119,7 +120,8 @@ public class AbyssalCraft { dreadiumblock, transmutator, transmutator_on, dreadguardspawner, chagarothspawner, chagarothfistspawner, DrTfence, nitreOre, AbyIroOre, AbyGolOre, AbyDiaOre, AbyNitOre, AbyTinOre, AbyCopOre, AbyPCorOre, AbyLCorOre, solidLava, ethaxium, ethaxiumbrick, ethaxiumpillar, ethaxiumstairs, - ethaxiumslab1, ethaxiumslab2, ethaxiumfence, omotholstone, ethaxiumblock, omotholportal, omotholfire; + ethaxiumslab1, ethaxiumslab2, ethaxiumfence, omotholstone, ethaxiumblock, omotholportal, omotholfire, + engraver, engraver_on; //Overworld biomes public static BiomeGenBase Darklands, DarklandsForest, DarklandsPlains, DarklandsHills, @@ -138,7 +140,9 @@ public class AbyssalCraft { //misc items public static Item OC, Staff, portalPlacer, Cbucket, PSDLfinder, EoA, portalPlacerDL, cbrick, cudgel, carbonCluster, denseCarbonCluster, methane, nitre, sulfur, portalPlacerJzh, - tinIngot, copperIngot, lifeCrystal, coin; + tinIngot, copperIngot, lifeCrystal, shoggothFlesh, eldritchScale, omotholFlesh; + //coin stuff + public static Item coin, cthulhuCoin, elderCoin, jzaharCoin, engravingBlank, engravingCthulhu, engravingElder, engravingJzahar; //crystals (real elements) public static Item crystalIron, crystalGold, crystalSulfur, crystalCarbon, crystalOxygen, crystalHydrogen, crystalNitrogen, crystalPhosphorus, crystalPotassium, crystalTin, crystalCopper, @@ -149,7 +153,7 @@ public class AbyssalCraft { public static Item crystalRedstone, crystalAbyssalnite, crystalCoralium, crystalDreadium, crystalBlaze; //shadow items - public static Item shadowfragment, shadowshard, shadowgem, oblivionshard, soulReaper; + public static Item shadowfragment, shadowshard, shadowgem, oblivionshard, soulReaper, shadowPlate; //dread items public static Item Dreadshard, dreadchunk, dreadiumingot, dreadfragment, dreadcloth, dreadplate, dreadblade, dreadKey; //abyssalnite items @@ -181,7 +185,7 @@ public class AbyssalCraft { public static Potion Cplague, Dplague, antiMatter; - public static Enchantment coraliumE, dreadE, ironWall, lightPierce; + public static Enchantment coraliumE, dreadE, lightPierce, ironWall; public static CreativeTabs tabBlock = new TabACBlocks(CreativeTabs.getNextID(), "acblocks"); public static CreativeTabs tabItems = new TabACItems(CreativeTabs.getNextID(), "acitems"); @@ -190,6 +194,7 @@ public class AbyssalCraft { public static CreativeTabs tabFood = new TabACFood(CreativeTabs.getNextID(), "acfood"); public static CreativeTabs tabDecoration = new TabACDecoration(CreativeTabs.getNextID(), "acdblocks"); public static CreativeTabs tabCrystals = new TabACCrystals(CreativeTabs.getNextID(), "accrystals"); + public static CreativeTabs tabCoins = new TabACCoins(CreativeTabs.getNextID(), "accoins"); //Dimension Ids public static int configDimId1, configDimId2, configDimId3, configDimId4; @@ -201,13 +206,15 @@ public class AbyssalCraft { public static boolean dark1, dark2, dark3, dark4, dark5, coralium1, coralium2; public static boolean darkspawn1, darkspawn2, darkspawn3, darkspawn4, darkspawn5, coraliumspawn1, coraliumspawn2; + public static int darkWeight1, darkWeight2, darkWeight3, darkWeight4, darkWeight5, coraliumWeight; - public static boolean shouldSpread, shouldInfect, breakLogic, destroyOcean; + public static boolean shouldSpread, shouldInfect, breakLogic, destroyOcean, canRenderStarspawn; static int startEntityId = 300; public static final int crystallizerGuiID = 30; public static final int transmutatorGuiID = 31; + public static final int engraverGuiID = 32; @EventHandler public void preInit(FMLPreInitializationEvent event) { @@ -216,6 +223,7 @@ public void preInit(FMLPreInitializationEvent event) { metadata = event.getModMetadata(); MinecraftForge.EVENT_BUS.register(new AbyssalCraftEventHooks()); + FMLCommonHandler.instance().bus().register(new AbyssalCraftEventHooks()); MinecraftForge.EVENT_BUS.register(this); NetworkRegistry.INSTANCE.registerGuiHandler(this, new CommonProxy()); instance = this; @@ -223,25 +231,10 @@ public void preInit(FMLPreInitializationEvent event) { cfg = new Configuration(event.getSuggestedConfigurationFile()); syncConfig(); - - EnumHelper.addArmorMaterial("Abyssalnite", 35, new int[]{3, 8, 6, 3}, 13); - EnumHelper.addArmorMaterial("AbyssalniteC", 36, new int[]{3, 8, 6, 3}, 30); - EnumHelper.addArmorMaterial("Dread", 36, new int[]{3, 8, 6, 3}, 15); - EnumHelper.addArmorMaterial("Coralium", 37, new int[]{3, 8, 6, 3}, 14); - EnumHelper.addArmorMaterial("CoraliumP", 55, new int[]{4, 9, 7, 4}, 14); - EnumHelper.addArmorMaterial("Depths", 33, new int[]{3, 8, 6, 3}, 25); - EnumHelper.addArmorMaterial("Dreadium", 40, new int[]{3, 8, 6, 3}, 15); - EnumHelper.addArmorMaterial("DreadiumS", 45, new int[]{3, 8, 6, 3}, 20); - EnumHelper.addArmorMaterial("Ethaxium", 50, new int[]{3, 8, 6, 3}, 25); - - EnumHelper.addToolMaterial("DARKSTONE", 1, 180, 5.0F, 1, 5); - EnumHelper.addToolMaterial("ABYSSALNITE", 4, 1261, 13.0F, 4, 13); - EnumHelper.addToolMaterial("CORALIUM", 5, 2000, 14.0F, 5, 14); - EnumHelper.addToolMaterial("DREADIUM", 6, 3000, 15.0F, 6, 15); - EnumHelper.addToolMaterial("ABYSSALNITE_C", 8, 8000, 20.0F, 8, 30); - EnumHelper.addToolMaterial("ETHAXIUM", 8, 4000, 16.0F, 8, 20); - - EnumHelper.addCreatureAttribute("SHADOW"); + AbyssalCraftAPI.initPotionReflection(Loader.isModLoaded("DragonAPI")); + if(canRenderStarspawn == true) + ACLogger.info("RenderPlayer Override enabled, the Coralium Longbow will render twice in your hand now."); + else ACLogger.info("RenderPlayer Override disabled, Compatibility level +100."); CFluid = new Fluid("liquidcoralium").setDensity(3000).setViscosity(1000).setTemperature(350); antifluid = new Fluid("liquidantimatter").setDensity(4000).setViscosity(1500).setTemperature(100); @@ -271,7 +264,7 @@ public void preInit(FMLPreInitializationEvent event) { abyslab1 = new BlockACSingleSlab(abyslab1, abyslab2, Material.rock, "pickaxe", 2).setCreativeTab(AbyssalCraft.tabBlock).setStepSound(Block.soundTypeStone).setHardness(1.8F).setResistance(12.0F).setBlockName("ASBs1").setBlockTextureName(modid + ":" + "ASB"); abyslab2 = new BlockACDoubleSlab(abyslab1, abyslab2, Material.rock, "pickaxe", 2).setStepSound(Block.soundTypeStone).setHardness(1.8F).setResistance(12.0F).setBlockName("ASBs2").setBlockTextureName(modid + ":" + "ASB"); abystairs = new BlockACStairs(abybrick, "pickaxe", 2).setStepSound(Block.soundTypeStone).setHardness(1.65F).setResistance(12.0F).setBlockName("ASBs"); - Coraliumore = new BlockACOre(2, 3.0F, 6.0F).setBlockName("CO").setBlockTextureName(modid + ":" + "CO"); + Coraliumore = new BlockACOre(2, 3.0F, 6000.0F).setBlockName("CO").setBlockTextureName(modid + ":" + "CO"); abyore = new BlockACOre(2, 3.0F, 6.0F).setBlockName("AO").setBlockTextureName(modid + ":" + "AO"); abyfence = new BlockACFence("ASBf", Material.rock, "pickaxe", 2).setHardness(1.8F).setResistance(12.0F).setStepSound(Block.soundTypeStone).setBlockName("ASBf").setBlockTextureName(modid + ":" + "ASBf"); DSCwall = new BlockDarkstonecobblewall(Darkstone_cobble).setHardness(1.65F).setResistance(12.0F).setStepSound(Block.soundTypeStone).setBlockName("DSCw").setBlockTextureName(modid + ":" + "DSC"); @@ -367,6 +360,8 @@ public void preInit(FMLPreInitializationEvent event) { ethaxiumblock = new IngotBlock(8).setResistance(Float.MAX_VALUE).setBlockName("BOE").setBlockTextureName(modid + ":" + "BOE"); omotholportal = new BlockOmotholPortal().setBlockName("OG").setBlockTextureName(modid + ":" + "OG"); omotholfire = new BlockOmotholFire().setLightLevel(1.0F).setBlockName("Ofire"); + engraver = new BlockEngraver(false).setHardness(2.5F).setResistance(12.0F).setStepSound(Block.soundTypeStone).setBlockName("engraver"); + engraver_on = new BlockEngraver(true).setHardness(2.5F).setResistance(12.0F).setStepSound(Block.soundTypeStone).setLightLevel(0.875F).setBlockName("engraver"); //Biome Darklands = new BiomeGenDarklands(configBiomeId1).setColor(522674).setBiomeName("Darklands"); @@ -395,22 +390,32 @@ public void preInit(FMLPreInitializationEvent event) { PSDLfinder = new ItemTrackerPSDL().setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("PSDLf").setTextureName(modid + ":" + "PSDLf"); EoA = new ItemEoA().setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("EoA").setTextureName(modid + ":" + "EoA"); portalPlacerDL = new ItemPortalPlacerDL().setUnlocalizedName("GKD").setTextureName(modid + ":" + "GKD"); - cbrick = new ItemACBasic("cbrick").setCreativeTab(AbyssalCraft.tabItems); + cbrick = new ItemACBasic("cbrick"); cudgel = new ItemCudgel().setCreativeTab(AbyssalCraft.tabCombat).setFull3D().setUnlocalizedName("cudgel").setTextureName(modid + ":" + "cudgel"); - carbonCluster = new ItemACBasic("CarbC").setCreativeTab(AbyssalCraft.tabItems); - denseCarbonCluster = new ItemACBasic("DCarbC").setCreativeTab(AbyssalCraft.tabItems); - methane = new ItemACBasic("methane").setCreativeTab(AbyssalCraft.tabItems); - nitre = new ItemACBasic("nitre").setCreativeTab(AbyssalCraft.tabItems); - sulfur = new ItemACBasic("sulfur").setCreativeTab(AbyssalCraft.tabItems); + carbonCluster = new ItemACBasic("CarbC"); + denseCarbonCluster = new ItemACBasic("DCarbC"); + methane = new ItemACBasic("methane"); + nitre = new ItemACBasic("nitre"); + sulfur = new ItemACBasic("sulfur"); portalPlacerJzh = new ItemPortalPlacerJzh().setUnlocalizedName("GKJ").setTextureName(modid + ":" + "GKJ"); - tinIngot = new ItemACBasic("IT").setCreativeTab(AbyssalCraft.tabItems); - copperIngot = new ItemACBasic("IC").setCreativeTab(AbyssalCraft.tabItems); - lifeCrystal = new ItemACBasic("lifeCrystal").setCreativeTab(AbyssalCraft.tabItems); - coin = new ItemCoin(); + tinIngot = new ItemACBasic("IT"); + copperIngot = new ItemACBasic("IC"); + lifeCrystal = new ItemACBasic("lifeCrystal"); + coin = new ItemCoin("coin"); + cthulhuCoin = new ItemCoin("cthulhucoin"); + elderCoin = new ItemCoin("eldercoin"); + jzaharCoin = new ItemCoin("jzaharcoin"); + engravingBlank = new ItemEngraving("blank", 50).setCreativeTab(AbyssalCraft.tabCoins).setTextureName(modid + ":" + "engraving_blank"); + engravingCthulhu = new ItemEngraving("cthulhu", 10).setCreativeTab(AbyssalCraft.tabCoins).setTextureName(modid + ":" + "engraving_cthulhu"); + engravingElder = new ItemEngraving("elder", 10).setCreativeTab(AbyssalCraft.tabCoins).setTextureName(modid + ":" + "engraving_elder"); + engravingJzahar = new ItemEngraving("jzahar", 10).setCreativeTab(AbyssalCraft.tabCoins).setTextureName(modid + ":" + "engraving_jzahar"); + shoggothFlesh = new ItemShoggothFlesh(); + eldritchScale = new ItemACBasic("eldritchscale"); + omotholFlesh = new ItemACBasic("omotholflesh"); //Ethaxium - ethaxium_brick = new ItemACBasic("EB").setCreativeTab(AbyssalCraft.tabItems); - ethaxiumIngot = new ItemACBasic("EI").setCreativeTab(AbyssalCraft.tabItems); + ethaxium_brick = new ItemACBasic("EB"); + ethaxiumIngot = new ItemACBasic("EI"); //anti-items antibucket = new ItemAntiBucket(anticwater).setCreativeTab(AbyssalCraft.tabItems).setContainerItem(Items.bucket).setUnlocalizedName("Antibucket").setTextureName(modid + ":" + "Antibucket"); @@ -418,7 +423,7 @@ public void preInit(FMLPreInitializationEvent event) { antiChicken = new ItemAntiFood("antiChicken"); antiPork = new ItemAntiFood("antiPork"); antiFlesh = new ItemAntiFood("antiFlesh"); - antiBone = new ItemACBasic("antiBone").setCreativeTab(AbyssalCraft.tabItems); + antiBone = new ItemACBasic("antiBone"); antiSpider_eye = new ItemAntiFood("antiSpider_eye"); //crystals @@ -449,24 +454,25 @@ public void preInit(FMLPreInitializationEvent event) { crystalZinc = new ItemCrystal("crystalZinc", 0xD7D8D9, "Zn"); //Shadow items - shadowfragment = new ItemACBasic("SF").setCreativeTab(AbyssalCraft.tabItems); - shadowshard = new ItemACBasic("SS").setCreativeTab(AbyssalCraft.tabItems); - shadowgem = new ItemACBasic("SG").setCreativeTab(AbyssalCraft.tabItems); - oblivionshard = new ItemACBasic("OS").setCreativeTab(AbyssalCraft.tabItems); + shadowfragment = new ItemACBasic("SF"); + shadowshard = new ItemACBasic("SS"); + shadowgem = new ItemACBasic("SG"); + oblivionshard = new ItemACBasic("OS"); + shadowPlate = new ItemACBasic("shadowplate"); //Dread items - Dreadshard = new ItemACBasic("DSOA").setCreativeTab(AbyssalCraft.tabItems); - dreadchunk = new ItemACBasic("DAC").setCreativeTab(AbyssalCraft.tabItems); - dreadiumingot = new ItemACBasic("DI").setCreativeTab(AbyssalCraft.tabItems); - dreadfragment = new ItemACBasic("DF").setCreativeTab(AbyssalCraft.tabItems); - dreadcloth = new ItemACBasic("DC").setCreativeTab(AbyssalCraft.tabItems); - dreadplate = new ItemACBasic("DPP").setCreativeTab(AbyssalCraft.tabItems); - dreadblade = new ItemACBasic("DB").setCreativeTab(AbyssalCraft.tabItems); - dreadKey = new ItemACBasic("DK").setCreativeTab(AbyssalCraft.tabItems); + Dreadshard = new ItemACBasic("DSOA"); + dreadchunk = new ItemACBasic("DAC"); + dreadiumingot = new ItemACBasic("DI"); + dreadfragment = new ItemACBasic("DF"); + dreadcloth = new ItemACBasic("DC"); + dreadplate = new ItemACBasic("DPP"); + dreadblade = new ItemACBasic("DB"); + dreadKey = new ItemACBasic("DK"); //Abyssalnite items - abychunk = new ItemACBasic("AC").setCreativeTab(AbyssalCraft.tabItems); - abyingot = new ItemACBasic("AI").setCreativeTab(AbyssalCraft.tabItems); + abychunk = new ItemACBasic("AC"); + abyingot = new ItemACBasic("AI"); //Coralium items Coraliumcluster2 = new ItemCoraliumcluster("2").setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("CGCA").setTextureName(modid + ":" + "CGCA"); @@ -477,88 +483,88 @@ public void preInit(FMLPreInitializationEvent event) { Coraliumcluster7 = new ItemCoraliumcluster("7").setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("CGCF").setTextureName(modid + ":" + "CGCF"); Coraliumcluster8 = new ItemCoraliumcluster("8").setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("CGCG").setTextureName(modid + ":" + "CGCG"); Coraliumcluster9 = new ItemCoraliumcluster("9").setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("CGCH").setTextureName(modid + ":" + "CGCH"); - Cpearl = new ItemACBasic("CP").setCreativeTab(AbyssalCraft.tabItems); - Cchunk = new ItemACBasic("CC").setCreativeTab(AbyssalCraft.tabItems); - Cingot = new ItemACBasic("RCI").setCreativeTab(AbyssalCraft.tabItems); - Cplate = new ItemACBasic("CPP").setCreativeTab(AbyssalCraft.tabItems); - Coralium = new ItemACBasic("CG").setCreativeTab(AbyssalCraft.tabItems); + Cpearl = new ItemACBasic("CP"); + Cchunk = new ItemACBasic("CC"); + Cingot = new ItemACBasic("RCI"); + Cplate = new ItemACBasic("CPP"); + Coralium = new ItemACBasic("CG"); Corb = new ItemCorb().setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("TG").setTextureName(modid + ":" + "TG"); Corflesh = new ItemCorflesh(2, 0.1F, false).setCreativeTab(AbyssalCraft.tabFood).setUnlocalizedName("CF").setTextureName(modid + ":" + "CF"); Corbone = new ItemCorbone(2, 0.1F, false).setCreativeTab(AbyssalCraft.tabFood).setUnlocalizedName("CB").setTextureName(modid + ":" + "CB"); corbow = new ItemCoraliumBow(20.0F, 0, 8, 16).setUnlocalizedName("Corbow").setTextureName(modid + ":" + "Corbow"); //Tools - pickaxe = new ItemDarkstonePickaxe(Enum.valueOf(ToolMaterial.class, "DARKSTONE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DP").setTextureName(modid + ":" + "DP"); - axe = new ItemDarkstoneAxe(Enum.valueOf(ToolMaterial.class, "DARKSTONE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DA").setTextureName(modid + ":" + "DA"); - shovel = new ItemDarkstoneShovel(Enum.valueOf(ToolMaterial.class, "DARKSTONE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DS").setTextureName(modid + ":" + "DS"); + pickaxe = new ItemDarkstonePickaxe(AbyssalCraftAPI.darkstoneTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DP").setTextureName(modid + ":" + "DP"); + axe = new ItemDarkstoneAxe(AbyssalCraftAPI.darkstoneTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DA").setTextureName(modid + ":" + "DA"); + shovel = new ItemDarkstoneShovel(AbyssalCraftAPI.darkstoneTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DS").setTextureName(modid + ":" + "DS"); sword = new ItemDarkstoneSword(EnumToolMaterialAC.DARKSTONE).setCreativeTab(AbyssalCraft.tabCombat).setUnlocalizedName("DSW").setTextureName(modid + ":" + "DSW"); - hoe = new ItemDarkstoneHoe(Enum.valueOf(ToolMaterial.class, "DARKSTONE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DH").setTextureName(modid + ":" + "DH"); - pickaxeA = new ItemAbyssalnitePickaxe(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AP").setTextureName(modid + ":" + "AP"); - axeA = new ItemAbyssalniteAxe(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AA").setTextureName(modid + ":" + "AA"); - shovelA = new ItemAbyssalniteShovel(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AS").setTextureName(modid + ":" + "AS"); + hoe = new ItemDarkstoneHoe(AbyssalCraftAPI.darkstoneTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DH").setTextureName(modid + ":" + "DH"); + pickaxeA = new ItemAbyssalnitePickaxe(AbyssalCraftAPI.abyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AP").setTextureName(modid + ":" + "AP"); + axeA = new ItemAbyssalniteAxe(AbyssalCraftAPI.abyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AA").setTextureName(modid + ":" + "AA"); + shovelA = new ItemAbyssalniteShovel(AbyssalCraftAPI.abyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AS").setTextureName(modid + ":" + "AS"); swordA = new ItemAbyssalniteSword(EnumToolMaterialAC.ABYSSALNITE).setCreativeTab(AbyssalCraft.tabCombat).setUnlocalizedName("ASW").setTextureName(modid + ":" + "ASW"); - hoeA = new ItemAbyssalniteHoe(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AH").setTextureName(modid + ":" + "AH"); - pickaxeC = new ItemAbyssalniteCPickaxe(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE_C")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAP").setTextureName(modid + ":" + "CIAP"); - axeC = new ItemAbyssalniteCAxe(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE_C")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAA").setTextureName(modid + ":" + "CIAA"); - shovelC = new ItemAbyssalniteCShovel(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE_C")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAS").setTextureName(modid + ":" + "CIAS"); + hoeA = new ItemAbyssalniteHoe(AbyssalCraftAPI.abyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("AH").setTextureName(modid + ":" + "AH"); + pickaxeC = new ItemAbyssalniteCPickaxe(AbyssalCraftAPI.coraliumInfusedAbyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAP").setTextureName(modid + ":" + "CIAP"); + axeC = new ItemAbyssalniteCAxe(AbyssalCraftAPI.coraliumInfusedAbyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAA").setTextureName(modid + ":" + "CIAA"); + shovelC = new ItemAbyssalniteCShovel(AbyssalCraftAPI.coraliumInfusedAbyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAS").setTextureName(modid + ":" + "CIAS"); swordC = new ItemAbyssalniteCSword(EnumToolMaterialAC.ABYSSALNITE_C).setCreativeTab(AbyssalCraft.tabCombat).setUnlocalizedName("CIASW").setTextureName(modid + ":" + "CIASW"); - hoeC = new ItemAbyssalniteCHoe(Enum.valueOf(ToolMaterial.class, "ABYSSALNITE_C")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAH").setTextureName(modid + ":" + "CIAH"); - Corpickaxe = new ItemCoraliumPickaxe(Enum.valueOf(ToolMaterial.class, "CORALIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCP").setTextureName(modid + ":" + "RCP"); - Coraxe = new ItemCoraliumAxe(Enum.valueOf(ToolMaterial.class, "CORALIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCA").setTextureName(modid + ":" + "RCA"); - Corshovel = new ItemCoraliumShovel(Enum.valueOf(ToolMaterial.class, "CORALIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCS").setTextureName(modid + ":" + "RCS"); + hoeC = new ItemAbyssalniteCHoe(AbyssalCraftAPI.coraliumInfusedAbyssalniteTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("CIAH").setTextureName(modid + ":" + "CIAH"); + Corpickaxe = new ItemCoraliumPickaxe(AbyssalCraftAPI.refinedCoraliumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCP").setTextureName(modid + ":" + "RCP"); + Coraxe = new ItemCoraliumAxe(AbyssalCraftAPI.refinedCoraliumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCA").setTextureName(modid + ":" + "RCA"); + Corshovel = new ItemCoraliumShovel(AbyssalCraftAPI.refinedCoraliumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCS").setTextureName(modid + ":" + "RCS"); Corsword = new ItemCoraliumSword(EnumToolMaterialAC.CORALIUM).setCreativeTab(AbyssalCraft.tabCombat).setUnlocalizedName("RCSW").setTextureName(modid + ":" + "RCSW"); - Corhoe = new ItemCoraliumHoe(Enum.valueOf(ToolMaterial.class, "CORALIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCH").setTextureName(modid + ":" + "RCH"); - dreadiumpickaxe = new ItemDreadiumPickaxe(Enum.valueOf(ToolMaterial.class, "DREADIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDP").setTextureName(modid + ":" + "DDP"); - dreadiumaxe = new ItemDreadiumAxe(Enum.valueOf(ToolMaterial.class, "DREADIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDA").setTextureName(modid + ":" + "DDA"); - dreadiumshovel = new ItemDreadiumShovel(Enum.valueOf(ToolMaterial.class, "DREADIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDS").setTextureName(modid + ":" + "DDS"); + Corhoe = new ItemCoraliumHoe(AbyssalCraftAPI.refinedCoraliumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("RCH").setTextureName(modid + ":" + "RCH"); + dreadiumpickaxe = new ItemDreadiumPickaxe(AbyssalCraftAPI.dreadiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDP").setTextureName(modid + ":" + "DDP"); + dreadiumaxe = new ItemDreadiumAxe(AbyssalCraftAPI.dreadiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDA").setTextureName(modid + ":" + "DDA"); + dreadiumshovel = new ItemDreadiumShovel(AbyssalCraftAPI.dreadiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDS").setTextureName(modid + ":" + "DDS"); dreadiumsword = new ItemDreadiumSword(EnumToolMaterialAC.DREADIUM).setCreativeTab(AbyssalCraft.tabCombat).setUnlocalizedName("DDSW").setTextureName(modid + ":" + "DDSW"); - dreadiumhoe = new ItemDreadiumHoe(Enum.valueOf(ToolMaterial.class, "DREADIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDH").setTextureName(modid + ":" + "DDH"); + dreadiumhoe = new ItemDreadiumHoe(AbyssalCraftAPI.dreadiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("DDH").setTextureName(modid + ":" + "DDH"); dreadhilt = new ItemDreadiumKatana("hilt", 5.0F, 200); dreadkatana = new ItemDreadiumKatana("katana", 20.0F, 2000); soulReaper = new ItemSoulReaper("soulReaper"); - ethPickaxe = new ItemEthaxiumPickaxe(Enum.valueOf(ToolMaterial.class, "ETHAXIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("EP").setTextureName(modid + ":" + "EP"); - ethAxe = new ItemEthaxiumAxe(Enum.valueOf(ToolMaterial.class, "ETHAXIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("EA").setTextureName(modid + ":" + "EA"); - ethShovel = new ItemEthaxiumShovel(Enum.valueOf(ToolMaterial.class, "ETHAXIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("ES").setTextureName(modid + ":" + "ES"); + ethPickaxe = new ItemEthaxiumPickaxe(AbyssalCraftAPI.ethaxiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("EP").setTextureName(modid + ":" + "EP"); + ethAxe = new ItemEthaxiumAxe(AbyssalCraftAPI.ethaxiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("EA").setTextureName(modid + ":" + "EA"); + ethShovel = new ItemEthaxiumShovel(AbyssalCraftAPI.ethaxiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("ES").setTextureName(modid + ":" + "ES"); ethSword = new ItemEthaxiumSword(EnumToolMaterialAC.ETHAXIUM).setCreativeTab(AbyssalCraft.tabCombat).setUnlocalizedName("ESW").setTextureName(modid + ":" + "ESW"); - ethHoe = new ItemEthaxiumHoe(Enum.valueOf(ToolMaterial.class, "ETHAXIUM")).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("EH").setTextureName(modid + ":" + "EH"); + ethHoe = new ItemEthaxiumHoe(AbyssalCraftAPI.ethaxiumTool).setCreativeTab(AbyssalCraft.tabTools).setUnlocalizedName("EH").setTextureName(modid + ":" + "EH"); //Armor - boots = new ItemAbyssalniteArmor(Enum.valueOf(ArmorMaterial.class, "Abyssalnite"), 5, 3).setUnlocalizedName("AAB").setTextureName(modid + ":" + "AAB"); - helmet = new ItemAbyssalniteArmor(Enum.valueOf(ArmorMaterial.class, "Abyssalnite"), 5, 0).setUnlocalizedName("AAH").setTextureName(modid + ":" + "AAh"); - plate = new ItemAbyssalniteArmor(Enum.valueOf(ArmorMaterial.class, "Abyssalnite"), 5, 1).setUnlocalizedName("AAC").setTextureName(modid + ":" + "AAC"); - legs = new ItemAbyssalniteArmor(Enum.valueOf(ArmorMaterial.class, "Abyssalnite"), 5, 2).setUnlocalizedName("AAP").setTextureName(modid + ":" + "AAP"); - bootsC = new ItemAbyssalniteCArmor(Enum.valueOf(ArmorMaterial.class, "AbyssalniteC"), 5, 3).setUnlocalizedName("ACIAB").setTextureName(modid + ":" + "ACIAB"); - helmetC = new ItemAbyssalniteCArmor(Enum.valueOf(ArmorMaterial.class, "AbyssalniteC"), 5, 0).setUnlocalizedName("ACIAH").setTextureName(modid + ":" + "ACIAH"); - plateC = new ItemAbyssalniteCArmor(Enum.valueOf(ArmorMaterial.class, "AbyssalniteC"), 5, 1).setUnlocalizedName("ACIAC").setTextureName(modid + ":" + "ACIAC"); - legsC = new ItemAbyssalniteCArmor(Enum.valueOf(ArmorMaterial.class, "AbyssalniteC"), 5, 2).setUnlocalizedName("ACIAP").setTextureName(modid + ":" + "ACIAP"); - bootsD = new ItemDreadArmor(Enum.valueOf(ArmorMaterial.class, "Dread"), 5, 3).setUnlocalizedName("ADAB").setTextureName(modid + ":" + "ADAB"); - helmetD = new ItemDreadArmor(Enum.valueOf(ArmorMaterial.class, "Dread"), 5, 0).setUnlocalizedName("ADAH").setTextureName(modid + ":" + "ADAH"); - plateD = new ItemDreadArmor(Enum.valueOf(ArmorMaterial.class, "Dread"), 5, 1).setUnlocalizedName("ADAC").setTextureName(modid + ":" + "ADAC"); - legsD = new ItemDreadArmor(Enum.valueOf(ArmorMaterial.class, "Dread"), 5, 2).setUnlocalizedName("ADAP").setTextureName(modid + ":" + "ADAP"); - Corboots = new ItemCoraliumArmor(Enum.valueOf(ArmorMaterial.class, "Coralium"), 5, 3).setUnlocalizedName("ACB").setTextureName(modid + ":" + "ACB"); - Corhelmet = new ItemCoraliumArmor(Enum.valueOf(ArmorMaterial.class, "Coralium"), 5, 0).setUnlocalizedName("ACH").setTextureName(modid + ":" + "ACH"); - Corplate = new ItemCoraliumArmor(Enum.valueOf(ArmorMaterial.class, "Coralium"), 5, 1).setUnlocalizedName("ACC").setTextureName(modid + ":" + "ACC"); - Corlegs = new ItemCoraliumArmor(Enum.valueOf(ArmorMaterial.class, "Coralium"), 5, 2).setUnlocalizedName("ACP").setTextureName(modid + ":" + "ACP"); - CorbootsP = new ItemCoraliumPArmor(Enum.valueOf(ArmorMaterial.class, "CoraliumP"), 5, 3).setUnlocalizedName("ACBP").setTextureName(modid + ":" + "ACBP"); - CorhelmetP = new ItemCoraliumPArmor(Enum.valueOf(ArmorMaterial.class, "CoraliumP"), 5, 0).setUnlocalizedName("ACHP").setTextureName(modid + ":" + "ACHP"); - CorplateP = new ItemCoraliumPArmor(Enum.valueOf(ArmorMaterial.class, "CoraliumP"), 5, 1).setUnlocalizedName("ACCP").setTextureName(modid + ":" + "ACCP"); - CorlegsP = new ItemCoraliumPArmor(Enum.valueOf(ArmorMaterial.class, "CoraliumP"), 5, 2).setUnlocalizedName("ACPP").setTextureName(modid + ":" + "ACPP"); - Depthsboots = new ItemDepthsArmor(Enum.valueOf(ArmorMaterial.class, "Depths"), 5, 3).setUnlocalizedName("ADB").setTextureName(modid + ":" + "ADB"); - Depthshelmet = new ItemDepthsArmor(Enum.valueOf(ArmorMaterial.class, "Depths"), 5, 0).setUnlocalizedName("ADH").setTextureName(modid + ":" + "ADH"); - Depthsplate = new ItemDepthsArmor(Enum.valueOf(ArmorMaterial.class, "Depths"), 5, 1).setUnlocalizedName("ADC").setTextureName(modid + ":" + "ADC"); - Depthslegs = new ItemDepthsArmor(Enum.valueOf(ArmorMaterial.class, "Depths"), 5, 2).setUnlocalizedName("ADP").setTextureName(modid + ":" + "ADP"); - dreadiumboots = new ItemDreadiumArmor(Enum.valueOf(ArmorMaterial.class, "Dreadium"), 5, 3).setUnlocalizedName("ADDB").setTextureName(modid + ":" + "ADDB"); - dreadiumhelmet = new ItemDreadiumArmor(Enum.valueOf(ArmorMaterial.class, "Dreadium"), 5, 0).setUnlocalizedName("ADDH").setTextureName(modid + ":" + "ADDH"); - dreadiumplate = new ItemDreadiumArmor(Enum.valueOf(ArmorMaterial.class, "Dreadium"), 5, 1).setUnlocalizedName("ADDC").setTextureName(modid + ":" + "ADDC"); - dreadiumlegs = new ItemDreadiumArmor(Enum.valueOf(ArmorMaterial.class, "Dreadium"), 5, 2).setUnlocalizedName("ADDP").setTextureName(modid + ":" + "ADDP"); - dreadiumSboots = new ItemDreadiumSamuraiArmor(Enum.valueOf(ArmorMaterial.class, "DreadiumS"), 5, 3).setUnlocalizedName("ADSB").setTextureName(modid + ":" + "ADSB"); - dreadiumShelmet = new ItemDreadiumSamuraiArmor(Enum.valueOf(ArmorMaterial.class, "DreadiumS"), 5, 0).setUnlocalizedName("ADSH").setTextureName(modid + ":" + "ADSH"); - dreadiumSplate = new ItemDreadiumSamuraiArmor(Enum.valueOf(ArmorMaterial.class, "DreadiumS"), 5, 1).setUnlocalizedName("ADSC").setTextureName(modid + ":" + "ADSC"); - dreadiumSlegs = new ItemDreadiumSamuraiArmor(Enum.valueOf(ArmorMaterial.class, "DreadiumS"), 5, 2).setUnlocalizedName("ADSP").setTextureName(modid + ":" + "ADSP"); - ethBoots = new ItemEthaxiumArmor(Enum.valueOf(ArmorMaterial.class, "Ethaxium"), 5, 3).setUnlocalizedName("AEB").setTextureName(modid + ":" + "AEB"); - ethHelmet = new ItemEthaxiumArmor(Enum.valueOf(ArmorMaterial.class, "Ethaxium"), 5, 0).setUnlocalizedName("AEH").setTextureName(modid + ":" + "AEH"); - ethPlate = new ItemEthaxiumArmor(Enum.valueOf(ArmorMaterial.class, "Ethaxium"), 5, 1).setUnlocalizedName("AEC").setTextureName(modid + ":" + "AEC"); - ethLegs = new ItemEthaxiumArmor(Enum.valueOf(ArmorMaterial.class, "Ethaxium"), 5, 2).setUnlocalizedName("AEP").setTextureName(modid + ":" + "AEP"); + boots = new ItemAbyssalniteArmor(AbyssalCraftAPI.abyssalniteArmor, 5, 3).setUnlocalizedName("AAB").setTextureName(modid + ":" + "AAB"); + helmet = new ItemAbyssalniteArmor(AbyssalCraftAPI.abyssalniteArmor, 5, 0).setUnlocalizedName("AAH").setTextureName(modid + ":" + "AAh"); + plate = new ItemAbyssalniteArmor(AbyssalCraftAPI.abyssalniteArmor, 5, 1).setUnlocalizedName("AAC").setTextureName(modid + ":" + "AAC"); + legs = new ItemAbyssalniteArmor(AbyssalCraftAPI.abyssalniteArmor, 5, 2).setUnlocalizedName("AAP").setTextureName(modid + ":" + "AAP"); + bootsC = new ItemAbyssalniteCArmor(AbyssalCraftAPI.coraliumInfusedAbyssalniteArmor, 5, 3).setUnlocalizedName("ACIAB").setTextureName(modid + ":" + "ACIAB"); + helmetC = new ItemAbyssalniteCArmor(AbyssalCraftAPI.coraliumInfusedAbyssalniteArmor, 5, 0).setUnlocalizedName("ACIAH").setTextureName(modid + ":" + "ACIAH"); + plateC = new ItemAbyssalniteCArmor(AbyssalCraftAPI.coraliumInfusedAbyssalniteArmor, 5, 1).setUnlocalizedName("ACIAC").setTextureName(modid + ":" + "ACIAC"); + legsC = new ItemAbyssalniteCArmor(AbyssalCraftAPI.coraliumInfusedAbyssalniteArmor, 5, 2).setUnlocalizedName("ACIAP").setTextureName(modid + ":" + "ACIAP"); + bootsD = new ItemDreadArmor(AbyssalCraftAPI.dreadedAbyssalniteArmor, 5, 3).setUnlocalizedName("ADAB").setTextureName(modid + ":" + "ADAB"); + helmetD = new ItemDreadArmor(AbyssalCraftAPI.dreadedAbyssalniteArmor, 5, 0).setUnlocalizedName("ADAH").setTextureName(modid + ":" + "ADAH"); + plateD = new ItemDreadArmor(AbyssalCraftAPI.dreadedAbyssalniteArmor, 5, 1).setUnlocalizedName("ADAC").setTextureName(modid + ":" + "ADAC"); + legsD = new ItemDreadArmor(AbyssalCraftAPI.dreadedAbyssalniteArmor, 5, 2).setUnlocalizedName("ADAP").setTextureName(modid + ":" + "ADAP"); + Corboots = new ItemCoraliumArmor(AbyssalCraftAPI.refinedCoraliumArmor, 5, 3).setUnlocalizedName("ACB").setTextureName(modid + ":" + "ACB"); + Corhelmet = new ItemCoraliumArmor(AbyssalCraftAPI.refinedCoraliumArmor, 5, 0).setUnlocalizedName("ACH").setTextureName(modid + ":" + "ACH"); + Corplate = new ItemCoraliumArmor(AbyssalCraftAPI.refinedCoraliumArmor, 5, 1).setUnlocalizedName("ACC").setTextureName(modid + ":" + "ACC"); + Corlegs = new ItemCoraliumArmor(AbyssalCraftAPI.refinedCoraliumArmor, 5, 2).setUnlocalizedName("ACP").setTextureName(modid + ":" + "ACP"); + CorbootsP = new ItemCoraliumPArmor(AbyssalCraftAPI.platedCoraliumArmor, 5, 3).setUnlocalizedName("ACBP").setTextureName(modid + ":" + "ACBP"); + CorhelmetP = new ItemCoraliumPArmor(AbyssalCraftAPI.platedCoraliumArmor, 5, 0).setUnlocalizedName("ACHP").setTextureName(modid + ":" + "ACHP"); + CorplateP = new ItemCoraliumPArmor(AbyssalCraftAPI.platedCoraliumArmor, 5, 1).setUnlocalizedName("ACCP").setTextureName(modid + ":" + "ACCP"); + CorlegsP = new ItemCoraliumPArmor(AbyssalCraftAPI.platedCoraliumArmor, 5, 2).setUnlocalizedName("ACPP").setTextureName(modid + ":" + "ACPP"); + Depthsboots = new ItemDepthsArmor(AbyssalCraftAPI.depthsArmor, 5, 3).setUnlocalizedName("ADB").setTextureName(modid + ":" + "ADB"); + Depthshelmet = new ItemDepthsArmor(AbyssalCraftAPI.depthsArmor, 5, 0).setUnlocalizedName("ADH").setTextureName(modid + ":" + "ADH"); + Depthsplate = new ItemDepthsArmor(AbyssalCraftAPI.depthsArmor, 5, 1).setUnlocalizedName("ADC").setTextureName(modid + ":" + "ADC"); + Depthslegs = new ItemDepthsArmor(AbyssalCraftAPI.depthsArmor, 5, 2).setUnlocalizedName("ADP").setTextureName(modid + ":" + "ADP"); + dreadiumboots = new ItemDreadiumArmor(AbyssalCraftAPI.dreadiumArmor, 5, 3).setUnlocalizedName("ADDB").setTextureName(modid + ":" + "ADDB"); + dreadiumhelmet = new ItemDreadiumArmor(AbyssalCraftAPI.dreadiumArmor, 5, 0).setUnlocalizedName("ADDH").setTextureName(modid + ":" + "ADDH"); + dreadiumplate = new ItemDreadiumArmor(AbyssalCraftAPI.dreadiumArmor, 5, 1).setUnlocalizedName("ADDC").setTextureName(modid + ":" + "ADDC"); + dreadiumlegs = new ItemDreadiumArmor(AbyssalCraftAPI.dreadiumArmor, 5, 2).setUnlocalizedName("ADDP").setTextureName(modid + ":" + "ADDP"); + dreadiumSboots = new ItemDreadiumSamuraiArmor(AbyssalCraftAPI.dreadiumSamuraiArmor, 5, 3).setUnlocalizedName("ADSB").setTextureName(modid + ":" + "ADSB"); + dreadiumShelmet = new ItemDreadiumSamuraiArmor(AbyssalCraftAPI.dreadiumSamuraiArmor, 5, 0).setUnlocalizedName("ADSH").setTextureName(modid + ":" + "ADSH"); + dreadiumSplate = new ItemDreadiumSamuraiArmor(AbyssalCraftAPI.dreadiumSamuraiArmor, 5, 1).setUnlocalizedName("ADSC").setTextureName(modid + ":" + "ADSC"); + dreadiumSlegs = new ItemDreadiumSamuraiArmor(AbyssalCraftAPI.dreadiumSamuraiArmor, 5, 2).setUnlocalizedName("ADSP").setTextureName(modid + ":" + "ADSP"); + ethBoots = new ItemEthaxiumArmor(AbyssalCraftAPI.ethaxiumArmor, 5, 3).setUnlocalizedName("AEB").setTextureName(modid + ":" + "AEB"); + ethHelmet = new ItemEthaxiumArmor(AbyssalCraftAPI.ethaxiumArmor, 5, 0).setUnlocalizedName("AEH").setTextureName(modid + ":" + "AEH"); + ethPlate = new ItemEthaxiumArmor(AbyssalCraftAPI.ethaxiumArmor, 5, 1).setUnlocalizedName("AEC").setTextureName(modid + ":" + "AEC"); + ethLegs = new ItemEthaxiumArmor(AbyssalCraftAPI.ethaxiumArmor, 5, 2).setUnlocalizedName("AEP").setTextureName(modid + ":" + "AEP"); //Upgrade kits CobbleU = new ItemUpgradeKit("Wood", "Cobblestone").setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("CobU").setTextureName(modid + ":" + "CobU"); @@ -571,13 +577,13 @@ public void preInit(FMLPreInitializationEvent event) { EthaxiumU = new ItemUpgradeKit("Dreadium", "Ethaxium").setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("EthU").setTextureName(modid + ":" + "EthU"); //Foodstuffs - ironp = new ItemACBasic("plate").setCreativeTab(AbyssalCraft.tabItems); + ironp = new ItemACBasic("plate"); MRE = new ItemPlatefood(255, 1F, false).setUnlocalizedName("MRE").setTextureName(modid + ":" + "MRE"); chickenp = new ItemPlatefood(12, 1.2F, false).setUnlocalizedName("ChiP").setTextureName(modid + ":" + "ChiP"); porkp = new ItemPlatefood(16, 1.6F, false).setUnlocalizedName("PorP").setTextureName(modid + ":" + "PorP"); beefp = new ItemPlatefood(6, 0.6F, false).setUnlocalizedName("BeeP").setTextureName(modid + ":" + "BeeP"); fishp = new ItemPlatefood(10, 1.2F, false).setUnlocalizedName("FisP").setTextureName(modid + ":" + "FisP"); - dirtyplate = new ItemACBasic("dirtyplate").setCreativeTab(AbyssalCraft.tabItems); + dirtyplate = new ItemACBasic("dirtyplate"); friedegg = new ItemFriedegg(5, 0.6F, false).setCreativeTab(AbyssalCraft.tabFood).setUnlocalizedName("friedegg").setTextureName(modid + ":" + "friedegg"); eggp = new ItemPlatefood(10, 1.2F, false).setUnlocalizedName("eggp").setTextureName(modid + ":" + "eggp"); cloth = new ItemWashCloth().setCreativeTab(AbyssalCraft.tabItems).setUnlocalizedName("cloth").setTextureName(modid + ":" + "cloth"); @@ -597,26 +603,27 @@ public void preInit(FMLPreInitializationEvent event) { GameRegistry.registerTileEntity(TileEntityChagarothSpawner.class, "tileEntityChagarothSpawner"); GameRegistry.registerTileEntity(TileEntityChagarothFistSpawner.class, "tileEntityChagarothFistSpawner"); GameRegistry.registerTileEntity(TileEntityODB.class, "tileEntityODB"); + GameRegistry.registerTileEntity(TileEntityEngraver.class, "tileEntityEngraver"); Cplague = new PotionCplague(100, true, 0x00FFFF).setIconIndex(1, 0).setPotionName("potion.Cplague"); - CoreRegistry.addPotionRequirements(Cplague.id, "0 & 1 & !2 & 3 & 0+6"); + AbyssalCraftAPI.addPotionRequirements(Cplague.id, "0 & 1 & !2 & 3 & 0+6"); crystalCoralium.setPotionEffect("+0+1-2+3&4+4+13"); Dplague = new PotionDplague(101, true, 0xAD1313).setIconIndex(1, 0).setPotionName("potion.Dplague"); - CoreRegistry.addPotionRequirements(Dplague.id, "0 & 1 & 2 & 3 & 2+6"); - CoreRegistry.addPotionAmplifiers(Dplague.id, "5"); + AbyssalCraftAPI.addPotionRequirements(Dplague.id, "0 & 1 & 2 & 3 & 2+6"); + AbyssalCraftAPI.addPotionAmplifiers(Dplague.id, "5"); crystalDreadium.setPotionEffect("0+1+2+3+13&4-4"); antiMatter = new PotionAntimatter(102, true, 0xFFFFFF).setIconIndex(1, 0).setPotionName("potion.Antimatter"); - CoreRegistry.addPotionRequirements(antiMatter.id, "0 & 1 & 2 & !3 & 2+6"); + AbyssalCraftAPI.addPotionRequirements(antiMatter.id, "0 & 1 & 2 & !3 & 2+6"); antibucket.setPotionEffect("0+1+2-3+13&4-4"); crystalSulfur.setPotionEffect(PotionHelper.spiderEyeEffect); crystalOxygen.setPotionEffect(PotionHelper.field_151423_m); crystalHydrogen.setPotionEffect("-0-1+2+3&4-4+13"); crystalNitrogen.setPotionEffect("-0+1-2+3&4-4+13"); - coraliumE = new EnchantmentWeaponInfusion(150, 2, "coralium"); - dreadE = new EnchantmentWeaponInfusion(151, 2, "dread"); - lightPierce = new EnchantmentLightPierce(152); - // ironWall = new EnchantmentIronWall(153, 2); + coraliumE = new EnchantmentWeaponInfusion(AbyssalCraftAPI.enchId1, 2, "coralium"); + dreadE = new EnchantmentWeaponInfusion(AbyssalCraftAPI.enchId2, 2, "dread"); + lightPierce = new EnchantmentLightPierce(AbyssalCraftAPI.enchId3); + ironWall = new EnchantmentIronWall(AbyssalCraftAPI.enchId4, 2); //Block Register GameRegistry.registerBlock(Darkstone, "darkstone"); @@ -731,9 +738,11 @@ public void preInit(FMLPreInitializationEvent event) { GameRegistry.registerBlock(ethaxiumslab2, ItemBlockColorName.class, "ethaxiumbrickslab2"); GameRegistry.registerBlock(ethaxiumfence, ItemBlockColorName.class, "ethaxiumfence"); GameRegistry.registerBlock(ethaxiumblock, ItemBlockColorName.class, "ethaxiumblock"); - // GameRegistry.registerBlock(omotholstone, "omotholstone"); - // GameRegistry.registerBlock(omotholportal, "omotholportal"); - // GameRegistry.registerBlock(omotholfire, "omotholfire"); + GameRegistry.registerBlock(omotholstone, "omotholstone"); + GameRegistry.registerBlock(omotholportal, "omotholportal"); + GameRegistry.registerBlock(omotholfire, "omotholfire"); + GameRegistry.registerBlock(engraver, "engraver"); + GameRegistry.registerBlock(engraver_on, "engraver_on"); //Item Register GameRegistry.registerItem(devsword, "devsword"); @@ -908,6 +917,17 @@ public void preInit(FMLPreInitializationEvent event) { GameRegistry.registerItem(ethHoe, "ethaxiumhoe"); GameRegistry.registerItem(EthaxiumU, "ethaxiumu"); GameRegistry.registerItem(coin, "coin"); + GameRegistry.registerItem(cthulhuCoin, "cthulhucoin"); + // GameRegistry.registerItem(elderCoin, "eldercoin"); + // GameRegistry.registerItem(jzaharCoin, "jzaharcoin"); + GameRegistry.registerItem(engravingBlank, "engraving_blank"); + GameRegistry.registerItem(engravingCthulhu, "engraving_cthulhu"); + // GameRegistry.registerItem(engravingElder, "engraving_elder"); + // GameRegistry.registerItem(engravingJzahar, "engraving_jzahar"); + // GameRegistry.registerItem(shoggothFlesh, "shoggothflesh"); + // GameRegistry.registerItem(eldritchScale, "eldritchscale"); + // GameRegistry.registerItem(omotholFlesh, "omotholflesh"); + // GameRegistry.registerItem(shadowPlate, "shadowplate"); FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluidStack(CFluid.getName(), FluidContainerRegistry.BUCKET_VOLUME), new ItemStack(Cbucket), new ItemStack(Items.bucket)); BucketHandler.INSTANCE.buckets.put(Cwater, Cbucket); @@ -918,27 +938,27 @@ public void preInit(FMLPreInitializationEvent event) { //Biome if(dark1 == true){ BiomeDictionary.registerBiomeType(Darklands, Type.WASTELAND); - BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.Darklands, 10)); + BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.Darklands, darkWeight1)); } if(dark2 == true){ BiomeDictionary.registerBiomeType(DarklandsForest, Type.FOREST); - BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsForest, 10)); + BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsForest, darkWeight2)); } if(dark3 == true){ BiomeDictionary.registerBiomeType(DarklandsPlains, Type.PLAINS); - BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsPlains, 10)); + BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsPlains, darkWeight3)); } if(dark4 == true){ BiomeDictionary.registerBiomeType(DarklandsHills, Type.HILLS); - BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsHills, 10)); + BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsHills, darkWeight4)); } if(dark5 == true){ BiomeDictionary.registerBiomeType(DarklandsMountains, Type.MOUNTAIN); - BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsMountains, 10)); + BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.DarklandsMountains, darkWeight5)); } if(coralium1 == true){ BiomeDictionary.registerBiomeType(corswamp, Type.SWAMP); - BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.corswamp, 10)); + BiomeManager.warmBiomes.add(new BiomeEntry(AbyssalCraft.corswamp, coraliumWeight)); } if(coralium2 == true){ BiomeDictionary.registerBiomeType(corocean, Type.WATER); @@ -960,18 +980,15 @@ public void preInit(FMLPreInitializationEvent event) { BiomeManager.addSpawnBiome(AbyssalCraft.corocean); //Dimension - CoreRegistry.registerDimension("abyss", configDimId1, WorldProviderAbyss.class, true); - CoreRegistry.registerDimension("dreadlands", configDimId2, WorldProviderDreadlands.class, true); - // CoreRegistry.registerDimension("omothol", configDimId3, WorldProviderOmothol.class, true); - // CoreRegistry.registerDimension("darkrealm", configDimId4, WorldProviderDarkRealm.class, true); + registerDimension("abyss", configDimId1, WorldProviderAbyss.class, true); + registerDimension("dreadlands", configDimId2, WorldProviderDreadlands.class, true); + registerDimension("omothol", configDimId3, WorldProviderOmothol.class, true); + registerDimension("darkrealm", configDimId4, WorldProviderDarkRealm.class, true); //Mobs EntityRegistry.registerModEntity(EntityDepthsGhoul.class, "depthsghoul", 25, this, 80, 3, true); - EntityRegistry.addSpawn(EntityDepthsGhoul.class, 3, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { - BiomeGenBase.swampland, BiomeGenBase.ocean, BiomeGenBase.beach, - BiomeGenBase.river,AbyssalCraft.Darklands, AbyssalCraft.Wastelands, - AbyssalCraft.DarklandsForest, AbyssalCraft.DarklandsHills, - AbyssalCraft.DarklandsPlains}); + EntityRegistry.addSpawn(EntityDepthsGhoul.class, 10, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { + BiomeGenBase.swampland, BiomeGenBase.ocean, BiomeGenBase.beach, BiomeGenBase.river}); registerEntityEgg(EntityDepthsGhoul.class, 0x36A880, 0x012626); EntityRegistry.registerModEntity(EntityEvilpig.class, "evilpig", 26, this, 80, 3, true); @@ -983,12 +1000,9 @@ public void preInit(FMLPreInitializationEvent event) { registerEntityEgg(EntityEvilpig.class, 15771042, 14377823); EntityRegistry.registerModEntity(EntityAbyssalZombie.class, "abyssalzombie", 27, this, 80, 3, true); - EntityRegistry.addSpawn(EntityAbyssalZombie.class, 3, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { - BiomeGenBase.ocean, BiomeGenBase.beach, BiomeGenBase.river, - BiomeGenBase.jungle, BiomeGenBase.swampland, - BiomeGenBase.sky, AbyssalCraft.Darklands, AbyssalCraft.Wastelands, - AbyssalCraft.DarklandsForest, AbyssalCraft.DarklandsHills, - AbyssalCraft.DarklandsPlains}); + EntityRegistry.addSpawn(EntityAbyssalZombie.class, 10, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { + BiomeGenBase.ocean, BiomeGenBase.beach, BiomeGenBase.river, BiomeGenBase.jungle, + BiomeGenBase.swampland, BiomeGenBase.sky}); registerEntityEgg(EntityAbyssalZombie.class, 0x36A880, 0x052824); EntityRegistry.registerModEntity(EntityODBPrimed.class, "Primed ODB", 28, this, 80, 3, true); @@ -997,25 +1011,17 @@ public void preInit(FMLPreInitializationEvent event) { registerEntityEgg(EntityJzahar.class, 0x133133, 0x342122); EntityRegistry.registerModEntity(EntityAbygolem.class, "abygolem", 30, this, 80, 3, true); - EntityRegistry.addSpawn(EntityAbygolem.class, 5, 1, 5, EnumCreatureType.creature, new BiomeGenBase[] { - AbyssalCraft.AbyDreadlands}); registerEntityEgg(EntityAbygolem.class, 0x8A00E6, 0x6100A1); EntityRegistry.registerModEntity(EntityDreadgolem.class, "dreadgolem", 31, this, 80, 3, true); - EntityRegistry.addSpawn(EntityDreadgolem.class, 5, 1, 5, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.Dreadlands}); registerEntityEgg(EntityDreadgolem.class, 0x1E60000, 0xCC0000); EntityRegistry.registerModEntity(EntityDreadguard.class, "dreadguard", 32, this, 80, 3, true); - EntityRegistry.addSpawn(EntityDreadguard.class, 1, 1, 1, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.MountainDreadlands}); registerEntityEgg(EntityDreadguard.class, 0xE60000, 0xCC0000); EntityRegistry.registerModEntity(EntityPSDLTracker.class, "PowerstoneTracker", 33, this, 64, 10, true); EntityRegistry.registerModEntity(EntityDragonMinion.class, "dragonminion", 34, this, 80, 3, true); - EntityRegistry.addSpawn(EntityDragonMinion.class, 1, 0, 1, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.Wastelands}); registerEntityEgg(EntityDragonMinion.class, 0x433434, 0x344344); EntityRegistry.registerModEntity(EntityDragonBoss.class, "dragonboss", 35, this, 80, 3, true); @@ -1024,23 +1030,15 @@ public void preInit(FMLPreInitializationEvent event) { EntityRegistry.registerModEntity(EntityODBcPrimed.class, "Primed ODB Core", 36, this, 80, 3, true); EntityRegistry.registerModEntity(EntityShadowCreature.class, "shadowcreature", 37, this, 80, 3, true); - EntityRegistry.addSpawn(EntityShadowCreature.class, 3, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.DarklandsMountains}); registerEntityEgg(EntityShadowCreature.class, 0, 0xFFFFFF); EntityRegistry.registerModEntity(EntityShadowMonster.class, "shadowmonster", 38, this, 80, 3, true); - EntityRegistry.addSpawn(EntityShadowMonster.class, 2, 1, 2, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.DarklandsMountains}); registerEntityEgg(EntityShadowMonster.class, 0, 0xFFFFFF); EntityRegistry.registerModEntity(EntityDreadling.class, "dreadling", 39, this, 80, 3, true); - EntityRegistry.addSpawn(EntityDreadling.class, 3, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.Dreadlands}); registerEntityEgg(EntityDreadling.class, 0xE60000, 0xCC0000); EntityRegistry.registerModEntity(EntityDreadSpawn.class, "dreadspawn", 40, this, 80, 3, true); - EntityRegistry.addSpawn(EntityDreadSpawn.class, 3, 1, 3, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.ForestDreadlands}); registerEntityEgg(EntityDreadSpawn.class, 0xE60000, 0xCC0000); EntityRegistry.registerModEntity(EntityDemonPig.class, "demonpig", 41, this, 80, 3, true); @@ -1049,8 +1047,6 @@ public void preInit(FMLPreInitializationEvent event) { registerEntityEgg(EntityDemonPig.class, 15771042, 14377823); EntityRegistry.registerModEntity(EntitySkeletonGoliath.class, "gskeleton", 42, this, 80, 3, true); - EntityRegistry.addSpawn(EntitySkeletonGoliath.class, 1, 1, 1, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.Wastelands}); registerEntityEgg(EntitySkeletonGoliath.class, 0xD6D6C9, 0xC6C7AD); EntityRegistry.registerModEntity(EntityChagarothSpawn.class, "chagarothspawn", 43, this, 80, 3, true); @@ -1063,8 +1059,6 @@ public void preInit(FMLPreInitializationEvent event) { registerEntityEgg(EntityChagaroth.class, 0xE60000, 0xCC0000); EntityRegistry.registerModEntity(EntityShadowBeast.class, "shadowbeast", 46, this, 80, 3, true); - EntityRegistry.addSpawn(EntityShadowBeast.class, 1, 1, 1, EnumCreatureType.monster, new BiomeGenBase[] { - AbyssalCraft.DarklandsMountains}); registerEntityEgg(EntityShadowBeast.class, 0, 0xFFFFFF); EntityRegistry.registerModEntity(EntitySacthoth.class, "shadowboss", 47, this, 80, 3, true); @@ -1160,8 +1154,12 @@ public void Init(FMLInitializationEvent event) { secret1 = new Achievement("achievement.secret1", "secret1", 9, -9, AbyssalCraft.devsword, (Achievement)null).initIndependentStat().registerStat(); summonChagaroth = new Achievement("achievement.summonChagaroth", "summonChagaroth", 3, 12, AbyssalCraft.dreadaltarbottom, AbyssalCraft.enterdreadlands).registerStat(); killChagaroth = new Achievement("achievement.killChagaroth", "killChagaroth", 6, 12, AbyssalCraft.dreadKey, AbyssalCraft.summonChagaroth).setSpecial().registerStat(); + enterOmothol = new Achievement("achievement.enterOmothol", "enterOmothol", 6, 15, AbyssalCraft.omotholstone, AbyssalCraft.killChagaroth).setSpecial().registerStat(); + enterDarkRealm = new Achievement("achievement.darkRealm", "darkRealm", 3, 15, AbyssalCraft.Darkstone, (Achievement)null).registerStat(); - AchievementPage.registerAchievementPage(new AchievementPage("AbyssalCraft", new Achievement[]{mineDS, mineAby, killghoul, enterabyss, killdragon, summonAsorah, killAsorah, enterdreadlands, killdreadguard, ghoulhead, killPete, killWilson, killOrange, petehead, wilsonhead, orangehead, mineCorgem, mineCor, findPSDL, GK1, GK2, GK3, Jzhstaff, secret1, summonChagaroth, killChagaroth})); + AchievementPage.registerAchievementPage(new AchievementPage("AbyssalCraft", new Achievement[]{mineDS, mineAby, killghoul, enterabyss, killdragon, summonAsorah, killAsorah, + enterdreadlands, killdreadguard, ghoulhead, killPete, killWilson, killOrange, petehead, wilsonhead, orangehead, mineCorgem, mineCor, findPSDL, GK1, GK2, GK3, Jzhstaff, + secret1, summonChagaroth, killChagaroth, enterOmothol, enterDarkRealm})); proxy.init(); FMLCommonHandler.instance().bus().register(instance); @@ -1171,10 +1169,29 @@ public void Init(FMLInitializationEvent event) { StructureDreadlandsMinePieces.registerStructurePieces(); GameRegistry.registerWorldGenerator(new AbyssalCraftWorldGenerator(), 0); GameRegistry.registerFuelHandler(new FurnaceFuelHandler()); + registerVanillaSalvage(); AbyssalCrafting.addRecipes(); proxy.registerRenderThings(); } + @EventHandler + public void postInit(FMLPostInitializationEvent event) { + + ACLogger.info("Post-initializing AbyssalCraft"); + proxy.postInit(); + if(Loader.isModLoaded("Thaumcraft")){ + ACLogger.info("Thaumcraft is present, initializing evil stuff."); + ACThaumcraftIntegration.init(); + } + ACLogger.info("AbyssalCraft loaded."); + } + + @SubscribeEvent + public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent eventArgs) { + if(eventArgs.modID.equals("abyssalcraft")) + syncConfig(); + } + public static void syncConfig(){ configDimId1 = cfg.get("dimensions", "The Abyssal Wasteland", 50, "The first dimension, full of undead monsters.").getInt(); @@ -1182,20 +1199,20 @@ public static void syncConfig(){ configDimId3 = cfg.get("dimensions", "Omothol", 52, "The third dimension, also known as \u00A7oThe Realm of J'zahar\u00A7r.").getInt(); configDimId4 = cfg.get("dimensions", "The Dark Realm", 53, "Hidden fourth dimension, reached by falling down from Omothol").getInt(); - configBiomeId1 = cfg.get("biomes", "Darklands", 100, "Dark biome that contains Abyssalnite").getInt(); - configBiomeId2 = cfg.get("biomes", "Abyssal Wasteland", 101, "Abyssal Wasteland biome, contains large quantities of Coralium").getInt(); - configBiomeId3 = cfg.get("biomes", "Dreadlands", 102, "Main Dreadlands biome, desolate.").getInt(); - configBiomeId4 = cfg.get("biomes", "Purified Dreadlands", 103, "Pre-Dreadlands biome, with larger quantities of pure Abyssalnite.").getInt(); - configBiomeId5 = cfg.get("biomes", "Dreadlands Forest", 104, "Forest taken over by the Dread Plague.").getInt(); - configBiomeId6 = cfg.get("biomes", "Dreadlands Mountains", 105, "Mountain equivalent to the Dreadlands biome.").getInt(); - configBiomeId7 = cfg.get("biomes", "Darklands Forest", 106, "Forest equivalent to the Darklands biome.").getInt(); - configBiomeId8 = cfg.get("biomes", "Darklands Plains", 107, "Plains equivalent to the Darklands biome.").getInt(); - configBiomeId9 = cfg.get("biomes", "Darklands Highland", 108, "Plateau version of the Darklands Plains biome.").getInt(); - configBiomeId10 = cfg.get("biomes", "Darklands Mountains", 109, "Mountain equivalent to the Darklands biome.").getInt(); - configBiomeId11 = cfg.get("biomes", "Coralium Infested Swamp", 110, "A swamp biome infested with Coralium.").getInt(); - configBiomeId12 = cfg.get("biomes", "Coralium Infested Ocean", 111, "A ocean biome infested with Coralium.").getInt(); - configBiomeId13 = cfg.get("biomes", "Omothol", 112, "Main biome in Omothol, the realm of J'zahar.").getInt(); - configBiomeId14 = cfg.get("biomes", "Dark Realm", 113, "Dark Realm biome, made out of Darkstone.").getInt(); + configBiomeId1 = cfg.get("biomes", "Darklands", 100, "Dark biome that contains Abyssalnite", 0, 255).getInt(); + configBiomeId2 = cfg.get("biomes", "Abyssal Wasteland", 101, "Abyssal Wasteland biome, contains large quantities of Coralium", 0, 255).getInt(); + configBiomeId3 = cfg.get("biomes", "Dreadlands", 102, "Main Dreadlands biome, desolate.", 0, 255).getInt(); + configBiomeId4 = cfg.get("biomes", "Purified Dreadlands", 103, "Pre-Dreadlands biome, with larger quantities of pure Abyssalnite.", 0, 255).getInt(); + configBiomeId5 = cfg.get("biomes", "Dreadlands Forest", 104, "Forest taken over by the Dread Plague.", 0, 255).getInt(); + configBiomeId6 = cfg.get("biomes", "Dreadlands Mountains", 105, "Mountain equivalent to the Dreadlands biome.", 0, 255).getInt(); + configBiomeId7 = cfg.get("biomes", "Darklands Forest", 106, "Forest equivalent to the Darklands biome.", 0, 255).getInt(); + configBiomeId8 = cfg.get("biomes", "Darklands Plains", 107, "Plains equivalent to the Darklands biome.", 0, 255).getInt(); + configBiomeId9 = cfg.get("biomes", "Darklands Highland", 108, "Plateau version of the Darklands Plains biome.", 0, 255).getInt(); + configBiomeId10 = cfg.get("biomes", "Darklands Mountains", 109, "Mountain equivalent to the Darklands biome.", 0, 255).getInt(); + configBiomeId11 = cfg.get("biomes", "Coralium Infested Swamp", 110, "A swamp biome infested with Coralium.", 0, 255).getInt(); + configBiomeId12 = cfg.get("biomes", "Coralium Infested Ocean", 111, "A ocean biome infested with Coralium.", 0, 255).getInt(); + configBiomeId13 = cfg.get("biomes", "Omothol", 112, "Main biome in Omothol, the realm of J'zahar.", 0, 255).getInt(); + configBiomeId14 = cfg.get("biomes", "Dark Realm", 113, "Dark Realm biome, made out of Darkstone.", 0, 255).getInt(); dark1 = cfg.get("biome_generation", "Darklands", true, "Set true for the Darklands biome to generate.").getBoolean(); dark2 = cfg.get("biome_generation", "Darklands Forest", true, "Set true for the Darklands Forest biome to generate.").getBoolean(); @@ -1218,6 +1235,21 @@ public static void syncConfig(){ breakLogic = cfg.get(Configuration.CATEGORY_GENERAL, "Liquid Coralium Physics", false, "Set true to allow the Liquid Coralium to break the laws of physics in terms of movement").getBoolean(); destroyOcean = cfg.get(Configuration.CATEGORY_GENERAL, "Oceanic Coralium Pollution", false, "Set true to allow the Liquid Coralium to spread across oceans. WARNING: The game can crash from this.").getBoolean(); + darkWeight1 = cfg.get("biome_weight", "Darklands", 10, "Biome weight for the Darklands biome, controls the chance of it generating").getInt(); + darkWeight2 = cfg.get("biome_weight", "Darklands Forest", 10, "Biome weight for the Darklands Forest biome, controls the chance of it generating").getInt(); + darkWeight3 = cfg.get("biome_weight", "Darklands Plains", 10, "Biome weight for the Darklands Plains biome, controls the chance of it generating").getInt(); + darkWeight4 = cfg.get("biome_weight", "Darklands Highland", 10, "Biome weight for the Darklands Highland biome, controls the chance of it generating").getInt(); + darkWeight5 = cfg.get("biome_weight", "Darklands Mountain", 10, "Biome weight for the Darklands Mountain biome, controls the chance of it generating").getInt(); + coraliumWeight = cfg.get("biome_weight", "Coralium Infested Swamp", 10, "Biome weight for the Coralium Infested Swamp biome, controls the chance of it generating").getInt(); + + AbyssalCraftAPI.enchId1 = cfg.get("enchantments", "Coralium Infusion", 230, "The Coralium enchantment.", 0, 255).getInt(); + AbyssalCraftAPI.enchId2 = cfg.get("enchantments", "Dread Infusion", 231, "The Dread enchantment.", 0, 255).getInt(); + AbyssalCraftAPI.enchId3 = cfg.get("enchantments", "Light Pierce", 232, "The Light Pierce enchantment.", 0, 255).getInt(); + AbyssalCraftAPI.enchId4 = cfg.get("enchantments", "Iron Wall", 233, "The Iron Wall enchantment.", 0, 255).getInt(); + + canRenderStarspawn = cfg.get("render", "RenderPlayer Override", true, "Whether or not to override the player model" + + "(set false for compatibility with other mods that alters the player model)").getBoolean(); + if(cfg.hasChanged()) cfg.save(); } @@ -1242,6 +1274,7 @@ public void addOreDictionaryStuff(){ OreDictionary.registerOre("plankWood", DLTplank); OreDictionary.registerOre("plankWood", dreadplanks); OreDictionary.registerOre("treeSapling", DLTSapling); + OreDictionary.registerOre("treeSapling", dreadsapling); OreDictionary.registerOre("treeLeaves", DLTLeaves); OreDictionary.registerOre("treeLeaves", dreadleaves); OreDictionary.registerOre("blockAbyssalnite", abyblock); @@ -1347,10 +1380,27 @@ public void addChestGenHooks(){ ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(AbyssalCraft.Coralium), 1, 5, 8)); } - @SubscribeEvent - public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent eventArgs) { - if(eventArgs.modID.equals("abyssalcraft")) - syncConfig(); + private void registerVanillaSalvage(){ + + SalvageHandler.INSTANCE.addBootsSalvage(Items.leather_boots, Items.leather); + SalvageHandler.INSTANCE.addHelmetSalvage(Items.leather_helmet, Items.leather); + SalvageHandler.INSTANCE.addChestplateSalvage(Items.leather_chestplate, Items.leather); + SalvageHandler.INSTANCE.addLeggingsSalvage(Items.leather_leggings, Items.leather); + + SalvageHandler.INSTANCE.addBootsSalvage(Items.iron_boots, Items.iron_ingot); + SalvageHandler.INSTANCE.addHelmetSalvage(Items.iron_helmet, Items.iron_ingot); + SalvageHandler.INSTANCE.addChestplateSalvage(Items.iron_chestplate, Items.iron_ingot); + SalvageHandler.INSTANCE.addLeggingsSalvage(Items.iron_leggings, Items.iron_ingot); + + SalvageHandler.INSTANCE.addBootsSalvage(Items.golden_boots, Items.gold_ingot); + SalvageHandler.INSTANCE.addHelmetSalvage(Items.golden_helmet, Items.gold_ingot); + SalvageHandler.INSTANCE.addChestplateSalvage(Items.golden_chestplate, Items.gold_ingot); + SalvageHandler.INSTANCE.addLeggingsSalvage(Items.golden_leggings, Items.gold_ingot); + + SalvageHandler.INSTANCE.addBootsSalvage(Items.diamond_boots, Items.diamond); + SalvageHandler.INSTANCE.addHelmetSalvage(Items.diamond_helmet, Items.diamond); + SalvageHandler.INSTANCE.addChestplateSalvage(Items.diamond_chestplate, Items.diamond); + SalvageHandler.INSTANCE.addLeggingsSalvage(Items.diamond_leggings, Items.diamond); } public static int getUniqueEntityId() { @@ -1368,12 +1418,9 @@ public static void registerEntityEgg(Class entity, int primary EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor)); } - @EventHandler - public void postInit(FMLPostInitializationEvent event) { - - ACLogger.info("Post-initializing AbyssalCraft"); - proxy.postInit(); - ACLogger.info("AbyssalCraft loaded."); + public static void registerDimension(String name, int id, Class provider, boolean keepLoaded){ + DimensionManager.registerProviderType(id, provider, keepLoaded); + DimensionManager.registerDimension(id, id); } @SubscribeEvent diff --git a/src/main/java/com/shinoow/abyssalcraft/api/AbyssalCraftAPI.java b/src/main/java/com/shinoow/abyssalcraft/api/AbyssalCraftAPI.java new file mode 100644 index 000000000..d1a71475e --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/AbyssalCraftAPI.java @@ -0,0 +1,765 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api; + +import java.lang.reflect.*; +import java.util.*; + +import net.minecraft.block.Block; +import net.minecraft.entity.*; +import net.minecraft.item.*; +import net.minecraft.item.Item.ToolMaterial; +import net.minecraft.item.ItemArmor.ArmorMaterial; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.potion.*; +import net.minecraft.util.DamageSource; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.util.EnumHelper; +import net.minecraftforge.oredict.OreDictionary; + +import com.google.common.collect.Lists; +import com.shinoow.abyssalcraft.api.item.ItemEngraving; +import com.shinoow.abyssalcraft.api.recipe.*; +import com.shinoow.abyssalcraft.common.util.ACLogger; + +import cpw.mods.fml.common.IFuelHandler; +import cpw.mods.fml.common.registry.*; + +/** + * Main API class for AbyssalCraft, has child classes for most features. + * + * @author shinoow + * + */ +public class AbyssalCraftAPI { + + /** + * Enchantment IDs, first one is the Coralium enchantment, second Dread enchantment, + * third the Light Pierce enchantment, and the fourth is the Iron Wall enchantment. + */ + public static int enchId1, enchId2, enchId3, enchId4; + + private static List crystallizerFuelHandlers = Lists.newArrayList(); + private static List transmutatorFuelHandlers = Lists.newArrayList(); + + private static HashMap potionRequirements = null; + private static HashMap potionAmplifiers = null; + + public static DamageSource coralium = new DamageSource("coralium").setDamageBypassesArmor().setMagicDamage(); + public static DamageSource dread = new DamageSource("dread").setDamageBypassesArmor().setMagicDamage(); + public static DamageSource antimatter = new DamageSource("antimatter").setDamageBypassesArmor().setMagicDamage(); + + /** + * {@link EnumCreatureAttribute} used for the Shadow mobs + */ + public static EnumCreatureAttribute SHADOW = EnumHelper.addCreatureAttribute("SHADOW"); + + public static ArmorMaterial abyssalniteArmor = EnumHelper.addArmorMaterial("Abyssalnite", 35, new int[]{3, 8, 6, 3}, 13); + public static ArmorMaterial coraliumInfusedAbyssalniteArmor = EnumHelper.addArmorMaterial("AbyssalniteC", 36, new int[]{3, 8, 6, 3}, 30); + public static ArmorMaterial dreadedAbyssalniteArmor = EnumHelper.addArmorMaterial("Dread", 36, new int[]{3, 8, 6, 3}, 15); + public static ArmorMaterial refinedCoraliumArmor = EnumHelper.addArmorMaterial("Coralium", 37, new int[]{3, 8, 6, 3}, 14); + public static ArmorMaterial platedCoraliumArmor = EnumHelper.addArmorMaterial("CoraliumP", 55, new int[]{4, 9, 7, 4}, 14); + public static ArmorMaterial depthsArmor = EnumHelper.addArmorMaterial("Depths", 33, new int[]{3, 8, 6, 3}, 25); + public static ArmorMaterial dreadiumArmor = EnumHelper.addArmorMaterial("Dreadium", 40, new int[]{3, 8, 6, 3}, 15); + public static ArmorMaterial dreadiumSamuraiArmor = EnumHelper.addArmorMaterial("DreadiumS", 45, new int[]{3, 8, 6, 3}, 20); + public static ArmorMaterial ethaxiumArmor = EnumHelper.addArmorMaterial("Ethaxium", 50, new int[]{3, 8, 6, 3}, 25); + + public static ToolMaterial darkstoneTool = EnumHelper.addToolMaterial("DARKSTONE", 1, 180, 5.0F, 1, 5); + public static ToolMaterial abyssalniteTool = EnumHelper.addToolMaterial("ABYSSALNITE", 4, 1261, 13.0F, 4, 13); + public static ToolMaterial refinedCoraliumTool = EnumHelper.addToolMaterial("CORALIUM", 5, 2000, 14.0F, 5, 14); + public static ToolMaterial dreadiumTool = EnumHelper.addToolMaterial("DREADIUM", 6, 3000, 15.0F, 6, 15); + public static ToolMaterial coraliumInfusedAbyssalniteTool = EnumHelper.addToolMaterial("ABYSSALNITE_C", 8, 8000, 20.0F, 8, 30); + public static ToolMaterial ethaxiumTool = EnumHelper.addToolMaterial("ETHAXIUM", 8, 4000, 16.0F, 8, 20); + + /** + * Initializes the reflection required for the Potion code, ignore it + * @param par1 Whether Reika's DragonAPI is present, will skip some reflection if it is. + */ + @SuppressWarnings("unchecked") + public static void initPotionReflection(boolean par1){ + if(!par1){ + Potion[] potionTypes = null; + for (Field f : Potion.class.getDeclaredFields()) { + f.setAccessible(true); + try { + if (f.getName().equals("potionTypes") || f.getName().equals("field_76425_a")) { + Field modfield = Field.class.getDeclaredField("modifiers"); + modfield.setAccessible(true); + modfield.setInt(f, f.getModifiers() & ~Modifier.FINAL); + + potionTypes = (Potion[])f.get(null); + final Potion[] newPotionTypes = new Potion[256]; + System.arraycopy(potionTypes, 0, newPotionTypes, 0, potionTypes.length); + f.set(null, newPotionTypes); + } + } + catch (Exception e) { + System.err.println("Whoops, something screwed up here, please report this to shinoow:"); + System.err.println(e); + } + } + } else + ACLogger.info("DragonAPI is present, skipping Potion array extension."); + for(Field f : PotionHelper.class.getDeclaredFields()) + try { + if(f.getName().equals("potionRequirements") || f.getName().equals("field_77927_l")){ + f.setAccessible(true); + try { + potionRequirements = (HashMap)f.get(null); + } catch (IllegalArgumentException e) { + System.err.println("Whoops, something screwed up here, please report this to shinoow:"); + e.printStackTrace(); + } catch (IllegalAccessException e) { + System.err.println("Whoops, something screwed up here, please report this to shinoow:"); + e.printStackTrace(); + } + } + if(f.getName().equals("potionAmplifiers") || f.getName().equals("field_77928_m")){ + f.setAccessible(true); + try { + potionAmplifiers = (HashMap)f.get(null); + } catch (IllegalArgumentException e) { + System.err.println("Whoops, something screwed up here, please report this to shinoow:"); + e.printStackTrace(); + } catch (IllegalAccessException e) { + System.err.println("Whoops, something screwed up here, please report this to shinoow:"); + e.printStackTrace(); + } + } + } catch (SecurityException e) { + System.err.println("Whoops, something screwed up here, please report this to shinoow:"); + e.printStackTrace(); + } + } + + /** + * Adds a bit sequence used to calculate the status on a potion. + * This description probably hardly makes any sense, deal with it. + * @param id The potion id + * @param requirements A bit sequence + */ + public static void addPotionRequirements(int id, String requirements){ + potionRequirements.put(Integer.valueOf(id), requirements); + } + + /** + * Adds an amplifier to a potion. + * This description probably hardly makes any sense, deal with it. + * @param id The potion id + * @param amplifier The potion amplifier value (usually 5) + */ + public static void addPotionAmplifiers(int id, String amplifier){ + potionAmplifiers.put(Integer.valueOf(id), amplifier); + } + + /** + * Basic Crystallization + * @param input The block to crystallize + * @param output1 The first crystal output + * @param output2 The second crystal output + * @param xp Amount of exp given + */ + public static void addCrystallization(Block input, ItemStack output1, ItemStack output2, float xp){ + CrystallizerRecipes.crystallization().crystallize(input, output1, output2, xp); + } + + /** + * Basic Crystallization + * @param input The item to crystallize + * @param output1 The first crystal output + * @param output2 The second crystal output + * @param xp Amount of exp given + */ + public static void addCrystallization(Item input, ItemStack output1, ItemStack output2, float xp){ + CrystallizerRecipes.crystallization().crystallize(input, output1, output2, xp); + } + + /** + * Basic Crystallization + * @param input The itemstack to crystallize + * @param output1 The first crystal output + * @param output2 The second crystal output + * @param xp Amount of exp given + */ + public static void addCrystallization(ItemStack input, ItemStack output1, ItemStack output2, float xp){ + CrystallizerRecipes.crystallization().crystallize(input, output1, output2, xp); + } + + /** + * Single-output Crystallization + * @param input The block to crystallize + * @param output The crystal output + * @param xp Amount of exp given + */ + public static void addSingleCrystallization(Block input, ItemStack output, float xp){ + addCrystallization(input, output, null, xp); + } + + /** + * Single-output Crystallization + * @param input The item to crystallize + * @param output The crystal output + * @param xp Amount of exp given + */ + public static void addSingleCrystallization(Item input, ItemStack output, float xp){ + addCrystallization(input, output, null, xp); + } + + /** + * Single-output Crystallization + * @param input The itemstack to crystallize + * @param output The crystal output + * @param xp Amount of exp given + */ + public static void addSingleCrystallization(ItemStack input, ItemStack output, float xp){ + addCrystallization(input, output, null, xp); + } + + /** + * Basic Transmutation + * @param input The block to transmutate + * @param output The transmutated output + * @param xp Amount of exp given + */ + public static void addTransmutation(Block input, ItemStack output, float xp){ + TransmutatorRecipes.transmutation().transmutate(input, output, xp); + } + + /** + * Basic Transmutation + * @param input The item to transmutate + * @param output The transmutated output + * @param xp Amount of exp given + */ + public static void addTransmutation(Item input, ItemStack output, float xp){ + TransmutatorRecipes.transmutation().transmutate(input, output, xp); + } + + /** + * Basic Transmutation + * @param input The itemstack to transmutate + * @param output The transmutated output + * @param xp Amount of exp given + */ + public static void addTransmutation(ItemStack input, ItemStack output, float xp){ + TransmutatorRecipes.transmutation().transmutate(input, output, xp); + } + + /** + * Smelting through the OreDictionary + * @param input The ore input + * @param output The ore output + * @param xp Amount of exp given + */ + public static void addOreSmelting(String input, String output, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output).isEmpty()) + while(inputIter.hasNext()) + FurnaceRecipes.smelting().func_151394_a(inputIter.next(), OreDictionary.getOres(output).iterator().next(), xp); + } + + /** + * OreDictionary specific Crystallization + * @param input The ore input + * @param output1 The first ore output + * @param output2 The second ore output + * @param xp Amount of exp given + */ + public static void addCrystallization(String input, String output1, String output2, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output1).isEmpty() && !OreDictionary.getOres(output2).isEmpty()) + while(inputIter.hasNext()) + addCrystallization(inputIter.next(), OreDictionary.getOres(output1).iterator().next(), OreDictionary.getOres(output2).iterator().next(), xp); + } + + /** + * OreDictionary specific Crystallization + * @param input The ore input + * @param output1 The first ore output + * @param out1 Quantity of the first output + * @param output2 The second ore output + * @param out2 Quantity of the second output + * @param xp Amount of exp given + */ + public static void addCrystallization(String input, String output1, int out1, String output2, int out2, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output1).isEmpty() && !OreDictionary.getOres(output2).isEmpty()) + while(inputIter.hasNext()) + addCrystallization(inputIter.next(), new ItemStack(OreDictionary.getOres(output1).iterator().next().getItem(), out1), new ItemStack(OreDictionary.getOres(output2).iterator().next().getItem(), out2), xp); + } + + /** + * OreDictionary specific single-output Crystallization + * @param input The ore input + * @param output The ore output + * @param xp Amount of exp given + */ + public static void addSingleCrystallization(String input, String output, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output).isEmpty()) + while(inputIter.hasNext()) + addSingleCrystallization(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem()), xp); + } + + /** + * OreDictionary specific single-output Crystallization + * @param input The ore input + * @param output The ore output + * @param out The output quantity + * @param xp Amount of exp given + */ + public static void addSingleCrystallization(String input, String output, int out, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output).isEmpty()) + while(inputIter.hasNext()) + addSingleCrystallization(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem(), out), xp); + } + + /** + * OreDictionary specific Transmutation + * @param input The ore input + * @param output The ore output + * @param xp Amount of exp given + */ + public static void addTransmutation(String input, String output, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output).isEmpty()) + while(inputIter.hasNext()) + addTransmutation(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem()), xp); + } + + /** + * OreDictionary specific Transmutation + * @param input The ore input + * @param output The ore output + * @param out The output quantity + * @param xp Amount of exp given + */ + public static void addTransmutation(String input, String output, int out, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output).isEmpty()) + while(inputIter.hasNext()) + addTransmutation(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem(), out), xp); + } + + /** + * OreDictionary specific Transmutation + * @param input The ore input + * @param output The ore output + * @param out The output quantity + * @param meta The output metadata + * @param xp Amount of exp given + */ + public static void addTransmutation(String input, String output, int out, int meta, float xp){ + Iterator inputIter = OreDictionary.getOres(input).iterator(); + if(!OreDictionary.getOres(output).isEmpty()) + while(inputIter.hasNext()) + addTransmutation(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem(), out, meta), xp); + } + + /** + * Basic Engraving + * @param input The ItemStack to engrave + * @param output The ItemStack output + * @param engraving The engraving template (must be an {@link ItemEngraving}) + * @param xp Amount of exp given + */ + public static void addEngraving(ItemStack input, ItemStack output, Item engraving, float xp){ + try{ + EngraverRecipes.engraving().engrave(input, output, (ItemEngraving)engraving, xp); + } catch(ClassCastException e){ + System.err.println("You're doing it wrong!"); + e.printStackTrace(); + } + } + + /** + * Basic Engraving + * @param input The Item to engrave + * @param output The ItemStack output + * @param engraving The engraving template (must be an {@link ItemEngraving}) + * @param xp Amount of exp given + */ + public static void addEngraving(Item input, ItemStack output, Item engraving, float xp){ + try{ + EngraverRecipes.engraving().engrave(input, output, (ItemEngraving)engraving, xp); + } catch(ClassCastException e){ + System.err.println("You're doing it wrong!"); + e.printStackTrace(); + } + } + + /** + * Fuel types, also has support for the vanilla furnace. + * @author shinoow + * + */ + public enum FuelType{ + CRYSTALLIZER, TRANSMUTATOR, FURNACE + } + + /** + * Registers a fuel handler for an AbyssalCraft fuel type + * @param handler The file that implements {@link IFuelHandler} + * @param type The fuel type + */ + public static void registerFuelHandler(IFuelHandler handler, FuelType type){ + switch(type){ + case CRYSTALLIZER: + crystallizerFuelHandlers.add(handler); + break; + case TRANSMUTATOR: + transmutatorFuelHandlers.add(handler); + break; + case FURNACE: + GameRegistry.registerFuelHandler(handler); + } + } + + /** + * Gets the fuel value from an ItemStack, depending on the fuel type + * @param itemStack The ItemStack getting checked + * @param type The fuel type + * @return The fuel value for the specified machine + */ + public static int getFuelValue(ItemStack itemStack, FuelType type){ + int fuelValue = 0; + switch(type){ + case CRYSTALLIZER: + for (IFuelHandler handler : crystallizerFuelHandlers) + fuelValue = Math.max(fuelValue, handler.getBurnTime(itemStack)); + break; + case TRANSMUTATOR: + for (IFuelHandler handler : transmutatorFuelHandlers) + fuelValue = Math.max(fuelValue, handler.getBurnTime(itemStack)); + break; + case FURNACE: + GameRegistry.getFuelValue(itemStack); + } + return fuelValue; + } + + /** + * Adds biomes for a Depths Ghoul to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addDepthsGhoulSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[0], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Evil Pig to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addEvilPigSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[1], weightedProb, min, max, EnumCreatureType.creature, biomes); + } + + /** + * Adds biomes for a Abyssal Zombie to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addAbyssalZombieSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[2], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Abyssalnite Golem to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addAbyssalniteGolemSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[4], weightedProb, min, max, EnumCreatureType.creature, biomes); + } + + /** + * Adds biomes for a Dreaded Abyssalnite Golem to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addDreadedAbyssalniteGolemSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[5], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Dreadguard to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addDreadguardSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[6], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Spectral Dragon to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addSpectralDragonSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[7], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Shadow Creature to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addShadowCreatureSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[9], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Shadow Monster to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addShadowMonsterSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[10], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Dreadling to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addDreadlingSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[11], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Dread Spawn to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addDreadSpawnSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[12], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Demon Pig to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addDemonPigSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[13], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Skeleton Goliath to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addSkeletonGoliathSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[14], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Spawn of Cha'garoth to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addSpawnofChagarothSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[15], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Fist of Cha'garoth to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addFistofChagarothSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[16], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Shadow Beast to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addShadowBeastSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[18], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Lesser Shoggoth to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addLesserShoggothSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[31], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Shadow Titan to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addShadowTitanSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[32], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Omothol Warden to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addOmotholWardenSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[33], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Minion of The Gatekeeper to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addGatekeeperMinionSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[34], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Omothol Ghoul to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addOmotholGhoulSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[35], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Adds biomes for a Remnant to spawn in + * @param weightedProb The chance of this mob spawning + * @param min Min mobs to spawn + * @param max Max mobs to spawn + * @param biomes Biomes where the mob will spawn + */ + public static void addRemnantSpawning(int weightedProb, int min, int max, BiomeGenBase[] biomes){ + EntityRegistry.addSpawn(ACEntities.mobNames[36], weightedProb, min, max, EnumCreatureType.monster, biomes); + } + + /** + * Contains the names of all mobs added in AbyssalCraft. + * Use the methods in the main API class to make them spawn in your biome(s). + * + * @author shinoow + * + */ + public static class ACEntities { + + private static String[] mobNames = {"depthsghoul", "evilpig", "abyssalzombie", "Jzahar", "abygolem", "dreadgolem", + "dreadguard", "dragonminion", "dragonboss", "shadowcreature", "shadowmonster", "dreadling", "dreadspawn", + "demonpig", "gskeleton", "chagarothspawn", "chagarothfist", "chagaroth", "shadowbeast", "shadowboss", + "antiabyssalzombie", "antibat", "antichicken", "anticow", "anticreeper", "antighoul", "antipig", "antiplayer", + "antiskeleton", "antispider", "antizombie", "lessershoggoth", "shadowtitan", "omotholwarden", "jzaharminion", + "omotholghoul", "remnant"}; + + public static String depths_ghoul = mobNames[0]; + public static String evil_pig = mobNames[1]; + public static String abyssal_zombie = mobNames[2]; + public static String jzahar = mobNames[3]; + public static String abyssalnite_golem = mobNames[4]; + public static String dreaded_abyssalnite_golem = mobNames[5]; + public static String dreadguard = mobNames[6]; + public static String spectral_dragon = mobNames[7]; + public static String asorah = mobNames[8]; + public static String shadow_creature = mobNames[9]; + public static String shadow_monster = mobNames[10]; + public static String dreadling = mobNames[11]; + public static String dread_spawn = mobNames[12]; + public static String demon_pig = mobNames[13]; + public static String skeleton_goliath = mobNames[14]; + public static String spawn_of_chagaroth = mobNames[15]; + public static String fist_of_chagaroth = mobNames[16]; + public static String chagaroth = mobNames[17]; + public static String shadow_beast = mobNames[18]; + public static String sacthoth = mobNames[19]; + public static String abyssal_anti_zombie = mobNames[20]; + public static String anti_bat = mobNames[21]; + public static String anti_chicken = mobNames[22]; + public static String anti_cow = mobNames[23]; + public static String anti_creeper = mobNames[24]; + public static String anti_ghoul = mobNames[25]; + public static String anti_pig = mobNames[26]; + public static String anti_player = mobNames[27]; + public static String anti_skeleton = mobNames[28]; + public static String anti_spider = mobNames[29]; + public static String anti_zombie = mobNames[30]; + public static String lesser_shoggoth = mobNames[31]; + public static String shadow_titan = mobNames[32]; + public static String omothol_warden = mobNames[33]; + public static String minion_of_the_gatekeeper = mobNames[34]; + public static String omothol_ghoul = mobNames[35]; + public static String remnant = mobNames[36]; + } + + /** + * Contains all potion effects added in AbyssalCraft + * + * @author shinoow + * + */ + public static class ACPotions { + + public static Potion Coralium_plague = Potion.potionTypes[100]; + public static Potion Dread_plague = Potion.potionTypes[101]; + public static Potion Antimatter = Potion.potionTypes[102]; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/addon/ACAddon.java b/src/main/java/com/shinoow/abyssalcraft/api/addon/ACAddon.java similarity index 56% rename from src/main/java/com/shinoow/abyssalcraft/core/api/addon/ACAddon.java rename to src/main/java/com/shinoow/abyssalcraft/api/addon/ACAddon.java index 2bd8f9c11..473c66db7 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/addon/ACAddon.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/addon/ACAddon.java @@ -1,19 +1,20 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.api.addon; +package com.shinoow.abyssalcraft.api.addon; import java.lang.annotation.*; diff --git a/src/main/java/com/shinoow/abyssalcraft/api/addon/IACAddon.java b/src/main/java/com/shinoow/abyssalcraft/api/addon/IACAddon.java new file mode 100644 index 000000000..bb2630602 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/addon/IACAddon.java @@ -0,0 +1,44 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api.addon; + +import com.shinoow.abyssalcraft.api.addon.ACAddon.AddonType; + +/** + * Coremod interface for AbyssalCraft add-ons, + * implement it in the dummy class + * @author shinoow + * + */ +public interface IACAddon { + + /** + * ModId, used for indexing multiple add-ons + */ + String getModId(); + + /** + * Name of the add-on (same as mod name) + */ + String getName(); + + /** + * What kind of add-on (can be multiple kinds) + */ + AddonType[] getType(); + +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/addon/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/addon/package-info.java new file mode 100644 index 000000000..99833ebb2 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/addon/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api.addon; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/block/ACBlocks.java b/src/main/java/com/shinoow/abyssalcraft/api/block/ACBlocks.java similarity index 92% rename from src/main/java/com/shinoow/abyssalcraft/core/api/block/ACBlocks.java rename to src/main/java/com/shinoow/abyssalcraft/api/block/ACBlocks.java index 4b70b9588..b1c0e96ca 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/block/ACBlocks.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/block/ACBlocks.java @@ -1,19 +1,20 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.api.block; +package com.shinoow.abyssalcraft.api.block; import net.minecraft.block.Block; import cpw.mods.fml.common.registry.GameRegistry; @@ -136,4 +137,6 @@ public class ACBlocks { public static Block block_of_ethaxium = GameRegistry.findBlock(modId, "ethaxiumblock"); public static Block omothol_gateway = GameRegistry.findBlock(modId, "omotholportal"); public static Block omothol_fire = GameRegistry.findBlock(modId, "omotholfire"); + public static Block engraver = GameRegistry.findBlock(modId, "engraver"); + public static Block engraver_active = GameRegistry.findBlock(modId, "engraver_on"); } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/block/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/block/package-info.java new file mode 100644 index 000000000..61a7f94d2 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/block/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api.block; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/entity/IAntiEntity.java b/src/main/java/com/shinoow/abyssalcraft/api/entity/IAntiEntity.java new file mode 100644 index 000000000..fc7a62b21 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/entity/IAntiEntity.java @@ -0,0 +1,26 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api.entity; + +/** + * Interface to define a entity that's immune to the Antimatter potion effect + * @author shinoow + * + */ +public interface IAntiEntity { + +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/entity/ICoraliumEntity.java b/src/main/java/com/shinoow/abyssalcraft/api/entity/ICoraliumEntity.java new file mode 100644 index 000000000..100a9c047 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/entity/ICoraliumEntity.java @@ -0,0 +1,26 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api.entity; + +/** + * Interface to define a entity that's immune to the Coralium Plague + * @author shinoow + * + */ +public interface ICoraliumEntity { + +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/entity/IDreadEntity.java b/src/main/java/com/shinoow/abyssalcraft/api/entity/IDreadEntity.java new file mode 100644 index 000000000..06dced1e1 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/entity/IDreadEntity.java @@ -0,0 +1,26 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api.entity; + +/** + * Interface to define a entity that's immune to the Dread Plague + * @author shinoow + * + */ +public interface IDreadEntity { + +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/entity/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/entity/package-info.java new file mode 100644 index 000000000..3a8e44c5b --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/entity/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api.entity; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/item/ACItems.java b/src/main/java/com/shinoow/abyssalcraft/api/item/ACItems.java similarity index 94% rename from src/main/java/com/shinoow/abyssalcraft/core/api/item/ACItems.java rename to src/main/java/com/shinoow/abyssalcraft/api/item/ACItems.java index 41e31ea92..52b751dd6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/item/ACItems.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/item/ACItems.java @@ -1,19 +1,20 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.api.item; +package com.shinoow.abyssalcraft.api.item; import net.minecraft.item.Item; import cpw.mods.fml.common.registry.GameRegistry; @@ -200,4 +201,8 @@ public class ACItems { public static Item ethaxium_upgrade_kit = GameRegistry.findItem(modId, "ethaxiumu"); /** Metadata item, has indexes 0, 1, 2, 3, 4, 5, 6 */ public static Item coin = GameRegistry.findItem(modId, "coin"); + /** Metadata item, has indexes 0, 1, 2, 3, 4, 5, 6 */ + public static Item cthulhu_engraved_coin = GameRegistry.findItem(modId, "cthulhucoin"); + public static Item blank_engraving = GameRegistry.findItem(modId, "engraving_blank"); + public static Item cthulhu_engraving = GameRegistry.findItem(modId, "engraving_cthulhu"); } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/item/ItemEngraving.java b/src/main/java/com/shinoow/abyssalcraft/api/item/ItemEngraving.java new file mode 100644 index 000000000..9294a81e2 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/item/ItemEngraving.java @@ -0,0 +1,48 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api.item; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +/** + * The "fuel" in Coin Engraving. Use this class if you want to make your own engravings. + * @author shinoow + * + */ +public class ItemEngraving extends Item { + + /** + * The "fuel" in Coin Engraving. Use this class if you want to make your own engravings. + * @param par1 The unlocalized name, will be prefixed by "engraving." + * @param par2 The item damage, used as a durability check + */ + public ItemEngraving(String par1, int par2){ + super(); + setUnlocalizedName("engraving." + par1); + setMaxDamage(par2); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void addInformation(ItemStack is, EntityPlayer player, List l, boolean B){ + l.add(getMaxDamage() - getDamage(is) +"/"+ is.getMaxDamage()); + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/item/ItemUpgradeKit.java b/src/main/java/com/shinoow/abyssalcraft/api/item/ItemUpgradeKit.java similarity index 61% rename from src/main/java/com/shinoow/abyssalcraft/core/api/item/ItemUpgradeKit.java rename to src/main/java/com/shinoow/abyssalcraft/api/item/ItemUpgradeKit.java index 116837029..fea82bfa2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/item/ItemUpgradeKit.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/item/ItemUpgradeKit.java @@ -1,27 +1,26 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.api.item; +package com.shinoow.abyssalcraft.api.item; import java.util.List; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.*; +import cpw.mods.fml.relauncher.*; /** * Use this class to create Upgrade Kits for tools/armor. diff --git a/src/main/java/com/shinoow/abyssalcraft/api/item/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/item/package-info.java new file mode 100644 index 000000000..cc6be5890 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/item/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api.item; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/api/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/package-info.java new file mode 100644 index 000000000..bc161daa9 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/util/recipes/CrystallizerRecipes.java b/src/main/java/com/shinoow/abyssalcraft/api/recipe/CrystallizerRecipes.java similarity index 70% rename from src/main/java/com/shinoow/abyssalcraft/core/util/recipes/CrystallizerRecipes.java rename to src/main/java/com/shinoow/abyssalcraft/api/recipe/CrystallizerRecipes.java index 42cbaac61..7e60d75b3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/util/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/recipe/CrystallizerRecipes.java @@ -1,28 +1,27 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.util.recipes; +package com.shinoow.abyssalcraft.api.recipe; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; +import net.minecraftforge.oredict.OreDictionary; public class CrystallizerRecipes { @@ -48,7 +47,7 @@ public void crystallize(Block input, ItemStack output1, ItemStack output2, float public void crystallize(Item input, ItemStack output1, ItemStack output2, float xp) { - crystallize(new ItemStack(input, 1, 32767), output1, output2, xp); + crystallize(new ItemStack(input, 1, OreDictionary.WILDCARD_VALUE), output1, output2, xp); } public void crystallize(ItemStack input, ItemStack output1, ItemStack output2, float xp) @@ -79,7 +78,7 @@ public ItemStack[] getCrystallizationResult(ItemStack par1ItemStack) private boolean areStacksEqual(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return par2ItemStack.getItem() == par1ItemStack.getItem() && (par2ItemStack.getItemDamage() == 32767 || par2ItemStack.getItemDamage() == par1ItemStack.getItemDamage()); + return par2ItemStack.getItem() == par1ItemStack.getItem() && (par2ItemStack.getItemDamage() == OreDictionary.WILDCARD_VALUE|| par2ItemStack.getItemDamage() == par1ItemStack.getItemDamage()); } public Map getCrystallizationList() diff --git a/src/main/java/com/shinoow/abyssalcraft/api/recipe/EngraverRecipes.java b/src/main/java/com/shinoow/abyssalcraft/api/recipe/EngraverRecipes.java new file mode 100644 index 000000000..be7ef5861 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/recipe/EngraverRecipes.java @@ -0,0 +1,152 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.api.recipe; + +import java.util.*; +import java.util.Map.Entry; + +import com.shinoow.abyssalcraft.api.item.ItemEngraving; + +import net.minecraft.item.*; +import net.minecraftforge.oredict.OreDictionary; + +public class EngraverRecipes { + + private static final EngraverRecipes engravingBase = new EngraverRecipes(); + /** The list of engraving results. */ + private Map engravingList = new HashMap(); + private Map experienceList = new HashMap(); + /** List of Engraving Templates with Associated Engraved Coins */ + private Map engravingOutputs = new HashMap(); + private Map engravingInputs = new HashMap(); + + public static EngraverRecipes engraving() + { + return engravingBase; + } + + private EngraverRecipes(){} + + public void engrave(Item input, ItemStack output, ItemEngraving engraving, float xp) + { + engrave(new ItemStack(input, 1, OreDictionary.WILDCARD_VALUE), output, engraving, xp); + } + + public void engrave(ItemStack input, ItemStack output, ItemEngraving engraving, float xp) + { + engravingList.put(input, output); + experienceList.put(output, Float.valueOf(xp)); + engravingOutputs.put(engraving, output); + engravingInputs.put(engraving, input); + } + + /** + * Returns the engraving result of an item. + */ + public ItemStack getEngravingResult(ItemStack par1ItemStack) + { + Iterator iterator = engravingList.entrySet().iterator(); + Entry entry; + + do + { + if (!iterator.hasNext()) + return null; + + entry = (Entry)iterator.next(); + } + while (!areStacksEqual(par1ItemStack, (ItemStack)entry.getKey())); + + return (ItemStack)entry.getValue(); + } + + /** + * Returns the engraving result of an item. + */ + public ItemStack getEngravingResult(ItemStack par1ItemStack, ItemEngraving par2Engraving) + { + ItemEngraving engraving = getEngravingTemplate(par1ItemStack, par2Engraving); + Iterator iterator = engravingInputs.entrySet().iterator(); + Entry entry; + + do + { + if (!iterator.hasNext()) + return null; + + entry = (Entry)iterator.next(); + } + while (!areEngravingsEqual(engraving, (ItemEngraving)entry.getKey())); + + return (ItemStack)entry.getValue(); + } + + public ItemEngraving getEngravingTemplate(ItemStack par1ItemStack, ItemEngraving engraving) + { + Iterator iterator = engravingInputs.entrySet().iterator(); + Entry entry; + + do + { + if (!iterator.hasNext()) + return null; + + entry = (Entry)iterator.next(); + } + while (!areStacksEqual(par1ItemStack, (ItemStack)entry.getValue())); + + return (ItemEngraving)entry.getKey() == engraving ? engraving : null; + } + + private boolean areStacksEqual(ItemStack par1ItemStack, ItemStack par2ItemStack) + { + return par2ItemStack.getItem() == par1ItemStack.getItem() && (par2ItemStack.getItemDamage() == OreDictionary.WILDCARD_VALUE || par2ItemStack.getItemDamage() == par1ItemStack.getItemDamage()); + } + + private boolean areEngravingsEqual(ItemEngraving par1, ItemEngraving par2){ + return par1 == par2; + } + + public Map getEngravingList() + { + return engravingList; + } + + public Map getEngravingTemplates(){ + return engravingOutputs; + } + + public float getExperience(ItemStack par1ItemStack) + { + float ret = par1ItemStack.getItem().getSmeltingExperience(par1ItemStack); + if (ret != -1) return ret; + + Iterator iterator = experienceList.entrySet().iterator(); + Entry entry; + + do + { + if (!iterator.hasNext()) + return 0.0F; + + entry = (Entry)iterator.next(); + } + while (!areStacksEqual(par1ItemStack, (ItemStack)entry.getKey())); + + return ((Float)entry.getValue()).floatValue(); + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/util/recipes/TransmutatorRecipes.java b/src/main/java/com/shinoow/abyssalcraft/api/recipe/TransmutatorRecipes.java similarity index 74% rename from src/main/java/com/shinoow/abyssalcraft/core/util/recipes/TransmutatorRecipes.java rename to src/main/java/com/shinoow/abyssalcraft/api/recipe/TransmutatorRecipes.java index b74b5f948..f723622af 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/util/recipes/TransmutatorRecipes.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/recipe/TransmutatorRecipes.java @@ -1,30 +1,28 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.util.recipes; +package com.shinoow.abyssalcraft.api.recipe; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.init.*; +import net.minecraft.item.*; +import net.minecraftforge.oredict.OreDictionary; public class TransmutatorRecipes { @@ -60,7 +58,7 @@ public void transmutate(Block input, ItemStack output, float xp) public void transmutate(Item input, ItemStack output, float xp) { - transmutate(new ItemStack(input, 1, 32767), output, xp); + transmutate(new ItemStack(input, 1, OreDictionary.WILDCARD_VALUE), output, xp); } public void transmutate(ItemStack input, ItemStack output, float xp) @@ -91,7 +89,7 @@ public ItemStack getTransmutationResult(ItemStack par1ItemStack) private boolean areStacksEqual(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return par2ItemStack.getItem() == par1ItemStack.getItem() && (par2ItemStack.getItemDamage() == 32767 || par2ItemStack.getItemDamage() == par1ItemStack.getItemDamage()); + return par2ItemStack.getItem() == par1ItemStack.getItem() && (par2ItemStack.getItemDamage() == OreDictionary.WILDCARD_VALUE || par2ItemStack.getItemDamage() == par1ItemStack.getItemDamage()); } public Map getTransmutationList() diff --git a/src/main/java/com/shinoow/abyssalcraft/api/recipe/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/recipe/package-info.java new file mode 100644 index 000000000..a25c191d0 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/recipe/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api.recipe; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/render/Block3DRender.java b/src/main/java/com/shinoow/abyssalcraft/api/render/Block3DRender.java similarity index 66% rename from src/main/java/com/shinoow/abyssalcraft/core/api/render/Block3DRender.java rename to src/main/java/com/shinoow/abyssalcraft/api/render/Block3DRender.java index adeb8e870..2dba06a4f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/render/Block3DRender.java +++ b/src/main/java/com/shinoow/abyssalcraft/api/render/Block3DRender.java @@ -1,19 +1,20 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.api.render; +package com.shinoow.abyssalcraft.api.render; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/shinoow/abyssalcraft/api/render/package-info.java b/src/main/java/com/shinoow/abyssalcraft/api/render/package-info.java new file mode 100644 index 000000000..b27992278 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/api/render/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.2.0",owner="abyssalcraft",provides="AbyssalCraftAPI") +package com.shinoow.abyssalcraft.api.render; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/client/ACParticleFX.java b/src/main/java/com/shinoow/abyssalcraft/client/ACParticleFX.java index c122922e2..2cc1aa5be 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/ACParticleFX.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/ACParticleFX.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/ClientProxy.java b/src/main/java/com/shinoow/abyssalcraft/client/ClientProxy.java index eb294dc9e..e6cab7db0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/ClientProxy.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/ClientProxy.java @@ -1,36 +1,39 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client; import net.minecraft.client.model.*; import net.minecraft.client.renderer.entity.RenderSnowball; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraftforge.client.MinecraftForgeClient; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.render.Block3DRender; import com.shinoow.abyssalcraft.client.model.entity.*; import com.shinoow.abyssalcraft.client.model.item.ModelDreadiumSamuraiArmor; import com.shinoow.abyssalcraft.client.render.block.*; import com.shinoow.abyssalcraft.client.render.entity.*; import com.shinoow.abyssalcraft.client.render.item.*; +import com.shinoow.abyssalcraft.client.render.player.RenderPlayerAC; import com.shinoow.abyssalcraft.common.CommonProxy; import com.shinoow.abyssalcraft.common.blocks.tile.*; import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.entity.anti.*; -import com.shinoow.abyssalcraft.core.api.render.Block3DRender; import cpw.mods.fml.client.registry.*; import cpw.mods.fml.relauncher.*; @@ -67,6 +70,8 @@ public void registerRenderThings() { RenderingRegistry.registerEntityRenderingHandler(EntityChagaroth.class, new RenderChagaroth()); RenderingRegistry.registerEntityRenderingHandler(EntityShadowBeast.class, new RenderShadowBeast()); RenderingRegistry.registerEntityRenderingHandler(EntitySacthoth.class, new RenderSacthoth()); + if(AbyssalCraft.canRenderStarspawn == true) + RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new RenderPlayerAC()); RenderingRegistry.registerEntityRenderingHandler(EntityAntiAbyssalZombie.class, new RenderAntiAbyssalZombie()); RenderingRegistry.registerEntityRenderingHandler(EntityAntiBat.class, new RenderAntiBat()); @@ -89,12 +94,15 @@ public void registerRenderThings() { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDreadAltarBottom.class, new TileEntityDreadAltarBottomRenderer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDreadAltarTop.class, new TileEntityDreadAltarTopRenderer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityODB.class, new TileEntityODBRenderer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEngraver.class, new TileEntityEngraverRenderer()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.PSDL), new Block3DRender(new TileEntityPSDLRenderer(), new TileEntityPSDL())); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.Altar), new Block3DRender(new TileEntityAltarRenderer(), new TileEntityAltar())); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.ODB), new Block3DRender(new TileEntityODBRenderer(), new TileEntityODB())); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.dreadaltarbottom), new Block3DRender(new TileEntityDreadAltarBottomRenderer(), new TileEntityDreadAltarBottom())); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.dreadaltartop), new Block3DRender(new TileEntityDreadAltarTopRenderer(), new TileEntityDreadAltarTop())); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.engraver), new Block3DRender(new TileEntityEngraverRenderer(), new TileEntityEngraver())); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(AbyssalCraft.engraver_on), new Block3DRender(new TileEntityEngraverRenderer(), new TileEntityEngraver())); MinecraftForgeClient.registerItemRenderer(AbyssalCraft.Staff, new RenderStaff()); MinecraftForgeClient.registerItemRenderer(AbyssalCraft.cudgel, new RenderCudgel()); MinecraftForgeClient.registerItemRenderer(AbyssalCraft.dreadhilt, new RenderHilt()); diff --git a/src/main/java/com/shinoow/abyssalcraft/client/config/ACConfigGUI.java b/src/main/java/com/shinoow/abyssalcraft/client/config/ACConfigGUI.java index 55086fa1e..e309ffa64 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/config/ACConfigGUI.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/config/ACConfigGUI.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.config; @@ -40,7 +41,10 @@ private static List getConfigElements(){ list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_biomes"), "ac_biomes", BiomeEntry.class)); list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_biomegen"), "ac_biomegen", BiomeGenerationEntry.class)); list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_biomespawn"), "ac_biomespawn", BiomeSpawnEntry.class)); + list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_biomeweight"), "ac_biomeweight", BiomeWeightEntry.class)); list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_general"), "ac_general", GeneralEntry.class)); + list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_enchantment"), "ac_enchantment", EnchantmentEntry.class)); + list.add(new DummyCategoryElement(StatCollector.translateToLocal("ac_render"), "ac_render", RenderEntry.class)); return list; } @@ -89,6 +93,17 @@ protected GuiScreen buildChildScreen(){ return new GuiConfig(owningScreen, new ConfigElement(AbyssalCraft.cfg.getCategory("biome_spawning")).getChildElements(), "abyssalcraft", "biome_spawning", true, true, StatCollector.translateToLocal("ac_biomespawn")); } } + public static class BiomeWeightEntry extends CategoryEntry{ + + public BiomeWeightEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement configElement) { + super(owningScreen, owningEntryList, configElement); + } + + @Override + protected GuiScreen buildChildScreen(){ + return new GuiConfig(owningScreen, new ConfigElement(AbyssalCraft.cfg.getCategory("biome_weight")).getChildElements(), "abyssalcraft", "biome_weight", true, true, StatCollector.translateToLocal("ac_biomeweight")); + } + } public static class GeneralEntry extends CategoryEntry{ public GeneralEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement configElement) { @@ -101,4 +116,28 @@ protected GuiScreen buildChildScreen(){ } } + public static class EnchantmentEntry extends CategoryEntry{ + + public EnchantmentEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement configElement) { + super(owningScreen, owningEntryList, configElement); + } + + @Override + protected GuiScreen buildChildScreen(){ + return new GuiConfig(owningScreen, new ConfigElement(AbyssalCraft.cfg.getCategory("enchantments")).getChildElements(), "abyssalcraft", "enchantments", true, true, StatCollector.translateToLocal("ac_enchantment")); + + } + } + public static class RenderEntry extends CategoryEntry{ + + public RenderEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement configElement) { + super(owningScreen, owningEntryList, configElement); + } + + @Override + protected GuiScreen buildChildScreen(){ + return new GuiConfig(owningScreen, new ConfigElement(AbyssalCraft.cfg.getCategory("render")).getChildElements(), "abyssalcraft", "render", true, true, StatCollector.translateToLocal("ac_render")); + + } + } } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/client/config/ACGuiFactory.java b/src/main/java/com/shinoow/abyssalcraft/client/config/ACGuiFactory.java index 71212cdd9..c8e3da576 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/config/ACGuiFactory.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/config/ACGuiFactory.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.config; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiCrystallizer.java b/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiCrystallizer.java index 3c22a544b..426b0b8fd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiCrystallizer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiCrystallizer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.gui; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiEngraver.java b/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiEngraver.java new file mode 100644 index 000000000..c5bcc32c3 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiEngraver.java @@ -0,0 +1,60 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.client.gui; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityEngraver; +import com.shinoow.abyssalcraft.common.inventory.ContainerEngraver; + +public class GuiEngraver extends GuiContainer { + + private static final ResourceLocation engraverGuiTexture = new ResourceLocation("abyssalcraft:textures/gui/container/engraver.png"); + private TileEntityEngraver tileEngraver; + + public GuiEngraver(InventoryPlayer par1InventoryPlayer, TileEntityEngraver par2TileEntityEngraver) { + super(new ContainerEngraver(par1InventoryPlayer, par2TileEntityEngraver)); + tileEngraver = par2TileEntityEngraver; + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) + { + String s = tileEngraver.hasCustomInventoryName() ? tileEngraver.getInventoryName() : I18n.format(tileEngraver.getInventoryName(), new Object[0]); + fontRendererObj.drawString(s, xSize / 2 - fontRendererObj.getStringWidth(s) / 2, 6, 4210752); + fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + mc.getTextureManager().bindTexture(engraverGuiTexture); + int k = (width - xSize) / 2; + int l = (height - ySize) / 2; + drawTexturedModalRect(k, l, 0, 0, xSize, ySize); + int i1; + + i1 = tileEngraver.getProcessProgressScaled(24); + drawTexturedModalRect(k + 79, l + 34, 176, 14, i1 + 1, 16); + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiTransmutator.java b/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiTransmutator.java index fd7eecf01..8d14c5630 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiTransmutator.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/gui/GuiTransmutator.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.gui; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/lib/ParticleEffects.java b/src/main/java/com/shinoow/abyssalcraft/client/lib/ParticleEffects.java index 3188e0612..62c18fc26 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/lib/ParticleEffects.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/lib/ParticleEffects.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.lib; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelAltar.java b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelAltar.java index 8695ec7b9..6a0ff94aa 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelAltar.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelAltar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDGhead.java b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDGhead.java index 79844f328..1f23b06ee 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDGhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDGhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarBottom.java b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarBottom.java index d7716e752..bd21ec964 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarBottom.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarBottom.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarTop.java b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarTop.java index ebb627aec..dd9d5de56 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarTop.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelDreadAltarTop.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelEngraver.java b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelEngraver.java new file mode 100644 index 000000000..5a40e7b9e --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelEngraver.java @@ -0,0 +1,141 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.client.model.block; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelEngraver extends ModelBase { + + ModelRenderer anvilbottom; + ModelRenderer anvilcenter; + ModelRenderer anviltop; + ModelRenderer engraver1; + ModelRenderer crank; + ModelRenderer handle1; + ModelRenderer handle2; + ModelRenderer engraver2; + ModelRenderer engraver3; + ModelRenderer engraver4; + ModelRenderer engraver5; + + public ModelEngraver() + { + textureWidth = 64; + textureHeight = 32; + + anvilbottom = new ModelRenderer(this, 31, 16); + anvilbottom.addBox(0F, 0F, 0F, 7, 1, 9); + anvilbottom.setRotationPoint(-1.5F, 23F, -4.5F); + anvilbottom.setTextureSize(64, 32); + anvilbottom.mirror = true; + setRotation(anvilbottom, 0F, 0F, 0F); + anvilcenter = new ModelRenderer(this, 36, 6); + anvilcenter.addBox(0F, 0F, 0F, 5, 3, 7); + anvilcenter.setRotationPoint(-0.5F, 20F, -3.5F); + anvilcenter.setTextureSize(64, 32); + anvilcenter.mirror = true; + setRotation(anvilcenter, 0F, 0F, 0F); + anviltop = new ModelRenderer(this, 0, 0); + anviltop.addBox(0F, 0F, 0F, 8, 2, 10); + anviltop.setRotationPoint(-2F, 18F, -5F); + anviltop.setTextureSize(64, 32); + anviltop.mirror = true; + setRotation(anviltop, 0F, 0F, 0F); + engraver1 = new ModelRenderer(this, 0, 12); + engraver1.addBox(0F, 0F, 0F, 3, 13, 4); + engraver1.setRotationPoint(-5F, 11F, -2F); + engraver1.setTextureSize(64, 32); + engraver1.mirror = true; + setRotation(engraver1, 0F, 0F, 0F); + crank = new ModelRenderer(this, 26, 0); + crank.addBox(0F, 0F, 0F, 1, 1, 7); + crank.setRotationPoint(-6F, 16F, -3F); + crank.setTextureSize(64, 32); + crank.mirror = true; + setRotation(crank, -0.3717861F, 0F, 0F); + handle1 = new ModelRenderer(this, 0, 0); + handle1.addBox(-1F, 0F, 0F, 2, 1, 1); + handle1.setRotationPoint(-7F, 16F, -3F); + handle1.setTextureSize(64, 32); + handle1.mirror = true; + setRotation(handle1, -0.37179F, 0F, 0F); + handle2 = new ModelRenderer(this, 0, 0); + handle2.addBox(-1F, 0F, 0F, 2, 1, 1); + handle2.setRotationPoint(-7F, 18.2F, 2.6F); + handle2.setTextureSize(64, 32); + handle2.mirror = true; + setRotation(handle2, -0.37179F, 0F, 0F); + engraver2 = new ModelRenderer(this, 36, 0); + engraver2.addBox(0F, 0F, 0F, 5, 1, 5); + engraver2.setRotationPoint(-0.5F, 17F, -2.5F); + engraver2.setTextureSize(64, 32); + engraver2.mirror = true; + setRotation(engraver2, 0F, 0F, 0F); + engraver3 = new ModelRenderer(this, 14, 14); + engraver3.addBox(0F, 0F, 0F, 9, 3, 4); + engraver3.setRotationPoint(-5F, 8F, -2F); + engraver3.setTextureSize(64, 32); + engraver3.mirror = true; + setRotation(engraver3, 0F, 0F, 0F); + engraver4 = new ModelRenderer(this, 14, 21); + engraver4.addBox(0F, 0F, 0F, 2, 5, 2); + engraver4.setRotationPoint(1F, 9F, -1F); + engraver4.setTextureSize(64, 32); + engraver4.mirror = true; + setRotation(engraver4, 0F, 0F, 0F); + engraver5 = new ModelRenderer(this, 36, 0); + engraver5.addBox(0F, 0F, 0F, 5, 1, 5); + engraver5.setRotationPoint(-0.5F, 14F, -2.5F); + engraver5.setTextureSize(64, 32); + engraver5.mirror = true; + setRotation(engraver5, 0F, 0F, 0F); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + anvilbottom.render(f5); + anvilcenter.render(f5); + anviltop.render(f5); + engraver1.render(f5); + crank.render(f5); + handle1.render(f5); + handle2.render(f5); + engraver2.render(f5); + engraver3.render(f5); + engraver4.render(f5); + engraver5.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + @Override + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelODB.java b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelODB.java index 1a3c375f2..d7cabddb9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelODB.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/block/ModelODB.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiBat.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiBat.java index 9ae12de3e..e332ce880 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiBat.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiBat.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiSkeleton.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiSkeleton.java index f74a07a35..2ddaa912e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiSkeleton.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelAntiSkeleton.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagaroth.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagaroth.java index de3d6e1f7..910c92110 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagaroth.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagaroth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothFist.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothFist.java index 2cc03c803..672a3c9f8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothFist.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothFist.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothSpawn.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothSpawn.java index 9cc2e8805..aeb8d4792 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothSpawn.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelChagarothSpawn.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.client.model.entity; import net.minecraft.client.model.ModelBase; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDG.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDG.java index d57694299..f1abbddbe 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDG.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDG.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonBoss.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonBoss.java index 775653f53..0cf85905e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonBoss.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonBoss.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.client.model.entity; import net.minecraft.client.model.ModelBase; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonMinion.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonMinion.java index da2b06801..68c336f10 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonMinion.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDragonMinion.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.client.model.entity; import net.minecraft.client.model.ModelBase; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadSpawn.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadSpawn.java index 12d220122..82d6b8acd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadSpawn.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadSpawn.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.client.model.entity; import net.minecraft.client.model.ModelBase; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadling.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadling.java index dd57f07cb..b221804ad 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadling.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelDreadling.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelJzahar.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelJzahar.java index 110a9913e..01e7bb3bf 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelJzahar.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelJzahar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSacthoth.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSacthoth.java index 7a0aca2c2..2be4b113e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSacthoth.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSacthoth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowBeast.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowBeast.java index d7ba1ff10..c4df06fda 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowBeast.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowBeast.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowCreature.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowCreature.java index d866f0a7d..a3d948b86 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowCreature.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowCreature.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowMonster.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowMonster.java index 402a7e2a7..9aa0ed8cc 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowMonster.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelShadowMonster.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSkeletonGoliath.java b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSkeletonGoliath.java index 995a54d2c..db2159b78 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSkeletonGoliath.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/entity/ModelSkeletonGoliath.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelCudgel.java b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelCudgel.java index 56cbe0f48..3917e146d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelCudgel.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelCudgel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.item; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelDreadiumSamuraiArmor.java b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelDreadiumSamuraiArmor.java index bab6e9ba6..af5f374cd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelDreadiumSamuraiArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelDreadiumSamuraiArmor.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.client.model.item; import net.minecraft.client.model.ModelBiped; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelHilt.java b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelHilt.java index 0722ea2fd..e4a7ee02d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelHilt.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelHilt.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.item; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelKatana.java b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelKatana.java index 504cd907d..e7a2cbf58 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelKatana.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelKatana.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.item; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelStaff.java b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelStaff.java index 496825492..c84d6b5f2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelStaff.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/item/ModelStaff.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.model.item; diff --git a/src/main/java/com/shinoow/abyssalcraft/core/client/model/ModelStarSpawnPlayer.java b/src/main/java/com/shinoow/abyssalcraft/client/model/player/ModelStarSpawnPlayer.java similarity index 93% rename from src/main/java/com/shinoow/abyssalcraft/core/client/model/ModelStarSpawnPlayer.java rename to src/main/java/com/shinoow/abyssalcraft/client/model/player/ModelStarSpawnPlayer.java index 17fa99d92..2be9250f4 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/client/model/ModelStarSpawnPlayer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/model/player/ModelStarSpawnPlayer.java @@ -1,19 +1,20 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.client.model; +package com.shinoow.abyssalcraft.client.model.player; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODB.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODB.java index ab82f4efd..2a2baa635 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODB.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODB.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODBc.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODBc.java index 52580ba63..34f7081fb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODBc.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/RenderODBc.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityAltarRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityAltarRenderer.java index 3b2f39336..a43c34357 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityAltarRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityAltarRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDGheadRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDGheadRenderer.java index 43f4cc3af..bb9f1f3a0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDGheadRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDGheadRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarBottomRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarBottomRenderer.java index 27cecec73..8a1eb985d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarBottomRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarBottomRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarTopRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarTopRenderer.java index 7992f11f2..48a1b438c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarTopRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityDreadAltarTopRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityEngraverRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityEngraverRenderer.java new file mode 100644 index 000000000..286788179 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityEngraverRenderer.java @@ -0,0 +1,68 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.client.render.block; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +import org.lwjgl.opengl.GL11; + +import com.shinoow.abyssalcraft.client.model.block.ModelEngraver; +import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityEngraver; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class TileEntityEngraverRenderer extends TileEntitySpecialRenderer { + + ModelEngraver model = new ModelEngraver(); + private static final ResourceLocation Resourcelocation = new ResourceLocation("abyssalcraft:textures/model/blocks/Engraver.png"); + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + + Minecraft.getMinecraft().renderEngine.bindTexture(Resourcelocation); + model.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + + public void renderBlockEngraver(TileEntityEngraver tl, World world, int i, int j, int k, Block block) { + Tessellator tessellator = Tessellator.instance; + + float f = block.getLightOpacity(world, i, j, k); + int l = world.getLightBrightnessForSkyBlocks(i, j, k, 0); + int l1 = l % 65536; + int l2 = l / 65536; + tessellator.setColorOpaque_F(f, f, f); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, l1, l2); + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityODBRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityODBRenderer.java index 07613345b..02ff67e54 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityODBRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityODBRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityOheadRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityOheadRenderer.java index 04f6242ee..ef97f2a18 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityOheadRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityOheadRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPSDLRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPSDLRenderer.java index 6b27cebf2..07441e6db 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPSDLRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPSDLRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPheadRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPheadRenderer.java index b76a510e0..1fe783764 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPheadRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityPheadRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityWheadRenderer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityWheadRenderer.java index 5e35251d9..22bebf553 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityWheadRenderer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/block/TileEntityWheadRenderer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.block; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAbyssalZombie.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAbyssalZombie.java index 3d4003de8..0d93998db 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAbyssalZombie.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAbyssalZombie.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiAbyssalZombie.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiAbyssalZombie.java index 41ba64c6a..8bce6c1d6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiAbyssalZombie.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiAbyssalZombie.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiBat.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiBat.java index 21038805e..61804569d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiBat.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiBat.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiChicken.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiChicken.java index b60bcf144..db965ec16 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiChicken.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiChicken.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCow.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCow.java index 2329eb92c..3dc5a7c29 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCow.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCow.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCreeper.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCreeper.java index 673e287a1..cffabcaf8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCreeper.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiCreeper.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiGhoul.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiGhoul.java index 6378f6e76..fd8a9e847 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiGhoul.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiGhoul.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPig.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPig.java index 94c219bb5..912f8891a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPig.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPig.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPlayer.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPlayer.java index d698b0433..d9c19963c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPlayer.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiPlayer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSkeleton.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSkeleton.java index c846eb199..828abd584 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSkeleton.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSkeleton.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSpider.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSpider.java index b06270ff0..50b9d6a00 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSpider.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiSpider.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiZombie.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiZombie.java index ed831ef0a..d6a5a9a01 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiZombie.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderAntiZombie.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagaroth.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagaroth.java index b4026dcbc..b66554370 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagaroth.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagaroth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothFist.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothFist.java index ec9920675..eb09c9dc0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothFist.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothFist.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothSpawn.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothSpawn.java index 4ad4e92a6..cf4578a9f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothSpawn.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderChagarothSpawn.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDemonPig.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDemonPig.java index 07113ff60..392e4be81 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDemonPig.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDemonPig.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDepthsghoul.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDepthsghoul.java index baef0d9fe..ed972e51c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDepthsghoul.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDepthsghoul.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonBoss.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonBoss.java index 51713cffc..4650f03d0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonBoss.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonBoss.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonMinion.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonMinion.java index e778f341f..b27ff9b49 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonMinion.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDragonMinion.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; @@ -96,7 +97,10 @@ protected void renderDragonModel(EntityDragonMinion par1EntityDragonMinion, floa } bindEntityTexture(par1EntityDragonMinion); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); mainModel.render(par1EntityDragonMinion, par2, par3, par4, par5, par6, par7); + GL11.glDisable(GL11.GL_BLEND); if (par1EntityDragonMinion.hurtTime > 0) { diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadSpawn.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadSpawn.java index 7a5f7e18c..924924484 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadSpawn.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadSpawn.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadling.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadling.java index 5c6a4f16b..3a587edd1 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadling.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderDreadling.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderJzahar.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderJzahar.java index dc5d01222..67f6e64bc 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderJzahar.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderJzahar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderPig.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderPig.java index 13625f2de..c2ff50200 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderPig.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderPig.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSacthoth.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSacthoth.java index bdf9e7091..60c8c35ee 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSacthoth.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSacthoth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowBeast.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowBeast.java index 7df09d571..b1b5014e4 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowBeast.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowBeast.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowCreature.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowCreature.java index 98aeb64c2..6226b84ec 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowCreature.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowCreature.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowMonster.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowMonster.java index 8c8f65d67..43cb03f7d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowMonster.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderShadowMonster.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSkeletonGoliath.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSkeletonGoliath.java index bbe9654de..ba5b07a9a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSkeletonGoliath.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/RenderSkeletonGoliath.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderabygolem.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderabygolem.java index 94720d259..6d44d472e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderabygolem.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderabygolem.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadgolem.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadgolem.java index 416c686a6..d570e0be9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadgolem.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadgolem.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadguard.java b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadguard.java index ce7e4dd2a..895a26c03 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadguard.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/entity/Renderdreadguard.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderCudgel.java b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderCudgel.java index fbdcfc427..a1e61accb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderCudgel.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderCudgel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.item; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderHilt.java b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderHilt.java index d0140dd0b..3a698685b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderHilt.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderHilt.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.item; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderKatana.java b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderKatana.java index 32648fc39..9fcea147d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderKatana.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderKatana.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.item; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderStaff.java b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderStaff.java index d6a4ebc78..f58876b43 100644 --- a/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderStaff.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/item/RenderStaff.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.client.render.item; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/core/client/render/RenderPlayerAC.java b/src/main/java/com/shinoow/abyssalcraft/client/render/player/RenderPlayerAC.java similarity index 92% rename from src/main/java/com/shinoow/abyssalcraft/core/client/render/RenderPlayerAC.java rename to src/main/java/com/shinoow/abyssalcraft/client/render/player/RenderPlayerAC.java index 414650b55..2446bc1d8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/client/render/RenderPlayerAC.java +++ b/src/main/java/com/shinoow/abyssalcraft/client/render/player/RenderPlayerAC.java @@ -1,4 +1,20 @@ -package com.shinoow.abyssalcraft.core.client.render; +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.client.render.player; import static net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED; import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D; @@ -9,20 +25,17 @@ import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.client.renderer.tileentity.TileEntitySkullRenderer; import net.minecraft.init.Items; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.client.*; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.MinecraftForge; import org.lwjgl.opengl.GL11; -import com.shinoow.abyssalcraft.core.api.item.ACItems; -import com.shinoow.abyssalcraft.core.client.model.ModelStarSpawnPlayer; +import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.client.model.player.ModelStarSpawnPlayer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -207,7 +220,7 @@ else if (itemstack.getItem() == Items.skull) GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(-f3, -f3, f3); } - else if (itemstack1.getItem() == Items.bow || itemstack1.getItem() == ACItems.coralium_longbow) + else if (itemstack1.getItem() == Items.bow || itemstack1.getItem() == AbyssalCraft.corbow) { f3 = 0.625F; GL11.glTranslatef(0.0F, 0.125F, 0.3125F); diff --git a/src/main/java/com/shinoow/abyssalcraft/common/AbyssalCrafting.java b/src/main/java/com/shinoow/abyssalcraft/common/AbyssalCrafting.java index 474e5e479..f19918742 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/AbyssalCrafting.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/AbyssalCrafting.java @@ -1,45 +1,43 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common; import net.minecraft.init.*; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.*; + import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.util.*; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.common.util.SalvageHandler; + import cpw.mods.fml.common.registry.GameRegistry; public class AbyssalCrafting { public static void addRecipes() { - //Block crafting addBlockCrafting(); - //Block smelting addBlockSmelting(); - //Item crafting addItemCrafting(); - //Item smelting addItemSmelting(); - //Salvaging (special smelting) addSalvage(); - //Crystallization addCrystallization(); - //Transmutation addTransmutation(); + addEngraving(); } private static void addBlockCrafting(){ @@ -128,13 +126,14 @@ private static void addBlockCrafting(){ GameRegistry.addRecipe(new ItemStack(AbyssalCraft.ethaxiumstairs, 4), new Object[] {"# ", "## ", "###", '#', new ItemStack(AbyssalCraft.ethaxiumbrick, 0)}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.ethaxiumslab1, 6), new Object[] {"AAA", 'A', new ItemStack(AbyssalCraft.ethaxiumbrick, 0)}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.ethaxiumfence, 6), new Object[] {"###", "###", '#', new ItemStack(AbyssalCraft.ethaxiumbrick, 0)}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.engraver, 1), new Object[] {"#% ", "#%&", "@% ", '#', AbyssalCraft.engravingBlank, '%', Blocks.stone, '&', Blocks.lever, '@', Blocks.anvil}); } private static void addBlockSmelting(){ GameRegistry.addSmelting(AbyssalCraft.Darkstone_cobble, new ItemStack(AbyssalCraft.Darkstone, 1), 0.1F); - CoreRegistry.addOreSmelting("oreAbyssalnite", "ingotAbyssalnite", 3F); - CoreRegistry.addOreSmelting("oreCoralium", "gemCoralium", 3F); + AbyssalCraftAPI.addOreSmelting("oreAbyssalnite", "ingotAbyssalnite", 3F); + AbyssalCraftAPI.addOreSmelting("oreCoralium", "gemCoralium", 3F); GameRegistry.addSmelting(AbyssalCraft.DLTLog, new ItemStack(Items.coal, 1, 1), 1F); GameRegistry.addSmelting(AbyssalCraft.CoraliumInfusedStone, new ItemStack(AbyssalCraft.Cpearl), 3F); GameRegistry.addSmelting(AbyssalCraft.AbyPCorOre, new ItemStack(AbyssalCraft.Cpearl), 3F); @@ -173,11 +172,11 @@ private static void addItemCrafting(){ GameRegistry.addRecipe(new ItemStack(AbyssalCraft.abyingot, 9), new Object[] {"#", '#', AbyssalCraft.abyblock}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Corb, 1), new Object[] {"#%#", "@$@", "#%#", '#', Items.blaze_powder, '%', Items.diamond, '@', Items.ender_pearl, '$', AbyssalCraft.Cpearl}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Corb, 1), new Object[] {"#%#", "@$@", "#%#", '#', Items.blaze_powder, '%', Items.ender_pearl, '@', Items.diamond, '$', AbyssalCraft.Cpearl}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.pickaxeC, 1), new Object[] {"#%#", " & ", " @ ", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.pickaxeA, '@', Items.blaze_rod}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.axeC, 1), new Object[] {"#% ", "#& ", " @ ", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.axeA, '@', Items.blaze_rod}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.shovelC, 1), new Object[] {"#%#", " & ", " @ ", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.shovelA, '@', Items.blaze_rod}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.swordC, 1), new Object[] {"#%#", "#&#", " @ ", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.swordA, '@', Items.blaze_rod}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.hoeC, 1), new Object[] {"#% ", " & ", " @ ", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.hoeA, '@', Items.blaze_rod}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.pickaxeC, 1), new Object[] {"#%#", " & ", " @ ", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.pickaxeA, '@', Items.blaze_rod}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.axeC, 1), new Object[] {"#% ", "#& ", " @ ", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.axeA, '@', Items.blaze_rod}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.shovelC, 1), new Object[] {"#%#", " & ", " @ ", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.shovelA, '@', Items.blaze_rod}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.swordC, 1), new Object[] {"#%#", "#&#", " @ ", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.swordA, '@', Items.blaze_rod}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.hoeC, 1), new Object[] {"#% ", " & ", " @ ", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.hoeA, '@', Items.blaze_rod}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Cplate, 1), new Object[] {"#%#", "#%#", "#%#", '#', AbyssalCraft.Cingot, '%', AbyssalCraft.Cpearl}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Cchunk, 1), new Object[] {"###", "#%#", "###", '#', AbyssalCraft.Coraliumcluster9, '%', AbyssalCraft.abystone}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.PSDLfinder, 4), new Object[] {"###", "#%#", "###", '#', AbyssalCraft.Coralium, '%', Items.ender_eye}); @@ -230,13 +229,15 @@ private static void addItemCrafting(){ GameRegistry.addRecipe(new ItemStack(AbyssalCraft.ethShovel, 1), new Object[] {"#", "%", "%", '#', AbyssalCraft.ethaxiumIngot, '%', AbyssalCraft.ethaxium_brick}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.ethSword, 1), new Object[] {"#", "#", "%", '#', AbyssalCraft.ethaxiumIngot, '%', AbyssalCraft.ethaxium_brick}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.ethHoe, 1), new Object[] {"##", " %", " %", '#', AbyssalCraft.ethaxiumIngot, '%', AbyssalCraft.ethaxium_brick}); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 0), true, new Object[] {" # ", "# #", " # ", '#', "ingotCopper"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 1), true, new Object[] {" # ", "# #", " # ", '#', "ingotIron"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 2), true, new Object[] {" # ", "# #", " # ", '#', "ingotGold"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 3), true, new Object[] {" # ", "# #", " # ", '#', "ingotTin"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 4), true, new Object[] {" # ", "# #", " # ", '#', "ingotAbyssalnite"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 5), true, new Object[] {" # ", "# #", " # ", '#', "ingotCoralium"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 6), true, new Object[] {" # ", "# #", " # ", '#', "ingotDreadium"})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 0), true, new Object[] {" # ", "#%#", " # ", '#', "ingotCopper", '%', Items.flint})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 1), true, new Object[] {" # ", "#%#", " # ", '#', "ingotIron", '%', Items.flint})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 2), true, new Object[] {" # ", "#%#", " # ", '#', "ingotGold", '%', Items.flint})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 3), true, new Object[] {" # ", "#%#", " # ", '#', "ingotTin", '%', Items.flint})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 4), true, new Object[] {" # ", "#%#", " # ", '#', "ingotAbyssalnite", '%', Items.flint})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 5), true, new Object[] {" # ", "#%#", " # ", '#', "ingotCoralium", '%', Items.flint})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AbyssalCraft.coin, 1, 6), true, new Object[] {" # ", "#%#", " # ", '#', "ingotDreadium", '%', Items.flint})); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.engravingBlank, 1), new Object[] {"###", "#%#", "###", '#', new ItemStack(Blocks.stone_slab, 1, 0), '%', Items.iron_ingot}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.engravingCthulhu, 1), new Object[] {"#", "%", '#', AbyssalCraft.engravingBlank, '%', AbyssalCraft.ethaxiumIngot}); GameRegistry.addShapelessRecipe(new ItemStack(AbyssalCraft.lifeCrystal), AbyssalCraft.crystalCarbon, AbyssalCraft.crystalHydrogen, AbyssalCraft.crystalNitrogen, AbyssalCraft.crystalOxygen, AbyssalCraft.crystalPhosphorus, AbyssalCraft.crystalSulfur); @@ -306,10 +307,10 @@ private static void addItemCrafting(){ GameRegistry.addRecipe(new ItemStack(AbyssalCraft.helmet, 1), new Object[] {"###", "# #", '#', AbyssalCraft.abyingot}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.plate, 1), new Object[] {"# #", "###", "###",'#', AbyssalCraft.abyingot}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.legs, 1), new Object[] {"###", "# #", "# #",'#', AbyssalCraft.abyingot}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.bootsC, 1), new Object[] {"#%#", "#&#", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.boots}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.helmetC, 1), new Object[] {"###", "#%#", " & ", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.helmet}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.plateC, 1), new Object[] {"#%#", "#&#", "###", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.plate, '&', AbyssalCraft.Corb}); - GameRegistry.addRecipe(new ItemStack(AbyssalCraft.legsC, 1), new Object[] {"#%#", "#&#", "# #", '#', AbyssalCraft.abyingot, '%', AbyssalCraft.Corb, '&', AbyssalCraft.legs}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.bootsC, 1), new Object[] {"#%#", "#&#", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.boots}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.helmetC, 1), new Object[] {"###", "#%#", " & ", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.helmet}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.plateC, 1), new Object[] {"#%#", "#&#", "###", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.plate, '&', AbyssalCraft.Corb}); + GameRegistry.addRecipe(new ItemStack(AbyssalCraft.legsC, 1), new Object[] {"#%#", "#&#", "# #", '#', AbyssalCraft.abyblock, '%', AbyssalCraft.Corb, '&', AbyssalCraft.legs}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Corboots, 1), new Object[] {"# #", "# #", '#', AbyssalCraft.Cingot}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Corhelmet, 1), new Object[] {"###", "# #", '#', AbyssalCraft.Cingot}); GameRegistry.addRecipe(new ItemStack(AbyssalCraft.Corplate, 1), new Object[] {"# #", "###", "###",'#', AbyssalCraft.Cingot}); @@ -456,30 +457,18 @@ private static void addItemSmelting(){ GameRegistry.addSmelting(Items.egg, new ItemStack(AbyssalCraft.friedegg, 1), 0F); GameRegistry.addSmelting(AbyssalCraft.dreadchunk, new ItemStack(AbyssalCraft.abyingot), 3F); GameRegistry.addSmelting(AbyssalCraft.Cbucket, new ItemStack(AbyssalCraft.cstone, 1), 0.2F); + + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 0), new ItemStack(AbyssalCraft.copperIngot, 4), 0.5F); + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 1), new ItemStack(Items.iron_ingot, 4), 0.5F); + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 2), new ItemStack(Items.gold_ingot, 4), 0.5F); + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 3), new ItemStack(AbyssalCraft.tinIngot, 4), 0.5F); + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 4), new ItemStack(AbyssalCraft.abyingot, 4), 0.5F); + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 5), new ItemStack(AbyssalCraft.Cingot, 4), 0.5F); + GameRegistry.addSmelting(new ItemStack(AbyssalCraft.coin, 1, 6), new ItemStack(AbyssalCraft.dreadiumingot, 4), 0.5F); } private static void addSalvage(){ - SalvageHandler.INSTANCE.addBootsSalvage(Items.leather_boots, Items.leather); - SalvageHandler.INSTANCE.addHelmetSalvage(Items.leather_helmet, Items.leather); - SalvageHandler.INSTANCE.addChestplateSalvage(Items.leather_chestplate, Items.leather); - SalvageHandler.INSTANCE.addLeggingsSalvage(Items.leather_leggings, Items.leather); - - SalvageHandler.INSTANCE.addBootsSalvage(Items.iron_boots, Items.iron_ingot); - SalvageHandler.INSTANCE.addHelmetSalvage(Items.iron_helmet, Items.iron_ingot); - SalvageHandler.INSTANCE.addChestplateSalvage(Items.iron_chestplate, Items.iron_ingot); - SalvageHandler.INSTANCE.addLeggingsSalvage(Items.iron_leggings, Items.iron_ingot); - - SalvageHandler.INSTANCE.addBootsSalvage(Items.golden_boots, Items.gold_ingot); - SalvageHandler.INSTANCE.addHelmetSalvage(Items.golden_helmet, Items.gold_ingot); - SalvageHandler.INSTANCE.addChestplateSalvage(Items.golden_chestplate, Items.gold_ingot); - SalvageHandler.INSTANCE.addLeggingsSalvage(Items.golden_leggings, Items.gold_ingot); - - SalvageHandler.INSTANCE.addBootsSalvage(Items.diamond_boots, Items.diamond); - SalvageHandler.INSTANCE.addHelmetSalvage(Items.diamond_helmet, Items.diamond); - SalvageHandler.INSTANCE.addChestplateSalvage(Items.diamond_chestplate, Items.diamond); - SalvageHandler.INSTANCE.addLeggingsSalvage(Items.diamond_leggings, Items.diamond); - SalvageHandler.INSTANCE.addBootsSalvage(AbyssalCraft.boots, AbyssalCraft.abyingot); SalvageHandler.INSTANCE.addHelmetSalvage(AbyssalCraft.helmet, AbyssalCraft.abyingot); SalvageHandler.INSTANCE.addChestplateSalvage(AbyssalCraft.plate, AbyssalCraft.abyingot); @@ -503,115 +492,170 @@ private static void addSalvage(){ private static void addCrystallization(){ - CoreRegistry.addSingleCrystallization(AbyssalCraft.Cwater, new ItemStack(AbyssalCraft.crystalCoralium, 2), 0.4F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.Cbucket, new ItemStack(AbyssalCraft.crystalCoralium, 2), 0.2F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.Cingot, new ItemStack(AbyssalCraft.crystalCoralium), 0.1F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.Cchunk, new ItemStack(AbyssalCraft.crystalCoralium), 0.1F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.AbyLCorOre, new ItemStack(AbyssalCraft.crystalCoralium), 0.1F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.abyingot, new ItemStack(AbyssalCraft.crystalAbyssalnite), 0.1F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.abychunk, new ItemStack(AbyssalCraft.crystalAbyssalnite), 0.1F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.dreadiumingot, new ItemStack(AbyssalCraft.crystalDreadium), 0.1F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.sulfur, new ItemStack(AbyssalCraft.crystalSulfur), 0.1F); - CoreRegistry.addSingleCrystallization(Items.iron_ingot, new ItemStack(AbyssalCraft.crystalIron), 0.1F); - CoreRegistry.addSingleCrystallization(Items.gold_ingot, new ItemStack(AbyssalCraft.crystalGold), 0.1F); - CoreRegistry.addSingleCrystallization(Items.redstone, new ItemStack(AbyssalCraft.crystalRedstone), 0.1F); - CoreRegistry.addSingleCrystallization(Items.coal, new ItemStack(AbyssalCraft.crystalCarbon), 0.1F); - CoreRegistry.addSingleCrystallization(Items.blaze_powder, new ItemStack(AbyssalCraft.crystalBlaze), 0.1F); - CoreRegistry.addSingleCrystallization(new ItemStack(Items.dye, 1, 15), new ItemStack(AbyssalCraft.crystalPhosphorus), 0.0F); - CoreRegistry.addSingleCrystallization("oreAbyssalnite", "crystalAbyssalnite", 0.1F); - CoreRegistry.addSingleCrystallization("oreCoralium", "crystalCoralium", 0.1F); - CoreRegistry.addSingleCrystallization("oreIron", "crystalIron", 0.1F); - CoreRegistry.addSingleCrystallization("oreGold", "crystalGold", 0.1F); - CoreRegistry.addSingleCrystallization("ingotTin", "crystalTin", 0.1F); - CoreRegistry.addSingleCrystallization("oreTin", "crystalTin", 0.1F); - CoreRegistry.addSingleCrystallization("ingotCopper", "crystalCopper", 0.1F); - CoreRegistry.addSingleCrystallization("oreCopper", "crystalCopper", 0.1F); - CoreRegistry.addSingleCrystallization("ingotAluminum", "crystalAluminium", 0.1F); - CoreRegistry.addSingleCrystallization("ingotAluminium", "crystalAluminium", 0.1F); - CoreRegistry.addSingleCrystallization("oreAluminum", "crystalAluminium", 0.1F); - CoreRegistry.addSingleCrystallization("blockCopper", "crystalCopper", 9, 0.9F); - CoreRegistry.addSingleCrystallization("blockTin", "crystalTin", 9, 0.9F); - CoreRegistry.addSingleCrystallization(Blocks.gold_block, new ItemStack(AbyssalCraft.crystalGold, 9), 0.9F); - CoreRegistry.addSingleCrystallization(Blocks.iron_block, new ItemStack(AbyssalCraft.crystalIron, 9), 0.9F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.abyblock, new ItemStack(AbyssalCraft.crystalAbyssalnite, 9), 0.9F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.corblock, new ItemStack(AbyssalCraft.crystalCoralium, 9), 0.9F); - CoreRegistry.addSingleCrystallization(AbyssalCraft.dreadiumblock, new ItemStack(AbyssalCraft.crystalDreadium, 9), 0.9F); - CoreRegistry.addSingleCrystallization(Blocks.coal_ore, new ItemStack(AbyssalCraft.crystalCarbon), 0.1F); - CoreRegistry.addSingleCrystallization(Blocks.coal_block, new ItemStack(AbyssalCraft.crystalCarbon, 9), 0.9F); - CoreRegistry.addSingleCrystallization(Blocks.redstone_ore, new ItemStack(AbyssalCraft.crystalRedstone), 0.1F); - CoreRegistry.addSingleCrystallization(Blocks.redstone_block, new ItemStack(AbyssalCraft.crystalRedstone, 9), 0.9F); - CoreRegistry.addSingleCrystallization("ingotZinc", "crystalZinc", 0.1F); - CoreRegistry.addSingleCrystallization("oreZinc", "crystalZinc", 0.1F); - CoreRegistry.addCrystallization(AbyssalCraft.dreadchunk, new ItemStack(AbyssalCraft.crystalAbyssalnite), new ItemStack(AbyssalCraft.crystalDreadium), 0.2F); - CoreRegistry.addCrystallization(AbyssalCraft.dreadore, new ItemStack(AbyssalCraft.crystalAbyssalnite), new ItemStack(AbyssalCraft.crystalDreadium), 0.2F); - CoreRegistry.addCrystallization(Blocks.water, new ItemStack(AbyssalCraft.crystalHydrogen, 4), new ItemStack(AbyssalCraft.crystalOxygen, 2), 0.4F); - CoreRegistry.addCrystallization(Items.water_bucket, new ItemStack(AbyssalCraft.crystalHydrogen, 4), new ItemStack(AbyssalCraft.crystalOxygen, 2), 0.1F); - CoreRegistry.addCrystallization(new ItemStack(Items.potionitem, 1, 0), new ItemStack(AbyssalCraft.crystalHydrogen, 2), new ItemStack(AbyssalCraft.crystalOxygen), 0.1F); - CoreRegistry.addCrystallization(new ItemStack(Items.dye, 1, 4), new ItemStack(AbyssalCraft.crystalSilica, 6), new ItemStack(AbyssalCraft.crystalSulfur, 4), 0.15F); - CoreRegistry.addCrystallization(AbyssalCraft.methane, new ItemStack(AbyssalCraft.crystalCarbon), new ItemStack(AbyssalCraft.crystalHydrogen, 4), 0.1F); - CoreRegistry.addCrystallization(Items.gunpowder, new ItemStack(AbyssalCraft.crystalNitrate, 4), new ItemStack(AbyssalCraft.crystalSulfur), 0.1F); - CoreRegistry.addCrystallization("materialSaltpeter", "crystalPotassium", "crystalNitrate", 0.1F); - CoreRegistry.addCrystallization("oreSaltpeter", "crystalPotassium", "crystalNitrate", 0.1F); - CoreRegistry.addCrystallization(Blocks.obsidian, new ItemStack(AbyssalCraft.crystalSilica), new ItemStack(AbyssalCraft.crystalMagnesia), 0.1F); - CoreRegistry.addCrystallization(Blocks.stone, new ItemStack(AbyssalCraft.crystalSilica), new ItemStack(AbyssalCraft.crystalAlumina), 0.1F); - CoreRegistry.addCrystallization(AbyssalCraft.crystalSilica, new ItemStack(AbyssalCraft.crystalSilicon), new ItemStack(AbyssalCraft.crystalOxygen, 2), 0.1F); - CoreRegistry.addCrystallization(AbyssalCraft.crystalAlumina, new ItemStack(AbyssalCraft.crystalAluminium, 2), new ItemStack(AbyssalCraft.crystalOxygen, 3), 0.1F); - CoreRegistry.addCrystallization(AbyssalCraft.crystalMagnesia, new ItemStack(AbyssalCraft.crystalMagnesium), new ItemStack(AbyssalCraft.crystalOxygen), 0.1F); - CoreRegistry.addCrystallization("ingotBronze", "crystalCopper", 1, "crystalTin", 3, 0.4F); - CoreRegistry.addCrystallization(AbyssalCraft.crystalMethane, new ItemStack(AbyssalCraft.crystalCarbon), new ItemStack(AbyssalCraft.crystalHydrogen), 0.1F); - CoreRegistry.addCrystallization(AbyssalCraft.crystalNitrate, new ItemStack(AbyssalCraft.crystalNitrogen), new ItemStack(AbyssalCraft.crystalOxygen, 3), 0.1F); - CoreRegistry.addCrystallization(Blocks.lapis_ore, new ItemStack(AbyssalCraft.crystalSilica, 6), new ItemStack(AbyssalCraft.crystalSulfur, 4), 0.15F); - CoreRegistry.addCrystallization(Blocks.lapis_block, new ItemStack(AbyssalCraft.crystalSilica, 24), new ItemStack(AbyssalCraft.crystalSulfur, 16), 1.0F); - CoreRegistry.addCrystallization("ingotBrass", "crystalCopper", 3, "crystalZinc", 2, 0.5F); - CoreRegistry.addCrystallization("oreBrass", "crystalCopper", 3, "crystalZinc", 2, 0.5F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.Cwater, new ItemStack(AbyssalCraft.crystalCoralium, 2), 0.4F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.Cbucket, new ItemStack(AbyssalCraft.crystalCoralium, 2), 0.2F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.Cingot, new ItemStack(AbyssalCraft.crystalCoralium), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.Cchunk, new ItemStack(AbyssalCraft.crystalCoralium), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.AbyLCorOre, new ItemStack(AbyssalCraft.crystalCoralium), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.abyingot, new ItemStack(AbyssalCraft.crystalAbyssalnite), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.abychunk, new ItemStack(AbyssalCraft.crystalAbyssalnite), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.dreadiumingot, new ItemStack(AbyssalCraft.crystalDreadium), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.sulfur, new ItemStack(AbyssalCraft.crystalSulfur), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Items.iron_ingot, new ItemStack(AbyssalCraft.crystalIron), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Items.gold_ingot, new ItemStack(AbyssalCraft.crystalGold), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Items.redstone, new ItemStack(AbyssalCraft.crystalRedstone), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Items.coal, new ItemStack(AbyssalCraft.crystalCarbon), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Items.blaze_powder, new ItemStack(AbyssalCraft.crystalBlaze), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(new ItemStack(Items.dye, 1, 15), new ItemStack(AbyssalCraft.crystalPhosphorus), 0.0F); + AbyssalCraftAPI.addSingleCrystallization("oreAbyssalnite", "crystalAbyssalnite", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreCoralium", "crystalCoralium", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreIron", "crystalIron", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreGold", "crystalGold", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("ingotTin", "crystalTin", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreTin", "crystalTin", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("ingotCopper", "crystalCopper", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreCopper", "crystalCopper", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("ingotAluminum", "crystalAluminium", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("ingotAluminium", "crystalAluminium", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreAluminum", "crystalAluminium", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("blockCopper", "crystalCopper", 9, 0.9F); + AbyssalCraftAPI.addSingleCrystallization("blockTin", "crystalTin", 9, 0.9F); + AbyssalCraftAPI.addSingleCrystallization(Blocks.gold_block, new ItemStack(AbyssalCraft.crystalGold, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization(Blocks.iron_block, new ItemStack(AbyssalCraft.crystalIron, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.abyblock, new ItemStack(AbyssalCraft.crystalAbyssalnite, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.corblock, new ItemStack(AbyssalCraft.crystalCoralium, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization(AbyssalCraft.dreadiumblock, new ItemStack(AbyssalCraft.crystalDreadium, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization(Blocks.coal_ore, new ItemStack(AbyssalCraft.crystalCarbon), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Blocks.coal_block, new ItemStack(AbyssalCraft.crystalCarbon, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization(Blocks.redstone_ore, new ItemStack(AbyssalCraft.crystalRedstone), 0.1F); + AbyssalCraftAPI.addSingleCrystallization(Blocks.redstone_block, new ItemStack(AbyssalCraft.crystalRedstone, 9), 0.9F); + AbyssalCraftAPI.addSingleCrystallization("ingotZinc", "crystalZinc", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("oreZinc", "crystalZinc", 0.1F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.dreadchunk, new ItemStack(AbyssalCraft.crystalAbyssalnite), new ItemStack(AbyssalCraft.crystalDreadium), 0.2F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.dreadore, new ItemStack(AbyssalCraft.crystalAbyssalnite), new ItemStack(AbyssalCraft.crystalDreadium), 0.2F); + AbyssalCraftAPI.addCrystallization(Blocks.water, new ItemStack(AbyssalCraft.crystalHydrogen, 4), new ItemStack(AbyssalCraft.crystalOxygen, 2), 0.4F); + AbyssalCraftAPI.addCrystallization(Items.water_bucket, new ItemStack(AbyssalCraft.crystalHydrogen, 4), new ItemStack(AbyssalCraft.crystalOxygen, 2), 0.1F); + AbyssalCraftAPI.addCrystallization(new ItemStack(Items.potionitem, 1, 0), new ItemStack(AbyssalCraft.crystalHydrogen, 2), new ItemStack(AbyssalCraft.crystalOxygen), 0.1F); + AbyssalCraftAPI.addCrystallization(new ItemStack(Items.dye, 1, 4), new ItemStack(AbyssalCraft.crystalSilica, 6), new ItemStack(AbyssalCraft.crystalSulfur, 4), 0.15F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.methane, new ItemStack(AbyssalCraft.crystalCarbon), new ItemStack(AbyssalCraft.crystalHydrogen, 4), 0.1F); + AbyssalCraftAPI.addCrystallization(Items.gunpowder, new ItemStack(AbyssalCraft.crystalNitrate, 4), new ItemStack(AbyssalCraft.crystalSulfur), 0.1F); + AbyssalCraftAPI.addCrystallization("materialSaltpeter", "crystalPotassium", "crystalNitrate", 0.1F); + AbyssalCraftAPI.addCrystallization("oreSaltpeter", "crystalPotassium", "crystalNitrate", 0.1F); + AbyssalCraftAPI.addCrystallization(Blocks.obsidian, new ItemStack(AbyssalCraft.crystalSilica), new ItemStack(AbyssalCraft.crystalMagnesia), 0.1F); + AbyssalCraftAPI.addCrystallization(Blocks.stone, new ItemStack(AbyssalCraft.crystalSilica), new ItemStack(AbyssalCraft.crystalAlumina), 0.1F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.crystalSilica, new ItemStack(AbyssalCraft.crystalSilicon), new ItemStack(AbyssalCraft.crystalOxygen, 2), 0.1F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.crystalAlumina, new ItemStack(AbyssalCraft.crystalAluminium, 2), new ItemStack(AbyssalCraft.crystalOxygen, 3), 0.1F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.crystalMagnesia, new ItemStack(AbyssalCraft.crystalMagnesium), new ItemStack(AbyssalCraft.crystalOxygen), 0.1F); + AbyssalCraftAPI.addCrystallization("ingotBronze", "crystalCopper", 1, "crystalTin", 3, 0.4F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.crystalMethane, new ItemStack(AbyssalCraft.crystalCarbon), new ItemStack(AbyssalCraft.crystalHydrogen), 0.1F); + AbyssalCraftAPI.addCrystallization(AbyssalCraft.crystalNitrate, new ItemStack(AbyssalCraft.crystalNitrogen), new ItemStack(AbyssalCraft.crystalOxygen, 3), 0.1F); + AbyssalCraftAPI.addCrystallization(Blocks.lapis_ore, new ItemStack(AbyssalCraft.crystalSilica, 6), new ItemStack(AbyssalCraft.crystalSulfur, 4), 0.15F); + AbyssalCraftAPI.addCrystallization(Blocks.lapis_block, new ItemStack(AbyssalCraft.crystalSilica, 24), new ItemStack(AbyssalCraft.crystalSulfur, 16), 1.0F); + AbyssalCraftAPI.addCrystallization("ingotBrass", "crystalCopper", 3, "crystalZinc", 2, 0.5F); + AbyssalCraftAPI.addCrystallization("oreBrass", "crystalCopper", 3, "crystalZinc", 2, 0.5F); + AbyssalCraftAPI.addSingleCrystallization(Items.rotten_flesh, new ItemStack(AbyssalCraft.crystalPhosphorus, 2), 0.1F); + // AbyssalCraftAPI.addSingleCrystallization(new ItemStack(AbyssalCraft.shoggothFlesh, 1, 0), new ItemStack(AbyssalCraft.crystalPhosphorus, 2), 0.2F); + // AbyssalCraftAPI.addCrystallization(new ItemStack(AbyssalCraft.shoggothFlesh, 1, 1), new ItemStack(AbyssalCraft.crystalPhosphorus, 2), new ItemStack(AbyssalCraft.crystalCoralium, 1), 0.2F); + // AbyssalCraftAPI.addCrystallization(new ItemStack(AbyssalCraft.shoggothFlesh, 1, 2), new ItemStack(AbyssalCraft.crystalPhosphorus, 2), new ItemStack(AbyssalCraft.crystalDreadium, 1), 0.2F); + // AbyssalCraftAPI.addCrystallization(new ItemStack(AbyssalCraft.shoggothFlesh, 1, 3), new ItemStack(AbyssalCraft.crystalPhosphorus, 2), new ItemStack(AbyssalCraft.crystalCarbon, 2), 0.2F); + // AbyssalCraftAPI.addCrystallization(new ItemStack(AbyssalCraft.shoggothFlesh, 1, 4), new ItemStack(AbyssalCraft.crystalPhosphorus, 2), new ItemStack(AbyssalCraft.shadowgem, 1), 0.2F); //Crystallization for dusts - CoreRegistry.addSingleCrystallization("dustIron", "crystalIron", 0.1F); - CoreRegistry.addSingleCrystallization("dustGold", "crystalGold", 0.1F); - CoreRegistry.addSingleCrystallization("dustTin", "crystalTin", 0.1F); - CoreRegistry.addSingleCrystallization("dustCopper", "crystalCopper", 0.1F); - CoreRegistry.addSingleCrystallization("dustCoal", "crystalCarbon", 0.1F); - CoreRegistry.addSingleCrystallization("dustAluminium", "crystalAluminium", 0.1F); - CoreRegistry.addCrystallization("dustBronze", "crystalCopper", 1, "crystalTin", 3, 0.1F); - CoreRegistry.addCrystallization("dustBrass", "crystalCopper", 3, "crystalZinc", 2, 0.1F); + AbyssalCraftAPI.addSingleCrystallization("dustIron", "crystalIron", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("dustGold", "crystalGold", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("dustTin", "crystalTin", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("dustCopper", "crystalCopper", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("dustCoal", "crystalCarbon", 0.1F); + AbyssalCraftAPI.addSingleCrystallization("dustAluminium", "crystalAluminium", 0.1F); + AbyssalCraftAPI.addCrystallization("dustBronze", "crystalCopper", 1, "crystalTin", 3, 0.1F); + AbyssalCraftAPI.addCrystallization("dustBrass", "crystalCopper", 3, "crystalZinc", 2, 0.1F); } private static void addTransmutation(){ - CoreRegistry.addTransmutation(AbyssalCraft.crystalAbyssalnite, new ItemStack(AbyssalCraft.abyingot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalCoralium, new ItemStack(AbyssalCraft.Cingot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalDreadium, new ItemStack(AbyssalCraft.dreadiumingot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.Dreadshard, new ItemStack(AbyssalCraft.dreadiumingot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalIron, new ItemStack(Items.iron_ingot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalGold, new ItemStack(Items.gold_ingot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalSulfur, new ItemStack(AbyssalCraft.sulfur, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalBlaze, new ItemStack(Items.blaze_powder, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalRedstone, new ItemStack(Items.redstone, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalHydrogen, new ItemStack(AbyssalCraft.crystalHydrogen), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalOxygen, new ItemStack(AbyssalCraft.crystalOxygen), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalNitrogen, new ItemStack(AbyssalCraft.crystalNitrogen), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalMethane, new ItemStack(AbyssalCraft.methane, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalTin, new ItemStack(AbyssalCraft.tinIngot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.crystalCopper, new ItemStack(AbyssalCraft.copperIngot, 1), 0.2F); - CoreRegistry.addTransmutation(AbyssalCraft.Darkstone, new ItemStack(Blocks.stone, 1), 0.0F); - CoreRegistry.addTransmutation(Blocks.stone, new ItemStack(AbyssalCraft.Darkstone, 1), 0.0F); - CoreRegistry.addTransmutation(Blocks.stonebrick, new ItemStack(AbyssalCraft.Darkstone_brick, 1), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.Darkstone_brick, new ItemStack(Blocks.stonebrick), 0.0F); - CoreRegistry.addTransmutation(Blocks.cobblestone, new ItemStack(AbyssalCraft.Darkstone_cobble, 1), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.Darkstone_cobble, new ItemStack(Blocks.cobblestone, 1), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.cstonebrick, new ItemStack(AbyssalCraft.cbrick, 4), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.cbrick, new ItemStack(AbyssalCraft.cstone, 1), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.Cbucket, new ItemStack(AbyssalCraft.Cwater, 1), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.Cwater, new ItemStack(AbyssalCraft.cstone, 8), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.antibucket, new ItemStack(AbyssalCraft.anticwater, 1), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.denseCarbonCluster, new ItemStack(Items.diamond), 0.5F); - CoreRegistry.addTransmutation(AbyssalCraft.dreadKey, new ItemStack(AbyssalCraft.portalPlacerJzh), 1.0F); - CoreRegistry.addTransmutation("crystalAluminium", "ingotAluminum", 0.2F); - CoreRegistry.addTransmutation("crystalAluminium", "ingotAluminium", 0.2F); - CoreRegistry.addTransmutation("crystalZinc", "ingotZinc", 0.2F); - CoreRegistry.addTransmutation(Blocks.lava, new ItemStack(AbyssalCraft.solidLava), 0.0F); - CoreRegistry.addTransmutation(Blocks.end_stone, new ItemStack(AbyssalCraft.ethaxium), 0.0F); - CoreRegistry.addTransmutation(AbyssalCraft.ethaxium, new ItemStack(Blocks.end_stone), 0.0F); - CoreRegistry.addTransmutation(new ItemStack(AbyssalCraft.ethaxiumbrick, 1, 0), new ItemStack(AbyssalCraft.ethaxium), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalAbyssalnite, new ItemStack(AbyssalCraft.abyingot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalCoralium, new ItemStack(AbyssalCraft.Cingot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalDreadium, new ItemStack(AbyssalCraft.dreadiumingot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.Dreadshard, new ItemStack(AbyssalCraft.dreadiumingot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalIron, new ItemStack(Items.iron_ingot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalGold, new ItemStack(Items.gold_ingot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalSulfur, new ItemStack(AbyssalCraft.sulfur, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalBlaze, new ItemStack(Items.blaze_powder, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalRedstone, new ItemStack(Items.redstone, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalHydrogen, new ItemStack(AbyssalCraft.crystalHydrogen), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalOxygen, new ItemStack(AbyssalCraft.crystalOxygen), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalNitrogen, new ItemStack(AbyssalCraft.crystalNitrogen), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalMethane, new ItemStack(AbyssalCraft.methane, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalTin, new ItemStack(AbyssalCraft.tinIngot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.crystalCopper, new ItemStack(AbyssalCraft.copperIngot, 1), 0.2F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.Darkstone, new ItemStack(Blocks.stone, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(Blocks.stone, new ItemStack(AbyssalCraft.Darkstone, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(Blocks.stonebrick, new ItemStack(AbyssalCraft.Darkstone_brick, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.Darkstone_brick, new ItemStack(Blocks.stonebrick), 0.0F); + AbyssalCraftAPI.addTransmutation(Blocks.cobblestone, new ItemStack(AbyssalCraft.Darkstone_cobble, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.Darkstone_cobble, new ItemStack(Blocks.cobblestone, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.cstonebrick, new ItemStack(AbyssalCraft.cbrick, 4), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.cbrick, new ItemStack(AbyssalCraft.cstone, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.Cbucket, new ItemStack(AbyssalCraft.Cwater, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.Cwater, new ItemStack(AbyssalCraft.cstone, 8), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.antibucket, new ItemStack(AbyssalCraft.anticwater, 1), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.denseCarbonCluster, new ItemStack(Items.diamond), 0.5F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.dreadKey, new ItemStack(AbyssalCraft.portalPlacerJzh), 1.0F); + AbyssalCraftAPI.addTransmutation("crystalAluminium", "ingotAluminum", 0.2F); + AbyssalCraftAPI.addTransmutation("crystalAluminium", "ingotAluminium", 0.2F); + AbyssalCraftAPI.addTransmutation("crystalZinc", "ingotZinc", 0.2F); + AbyssalCraftAPI.addTransmutation(Blocks.lava, new ItemStack(AbyssalCraft.solidLava), 0.0F); + AbyssalCraftAPI.addTransmutation(Blocks.end_stone, new ItemStack(AbyssalCraft.ethaxium), 0.0F); + AbyssalCraftAPI.addTransmutation(AbyssalCraft.ethaxium, new ItemStack(Blocks.end_stone), 0.0F); + AbyssalCraftAPI.addTransmutation(new ItemStack(AbyssalCraft.ethaxiumbrick, 1, 0), new ItemStack(AbyssalCraft.ethaxium), 0.0F); + } + + private static void addEngraving(){ + + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 0), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 0), AbyssalCraft.engravingCthulhu, 0.5F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 1), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 1), AbyssalCraft.engravingCthulhu, 0.5F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 2), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 2), AbyssalCraft.engravingCthulhu, 0.5F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 3), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 3), AbyssalCraft.engravingCthulhu, 0.5F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 4), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 4), AbyssalCraft.engravingCthulhu, 0.5F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 5), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 5), AbyssalCraft.engravingCthulhu, 0.5F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 6), new ItemStack(AbyssalCraft.cthulhuCoin, 1, 6), AbyssalCraft.engravingCthulhu, 0.5F); + + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 0), new ItemStack(AbyssalCraft.elderCoin, 1, 0), AbyssalCraft.engravingElder, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 1), new ItemStack(AbyssalCraft.elderCoin, 1, 1), AbyssalCraft.engravingElder, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 2), new ItemStack(AbyssalCraft.elderCoin, 1, 2), AbyssalCraft.engravingElder, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 3), new ItemStack(AbyssalCraft.elderCoin, 1, 3), AbyssalCraft.engravingElder, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 4), new ItemStack(AbyssalCraft.elderCoin, 1, 4), AbyssalCraft.engravingElder, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 5), new ItemStack(AbyssalCraft.elderCoin, 1, 5), AbyssalCraft.engravingElder, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 6), new ItemStack(AbyssalCraft.elderCoin, 1, 6), AbyssalCraft.engravingElder, 0.5F); + // + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 0), new ItemStack(AbyssalCraft.jzaharCoin, 1, 0), AbyssalCraft.engravingJzahar, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 1), new ItemStack(AbyssalCraft.jzaharCoin, 1, 1), AbyssalCraft.engravingJzahar, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 2), new ItemStack(AbyssalCraft.jzaharCoin, 1, 2), AbyssalCraft.engravingJzahar, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 3), new ItemStack(AbyssalCraft.jzaharCoin, 1, 3), AbyssalCraft.engravingJzahar, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 4), new ItemStack(AbyssalCraft.jzaharCoin, 1, 4), AbyssalCraft.engravingJzahar, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 5), new ItemStack(AbyssalCraft.jzaharCoin, 1, 5), AbyssalCraft.engravingJzahar, 0.5F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.coin, 1, 6), new ItemStack(AbyssalCraft.jzaharCoin, 1, 6), AbyssalCraft.engravingJzahar, 0.5F); + + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 0), new ItemStack(AbyssalCraft.coin, 1, 0), AbyssalCraft.engravingBlank, 0.0F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 1), new ItemStack(AbyssalCraft.coin, 1, 1), AbyssalCraft.engravingBlank, 0.0F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 2), new ItemStack(AbyssalCraft.coin, 1, 2), AbyssalCraft.engravingBlank, 0.0F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 3), new ItemStack(AbyssalCraft.coin, 1, 3), AbyssalCraft.engravingBlank, 0.0F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 4), new ItemStack(AbyssalCraft.coin, 1, 4), AbyssalCraft.engravingBlank, 0.0F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 5), new ItemStack(AbyssalCraft.coin, 1, 5), AbyssalCraft.engravingBlank, 0.0F); + AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.cthulhuCoin, 1, 6), new ItemStack(AbyssalCraft.coin, 1, 6), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 0), new ItemStack(AbyssalCraft.coin, 1, 0), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 1), new ItemStack(AbyssalCraft.coin, 1, 1), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 2), new ItemStack(AbyssalCraft.coin, 1, 2), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 3), new ItemStack(AbyssalCraft.coin, 1, 3), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 4), new ItemStack(AbyssalCraft.coin, 1, 4), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 5), new ItemStack(AbyssalCraft.coin, 1, 5), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.elderCoin, 1, 6), new ItemStack(AbyssalCraft.coin, 1, 6), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 0), new ItemStack(AbyssalCraft.coin, 1, 0), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 1), new ItemStack(AbyssalCraft.coin, 1, 1), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 2), new ItemStack(AbyssalCraft.coin, 1, 2), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 3), new ItemStack(AbyssalCraft.coin, 1, 3), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 4), new ItemStack(AbyssalCraft.coin, 1, 4), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 5), new ItemStack(AbyssalCraft.coin, 1, 5), AbyssalCraft.engravingBlank, 0.0F); + // AbyssalCraftAPI.addEngraving(new ItemStack(AbyssalCraft.jzaharCoin, 1, 6), new ItemStack(AbyssalCraft.coin, 1, 6), AbyssalCraft.engravingBlank, 0.0F); } } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CommonProxy.java b/src/main/java/com/shinoow/abyssalcraft/common/CommonProxy.java index 0c8bf952c..29eb6f923 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CommonProxy.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CommonProxy.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common; @@ -21,12 +22,9 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.client.gui.GuiCrystallizer; -import com.shinoow.abyssalcraft.client.gui.GuiTransmutator; -import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityCrystallizer; -import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityTransmutator; -import com.shinoow.abyssalcraft.common.inventory.ContainerCrystallizer; -import com.shinoow.abyssalcraft.common.inventory.ContainerTransmutator; +import com.shinoow.abyssalcraft.client.gui.*; +import com.shinoow.abyssalcraft.common.blocks.tile.*; +import com.shinoow.abyssalcraft.common.inventory.*; import cpw.mods.fml.common.network.IGuiHandler; @@ -46,6 +44,10 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int if (entity instanceof TileEntityTransmutator) return new ContainerTransmutator(player.inventory, (TileEntityTransmutator) entity); break; + case AbyssalCraft.engraverGuiID: + if (entity instanceof TileEntityEngraver) + return new ContainerEngraver(player.inventory, (TileEntityEngraver) entity); + break; } return null; } @@ -64,6 +66,10 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int if (entity instanceof TileEntityTransmutator) return new GuiTransmutator(player.inventory, (TileEntityTransmutator) entity); break; + case AbyssalCraft.engraverGuiID: + if (entity instanceof TileEntityEngraver) + return new GuiEngraver(player.inventory, (TileEntityEngraver) entity); + break; } return null; } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACBlocks.java b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACBlocks.java index 0de6e8c2a..7a5ade7e8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACBlocks.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACBlocks.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACCombat.java b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACCombat.java index ce4bc5ac3..c13e8de6b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACCombat.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACCombat.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACDecoration.java b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACDecoration.java index d50af19c0..c234ecab0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACDecoration.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACDecoration.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACFood.java b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACFood.java index 7a8613381..ed600e6e8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACFood.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACFood.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACItems.java b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACItems.java index b84facdbf..fe6fa6d60 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACItems.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACItems.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACTools.java b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACTools.java index eeec7fc27..c93fc124f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACTools.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/CreativeTabs/TabACTools.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACBasic.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACBasic.java index b4bff3384..dbaba009c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACBasic.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACBasic.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACButton.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACButton.java index f7e117c00..96e751e0c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACButton.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACButton.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACDoubleSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACDoubleSlab.java index e89408988..516263197 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACDoubleSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACDoubleSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACFence.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACFence.java index 43f92bb8b..b326b63db 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACFence.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACFence.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACOre.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACOre.java index 13c976029..851f5ef5e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACOre.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACOre.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACPressureplate.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACPressureplate.java index 7a928df83..c98cd052d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACPressureplate.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACPressureplate.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACSingleSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACSingleSlab.java index d526ba419..1813cd8cd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACSingleSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACSingleSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACStairs.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACStairs.java index d5c603e74..6d36419bf 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACStairs.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockACStairs.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAbyssPortal.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAbyssPortal.java index f75371931..5304e234a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAbyssPortal.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAbyssPortal.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAltar.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAltar.java index c906b261e..022ae6ee3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAltar.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAltar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAntiliquid.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAntiliquid.java index 87bc5c830..313823e21 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAntiliquid.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockAntiliquid.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; @@ -26,7 +27,7 @@ import net.minecraftforge.fluids.BlockFluidClassic; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCLiquid.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCLiquid.java index a7e62f4ff..5e7323cdd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCLiquid.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCLiquid.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; @@ -31,7 +32,7 @@ import net.minecraftforge.fluids.BlockFluidClassic; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.ICoraliumEntity; +import com.shinoow.abyssalcraft.api.entity.ICoraliumEntity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothFistSpawner.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothFistSpawner.java index b1d27db02..981765cd3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothFistSpawner.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothFistSpawner.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothSpawner.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothSpawner.java index 9a84b3db2..33b04c66d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothSpawner.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockChagarothSpawner.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumfire.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumfire.java index e34ac659e..444aad1eb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumfire.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumfire.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumstone.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumstone.java index 6e96aa270..9765248a0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumstone.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCoraliumstone.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrate.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrate.java index fb5fd9f22..b599d585c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrate.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrate.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrystallizer.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrystallizer.java index 9af693393..d6b0f2efb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrystallizer.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockCrystallizer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDGhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDGhead.java index dc84a0f75..12f4a25c3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDGhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDGhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLeaves.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLeaves.java index 60d4bec43..645c29706 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLeaves.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLeaves.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLog.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLog.java index 4a0832b2c..5ff865aa7 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLog.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTLog.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTSapling.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTSapling.java index ebcf70b01..680aa3b8a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTSapling.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDLTSapling.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; import java.util.Random; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDSGlow.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDSGlow.java index 370989dd1..d71fd75be 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDSGlow.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDSGlow.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarklandsgrass.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarklandsgrass.java index 3955f3fe8..3435b3ec5 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarklandsgrass.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarklandsgrass.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstone.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstone.java index 57afaaf8c..5edc1eef8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstone.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstone.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstonecobblewall.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstonecobblewall.java index 0c1dad889..ba7bf74df 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstonecobblewall.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstonecobblewall.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslab.java index 3402c822e..569034cba 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslabdouble.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslabdouble.java index a368074f1..9409fa919 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslabdouble.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDarkstoneslabdouble.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarBottom.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarBottom.java index a824a4987..d71aef2e3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarBottom.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarBottom.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; @@ -25,8 +26,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityDreadAltarBottom; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; import cpw.mods.fml.client.FMLClientHandler; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarTop.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarTop.java index 9f07f9f7a..a59124f78 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarTop.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadAltarTop.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; @@ -28,10 +29,10 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityDreadAltarTop; import com.shinoow.abyssalcraft.common.structures.dreadlands.chagarothlair; import com.shinoow.abyssalcraft.common.util.SpecialTextUtil; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; import cpw.mods.fml.client.FMLClientHandler; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadFire.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadFire.java index 772e66086..56becef0a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadFire.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadFire.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadgrass.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadgrass.java index c58f82064..fe29c7602 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadgrass.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadgrass.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadguardSpawner.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadguardSpawner.java index 3a915d058..a6dbb0f71 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadguardSpawner.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadguardSpawner.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlandsPortal.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlandsPortal.java index d0bc6a0ad..44f43bbdd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlandsPortal.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlandsPortal.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadleaves.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadleaves.java index fb605c32f..b2decf247 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadleaves.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadleaves.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlog.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlog.java index 33aa2c585..646ee74b5 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlog.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadlog.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadore.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadore.java index 58e2c1e9f..eddf30fad 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadore.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadore.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadsapling.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadsapling.java index fefe4ac81..066f3a438 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadsapling.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockDreadsapling.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEngraver.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEngraver.java new file mode 100644 index 000000000..e89a30cc5 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEngraver.java @@ -0,0 +1,216 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.blocks; + +import java.util.Random; + +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.*; +import net.minecraft.item.*; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.*; +import net.minecraft.world.World; + +import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityEngraver; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.*; + +public class BlockEngraver extends BlockContainer { + + private final Random rand = new Random(); + private final boolean isActive; + private static boolean keepInventory; + + public BlockEngraver(boolean par1) { + super(Material.rock); + isActive = par1; + setBlockTextureName("anvil_top_damaged_0"); + if(!isActive) + setCreativeTab(AbyssalCraft.tabDecoration); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return -6; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public Item getItemDropped(int par1, Random par1Random, int par3) + { + return Item.getItemFromBlock(AbyssalCraft.engraver); + } + + @Override + public void onBlockAdded(World par1World, int par2, int par3, int par4) + { + super.onBlockAdded(par1World, par2, par3, par4); + getDirection(par1World, par2, par3, par4); + } + + private void getDirection(World par1World, int par2, int par3, int par4) { + if (!par1World.isRemote){ + Block block = par1World.getBlock(par2, par3, par4 - 1); + Block block1 = par1World.getBlock(par2, par3, par4 + 1); + Block block2 = par1World.getBlock(par2 - 1, par3, par4); + Block block3 = par1World.getBlock(par2 + 1, par3, par4); + byte b0 = 3; + + if (block.func_149730_j() && !block1.func_149730_j()) + b0 = 3; + + if (block1.func_149730_j() && !block.func_149730_j()) + b0 = 2; + + if (block2.func_149730_j() && !block3.func_149730_j()) + b0 = 5; + + if (block3.func_149730_j() && !block2.func_149730_j()) + b0 = 4; + + par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2); + } + } + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + if(!par1World.isRemote) + FMLNetworkHandler.openGui(par5EntityPlayer, AbyssalCraft.instance, AbyssalCraft.engraverGuiID, par1World, par2, par3, par4); + return true; + } + + public static void updateEngraverBlockState(boolean par0, World par1World, int par2, int par3, int par4) { + int l = par1World.getBlockMetadata(par2, par3, par4); + TileEntity tileentity = par1World.getTileEntity(par2, par3, par4); + keepInventory = true; + + if (par0) + par1World.setBlock(par2, par3, par4, AbyssalCraft.engraver_on); + else + par1World.setBlock(par2, par3, par4, AbyssalCraft.engraver); + + keepInventory = false; + par1World.setBlockMetadataWithNotify(par2, par3, par4, l, 2); + + if (tileentity != null){ + tileentity.validate(); + par1World.setTileEntity(par2, par3, par4, tileentity); + } + } + + @Override + public TileEntity createNewTileEntity(World var1, int var2) { + return new TileEntityEngraver(); + } + + @Override + public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { + int l = MathHelper.floor_double(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if (l == 0) + par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2); + + if (l == 1) + par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2); + + if (l == 2) + par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2); + + if (l == 3) + par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2); + + if (par6ItemStack.hasDisplayName()) + ((TileEntityEngraver)par1World.getTileEntity(par2, par3, par4)).func_145951_a(par6ItemStack.getDisplayName()); + } + + @Override + public void breakBlock(World par1World, int par2, int par3, int par4, Block par5Block, int par6) { + if (!keepInventory){ + TileEntityEngraver tileentityengraver = (TileEntityEngraver)par1World.getTileEntity(par2, par3, par4); + + if (tileentityengraver != null){ + for (int i1 = 0; i1 < tileentityengraver.getSizeInventory(); ++i1){ + ItemStack itemstack = tileentityengraver.getStackInSlot(i1); + + if (itemstack != null){ + float f = rand.nextFloat() * 0.8F + 0.1F; + float f1 = rand.nextFloat() * 0.8F + 0.1F; + float f2 = rand.nextFloat() * 0.8F + 0.1F; + + while (itemstack.stackSize > 0){ + int j1 = rand.nextInt(21) + 10; + + if (j1 > itemstack.stackSize) + j1 = itemstack.stackSize; + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(par1World, par2 + f, par3 + f1, par4 + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()) + entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + + float f3 = 0.05F; + entityitem.motionX = (float)rand.nextGaussian() * f3; + entityitem.motionY = (float)rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float)rand.nextGaussian() * f3; + par1World.spawnEntityInWorld(entityitem); + } + } + } + + par1World.func_147453_f(par2, par3, par4, par5Block); + } + } + + super.breakBlock(par1World, par2, par3, par4, par5Block, par6); + } + + @Override + public boolean hasComparatorInputOverride() + { + return true; + } + + @Override + public int getComparatorInputOverride(World par1World, int par2, int par3, int par4, int par5) + { + return Container.calcRedstoneFromInventory((IInventory)par1World.getTileEntity(par2, par3, par4)); + } + + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World par1World, int par2, int par3, int par4) + { + return Item.getItemFromBlock(AbyssalCraft.engraver); + } +} diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumBrick.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumBrick.java index 0bf8b0f6e..da682e5cb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumBrick.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumBrick.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumPillar.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumPillar.java index 2d5017d1e..3c8cb6201 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumPillar.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockEthaxiumPillar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODB.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODB.java index fd6c85c3d..cb8881631 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODB.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODB.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODBcore.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODBcore.java index 5b220145f..0f62c05fe 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODBcore.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockODBcore.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOhead.java index ae4c50d1c..4c06e998c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholFire.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholFire.java index 861d1ef52..ccabd5e31 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholFire.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholFire.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholPortal.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholPortal.java index 370d23cbe..373b9f015 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholPortal.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockOmotholPortal.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPSDL.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPSDL.java index 0da001d77..9b12f14fd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPSDL.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPSDL.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; @@ -28,8 +29,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityPSDL; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; public class BlockPSDL extends BlockContainer { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPhead.java index e2918a6d3..b5d44164d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockPhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockSolidLava.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockSolidLava.java index 24c3d8859..4defcd5f8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockSolidLava.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockSolidLava.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockTransmutator.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockTransmutator.java index 81b90f868..43d8f8c03 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockTransmutator.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockTransmutator.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockWhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockWhead.java index a100aa315..e4bfbd829 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockWhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/BlockWhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/IngotBlock.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/IngotBlock.java index f35b2eab1..da0e2e562 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/IngotBlock.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/IngotBlock.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbyDreadbrickSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbyDreadbrickSlab.java index d30952b87..68cebc1ab 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbyDreadbrickSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbyDreadbrickSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbySlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbySlab.java index 1d2c6e1fa..63f719431 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbySlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAbySlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAltar.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAltar.java index 731c88b18..55654f884 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAltar.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemAltar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemBlockColorName.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemBlockColorName.java index bbb2dd5e8..ac0907978 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemBlockColorName.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemBlockColorName.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemCstonebrickSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemCstonebrickSlab.java index 781d1d3fa..ad96bf857 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemCstonebrickSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemCstonebrickSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDLTSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDLTSlab.java index f88fe2eb7..4a17e633d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDLTSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDLTSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkbrickSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkbrickSlab.java index 206d0be9f..9cbdd7fb0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkbrickSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkbrickSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkcobbleSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkcobbleSlab.java index 4b8d58c0d..f4314c410 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkcobbleSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkcobbleSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkstoneSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkstoneSlab.java index a7ed4e2fb..e1b7cc817 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkstoneSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDarkstoneSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDreadbrickSlab.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDreadbrickSlab.java index cb9ff7ace..e19f839cd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDreadbrickSlab.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemDreadbrickSlab.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemMetadataBlock.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemMetadataBlock.java index e6fd2fbb9..f2a102cc7 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemMetadataBlock.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemMetadataBlock.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemODB.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemODB.java index edcf28c1b..b5a853cf4 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemODB.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/itemblock/ItemODB.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.itemblock; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityAltar.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityAltar.java index df2b82ee8..04ce54430 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityAltar.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityAltar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothFistSpawner.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothFistSpawner.java index 0ea14f52a..465a840b2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothFistSpawner.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothFistSpawner.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothSpawner.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothSpawner.java index e3aae69ba..7b10210fa 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothSpawner.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityChagarothSpawner.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrate.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrate.java index 0059735c1..2e875b077 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrate.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrate.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrystallizer.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrystallizer.java index 7dac949cb..9e4b2333f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrystallizer.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityCrystallizer.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.blocks.tile; import java.util.HashMap; @@ -14,11 +30,11 @@ import net.minecraft.tileentity.TileEntity; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI.FuelType; +import com.shinoow.abyssalcraft.api.recipe.CrystallizerRecipes; import com.shinoow.abyssalcraft.common.blocks.BlockCrystallizer; import com.shinoow.abyssalcraft.common.items.ItemCrystal; -import com.shinoow.abyssalcraft.core.util.CoreRegistry; -import com.shinoow.abyssalcraft.core.util.CoreRegistry.FuelType; -import com.shinoow.abyssalcraft.core.util.recipes.CrystallizerRecipes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -286,22 +302,21 @@ public void updateEntity() */ private boolean canCrystallize() { - if (crystallizerItemStacks[0] == null) + if (crystallizerItemStacks[0] == null || CrystallizerRecipes.crystallization().getCrystallizationResult(crystallizerItemStacks[0]) == null) return false; else { - if(CrystallizerRecipes.crystallization().getCrystallizationResult(crystallizerItemStacks[0]) == null) return false; ItemStack[] itemstack = CrystallizerRecipes.crystallization().getCrystallizationResult(crystallizerItemStacks[0]); if(itemstack[0] == null && itemstack[1] == null) return false; if(crystallizerItemStacks[2] == null && crystallizerItemStacks[3] == null) return true; - if(!crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] != null && itemstack[1] == null) return false; - if(!crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] == null && itemstack[1] != null) return false; if(crystallizerItemStacks[2] == null && crystallizerItemStacks[3] != null && itemstack[1] == null || - crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] != null && itemstack[1] == null) return true; - if(crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] == null || - crystallizerItemStacks[2] == null && crystallizerItemStacks[3].isItemEqual(itemstack[1]) && itemstack[1] != null) return true; - if(!crystallizerItemStacks[2].isItemEqual(itemstack[0]) && !crystallizerItemStacks[3].isItemEqual(itemstack[1])) return false; + crystallizerItemStacks[2] == null && crystallizerItemStacks[3].isItemEqual(itemstack[1]) && itemstack[1] != null || + crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] != null && itemstack[1] == null || + crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] == null) return true; + if(!crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] != null && itemstack[1] == null || + !crystallizerItemStacks[2].isItemEqual(itemstack[0]) && crystallizerItemStacks[3] == null && itemstack[1] != null || + !crystallizerItemStacks[2].isItemEqual(itemstack[0]) && !crystallizerItemStacks[3].isItemEqual(itemstack[1])) return false; int result = crystallizerItemStacks[2].stackSize + itemstack[0].stackSize; int result2 = crystallizerItemStacks[3].stackSize + itemstack[1].stackSize; return result <= getInventoryStackLimit() && result2 <= getInventoryStackLimit() && result <= crystallizerItemStacks[2].getMaxStackSize() && result2 <= crystallizerItemStacks[3].getMaxStackSize(); @@ -358,7 +373,7 @@ public static int getCrystallizationTime(ItemStack par1ItemStack) if (item == Items.blaze_powder) return 1200; if (item == Items.blaze_rod) return 2400; if (item == AbyssalCraft.methane) return 10000; - return CoreRegistry.getFuelValue(par1ItemStack, FuelType.CRYSTALLIZER); + return AbyssalCraftAPI.getFuelValue(par1ItemStack, FuelType.CRYSTALLIZER); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDGhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDGhead.java index 95f4d0b3a..2fc18f228 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDGhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDGhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarBottom.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarBottom.java index f982152de..4613708b2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarBottom.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarBottom.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarTop.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarTop.java index a773d6cb6..242c3b309 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarTop.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadAltarTop.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadguardSpawner.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadguardSpawner.java index d2e8f9635..183a1f0b3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadguardSpawner.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityDreadguardSpawner.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityEngraver.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityEngraver.java new file mode 100644 index 000000000..627decc57 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityEngraver.java @@ -0,0 +1,283 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.blocks.tile; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.*; +import net.minecraft.tileentity.TileEntity; + +import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.item.ItemEngraving; +import com.shinoow.abyssalcraft.api.recipe.EngraverRecipes; +import com.shinoow.abyssalcraft.common.blocks.BlockEngraver; + +import cpw.mods.fml.relauncher.*; + +public class TileEntityEngraver extends TileEntity implements ISidedInventory { + + private static final int[] slotsTop = new int[] {0}; + private static final int[] slotsBottom = new int[] {2, 1}; + private static final int[] slotsSides = new int[] {1}; + + private ItemStack[] engraverItemStacks = new ItemStack[3]; + + public int engraverProcessTime; + private String containerName; + + @Override + public int getSizeInventory() { + return engraverItemStacks.length; + } + + @Override + public ItemStack getStackInSlot(int var1) { + return engraverItemStacks[var1]; + } + + @Override + public ItemStack decrStackSize(int var1, int var2) { + + if(engraverItemStacks[var1] != null){ + ItemStack itemstack; + if(engraverItemStacks[var1].stackSize <= var2){ + itemstack = engraverItemStacks[var1]; + engraverItemStacks[var1] = null; + return itemstack; + } else { + itemstack = engraverItemStacks[var1].splitStack(var2); + if(engraverItemStacks[var1].stackSize == 0) + engraverItemStacks[var1] = null; + + return itemstack; + } + } + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int var1) { + + if(engraverItemStacks[var1] != null){ + ItemStack itemstack = engraverItemStacks[var1]; + engraverItemStacks[var1] = null; + return itemstack; + } else + return null; + } + + @Override + public void setInventorySlotContents(int var1, ItemStack var2) { + + engraverItemStacks[var1] = var2; + + if(var2 != null && var2.stackSize > getInventoryStackLimit()) + var2.stackSize = getInventoryStackLimit(); + + } + + @Override + public String getInventoryName() + { + return hasCustomInventoryName() ? containerName : "container.abyssalcraft.engraver"; + } + + @Override + public boolean hasCustomInventoryName() + { + return containerName != null && containerName.length() > 0; + } + + public void func_145951_a(String par1) + { + containerName = par1; + } + + @Override + public void readFromNBT(NBTTagCompound par1) + { + super.readFromNBT(par1); + NBTTagList nbttaglist = par1.getTagList("Items", 10); + engraverItemStacks = new ItemStack[getSizeInventory()]; + + for (int i = 0; i < nbttaglist.tagCount(); ++i) + { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + byte b0 = nbttagcompound1.getByte("Slot"); + + if (b0 >= 0 && b0 < engraverItemStacks.length) + engraverItemStacks[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + + engraverProcessTime = par1.getShort("ProcessTime"); + + if (par1.hasKey("CustomName", 8)) + containerName = par1.getString("CustomName"); + } + + @Override + public void writeToNBT(NBTTagCompound par1) + { + super.writeToNBT(par1); + par1.setShort("ProcessTime", (short)engraverProcessTime); + NBTTagList nbttaglist = new NBTTagList(); + + for (int i = 0; i < engraverItemStacks.length; ++i) + if (engraverItemStacks[i] != null) + { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte)i); + engraverItemStacks[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + + par1.setTag("Items", nbttaglist); + + if (hasCustomInventoryName()) + par1.setString("CustomName", containerName); + } + + @Override + public int getInventoryStackLimit() { + + return 64; + } + + @SideOnly(Side.CLIENT) + public int getProcessProgressScaled(int par1) + { + return engraverProcessTime * par1 / 200; + } + + public boolean isEngraving(){ + return engraverItemStacks[1] != null; + } + + @Override + public void updateEntity() + { + + boolean flag1 = false; + + if (!worldObj.isRemote) + { + if (isEngraving() && canEngrave()) + { + ++engraverProcessTime; + + if (engraverProcessTime == 200) + { + engraverProcessTime = 0; + engraveItem(); + flag1 = true; + engraverItemStacks[1].setItemDamage(engraverItemStacks[1].getItemDamage() + 1); + if (engraverItemStacks[1].getItemDamage() == engraverItemStacks[1].getMaxDamage()) + engraverItemStacks[1] = engraverItemStacks[1].getItem().getContainerItem(engraverItemStacks[1]); + } + } else + engraverProcessTime = 0; + + if (engraverProcessTime > 0) + { + flag1 = true; + BlockEngraver.updateEngraverBlockState(engraverProcessTime > 0, worldObj, xCoord, yCoord, zCoord); + } + } + + if (flag1) + markDirty(); + } + + /** + * Returns true if the engraver can engrave an item, i.e. has a source item, destination stack isn't full, etc. + */ + private boolean canEngrave() + { + if (engraverItemStacks[0] == null || EngraverRecipes.engraving().getEngravingResult(engraverItemStacks[0]) == null) + return false; + else + { + ItemStack itemstack = EngraverRecipes.engraving().getEngravingResult(engraverItemStacks[0]); + boolean blank = engraverItemStacks[1].getItem() == AbyssalCraft.engravingBlank && itemstack.getItem() == AbyssalCraft.coin; + boolean cthulhu = engraverItemStacks[1].getItem() == AbyssalCraft.engravingCthulhu && itemstack.getItem() == AbyssalCraft.cthulhuCoin; + if (itemstack == null) return false; + if(blank == false && cthulhu == false) return false; + if (engraverItemStacks[2] == null && blank == true && cthulhu == false) return true; + if (engraverItemStacks[2] == null && cthulhu == true && blank == false) return true; + if (!engraverItemStacks[2].isItemEqual(itemstack)) return false; + int result = engraverItemStacks[2].stackSize + itemstack.stackSize; + return result <= getInventoryStackLimit() && result <= engraverItemStacks[2].getMaxStackSize(); + } + } + + /** + * Turn one item from the engraver source stack into the appropriate processed item in the engraver result stack + */ + public void engraveItem() + { + if (canEngrave()) + { + ItemStack itemstack = EngraverRecipes.engraving().getEngravingResult(engraverItemStacks[0]); + + if (engraverItemStacks[2] == null) + engraverItemStacks[2] = itemstack.copy(); + else if (engraverItemStacks[2].getItem() == itemstack.getItem()) + engraverItemStacks[2].stackSize += itemstack.stackSize; + + --engraverItemStacks[0].stackSize; + + if (engraverItemStacks[0].stackSize <= 0) + engraverItemStacks[0] = null; + } + } + + @Override + public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) + { + return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false : par1EntityPlayer.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64.0D; + } + + @Override + public void openInventory() {} + + @Override + public void closeInventory() {} + + @Override + public boolean isItemValidForSlot(int par1, ItemStack par2ItemStack) + { + return par1 == 2 ? false : par1 == 1 ? par2ItemStack.getItem() instanceof ItemEngraving : true; + } + + @Override + public int[] getAccessibleSlotsFromSide(int var1) { + + return var1 == 0 ? slotsBottom : var1 == 1 ? slotsTop : slotsSides; + } + + @Override + public boolean canInsertItem(int var1, ItemStack var2, int var3) { + + return isItemValidForSlot(var1, var2); + } + + @Override + public boolean canExtractItem(int var1, ItemStack var2, int var3) { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityODB.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityODB.java index b4d8bb729..f5255b03b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityODB.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityODB.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityOhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityOhead.java index 9698e32b5..4c964d8c2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityOhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityOhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPSDL.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPSDL.java index d1f334139..2a65fd749 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPSDL.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPSDL.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPhead.java index 4341e7214..0eb08e72b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityPhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityTransmutator.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityTransmutator.java index d181c93ca..b743bf8b8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityTransmutator.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityTransmutator.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.blocks.tile; import net.minecraft.entity.player.EntityPlayer; @@ -10,11 +26,11 @@ import net.minecraft.tileentity.TileEntity; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI.FuelType; +import com.shinoow.abyssalcraft.api.recipe.TransmutatorRecipes; import com.shinoow.abyssalcraft.common.blocks.BlockTransmutator; import com.shinoow.abyssalcraft.common.items.ItemCrystal; -import com.shinoow.abyssalcraft.core.util.CoreRegistry; -import com.shinoow.abyssalcraft.core.util.CoreRegistry.FuelType; -import com.shinoow.abyssalcraft.core.util.recipes.TransmutatorRecipes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,7 +44,7 @@ public class TileEntityTransmutator extends TileEntity implements ISidedInventor * The ItemStacks that hold the items currently being used in the transmutator */ private ItemStack[] transmutatorItemStacks = new ItemStack[3]; - /** The number of ticks that the furnace will keep burning */ + /** The number of ticks that the transmutator will keep burning */ public int transmutatorBurnTime; /** * The number of ticks that a fresh copy of the currently-burning item would keep the transmutator burning for @@ -217,7 +233,7 @@ public int getBurnTimeRemainingScaled(int par1) } /** - * Furnace isTransmutating + * Transmuator is transmutating */ public boolean isTransmutating() { @@ -278,7 +294,7 @@ public void updateEntity() } /** - * Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc. + * Returns true if the transmutator can process an item, i.e. has a source item, destination stack isn't full, etc. */ private boolean canProcess() { @@ -296,7 +312,7 @@ private boolean canProcess() } /** - * Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack + * Turn one item from the transmutator source stack into the appropriate processed item in the transmutator result stack */ public void processItem() { @@ -349,14 +365,14 @@ public static int getItemBurnTime(ItemStack par1ItemStack) if (item == Items.blaze_powder) return 1200; if (item == Items.blaze_rod) return 2400; if (item == AbyssalCraft.methane) return 10000; - return CoreRegistry.getFuelValue(par1ItemStack, FuelType.TRANSMUTATOR); + return AbyssalCraftAPI.getFuelValue(par1ItemStack, FuelType.TRANSMUTATOR); } } public static boolean isItemFuel(ItemStack par1ItemStack) { /** - * Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't + * Returns the number of ticks that the supplied fuel item will keep the transmutator burning, or 0 if the item isn't * fuel */ return getItemBurnTime(par1ItemStack) > 0; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityWhead.java b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityWhead.java index 530c67cd9..c317a5673 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityWhead.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/blocks/tile/TileEntityWhead.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.blocks.tile; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCoins.java b/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCoins.java new file mode 100644 index 000000000..9e3b5047a --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCoins.java @@ -0,0 +1,46 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.creativetabs; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; + +import com.shinoow.abyssalcraft.AbyssalCraft; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class TabACCoins extends CreativeTabs { + + public TabACCoins(int id, String name){ + super(id, name); + } + + @Override + @SideOnly(Side.CLIENT) + public String getTranslatedTabLabel() + { + return "itemgroup." + getTabLabel(); + } + + @Override + @SideOnly(Side.CLIENT) + public Item getTabIconItem() + { + return AbyssalCraft.coin; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCrystals.java b/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCrystals.java index b08b88507..b3bb03766 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCrystals.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/creativetabs/TabACCrystals.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.creativetabs; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentIronWall.java b/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentIronWall.java index b0d73c5c3..a67b0576f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentIronWall.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentIronWall.java @@ -1,22 +1,22 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.enchantments; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnumEnchantmentType; +import net.minecraft.enchantment.*; public class EnchantmentIronWall extends Enchantment { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentLightPierce.java b/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentLightPierce.java index eb17affff..124faa982 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentLightPierce.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentLightPierce.java @@ -1,26 +1,26 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.enchantments; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentDamage; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.EnumCreatureAttribute; -import net.minecraft.item.ItemAxe; -import net.minecraft.item.ItemStack; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; + +import net.minecraft.enchantment.*; +import net.minecraft.entity.*; +import net.minecraft.item.*; public class EnchantmentLightPierce extends EnchantmentDamage { @@ -50,7 +50,7 @@ public int getMaxLevel() @Override public float calcModifierLiving(int par1, EntityLivingBase par2EntityLivingBase) { - return par2EntityLivingBase.getCreatureAttribute() == Enum.valueOf(EnumCreatureAttribute.class, "SHADOW") ? par1 * 2.5F : 0.0F; + return par2EntityLivingBase.getCreatureAttribute() == AbyssalCraftAPI.SHADOW ? par1 * 2.5F : 0.0F; } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentWeaponInfusion.java b/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentWeaponInfusion.java index cd3c461f7..83981ab0c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentWeaponInfusion.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/enchantments/EnchantmentWeaponInfusion.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.enchantments; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityAbyssalZombie.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityAbyssalZombie.java index 3b1faaec8..3aeb4511d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityAbyssalZombie.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityAbyssalZombie.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -33,7 +34,7 @@ import net.minecraftforge.common.ForgeModContainer; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.ICoraliumEntity; +import com.shinoow.abyssalcraft.api.entity.ICoraliumEntity; public class EntityAbyssalZombie extends EntityMob implements ICoraliumEntity { @@ -240,7 +241,7 @@ public EnumCreatureAttribute getCreatureAttribute() } @Override - protected void dropFewItems(boolean par1, int par2) + protected void dropRareDrop(int par1) { switch (rand.nextInt(3)) { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagaroth.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagaroth.java index 40cdf40a1..6c55204f3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagaroth.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagaroth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -35,8 +36,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; import com.shinoow.abyssalcraft.common.util.SpecialTextUtil; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; public class EntityChagaroth extends EntityMob implements IBossDisplayData, IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothFist.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothFist.java index 2df51c7b1..05b7aa4a7 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothFist.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothFist.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -22,7 +23,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; public class EntityChagarothFist extends EntityMob implements IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothSpawn.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothSpawn.java index 293b7a9a6..312a50fd0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothSpawn.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityChagarothSpawn.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -25,7 +26,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; public class EntityChagarothSpawn extends EntityMob implements IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDemonPig.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDemonPig.java index 3b7e9ef81..12d13bb24 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDemonPig.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDemonPig.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDepthsghoul.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDepthsghoul.java index a136665dc..cdcf37cce 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDepthsghoul.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDepthsghoul.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -34,7 +35,7 @@ import net.minecraftforge.common.ForgeModContainer; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.ICoraliumEntity; +import com.shinoow.abyssalcraft.api.entity.ICoraliumEntity; public class EntityDepthsGhoul extends EntityMob implements ICoraliumEntity { @@ -239,20 +240,20 @@ public boolean attackEntityAsMob(Entity par1Entity) @Override protected String getLivingSound() { - String entitysound = "mob.zombie.say"; + String entitysound = "abyssalcraft:ghoul.normal.idle"; switch (getGhoulType()) { case 0: - entitysound = "mob.zombie.say"; //abyssalcraft:ghoul.normal.idle + entitysound = "abyssalcraft:ghoul.normal.idle"; break; case 1: entitysound = "abyssalcraft:ghoul.pete.idle"; break; case 2: - entitysound = "mob.zombie.say"; //abyssalcraft:ghoul.wilson.idle + entitysound = "abyssalcraft:ghoul.normal.idle"; //abyssalcraft:ghoul.wilson.idle break; case 3: - entitysound = "mob.zombie.say"; //abyssalcraft:ghoul.orange.idle + entitysound = "abyssalcraft:ghoul.normal.idle"; //abyssalcraft:ghoul.orange.idle } return entitysound; } @@ -281,22 +282,7 @@ protected String getHurtSound() @Override protected String getDeathSound() { - String entitysound = "mob.zombie.death"; - switch (getGhoulType()) - { - case 0: - entitysound = "mob.zombie.death"; //abyssalcraft:ghoul.normal.death - break; - case 1: - entitysound = "abyssalcraft:ghoul.pete.death"; - break; - case 2: - entitysound = "mob.zombie.death"; //abyssalcraft:ghoul.wilson.death - break; - case 3: - entitysound = "mob.zombie.death"; //abyssalcraft:ghoul.orange.death - } - return entitysound; + return "abyssalcraft:ghoul.death"; } @Override @@ -318,32 +304,22 @@ public EnumCreatureAttribute getCreatureAttribute() } @Override - protected void dropFewItems(boolean par1, int par2) + protected void dropRareDrop(int par1) { - switch (rand.nextInt(3)) - { + switch(getGhoulType()){ case 0: - dropItem(Items.bone, 1); + dropItem(Item.getItemFromBlock(AbyssalCraft.DGhead),1); break; case 1: - dropItem(AbyssalCraft.sword, 1); + dropItem(Item.getItemFromBlock(AbyssalCraft.Phead),1); break; case 2: - dropItem(AbyssalCraft.Coralium, rand.nextInt(3)); - } - } - - @Override - protected void dropRareDrop(int par1) - { - if(getGhoulType() == 0) - dropItem(Item.getItemFromBlock(AbyssalCraft.DGhead),1); - else if(getGhoulType() == 1) - dropItem(Item.getItemFromBlock(AbyssalCraft.Phead),1); - else if(getGhoulType() == 2) dropItem(Item.getItemFromBlock(AbyssalCraft.Whead),1); - else if(getGhoulType() == 3) + break; + case 3: dropItem(Item.getItemFromBlock(AbyssalCraft.Ohead),1); + break; + } } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonBoss.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonBoss.java index 6ce8406e1..083065327 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonBoss.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonBoss.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -27,9 +28,9 @@ import net.minecraft.world.*; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.ICoraliumEntity; import com.shinoow.abyssalcraft.client.lib.ParticleEffects; import com.shinoow.abyssalcraft.common.util.SpecialTextUtil; -import com.shinoow.abyssalcraft.core.api.entity.ICoraliumEntity; public class EntityDragonBoss extends EntityMob implements IBossDisplayData, IEntityMultiPart, ICoraliumEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonMinion.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonMinion.java index 30e85189e..66d5ce1ba 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonMinion.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDragonMinion.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -26,7 +27,7 @@ import net.minecraft.world.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.ICoraliumEntity; +import com.shinoow.abyssalcraft.api.entity.ICoraliumEntity; public class EntityDragonMinion extends EntityMob implements IEntityMultiPart, ICoraliumEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadSpawn.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadSpawn.java index 008dfa957..7c0cc9d5d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadSpawn.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadSpawn.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -25,7 +26,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; public class EntityDreadSpawn extends EntityMob implements IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadling.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadling.java index da02e04d4..167b12c64 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadling.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityDreadling.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -25,7 +26,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; public class EntityDreadling extends EntityMob implements IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityGatekeeperMinion.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityGatekeeperMinion.java index 2829d78a0..f70e49690 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityGatekeeperMinion.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityGatekeeperMinion.java @@ -1,7 +1,23 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.entity; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.*; +import com.shinoow.abyssalcraft.api.entity.*; import net.minecraft.block.Block; import net.minecraft.entity.EnumCreatureAttribute; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityJzahar.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityJzahar.java index 4403f5d65..76dde2215 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityJzahar.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityJzahar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -32,8 +33,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.*; import com.shinoow.abyssalcraft.common.util.SpecialTextUtil; -import com.shinoow.abyssalcraft.core.api.entity.*; public class EntityJzahar extends EntityMob implements IBossDisplayData, IRangedAttackMob, IAntiEntity, ICoraliumEntity, IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityLesserShoggoth.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityLesserShoggoth.java index 34244791e..f9a7a0de2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityLesserShoggoth.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityLesserShoggoth.java @@ -1,9 +1,26 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.entity; import java.util.UUID; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.*; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.*; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -26,9 +43,11 @@ import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.ForgeModContainer; @@ -85,6 +104,30 @@ public boolean canBreatheUnderwater() { return true; } + @Override + public String getCommandSenderName() + { + String entityname = StatCollector.translateToLocal("entity.abyssalcraft.lessershoggoth.name"); + switch (getShoggothType()) + { + case 0: + entityname = StatCollector.translateToLocal("entity.abyssalcraft.lessershoggoth.name"); + break; + case 1: + entityname = StatCollector.translateToLocal("entity.abyssalcraft.lessershoggoth.abyssal.name"); + break; + case 2: + entityname = StatCollector.translateToLocal("entity.abyssalcraft.lessershoggoth.dreaded.name"); + break; + case 3: + entityname = StatCollector.translateToLocal("entity.abyssalcraft.lessershoggoth.omothol.name"); + break; + case 4: + entityname = StatCollector.translateToLocal("entity.abyssalcraft.lessershoggoth.dark.name"); + } + return entityname; + } + @Override public boolean isChild() { @@ -166,13 +209,13 @@ protected void func_145780_a(int par1, int par2, int par3, Block par4) @Override protected Item getDropItem() { - return AbyssalCraft.Corflesh; + return new ItemStack(AbyssalCraft.shoggothFlesh, 1, getShoggothType()).getItem(); } @Override public EnumCreatureAttribute getCreatureAttribute() { - return EnumCreatureAttribute.UNDEAD; + return getShoggothType() == 4 ? AbyssalCraftAPI.SHADOW : EnumCreatureAttribute.UNDEAD; } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBPrimed.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBPrimed.java index 4c2f70df6..e1a23ac33 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBPrimed.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBPrimed.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBcPrimed.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBcPrimed.java index ccb2c1d36..1b2b648a6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBcPrimed.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityODBcPrimed.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholGhoul.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholGhoul.java index 88c3f2a9d..2f31c935a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholGhoul.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholGhoul.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.entity; import com.shinoow.abyssalcraft.AbyssalCraft; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholWarden.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholWarden.java index f43c688e5..be5b0827e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholWarden.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityOmotholWarden.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.entity; import com.shinoow.abyssalcraft.AbyssalCraft; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityPSDLTracker.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityPSDLTracker.java index a4ebd0318..60aeff54c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityPSDLTracker.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityPSDLTracker.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityRemnant.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityRemnant.java index b970371e5..9b2113049 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityRemnant.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityRemnant.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.entity; import net.minecraft.entity.SharedMonsterAttributes; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySacthoth.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySacthoth.java index 8acba21ad..577e38b22 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySacthoth.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySacthoth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -32,8 +33,9 @@ import net.minecraftforge.event.entity.living.EnderTeleportEvent; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.*; import com.shinoow.abyssalcraft.common.util.SpecialTextUtil; -import com.shinoow.abyssalcraft.core.api.entity.*; public class EntitySacthoth extends EntityMob implements IBossDisplayData, IAntiEntity, ICoraliumEntity, IDreadEntity { @@ -148,7 +150,7 @@ protected String getHurtSound() @Override protected String getDeathSound() { - return "mob.blaze.death"; + return "abyssalcraft:sacthoth.death"; } @Override @@ -171,7 +173,7 @@ protected void dropFewItems(boolean par1, int par2) { @Override public EnumCreatureAttribute getCreatureAttribute() { - return Enum.valueOf(EnumCreatureAttribute.class, "SHADOW"); + return AbyssalCraftAPI.SHADOW; } /** diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowBeast.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowBeast.java index 4e7244c3b..bc0066026 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowBeast.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowBeast.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -24,7 +25,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.*; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.*; public class EntityShadowBeast extends EntityMob implements IAntiEntity, ICoraliumEntity, IDreadEntity { @@ -90,7 +92,7 @@ protected Item getDropItem() @Override public EnumCreatureAttribute getCreatureAttribute() { - return Enum.valueOf(EnumCreatureAttribute.class, "SHADOW"); + return AbyssalCraftAPI.SHADOW; } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowCreature.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowCreature.java index f45cd3cdb..7d7679546 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowCreature.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowCreature.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -24,7 +25,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.*; +import com.shinoow.abyssalcraft.api.entity.*; public class EntityShadowCreature extends EntityMob implements IAntiEntity, ICoraliumEntity, IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowMonster.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowMonster.java index e258ab825..f4a9a7124 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowMonster.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowMonster.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -24,7 +25,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.*; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.*; public class EntityShadowMonster extends EntityMob implements IAntiEntity, ICoraliumEntity, IDreadEntity { @@ -83,7 +85,7 @@ protected Item getDropItem() @Override public EnumCreatureAttribute getCreatureAttribute() { - return Enum.valueOf(EnumCreatureAttribute.class, "SHADOW"); + return AbyssalCraftAPI.SHADOW; } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowTitan.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowTitan.java index 77038af10..033255d4c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowTitan.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntityShadowTitan.java @@ -1,21 +1,23 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; @@ -90,7 +92,7 @@ protected Item getDropItem() @Override public EnumCreatureAttribute getCreatureAttribute() { - return Enum.valueOf(EnumCreatureAttribute.class, "SHADOW"); + return AbyssalCraftAPI.SHADOW; } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySkeletonGoliath.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySkeletonGoliath.java index 3a5eb4ba6..9e23d1ff2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySkeletonGoliath.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/EntitySkeletonGoliath.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.entity; import net.minecraft.block.Block; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityabygolem.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityabygolem.java index 6b8a4eed4..e47599416 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityabygolem.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityabygolem.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadgolem.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadgolem.java index a8b84fbbd..d824ec6b4 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadgolem.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadgolem.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -24,7 +25,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; public class EntityDreadgolem extends EntityMob implements IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadguard.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadguard.java index e52cae94c..73cb41196 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadguard.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entitydreadguard.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; @@ -29,7 +30,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; public class EntityDreadguard extends EntityMob implements IDreadEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityevilpig.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityevilpig.java index 83075747d..a0417f2cc 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityevilpig.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/Entityevilpig.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/ai/EntityAIAntiCreeperSwell.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/ai/EntityAIAntiCreeperSwell.java index 364ffc2e9..5b64bea2d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/ai/EntityAIAntiCreeperSwell.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/ai/EntityAIAntiCreeperSwell.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.ai; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiAbyssalZombie.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiAbyssalZombie.java index 451729cb4..4a31ac104 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiAbyssalZombie.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiAbyssalZombie.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -30,8 +31,8 @@ import net.minecraftforge.common.ForgeModContainer; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import com.shinoow.abyssalcraft.common.entity.EntityAbyssalZombie; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; public class EntityAntiAbyssalZombie extends EntityMob implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiBat.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiBat.java index 2fb1d7eb2..c84150d2f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiBat.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiBat.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -24,7 +25,7 @@ import net.minecraft.util.*; import net.minecraft.world.World; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiBat extends EntityAmbientCreature implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiChicken.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiChicken.java index eeb4f59ba..06155b239 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiChicken.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiChicken.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -25,7 +26,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiChicken extends EntityAnimal implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCow.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCow.java index 43a0d708b..c06622db5 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCow.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCow.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -27,7 +28,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiCow extends EntityAnimal implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCreeper.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCreeper.java index 4e51f0d59..041e11d75 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCreeper.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiCreeper.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -27,8 +28,8 @@ import net.minecraft.util.DamageSource; import net.minecraft.world.World; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import com.shinoow.abyssalcraft.common.entity.ai.EntityAIAntiCreeperSwell; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; import cpw.mods.fml.relauncher.*; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiGhoul.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiGhoul.java index f29f494a6..fc53e3047 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiGhoul.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiGhoul.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -25,8 +26,8 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import com.shinoow.abyssalcraft.common.entity.EntityDepthsGhoul; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; public class EntityAntiGhoul extends EntityMob implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPig.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPig.java index 9339437f5..1ab656ba9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPig.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPig.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -25,7 +26,7 @@ import net.minecraft.world.World; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiPig extends EntityAnimal implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPlayer.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPlayer.java index 766a38353..ee12bf744 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPlayer.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiPlayer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -22,7 +23,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiPlayer extends EntityMob implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSkeleton.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSkeleton.java index 6dd5e81fd..703054ef9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSkeleton.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSkeleton.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -27,7 +28,7 @@ import net.minecraft.world.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiSkeleton extends EntityMob implements IRangedAttackMob, IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSpider.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSpider.java index d000950e2..9e99473d0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSpider.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiSpider.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -27,7 +28,7 @@ import net.minecraft.world.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; public class EntityAntiSpider extends EntityMob implements IAntiEntity { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiZombie.java b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiZombie.java index 83c537869..01503fb23 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiZombie.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/entity/anti/EntityAntiZombie.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.entity.anti; @@ -31,7 +32,7 @@ import net.minecraftforge.common.ForgeModContainer; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import cpw.mods.fml.relauncher.*; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/handlers/AbyssalCraftEventHooks.java b/src/main/java/com/shinoow/abyssalcraft/common/handlers/AbyssalCraftEventHooks.java index 80e9bc7dc..d9cdf4b8e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/handlers/AbyssalCraftEventHooks.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/handlers/AbyssalCraftEventHooks.java @@ -1,38 +1,47 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.handlers; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; +import java.util.Random; + +import net.minecraft.entity.*; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.potion.PotionEffect; +import net.minecraft.potion.*; import net.minecraft.util.EntityDamageSource; +import net.minecraft.world.WorldServer; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; -import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.*; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.player.*; import net.minecraftforge.event.terraingen.PopulateChunkEvent; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.item.ItemUpgradeKit; import com.shinoow.abyssalcraft.common.blocks.*; +import com.shinoow.abyssalcraft.common.world.TeleporterOmothol; + import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; public class AbyssalCraftEventHooks { @@ -93,25 +102,6 @@ public void onItemPickup(EntityItemPickupEvent event) { event.entityPlayer.addStat(AbyssalCraft.findPSDL, 1); } - /**@SubscribeEvent - public void darkRealm(LivingUpdateEvent event){ - if(event.entityLiving instanceof EntityPlayerMP){ - WorldServer worldServer = (WorldServer)event.entityLiving.worldObj; - EntityPlayerMP player = (EntityPlayerMP)event.entityLiving; - if(player.dimension == AbyssalCraft.configDimId3 && player.posY <= 0){ - player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 60, 255)); - player.addPotionEffect(new PotionEffect(Potion.blindness.getId(), 20)); - player.mcServer.getConfigurationManager().transferPlayerToDimension(player, AbyssalCraft.configDimId4, new TeleporterOmothol(worldServer)); - } - } - if(event.entityLiving.worldObj.isRemote && event.entityLiving.dimension == AbyssalCraft.configDimId4){ - Random rand = new Random(); - event.entityLiving.worldObj.spawnParticle("largesmoke", event.entityLiving.posX + (rand.nextDouble() - 0.5D) * event.entityLiving.width, - event.entityLiving.posY + rand.nextDouble() * event.entityLiving.height, - event.entityLiving.posZ + (rand.nextDouble() - 0.5D) * event.entityLiving.width, 0,0,0); - } - }*/ - @SubscribeEvent public void enchantmentEffects(LivingAttackEvent event){ if(event.source instanceof EntityDamageSource){ @@ -130,47 +120,66 @@ else if(enchTag.getCompoundTagAt(i).getInteger("id") == AbyssalCraft.dreadE.effe } } - /**@SubscribeEvent + @SubscribeEvent public void ironWall(LivingHurtEvent event){ ItemStack item = event.entityLiving.getEquipmentInSlot(3); if(item != null && item.hasTagCompound()){ NBTTagList enchTag = item.getEnchantmentTagList(); - for(int i = 0; i < enchTag.tagCount(); i++){ + for(int i = 0; i < enchTag.tagCount(); i++) if(enchTag.getCompoundTagAt(i).getInteger("id") == AbyssalCraft.ironWall.effectId) - event.entityLiving.setVelocity(0, 0, 0); - } + event.entityLiving.setInWeb(); } } - /**@SubscribeEvent - public void renderDepthsHelmetOverlay(RenderGameOverlayEvent event) { - final ResourceLocation coraliumBlur = new ResourceLocation("abyssalcraft:textures/misc/coraliumblur.png"); - - ItemStack helmet = Minecraft.getMinecraft().thePlayer.inventory.armorItemInSlot(3); - if(Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && helmet != null && helmet.getItem() == AbyssalCraft.Depthshelmet) { - GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - - Tessellator t = Tessellator.instance; - - ScaledResolution scale = new ScaledResolution(Minecraft.getMinecraft().gameSettings, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); - int width = scale.getScaledWidth(); - int height = scale.getScaledHeight(); - - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glDepthMask(false); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_ALPHA_TEST); - Minecraft.getMinecraft().renderEngine.bindTexture(coraliumBlur); - - t.startDrawingQuads(); - t.addVertexWithUV(0.0D, (double)height, 90.0D, 0.0D, 1.0D); - t.addVertexWithUV((double)width, (double)height, 90.0D, 1.0D, 1.0D); - t.addVertexWithUV((double)width, 0.0D, 90.0D, 1.0D, 0.0D); - t.addVertexWithUV(0.0D, 0.0D, 90.0D, 0.0D, 0.0D); - t.draw(); - - GL11.glPopAttrib(); + @SubscribeEvent + public void darkRealm(LivingUpdateEvent event){ + if(event.entityLiving instanceof EntityPlayerMP){ + WorldServer worldServer = (WorldServer)event.entityLiving.worldObj; + EntityPlayerMP player = (EntityPlayerMP)event.entityLiving; + if(player.dimension == AbyssalCraft.configDimId3 && player.posY <= 0){ + player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 60, 255)); + player.addPotionEffect(new PotionEffect(Potion.blindness.getId(), 20)); + player.mcServer.getConfigurationManager().transferPlayerToDimension(player, AbyssalCraft.configDimId4, new TeleporterOmothol(worldServer)); + player.addStat(AbyssalCraft.enterDarkRealm, 1); + } } - }*/ + if(event.entityLiving.worldObj.isRemote && event.entityLiving.dimension == AbyssalCraft.configDimId4){ + Random rand = new Random(); + event.entityLiving.worldObj.spawnParticle("largesmoke", event.entityLiving.posX + (rand.nextDouble() - 0.5D) * event.entityLiving.width, + event.entityLiving.posY + rand.nextDouble() * event.entityLiving.height, + event.entityLiving.posZ + (rand.nextDouble() - 0.5D) * event.entityLiving.width, 0,0,0); + } + } + + @SubscribeEvent + public void onCraftingEvent(PlayerEvent.ItemCraftedEvent event) + { + for(int h=0; h < event.craftMatrix.getSizeInventory(); h++) + if(event.craftMatrix.getStackInSlot(h) != null) + for(int i=0; i < event.craftMatrix.getSizeInventory(); i++) + if(event.craftMatrix.getStackInSlot(i) != null) + { + ItemStack k = event.craftMatrix.getStackInSlot(h); + ItemStack j = event.craftMatrix.getStackInSlot(i); + + if(k.getItem() != null && j.getItem() != null && k.getItem() instanceof ItemUpgradeKit) + { + NBTTagCompound nbttest = new NBTTagCompound(); + NBTTagList tag = new NBTTagList(); + + if(j.isItemEnchanted()) + { + NBTTagList test = j.stackTagCompound.getTagList("ench", 10); + tag = test; + } + ItemStack l = event.crafting; + if(j.isItemEnchanted()) + { + l.stackTagCompound = nbttest; + l.stackTagCompound.setTag("ench", tag); + } + event.craftMatrix.setInventorySlotContents(i, l); + } + } + } } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/handlers/BucketHandler.java b/src/main/java/com/shinoow/abyssalcraft/common/handlers/BucketHandler.java index 9f9ab666a..d4f88148d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/handlers/BucketHandler.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/handlers/BucketHandler.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.handlers; import java.util.HashMap; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/handlers/FurnaceFuelHandler.java b/src/main/java/com/shinoow/abyssalcraft/common/handlers/FurnaceFuelHandler.java index f142d384a..8ddffdd14 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/handlers/FurnaceFuelHandler.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/handlers/FurnaceFuelHandler.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.handlers; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerCrystallizer.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerCrystallizer.java index e5f5ee365..9253db3c1 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerCrystallizer.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerCrystallizer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.inventory; @@ -22,8 +23,8 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import com.shinoow.abyssalcraft.api.recipe.CrystallizerRecipes; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityCrystallizer; -import com.shinoow.abyssalcraft.core.util.recipes.CrystallizerRecipes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerEngraver.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerEngraver.java new file mode 100644 index 000000000..26377ee60 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerEngraver.java @@ -0,0 +1,141 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +import com.shinoow.abyssalcraft.api.recipe.EngraverRecipes; +import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityEngraver; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ContainerEngraver extends Container { + + private TileEntityEngraver tileEngraver; + private int lastProcessTime; + + public ContainerEngraver(InventoryPlayer par1InventoryPlayer, TileEntityEngraver par2TileEntityEngraver){ + tileEngraver = par2TileEntityEngraver; + addSlotToContainer(new Slot(par2TileEntityEngraver, 0, 56, 17)); + addSlotToContainer(new SlotEngraving(par2TileEntityEngraver, 1, 56, 53)); + addSlotToContainer(new SlotEngraverOutput(par1InventoryPlayer.player, par2TileEntityEngraver, 2, 116, 35)); + int i; + + for(i = 0; i < 3; i++) + for (int j = 0; j < 9; ++j) + addSlotToContainer(new Slot(par1InventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + + for (i = 0; i < 9; ++i) + addSlotToContainer(new Slot(par1InventoryPlayer, i, 8 + i * 18, 142)); + } + + @Override + public void addCraftingToCrafters(ICrafting par1ICrafting) + { + super.addCraftingToCrafters(par1ICrafting); + par1ICrafting.sendProgressBarUpdate(this, 0, tileEngraver.engraverProcessTime); + } + + @Override + public void detectAndSendChanges() + { + super.detectAndSendChanges(); + + for (int i = 0; i < crafters.size(); ++i) + { + ICrafting icrafting = (ICrafting)crafters.get(i); + + if (lastProcessTime != tileEngraver.engraverProcessTime) + icrafting.sendProgressBarUpdate(this, 0, tileEngraver.engraverProcessTime); + } + + lastProcessTime = tileEngraver.engraverProcessTime; + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int par1, int par2) + { + if (par1 == 0) + tileEngraver.engraverProcessTime = par2; + + if (par1 == 3) + tileEngraver.engraverProcessTime = par2; + } + + @Override + public boolean canInteractWith(EntityPlayer var1) { + + return tileEngraver.isUseableByPlayer(var1); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) + { + ItemStack itemstack = null; + Slot slot = (Slot)inventorySlots.get(par2); + + if (slot != null && slot.getHasStack()) + { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); + + if (par2 == 2) + { + if (!mergeItemStack(itemstack1, 3, 39, true)) + return null; + + slot.onSlotChange(itemstack1, itemstack); + } + else if (par2 != 1 && par2 != 0) + { + if (EngraverRecipes.engraving().getEngravingResult(itemstack1) != null) + { + if (!mergeItemStack(itemstack1, 0, 1, false)) + return null; + } + else if (par2 >= 3 && par2 < 30) + { + if (!mergeItemStack(itemstack1, 30, 39, false)) + return null; + } + else if (par2 >= 30 && par2 < 39 && !mergeItemStack(itemstack1, 3, 30, false)) + return null; + } + else if (!mergeItemStack(itemstack1, 3, 39, false)) + return null; + + if (itemstack1.stackSize == 0) + slot.putStack((ItemStack)null); + else + slot.onSlotChanged(); + + if (itemstack1.stackSize == itemstack.stackSize) + return null; + + slot.onPickupFromSlot(par1EntityPlayer, itemstack1); + } + + return itemstack; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerTransmutator.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerTransmutator.java index 0e5d26c4b..25dc5aa1b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerTransmutator.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/ContainerTransmutator.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.inventory; @@ -22,8 +23,8 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import com.shinoow.abyssalcraft.api.recipe.TransmutatorRecipes; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityTransmutator; -import com.shinoow.abyssalcraft.core.util.recipes.TransmutatorRecipes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +32,7 @@ public class ContainerTransmutator extends Container { private TileEntityTransmutator tileTransmutator; - private int lastCookTime; + private int lastProcessTime; private int lastBurnTime; private int lastItemBurnTime; @@ -69,7 +70,7 @@ public void detectAndSendChanges() { ICrafting icrafting = (ICrafting)crafters.get(i); - if (lastCookTime != tileTransmutator.transmutatorProcessTime) + if (lastProcessTime != tileTransmutator.transmutatorProcessTime) icrafting.sendProgressBarUpdate(this, 0, tileTransmutator.transmutatorProcessTime); if (lastBurnTime != tileTransmutator.transmutatorBurnTime) @@ -79,7 +80,7 @@ public void detectAndSendChanges() icrafting.sendProgressBarUpdate(this, 2, tileTransmutator.currentItemBurnTime); } - lastCookTime = tileTransmutator.transmutatorProcessTime; + lastProcessTime = tileTransmutator.transmutatorProcessTime; lastBurnTime = tileTransmutator.transmutatorBurnTime; lastItemBurnTime = tileTransmutator.currentItemBurnTime; } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotCrystallizer.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotCrystallizer.java index 5c2ff3eef..1840dc92f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotCrystallizer.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotCrystallizer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.inventory; @@ -22,7 +23,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; -import com.shinoow.abyssalcraft.core.util.recipes.CrystallizerRecipes; +import com.shinoow.abyssalcraft.api.recipe.CrystallizerRecipes; public class SlotCrystallizer extends Slot { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraverOutput.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraverOutput.java new file mode 100644 index 000000000..147388cc2 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraverOutput.java @@ -0,0 +1,106 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.inventory; + +import net.minecraft.entity.item.EntityXPOrb; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; + +import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.recipe.EngraverRecipes; + +public class SlotEngraverOutput extends Slot +{ + /** The player that is using the GUI where this slot resides. */ + private EntityPlayer thePlayer; + private int stackSize; + + public SlotEngraverOutput(EntityPlayer par1EntityPlayer, IInventory par2IInventory, int par3, int par4, int par5) + { + super(par2IInventory, par3, par4, par5); + thePlayer = par1EntityPlayer; + } + + @Override + public boolean isItemValid(ItemStack par1ItemStack) + { + return false; + } + + @Override + public ItemStack decrStackSize(int par1) + { + if (getHasStack()) + stackSize += Math.min(par1, getStack().stackSize); + + return super.decrStackSize(par1); + } + + @Override + public void onPickupFromSlot(EntityPlayer par1EntityPlayer, ItemStack par2ItemStack) + { + this.onCrafting(par2ItemStack); + super.onPickupFromSlot(par1EntityPlayer, par2ItemStack); + } + + @Override + protected void onCrafting(ItemStack par1ItemStack, int par2) + { + stackSize += par2; + this.onCrafting(par1ItemStack); + } + + @Override + protected void onCrafting(ItemStack par1ItemStack) + { + par1ItemStack.onCrafting(thePlayer.worldObj, thePlayer, stackSize); + + if (!thePlayer.worldObj.isRemote) + { + int i = stackSize; + float f = EngraverRecipes.engraving().getExperience(par1ItemStack); + int j; + + if (f == 0.0F) + i = 0; + else if (f < 1.0F) + { + j = MathHelper.floor_float(i * f); + + if (j < MathHelper.ceiling_float_int(i * f) && (float)Math.random() < i * f - j) + ++j; + + i = j; + } + + while (i > 0) + { + j = EntityXPOrb.getXPSplit(i); + i -= j; + thePlayer.worldObj.spawnEntityInWorld(new EntityXPOrb(thePlayer.worldObj, thePlayer.posX, thePlayer.posY + 0.5D, thePlayer.posZ + 0.5D, j)); + } + } + + stackSize = 0; + + if (par1ItemStack.getItem() == AbyssalCraft.portalPlacerJzh) + thePlayer.addStat(AbyssalCraft.GK3, 1); + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraving.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraving.java new file mode 100644 index 000000000..2342163b9 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotEngraving.java @@ -0,0 +1,36 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.inventory; + +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +import com.shinoow.abyssalcraft.api.item.ItemEngraving; + +public class SlotEngraving extends Slot { + + public SlotEngraving(IInventory par1iInventory, int par2, int par3, int par4) { + super(par1iInventory, par2, par3, par4); + } + + @Override + public boolean isItemValid(ItemStack par1ItemStack) + { + return par1ItemStack.getItem() instanceof ItemEngraving; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotTransmutator.java b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotTransmutator.java index 4b2524f5e..a03ac2738 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotTransmutator.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/inventory/SlotTransmutator.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.inventory; @@ -23,7 +24,7 @@ import net.minecraft.util.MathHelper; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.util.recipes.TransmutatorRecipes; +import com.shinoow.abyssalcraft.api.recipe.TransmutatorRecipes; public class SlotTransmutator extends Slot { diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/AbyssalCraftTool.java b/src/main/java/com/shinoow/abyssalcraft/common/items/AbyssalCraftTool.java index 97c8dfa6b..c218491c2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/AbyssalCraftTool.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/AbyssalCraftTool.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemACBasic.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemACBasic.java index 50c1697a0..6cb17c634 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemACBasic.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemACBasic.java @@ -1,24 +1,25 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; +import com.shinoow.abyssalcraft.AbyssalCraft; + +import net.minecraft.item.*; +import net.minecraft.util.*; public class ItemACBasic extends Item { @@ -26,6 +27,7 @@ public ItemACBasic(String par1) { super(); setUnlocalizedName(par1); setTextureName("abyssalcraft:" + par1); + setCreativeTab(AbyssalCraft.tabItems); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteAxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteAxe.java index 56b5f23ad..200661f33 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteAxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteAxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCAxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCAxe.java index af0c9b40e..b8d7b8cc6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCAxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCAxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCHoe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCHoe.java index 68d4148c9..ba76f0767 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCHoe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCHoe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCPickaxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCPickaxe.java index c1c03f523..a11f59ab1 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCPickaxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCPickaxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCShovel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCShovel.java index 7758460a6..d16025051 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCShovel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCShovel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCSword.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCSword.java index 71cd71b2e..581b9a88c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCSword.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteCSword.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteHoe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteHoe.java index 0d45282b4..99db5572b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteHoe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteHoe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalnitePickaxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalnitePickaxe.java index c869de3a5..eae1ecad9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalnitePickaxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalnitePickaxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteShovel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteShovel.java index 7ff7c0cea..5afb422b8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteShovel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteShovel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteSword.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteSword.java index 02503511f..12c23819f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteSword.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAbyssalniteSword.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiBucket.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiBucket.java index f56577bba..3eb85b6e4 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiBucket.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiBucket.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiFood.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiFood.java index 55a99f221..3ea2b29fb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiFood.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemAntiFood.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCBucket.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCBucket.java index 01f855292..29c5978d2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCBucket.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCBucket.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoin.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoin.java index e379fc9e5..29dd37024 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoin.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoin.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.items; import java.util.List; @@ -19,11 +35,11 @@ public class ItemCoin extends ItemACBasic { private static final int[] colors = {0xE89207, 0xD9D9D9, 0xF3CC3E, 0xE8E8E8, 0x8002BF, 0x00FF8C, 0xBD0000}; - public ItemCoin() { - super("coin"); + public ItemCoin(String par1) { + super(par1); setMaxDamage(0); setHasSubtypes(true); - setCreativeTab(AbyssalCraft.tabItems); + setCreativeTab(AbyssalCraft.tabCoins); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumAxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumAxe.java index cb3e6d932..129828096 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumAxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumAxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumBow.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumBow.java index a0b2cd6a5..63ac91641 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumBow.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumBow.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumHoe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumHoe.java index dfe690a75..62ebd4f72 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumHoe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumHoe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumPickaxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumPickaxe.java index 3113ac291..be7752f98 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumPickaxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumPickaxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumShovel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumShovel.java index 478cf8f45..733a4d9be 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumShovel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumShovel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumSword.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumSword.java index d5d9ee3b4..4c8d9ffe8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumSword.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumSword.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumcluster.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumcluster.java index 474ef45de..ab41ae19b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumcluster.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCoraliumcluster.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorb.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorb.java index 9738d0e3f..ed38047de 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorb.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorb.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorbone.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorbone.java index 1144e4584..c9d6e9ad2 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorbone.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorbone.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorflesh.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorflesh.java index 6cf3a773e..66b6f8769 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorflesh.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCorflesh.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCrystal.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCrystal.java index 1f0d41541..0c5fcfb9d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCrystal.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCrystal.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCudgel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCudgel.java index 9f1d1b26b..9e01e9715 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCudgel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemCudgel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneAxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneAxe.java index 805829dd9..3d16abbba 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneAxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneAxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneHoe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneHoe.java index 4002b871b..7ad2032f0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneHoe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneHoe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstonePickaxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstonePickaxe.java index b93f0091c..ea0f8e30f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstonePickaxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstonePickaxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneShovel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneShovel.java index a2f1ceb61..c809ccd50 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneShovel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneShovel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneSword.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneSword.java index 947e12f3c..296b937da 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneSword.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDarkstoneSword.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumAxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumAxe.java index 9102a27de..9a2856003 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumAxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumAxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumHoe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumHoe.java index c81aa6977..19e0f1906 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumHoe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumHoe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumKatana.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumKatana.java index e78067546..816feb74c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumKatana.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumKatana.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumPickaxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumPickaxe.java index 4676c253a..5bba9df85 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumPickaxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumPickaxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumShovel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumShovel.java index 3a333b58a..f211b0b49 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumShovel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumShovel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumSword.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumSword.java index 254fde7f0..07f37de45 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumSword.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemDreadiumSword.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEoA.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEoA.java index 6fc139924..82e44877d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEoA.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEoA.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumAxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumAxe.java index 7762723ed..e86a83d45 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumAxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumAxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumHoe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumHoe.java index 196fd0f8b..3d4d3eba1 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumHoe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumHoe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumPickaxe.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumPickaxe.java index 08f3e2028..348420334 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumPickaxe.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumPickaxe.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumShovel.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumShovel.java index ce4801d81..f966e82bd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumShovel.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumShovel.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumSword.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumSword.java index 807011a5f..21877fc90 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumSword.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemEthaxiumSword.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemFriedegg.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemFriedegg.java index bdc9526da..7b1713076 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemFriedegg.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemFriedegg.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemOC.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemOC.java index 0f2ef2046..c8e271541 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemOC.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemOC.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPlatefood.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPlatefood.java index 93a03bb64..f092b385a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPlatefood.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPlatefood.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacer.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacer.java index dfa5fd78d..973bd5672 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacer.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerDL.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerDL.java index f56f7b216..412f7292e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerDL.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerDL.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerJzh.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerJzh.java index 7afd57fa4..0a4ae05bd 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerJzh.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemPortalPlacerJzh.java @@ -1,27 +1,33 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; import java.util.List; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.*; import net.minecraft.util.*; +import net.minecraft.world.World; + import com.shinoow.abyssalcraft.AbyssalCraft; +import cpw.mods.fml.client.FMLClientHandler; + public class ItemPortalPlacerJzh extends Item { public ItemPortalPlacerJzh(){ @@ -49,7 +55,7 @@ public void addInformation(ItemStack par1ItemStack, EntityPlayer entityplayer, L list.add(StatCollector.translateToLocal("tooltip.portalplacerjzh.2")); } - /**@Override + @Override public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { if(par3World.isRemote && par3World.provider.isSurfaceWorld() || par3World.isRemote && par2EntityPlayer.dimension == AbyssalCraft.configDimId1) @@ -66,15 +72,9 @@ else if(!par3World.isRemote && par2EntityPlayer.dimension == AbyssalCraft.config if(direction == 1 || direction == 3) { for(int y = 1; y < 5; y++) - { for (int z = -1; z < 2; z++) - { if(par3World.getBlock(par4, par5 + y, par6 + z) != Blocks.air) - { return false; - } - } - } par3World.setBlock(par4, par5 + 1, par6, AbyssalCraft.omotholstone); par3World.setBlock(par4, par5 + 1, par6 + 1, AbyssalCraft.omotholstone); @@ -99,15 +99,9 @@ else if(!par3World.isRemote && par2EntityPlayer.dimension == AbyssalCraft.config else { for(int y = 1; y < 5; y++) - { for (int x = -1; x < 2; x++) - { if(par3World.getBlock(par4 + x, par5 + y, par6) != Blocks.air) - { return false; - } - } - } par3World.setBlock(par4, par5 + 1, par6, AbyssalCraft.omotholstone); par3World.setBlock(par4 + 1, par5 + 1, par6, AbyssalCraft.omotholstone); @@ -133,5 +127,5 @@ else if(!par3World.isRemote && par2EntityPlayer.dimension == AbyssalCraft.config } else return false; - }*/ + } } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemShoggothFlesh.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemShoggothFlesh.java new file mode 100644 index 000000000..545ac793d --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemShoggothFlesh.java @@ -0,0 +1,64 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.items; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +public class ItemShoggothFlesh extends ItemACBasic { + + private static final String[] names = { + "overworld", "abyssalwasteland", "dreadlands", "omothol", "darkrealm"}; + private static final int[] colors = {16777215, 0x00FF8C, 0xEB2D2D, 0x57545C, + 0x1D1D1F}; + + public ItemShoggothFlesh() { + super("shoggothFlesh"); + setMaxDamage(0); + setHasSubtypes(true); + } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack par1ItemStack, int par2) { + return colors[par1ItemStack.getItemDamage()]; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item par1Item, CreativeTabs par2CreativeTab, List par3List){ + for(int i = 0; i < names.length; ++i) + par3List.add(new ItemStack(par1Item, 1, i)); + } + + @Override + public String getItemStackDisplayName(ItemStack par1ItemStack) { + return StatCollector.translateToLocal(getUnlocalizedName() + "." + names[par1ItemStack.getItemDamage()] + ".name"); + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemSoulReaper.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemSoulReaper.java index 76737f5b9..1d6afaaf6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemSoulReaper.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemSoulReaper.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemStaff.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemStaff.java index 6d33c1ca6..ac0c270b6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemStaff.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemStaff.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; import java.util.List; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemTrackerPSDL.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemTrackerPSDL.java index 946a77b17..077864698 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemTrackerPSDL.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemTrackerPSDL.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemWashCloth.java b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemWashCloth.java index 42da58bd3..e0db95800 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/ItemWashCloth.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/ItemWashCloth.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteArmor.java index 1a1d9e3c0..7fc7848e0 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteCArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteCArmor.java index fff68abdb..067847a9b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteCArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemAbyssalniteCArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumArmor.java index 0eca8e176..e318692ce 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumPArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumPArmor.java index 0a193333d..5fce41bbc 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumPArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemCoraliumPArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDepthsArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDepthsArmor.java index 1b6e3e11d..779918b63 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDepthsArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDepthsArmor.java @@ -1,37 +1,48 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; +import net.minecraft.entity.*; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; +import net.minecraft.item.*; +import net.minecraft.potion.*; +import net.minecraft.util.*; import net.minecraft.world.World; +import thaumcraft.api.IVisDiscountGear; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.nodes.IRevealer; import com.shinoow.abyssalcraft.AbyssalCraft; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.Optional.*; +import cpw.mods.fml.relauncher.*; -public class ItemDepthsArmor extends ItemArmor { +@InterfaceList(value = { @Interface(iface = "thaumcraft.api.IVisDiscountGear", modid = "Thaumcraft"), + @Interface(iface = "thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft")}) +public class ItemDepthsArmor extends ItemArmor implements IVisDiscountGear, IRevealer { public ItemDepthsArmor(ArmorMaterial par2EnumArmorMaterial, int par3, int par4){ super(par2EnumArmorMaterial, par3, par4); setCreativeTab(AbyssalCraft.tabCombat); @@ -68,6 +79,8 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemstack) { player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 20, 0)); player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 260, 0)); player.addPotionEffect(new PotionEffect(Potion.field_76443_y.getId(), 20, 0)); + if(player.getActivePotionEffect(AbyssalCraft.Cplague) !=null) + player.removePotionEffect(AbyssalCraft.Cplague.getId()); } if (itemstack.getItem() == AbyssalCraft.Depthsplate) player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 20, 0)); @@ -76,4 +89,67 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemstack) { if (itemstack.getItem() == AbyssalCraft.Depthsboots) player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 20, 0)); } + + @Override + @SideOnly(Side.CLIENT) + public void renderHelmetOverlay(ItemStack stack, EntityPlayer player, ScaledResolution resolution, float partialTicks, boolean hasScreen, int mouseX, int mouseY){ + final ResourceLocation coraliumBlur = new ResourceLocation("abyssalcraft:textures/misc/coraliumblur.png"); + + + if(Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && stack != null && stack.getItem() == AbyssalCraft.Depthshelmet) { + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + + Tessellator t = Tessellator.instance; + + ScaledResolution scale = new ScaledResolution(Minecraft.getMinecraft().gameSettings, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); + int width = scale.getScaledWidth(); + int height = scale.getScaledHeight(); + + GL11.glDisable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(false); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + Minecraft.getMinecraft().renderEngine.bindTexture(coraliumBlur); + + t.startDrawingQuads(); + t.addVertexWithUV(0.0D, height, 90.0D, 0.0D, 1.0D); + t.addVertexWithUV(width, height, 90.0D, 1.0D, 1.0D); + t.addVertexWithUV(width, 0.0D, 90.0D, 1.0D, 0.0D); + t.addVertexWithUV(0.0D, 0.0D, 90.0D, 0.0D, 0.0D); + t.draw(); + + GL11.glPopAttrib(); + } + } + + @Override + @Method(modid = "Thaumcraft") + public int getVisDiscount(ItemStack stack, EntityPlayer player, + Aspect aspect) { + return stack.getItem() == AbyssalCraft.Depthshelmet ? 5 : stack.getItem() == AbyssalCraft.Depthsplate ? 2 : + stack.getItem() == AbyssalCraft.Depthslegs ? 2 : stack.getItem() == AbyssalCraft.Depthsboots ? 1 : 0; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack is, EntityPlayer player, List l, boolean B){ + if(Loader.isModLoaded("Thaumcraft")){ + if(is.getItem() == AbyssalCraft.Depthshelmet) + l.add("\u00A75Vis discount : 5%"); + if(is.getItem() == AbyssalCraft.Depthsplate) + l.add("\u00A75Vis discount : 2%"); + if(is.getItem() == AbyssalCraft.Depthslegs) + l.add("\u00A75Vis discount : 2%"); + if(is.getItem() == AbyssalCraft.Depthsboots) + l.add("\u00A75Vis discount : 1%"); + } + } + + @Override + @Method(modid = "Thaumcraft") + public boolean showNodes(ItemStack itemstack, EntityLivingBase player) { + + return itemstack.getItem() == AbyssalCraft.Depthshelmet; + } } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadArmor.java index 055e6be3c..00d01c488 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumArmor.java index 7ab5c452b..9ad2a2d40 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumSamuraiArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumSamuraiArmor.java index 2217e9efa..3ffd31650 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumSamuraiArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemDreadiumSamuraiArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemEthaxiumArmor.java b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemEthaxiumArmor.java index 483fd0508..b616b601a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemEthaxiumArmor.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/items/armor/ItemEthaxiumArmor.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.items.armor; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionAntimatter.java b/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionAntimatter.java index b070de2d8..e8f21ece6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionAntimatter.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionAntimatter.java @@ -1,25 +1,26 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.potion; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.entity.anti.*; -import com.shinoow.abyssalcraft.core.api.damagesource.ACDamageSource; -import com.shinoow.abyssalcraft.core.api.entity.IAntiEntity; import net.minecraft.client.Minecraft; import net.minecraft.entity.*; @@ -44,7 +45,7 @@ public Potion setIconIndex(int par1, int par2) { @Override public void performEffect(EntityLivingBase par1EntityLivingBase, int par2){ - par1EntityLivingBase.attackEntityFrom(ACDamageSource.antimatter, 5); + par1EntityLivingBase.attackEntityFrom(AbyssalCraftAPI.antimatter, 5); if(par1EntityLivingBase instanceof IAntiEntity){ par1EntityLivingBase.removePotionEffect(AbyssalCraft.antiMatter.id); par1EntityLivingBase.heal(5); diff --git a/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionCplague.java b/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionCplague.java index 903b8b0be..21cb6fe86 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionCplague.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionCplague.java @@ -1,24 +1,25 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.potion; import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.ICoraliumEntity; import com.shinoow.abyssalcraft.common.entity.*; -import com.shinoow.abyssalcraft.core.api.damagesource.ACDamageSource; -import com.shinoow.abyssalcraft.core.api.entity.ICoraliumEntity; import net.minecraft.client.Minecraft; import net.minecraft.entity.*; @@ -43,7 +44,7 @@ public Potion setIconIndex(int par1, int par2) { @Override public void performEffect(EntityLivingBase par1EntityLivingBase, int par2){ - par1EntityLivingBase.attackEntityFrom(ACDamageSource.coralium, 2); + par1EntityLivingBase.attackEntityFrom(AbyssalCraftAPI.coralium, 2); if(par1EntityLivingBase instanceof ICoraliumEntity){ par1EntityLivingBase.removePotionEffect(AbyssalCraft.Cplague.id); par1EntityLivingBase.heal(2); diff --git a/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionDplague.java b/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionDplague.java index 9059a5338..cc7bfb46c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionDplague.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/potion/PotionDplague.java @@ -1,23 +1,24 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.potion; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.core.api.damagesource.ACDamageSource; -import com.shinoow.abyssalcraft.core.api.entity.IDreadEntity; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; +import com.shinoow.abyssalcraft.api.entity.IDreadEntity; import net.minecraft.client.Minecraft; import net.minecraft.entity.EntityLivingBase; @@ -41,7 +42,7 @@ public Potion setIconIndex(int par1, int par2) { @Override public void performEffect(EntityLivingBase par1EntityLivingBase, int par2){ - par1EntityLivingBase.attackEntityFrom(ACDamageSource.dread, 1); + par1EntityLivingBase.attackEntityFrom(AbyssalCraftAPI.dread, 1); if(par1EntityLivingBase instanceof IDreadEntity){ par1EntityLivingBase.removePotionEffect(AbyssalCraft.Dplague.id); par1EntityLivingBase.heal(1); diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/Abypillar.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/Abypillar.java index e1caed591..3cc3bd70a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/Abypillar.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/Abypillar.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.abyss; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/MapGenAbyStronghold.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/MapGenAbyStronghold.java index 6b9d2116d..12c651d22 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/MapGenAbyStronghold.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/MapGenAbyStronghold.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.abyss.stronghold; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/StructureAbyStrongholdPieces.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/StructureAbyStrongholdPieces.java index aefeeaef0..5e2ec3a93 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/StructureAbyStrongholdPieces.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/abyss/stronghold/StructureAbyStrongholdPieces.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.abyss.stronghold; @@ -596,7 +597,7 @@ public static class ChestCorridor extends StructureAbyStrongholdPieces.Stronghol /** * List of items that Stronghold chests can contain. */ - public static final WeightedRandomChestContent[] strongholdChestContents = new WeightedRandomChestContent[] {new WeightedRandomChestContent(Items.ender_pearl, 0, 1, 4, 10), new WeightedRandomChestContent(AbyssalCraft.Corb, 0, 1, 3, 3), new WeightedRandomChestContent(AbyssalCraft.abyingot, 0, 1, 5, 10), new WeightedRandomChestContent(AbyssalCraft.Cingot, 0, 1, 3, 5), new WeightedRandomChestContent(AbyssalCraft.Cpearl, 0, 1, 3, 5), new WeightedRandomChestContent(Items.bread, 0, 1, 3, 15), new WeightedRandomChestContent(Items.golden_apple, 0, 1, 3, 15), new WeightedRandomChestContent(AbyssalCraft.pickaxeA, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.pickaxeA, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.plate, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.helmet, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.legs, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.boots, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.OC, 0, 1, 1, 1), new WeightedRandomChestContent(new ItemStack(AbyssalCraft.crystalZinc), 1, 5, 8)}; + public static final WeightedRandomChestContent[] strongholdChestContents = new WeightedRandomChestContent[] {new WeightedRandomChestContent(Items.ender_pearl, 0, 1, 4, 10), new WeightedRandomChestContent(AbyssalCraft.Corb, 0, 1, 1, 3), new WeightedRandomChestContent(AbyssalCraft.abyingot, 0, 1, 5, 10), new WeightedRandomChestContent(AbyssalCraft.Cingot, 0, 1, 3, 5), new WeightedRandomChestContent(AbyssalCraft.Cpearl, 0, 1, 3, 5), new WeightedRandomChestContent(Items.bread, 0, 1, 3, 15), new WeightedRandomChestContent(Items.golden_apple, 0, 1, 3, 15), new WeightedRandomChestContent(AbyssalCraft.pickaxeA, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.pickaxeA, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.plate, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.helmet, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.legs, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.boots, 0, 1, 1, 5), new WeightedRandomChestContent(AbyssalCraft.OC, 0, 1, 1, 1), new WeightedRandomChestContent(new ItemStack(AbyssalCraft.crystalZinc), 1, 5, 8)}; private boolean hasMadeChest; public ChestCorridor() {} diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/chagarothlair.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/chagarothlair.java index 92f628fd5..0922b2741 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/chagarothlair.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/chagarothlair.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.dreadlands; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/MapGenDreadlandsMine.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/MapGenDreadlandsMine.java index 312834444..937a3def6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/MapGenDreadlandsMine.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/MapGenDreadlandsMine.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.dreadlands.mineshaft; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMinePieces.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMinePieces.java index b663ef688..cc2cf897e 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMinePieces.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMinePieces.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.dreadlands.mineshaft; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMineStart.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMineStart.java index f0c4348c0..a379cd0a8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMineStart.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/dreadlands/mineshaft/StructureDreadlandsMineStart.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.dreadlands.mineshaft; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse1.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse1.java index 88b80e58e..7cc4f6441 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse1.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse1.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.overworld; import java.util.Random; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse2.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse2.java index ef662befb..160bf6b38 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse2.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/AChouse2.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.overworld; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform1.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform1.java index 8e2b93be5..2590eb6eb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform1.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform1.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.overworld; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform2.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform2.java index 7576280b2..67b47bab3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform2.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACplatform2.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.overworld; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion1.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion1.java index 8073428d9..ead801985 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion1.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion1.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.overworld; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion2.java b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion2.java index 56dcbc9be..20c9c7d0b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion2.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/structures/overworld/ACscion2.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.structures.overworld; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/util/ACLogger.java b/src/main/java/com/shinoow/abyssalcraft/common/util/ACLogger.java index 470e8b0fe..fe87b57c7 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/util/ACLogger.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/util/ACLogger.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.util; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/util/EnumToolMaterialAC.java b/src/main/java/com/shinoow/abyssalcraft/common/util/EnumToolMaterialAC.java index 00fc213f7..4ad75c76d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/util/EnumToolMaterialAC.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/util/EnumToolMaterialAC.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.util; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/util/ExplosionUtil.java b/src/main/java/com/shinoow/abyssalcraft/common/util/ExplosionUtil.java index 32b81c469..d96541bfa 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/util/ExplosionUtil.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/util/ExplosionUtil.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.util; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/util/RandomFiltered.java b/src/main/java/com/shinoow/abyssalcraft/common/util/RandomFiltered.java new file mode 100644 index 000000000..bee9abee9 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/util/RandomFiltered.java @@ -0,0 +1,40 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.util; + +import java.util.Random; + +public class RandomFiltered extends Random { + + private static final long serialVersionUID = 1L; + + public RandomFiltered(long par2) { + super(par2); + } + + @Override + public int nextInt() { + return this.nextInt(1); + } + + @Override + public int nextInt(int n) { + if (n > 0) + return super.nextInt(n); + return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/util/SalvageHandler.java b/src/main/java/com/shinoow/abyssalcraft/common/util/SalvageHandler.java similarity index 82% rename from src/main/java/com/shinoow/abyssalcraft/core/util/SalvageHandler.java rename to src/main/java/com/shinoow/abyssalcraft/common/util/SalvageHandler.java index 732c28876..eec03360b 100644 --- a/src/main/java/com/shinoow/abyssalcraft/core/util/SalvageHandler.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/util/SalvageHandler.java @@ -1,19 +1,20 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -package com.shinoow.abyssalcraft.core.util; +package com.shinoow.abyssalcraft.common.util; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/util/SpecialTextUtil.java b/src/main/java/com/shinoow/abyssalcraft/common/util/SpecialTextUtil.java index 5d23f23c5..5bb8401eb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/util/SpecialTextUtil.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/util/SpecialTextUtil.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.util; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/ACExplosion.java b/src/main/java/com/shinoow/abyssalcraft/common/world/ACExplosion.java index 8db748821..4a4430bee 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/ACExplosion.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/ACExplosion.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.world; import java.util.ArrayList; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/AbyssalCraftWorldGenerator.java b/src/main/java/com/shinoow/abyssalcraft/common/world/AbyssalCraftWorldGenerator.java index 649049603..d237ff0db 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/AbyssalCraftWorldGenerator.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/AbyssalCraftWorldGenerator.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderAbyss.java b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderAbyss.java index 1b1f9c9bf..dcb0c064c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderAbyss.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderAbyss.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; @@ -111,11 +112,11 @@ public ChunkProviderAbyss(World par1World, long par2, boolean par4) mobSpawnerNoise = (NoiseGeneratorOctaves)noiseGens[6]; } - public void generateTerrain(int par1, int par2, Block[] par3BlockArray) + public void generateTerrain(int x, int z, Block[] par3BlockArray) { byte b0 = 63; - biomesForGeneration = worldObj.getWorldChunkManager().getBiomesForGeneration(biomesForGeneration, par1 * 4 - 2, par2 * 4 - 2, 10, 10); - generateNoise(par1 * 4, 0, par2 * 4); + biomesForGeneration = worldObj.getWorldChunkManager().getBiomesForGeneration(biomesForGeneration, x * 4 - 2, z * 4 - 2, 10, 10); + generateNoise(x * 4, 0, z * 4); for (int k = 0; k < 4; ++k) { @@ -180,20 +181,20 @@ else if (k2 * 8 + l2 < b0) } } - public void replaceBlocksForBiome(int par1, int par2, Block[] par3BlockArray, byte[] par4ByteArray, BiomeGenBase[] par5BiomeArray) + public void replaceBlocksForBiome(int x, int z, Block[] par3BlockArray, byte[] par4ByteArray, BiomeGenBase[] par5BiomeArray) { - ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3BlockArray, par5BiomeArray); + ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, x, z, par3BlockArray, par5BiomeArray); MinecraftForge.EVENT_BUS.post(event); if (event.getResult() == Result.DENY) return; double d0 = 0.03125D; - stoneNoise = noiseGen4.func_151599_a(stoneNoise, par1 * 16, par2 * 16, 16, 16, d0 * 2.0D, d0 * 2.0D, 1.0D); + stoneNoise = noiseGen4.func_151599_a(stoneNoise, x * 16, z * 16, 16, 16, d0 * 2.0D, d0 * 2.0D, 1.0D); for (int k = 0; k < 16; ++k) for (int l = 0; l < 16; ++l) { BiomeGenBase biomegenbase = par5BiomeArray[l + k * 16]; - biomegenbase.genTerrainBlocks(worldObj, rand, par3BlockArray, par4ByteArray, par1 * 16 + k, par2 * 16 + l, stoneNoise[l + k * 16]); + biomegenbase.genTerrainBlocks(worldObj, rand, par3BlockArray, par4ByteArray, x * 16 + k, z * 16 + l, stoneNoise[l + k * 16]); } } @@ -201,9 +202,9 @@ public void replaceBlocksForBiome(int par1, int par2, Block[] par3BlockArray, by * loads or generates the chunk at the chunk location specified */ @Override - public Chunk loadChunk(int par1, int par2) + public Chunk loadChunk(int x, int z) { - return provideChunk(par1, par2); + return provideChunk(x, z); } /** @@ -211,24 +212,24 @@ public Chunk loadChunk(int par1, int par2) * specified chunk from the map seed and chunk seed */ @Override - public Chunk provideChunk(int par1, int par2) + public Chunk provideChunk(int x, int z) { - rand.setSeed(par1 * 341873128712L + par2 * 132897987541L); + rand.setSeed(x * 341873128712L + z * 132897987541L); Block[] ablock = new Block[65536]; byte[] abyte = new byte[65536]; - generateTerrain(par1, par2, ablock); - biomesForGeneration = worldObj.getWorldChunkManager().loadBlockGeneratorData(biomesForGeneration, par1 * 16, par2 * 16, 16, 16); - replaceBlocksForBiome(par1, par2, ablock, abyte, biomesForGeneration); - caveGenerator.func_151539_a(this, worldObj, par1, par2, ablock); - ravineGenerator.func_151539_a(this, worldObj, par1, par2, ablock); + generateTerrain(x, z, ablock); + biomesForGeneration = worldObj.getWorldChunkManager().loadBlockGeneratorData(biomesForGeneration, x * 16, z * 16, 16, 16); + replaceBlocksForBiome(x, z, ablock, abyte, biomesForGeneration); + caveGenerator.func_151539_a(this, worldObj, x, z, ablock); + ravineGenerator.func_151539_a(this, worldObj, x, z, ablock); if (mapFeaturesEnabled) { - strongholdGenerator.func_151539_a(this, worldObj, par1, par2, ablock); - scatteredFeatureGenerator.func_151539_a(this, worldObj, par1, par2, ablock); + strongholdGenerator.func_151539_a(this, worldObj, x, z, ablock); + scatteredFeatureGenerator.func_151539_a(this, worldObj, x, z, ablock); } - Chunk chunk = new Chunk(worldObj, ablock, abyte, par1, par2); + Chunk chunk = new Chunk(worldObj, ablock, abyte, x, z); byte[] abyte1 = chunk.getBiomeArray(); for (int k = 0; k < abyte1.length; ++k) @@ -238,12 +239,12 @@ public Chunk provideChunk(int par1, int par2) return chunk; } - private void generateNoise(int par1, int par2, int par3) + private void generateNoise(int x, int y, int z) { - doubleArray4 = noiseGen6.generateNoiseOctaves(doubleArray4, par1, par3, 5, 5, 200.0D, 200.0D, 0.5D); - doubleArray1 = noiseGen3.generateNoiseOctaves(doubleArray1, par1, par2, par3, 5, 33, 5, 8.555150000000001D, 4.277575000000001D, 8.555150000000001D); - doubleArray2 = noiseGen1.generateNoiseOctaves(doubleArray2, par1, par2, par3, 5, 33, 5, 684.412D, 684.412D, 684.412D); - doubleArray3 = noiseGen2.generateNoiseOctaves(doubleArray3, par1, par2, par3, 5, 33, 5, 684.412D, 684.412D, 684.412D); + doubleArray4 = noiseGen6.generateNoiseOctaves(doubleArray4, x, z, 5, 5, 200.0D, 200.0D, 0.5D); + doubleArray1 = noiseGen3.generateNoiseOctaves(doubleArray1, x, y, z, 5, 33, 5, 8.555150000000001D, 4.277575000000001D, 8.555150000000001D); + doubleArray2 = noiseGen1.generateNoiseOctaves(doubleArray2, x, y, z, 5, 33, 5, 684.412D, 684.412D, 684.412D); + doubleArray3 = noiseGen2.generateNoiseOctaves(doubleArray3, x, y, z, 5, 33, 5, 684.412D, 684.412D, 684.412D); int l = 0; int i1 = 0; for (int j1 = 0; j1 < 5; ++j1) @@ -342,7 +343,7 @@ private void generateNoise(int par1, int par2, int par3) * Checks to see if a chunk exists at x, y */ @Override - public boolean chunkExists(int par1, int par2) + public boolean chunkExists(int x, int z) { return true; } @@ -351,31 +352,31 @@ public boolean chunkExists(int par1, int par2) * Populates chunk with ores etc etc */ @Override - public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) + public void populate(IChunkProvider par1IChunkProvider, int x, int z) { BlockFalling.fallInstantly = true; - int k = par2 * 16; - int l = par3 * 16; + int k = x * 16; + int l = z * 16; BiomeGenBase biomegenbase = worldObj.getBiomeGenForCoords(k + 16, l + 16); rand.setSeed(worldObj.getSeed()); long i1 = rand.nextLong() / 2L * 2L + 1L; long j1 = rand.nextLong() / 2L * 2L + 1L; - rand.setSeed(par2 * i1 + par3 * j1 ^ worldObj.getSeed()); + rand.setSeed(x * i1 + z * j1 ^ worldObj.getSeed()); boolean flag = false; - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, rand, par2, par3, flag)); + MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, rand, x, z, flag)); if (mapFeaturesEnabled) { - strongholdGenerator.generateStructuresInChunk(worldObj, rand, par2, par3); - scatteredFeatureGenerator.generateStructuresInChunk(worldObj, rand, par2, par3); + strongholdGenerator.generateStructuresInChunk(worldObj, rand, x, z); + scatteredFeatureGenerator.generateStructuresInChunk(worldObj, rand, x, z); } int k1; int l1; int i2; - if (TerrainGen.populate(par1IChunkProvider, worldObj, rand, par2, par3, flag, LAKE) && + if (TerrainGen.populate(par1IChunkProvider, worldObj, rand, x, z, flag, LAKE) && !flag && rand.nextInt(4) == 0) { k1 = k + rand.nextInt(16) + 8; @@ -384,17 +385,17 @@ public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) new WorldGenAbyLake(AbyssalCraft.Cwater).generate(worldObj, rand, k1, l1, i2); } + for(int i = 0; i < 5; i++) { + int Xcoord1 = k + rand.nextInt(16); + int Ycoord1 = rand.nextInt(80); + int Zcoord1 = l + rand.nextInt(16); - int Xcoord1 = k + rand.nextInt(16); - int Ycoord1 = rand.nextInt(66); - int Zcoord1 = l + rand.nextInt(16); - - new Abypillar().generate(worldObj, rand, Xcoord1, Ycoord1, Zcoord1); + new Abypillar().generate(worldObj, rand, Xcoord1, Ycoord1, Zcoord1); + } biomegenbase.decorate(worldObj, rand, k, l); - - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, rand, par2, par3, flag)); + MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, rand, x, z, flag)); BlockFalling.fallInstantly = false; } @@ -448,16 +449,16 @@ public String makeString() */ @Override @SuppressWarnings("rawtypes") - public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4) + public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int x, int y, int z) { - BiomeGenBase var5 = worldObj.getBiomeGenForCoords(par2, par4); - return var5 == null ? null : var5 == AbyssalCraft.Wastelands && par1EnumCreatureType == EnumCreatureType.monster && scatteredFeatureGenerator.hasStructureAt(par2, par3, par4) ? scatteredFeatureGenerator.getScatteredFeatureSpawnList() : var5.getSpawnableList(par1EnumCreatureType); + BiomeGenBase biome = worldObj.getBiomeGenForCoords(x, z); + return biome == null ? null : biome == AbyssalCraft.Wastelands && par1EnumCreatureType == EnumCreatureType.monster && scatteredFeatureGenerator.hasStructureAt(x, y, z) ? scatteredFeatureGenerator.getScatteredFeatureSpawnList() : biome.getSpawnableList(par1EnumCreatureType); } @Override - public ChunkPosition func_147416_a(World par1World, String par2String, int par3, int par4, int par5) + public ChunkPosition func_147416_a(World par1World, String par2String, int x, int y, int z) { - return "AbyStronghold".equals(par2String) && strongholdGenerator != null ? strongholdGenerator.func_151545_a(par1World, par3, par4, par5) : null; + return "AbyStronghold".equals(par2String) && strongholdGenerator != null ? strongholdGenerator.func_151545_a(par1World, x, y, z) : null; } @Override @@ -467,13 +468,13 @@ public int getLoadedChunkCount() } @Override - public void recreateStructures(int par1, int par2) + public void recreateStructures(int x, int z) { if (mapFeaturesEnabled) { - strongholdGenerator.func_151539_a(this, worldObj, par1, par2, (Block[])null); - scatteredFeatureGenerator.func_151539_a(this, worldObj, par1, par2, (Block[])null); + strongholdGenerator.func_151539_a(this, worldObj, x, z, (Block[])null); + scatteredFeatureGenerator.func_151539_a(this, worldObj, x, z, (Block[])null); } } } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDarkRealm.java b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDarkRealm.java index fbbd7ed05..5518ffe78 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDarkRealm.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDarkRealm.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; @@ -46,14 +47,10 @@ public class ChunkProviderDarkRealm implements IChunkProvider /** Reference to the World object. */ private World worldObj; - private final boolean mapFeaturesEnabled; private WorldType worldType; private final double[] field_147434_q; private final float[] parabolicField; private double[] stoneNoise = new double[256]; - // private MapGenBase caveGenerator = new MapGenCaves(); - // private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature(); - // private MapGenBase ravineGenerator = new MapGenRavine(); private BiomeGenBase[] biomesForGeneration; double[] doubleArray1; @@ -61,16 +58,10 @@ public class ChunkProviderDarkRealm implements IChunkProvider double[] doubleArray3; double[] doubleArray4; int[][] field_73219_j = new int[32][32]; - { - // caveGenerator = TerrainGen.getModdedMapGen(caveGenerator, CAVE); - // scatteredFeatureGenerator = (MapGenScatteredFeature) TerrainGen.getModdedMapGen(scatteredFeatureGenerator, SCATTERED_FEATURE); - // ravineGenerator = TerrainGen.getModdedMapGen(ravineGenerator, RAVINE); - } public ChunkProviderDarkRealm(World par1World, long par2, boolean par4) { worldObj = par1World; - mapFeaturesEnabled = par4; worldType = par1World.getWorldInfo().getTerrainType(); rand = new Random(par2); noiseGen1 = new NoiseGeneratorOctaves(rand, 16); @@ -101,11 +92,11 @@ public ChunkProviderDarkRealm(World par1World, long par2, boolean par4) mobSpawnerNoise = (NoiseGeneratorOctaves)noiseGens[6]; } - public void generateTerrain(int par1, int par2, Block[] par3BlockArray) + public void generateTerrain(int x, int z, Block[] par3BlockArray) { byte b0 = 63; - biomesForGeneration = worldObj.getWorldChunkManager().getBiomesForGeneration(biomesForGeneration, par1 * 4 - 2, par2 * 4 - 2, 10, 10); - generateNoise(par1 * 4, 0, par2 * 4); + biomesForGeneration = worldObj.getWorldChunkManager().getBiomesForGeneration(biomesForGeneration, x * 4 - 2, z * 4 - 2, 10, 10); + generateNoise(x * 4, 0, z * 4); for (int k = 0; k < 4; ++k) { @@ -170,54 +161,40 @@ else if (k2 * 8 + l2 < b0) } } - public void replaceBlocksForBiome(int par1, int par2, Block[] par3BlockArray, byte[] par4ByteArray, BiomeGenBase[] par5BiomeArray) + public void replaceBlocksForBiome(int x, int z, Block[] par3BlockArray, byte[] par4ByteArray, BiomeGenBase[] par5BiomeArray) { - ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3BlockArray, par5BiomeArray); + ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, x, z, par3BlockArray, par5BiomeArray); MinecraftForge.EVENT_BUS.post(event); if (event.getResult() == Result.DENY) return; double d0 = 0.03125D; - stoneNoise = noiseGen4.func_151599_a(stoneNoise, par1 * 16, par2 * 16, 16, 16, d0 * 2.0D, d0 * 2.0D, 1.0D); + stoneNoise = noiseGen4.func_151599_a(stoneNoise, x * 16, z * 16, 16, 16, d0 * 2.0D, d0 * 2.0D, 1.0D); for (int k = 0; k < 16; ++k) for (int l = 0; l < 16; ++l) { BiomeGenBase biomegenbase = par5BiomeArray[l + k * 16]; - biomegenbase.genTerrainBlocks(worldObj, rand, par3BlockArray, par4ByteArray, par1 * 16 + k, par2 * 16 + l, stoneNoise[l + k * 16]); + biomegenbase.genTerrainBlocks(worldObj, rand, par3BlockArray, par4ByteArray, x * 16 + k, z * 16 + l, stoneNoise[l + k * 16]); } } - /** - * loads or generates the chunk at the chunk location specified - */ @Override - public Chunk loadChunk(int par1, int par2) + public Chunk loadChunk(int x, int z) { - return provideChunk(par1, par2); + return provideChunk(x, z); } - /** - * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the blocks for the - * specified chunk from the map seed and chunk seed - */ @Override - public Chunk provideChunk(int par1, int par2) + public Chunk provideChunk(int x, int z) { - rand.setSeed(par1 * 341873128712L + par2 * 132897987541L); + rand.setSeed(x * 341873128712L + z * 132897987541L); Block[] ablock = new Block[65536]; byte[] abyte = new byte[65536]; - generateTerrain(par1, par2, ablock); - biomesForGeneration = worldObj.getWorldChunkManager().loadBlockGeneratorData(biomesForGeneration, par1 * 16, par2 * 16, 16, 16); - replaceBlocksForBiome(par1, par2, ablock, abyte, biomesForGeneration); - // caveGenerator.func_151539_a(this, worldObj, par1, par2, ablock); - // ravineGenerator.func_151539_a(this, worldObj, par1, par2, ablock); + generateTerrain(x, z, ablock); + biomesForGeneration = worldObj.getWorldChunkManager().loadBlockGeneratorData(biomesForGeneration, x * 16, z * 16, 16, 16); + replaceBlocksForBiome(x, z, ablock, abyte, biomesForGeneration); - if (mapFeaturesEnabled) - { - // scatteredFeatureGenerator.func_151539_a(this, worldObj, par1, par2, ablock); - } - - Chunk chunk = new Chunk(worldObj, ablock, abyte, par1, par2); + Chunk chunk = new Chunk(worldObj, ablock, abyte, x, z); byte[] abyte1 = chunk.getBiomeArray(); for (int k = 0; k < abyte1.length; ++k) @@ -227,12 +204,12 @@ public Chunk provideChunk(int par1, int par2) return chunk; } - private void generateNoise(int par1, int par2, int par3) + private void generateNoise(int x, int y, int z) { - doubleArray4 = noiseGen6.generateNoiseOctaves(doubleArray4, par1, par3, 5, 5, 200.0D, 200.0D, 0.5D); - doubleArray1 = noiseGen3.generateNoiseOctaves(doubleArray1, par1, par2, par3, 5, 33, 5, 8.555150000000001D, 4.277575000000001D, 8.555150000000001D); - doubleArray2 = noiseGen1.generateNoiseOctaves(doubleArray2, par1, par2, par3, 5, 33, 5, 684.412D, 684.412D, 684.412D); - doubleArray3 = noiseGen2.generateNoiseOctaves(doubleArray3, par1, par2, par3, 5, 33, 5, 684.412D, 684.412D, 684.412D); + doubleArray4 = noiseGen6.generateNoiseOctaves(doubleArray4, x, z, 5, 5, 200.0D, 200.0D, 0.5D); + doubleArray1 = noiseGen3.generateNoiseOctaves(doubleArray1, x, y, z, 5, 33, 5, 8.555150000000001D, 4.277575000000001D, 8.555150000000001D); + doubleArray2 = noiseGen1.generateNoiseOctaves(doubleArray2, x, y, z, 5, 33, 5, 684.412D, 684.412D, 684.412D); + doubleArray3 = noiseGen2.generateNoiseOctaves(doubleArray3, x, y, z, 5, 33, 5, 684.412D, 684.412D, 684.412D); int l = 0; int i1 = 0; for (int j1 = 0; j1 < 5; ++j1) @@ -327,104 +304,71 @@ private void generateNoise(int par1, int par2, int par3) } } - /** - * Checks to see if a chunk exists at x, y - */ @Override - public boolean chunkExists(int par1, int par2) + public boolean chunkExists(int x, int z) { return true; } - /** - * Populates chunk with ores etc etc - */ @Override - public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) + public void populate(IChunkProvider par1IChunkProvider, int x, int z) { BlockFalling.fallInstantly = true; - int k = par2 * 16; - int l = par3 * 16; + int k = x * 16; + int l = z * 16; BiomeGenBase biomegenbase = worldObj.getBiomeGenForCoords(k + 16, l + 16); rand.setSeed(worldObj.getSeed()); long i1 = rand.nextLong() / 2L * 2L + 1L; long j1 = rand.nextLong() / 2L * 2L + 1L; - rand.setSeed(par2 * i1 + par3 * j1 ^ worldObj.getSeed()); + rand.setSeed(x * i1 + z * j1 ^ worldObj.getSeed()); boolean flag = false; - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, rand, par2, par3, flag)); - - if (mapFeaturesEnabled) - { - // scatteredFeatureGenerator.generateStructuresInChunk(worldObj, rand, par2, par3); - } + MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, rand, x, z, flag)); biomegenbase.decorate(worldObj, rand, k, l); - - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, rand, par2, par3, flag)); + MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, rand, x, z, flag)); BlockFalling.fallInstantly = false; } - /** - * Two modes of operation: if passed true, save all Chunks in one go. If passed false, save up to two chunks. - * Return true if all chunks have been saved. - */ @Override public boolean saveChunks(boolean par1, IProgressUpdate par2IProgressUpdate) { return true; } - /** - * Save extra data not associated with any Chunk. Not saved during autosave, only during world unload. Currently - * unimplemented. - */ @Override public void saveExtraData() {} - /** - * Unloads chunks that are marked to be unloaded. This is not guaranteed to unload every such chunk. - */ @Override public boolean unloadQueuedChunks() { return false; } - /** - * Returns if the IChunkProvider supports saving. - */ @Override public boolean canSave() { return true; } - /** - * Converts the instance data to a readable string. - */ @Override public String makeString() { return "RandomLevelSource"; } - /** - * Returns a list of creatures of the specified type that can spawn at the given location. - */ @Override @SuppressWarnings("rawtypes") - public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4) + public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int x, int y, int z) { - BiomeGenBase var5 = worldObj.getBiomeGenForCoords(par2, par4); - return var5 == null ? null : var5.getSpawnableList(par1EnumCreatureType); - // return var5 == null ? null : var5 == AbyssalCraft.darkRealm && par1EnumCreatureType == EnumCreatureType.monster && scatteredFeatureGenerator.hasStructureAt(par2, par3, par4) ? scatteredFeatureGenerator.getScatteredFeatureSpawnList() : var5.getSpawnableList(par1EnumCreatureType); + BiomeGenBase biome = worldObj.getBiomeGenForCoords(x, z); + return biome == null ? null : biome.getSpawnableList(par1EnumCreatureType); } @Override - public ChunkPosition func_147416_a(World par1World, String par2String, int par3, int par4, int par5) + public ChunkPosition func_147416_a(World par1World, String par2String, int x, int y, int z) { return null; } @@ -436,12 +380,5 @@ public int getLoadedChunkCount() } @Override - public void recreateStructures(int par1, int par2) - { - if (mapFeaturesEnabled) - { - - // scatteredFeatureGenerator.func_151539_a(this, worldObj, par1, par2, (Block[])null); - } - } + public void recreateStructures(int x, int z){} } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDreadlands.java index 95ba7e0e3..a19eb7c1d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderDreadlands.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; @@ -165,7 +166,7 @@ public void generateTerrain(int par1, int par2, Block[] par3BlockArray) if ((d15 += d16) > 0.0D) par3BlockArray[j3 += short1] = AbyssalCraft.dreadstone; else if (k2 * 8 + l2 < b0) - par3BlockArray[j3 += short1] = AbyssalCraft.dreadgrass; + par3BlockArray[j3 += short1] = AbyssalCraft.abydreadstone; else par3BlockArray[j3 += short1] = null; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderOmothol.java b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderOmothol.java index c1571cc37..996a84658 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderOmothol.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/ChunkProviderOmothol.java @@ -1,24 +1,34 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.common.world; -import java.util.List; -import java.util.Random; +import java.util.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import net.minecraft.block.Block; -import net.minecraft.block.BlockFalling; +import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.entity.EnumCreatureType; -import net.minecraft.init.Blocks; import net.minecraft.util.IProgressUpdate; -import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraft.world.gen.NoiseGenerator; -import net.minecraft.world.gen.NoiseGeneratorOctaves; +import net.minecraft.world.chunk.*; +import net.minecraft.world.gen.*; import net.minecraftforge.common.*; import cpw.mods.fml.common.eventhandler.Event.*; import net.minecraftforge.event.terraingen.*; @@ -26,20 +36,12 @@ public class ChunkProviderOmothol implements IChunkProvider { private Random rand; - private NoiseGeneratorOctaves noiseGen1; - private NoiseGeneratorOctaves noiseGen2; - private NoiseGeneratorOctaves noiseGen3; - public NoiseGeneratorOctaves noiseGen4; - public NoiseGeneratorOctaves noiseGen5; + private NoiseGeneratorOctaves noiseGen1, noiseGen2, noiseGen3, noiseGen4, noiseGen5; private World worldObj; private double[] densities; /** The biomes that are used to generate the chunk */ private BiomeGenBase[] biomesForGeneration; - double[] noiseData1; - double[] noiseData2; - double[] noiseData3; - double[] noiseData4; - double[] noiseData5; + double[] noiseData1, noiseData2, noiseData3, noiseData4, noiseData5; int[][] field_73203_h = new int[32][32]; public ChunkProviderOmothol(World par1World, long par2) @@ -61,13 +63,13 @@ public ChunkProviderOmothol(World par1World, long par2) noiseGen5 = (NoiseGeneratorOctaves)noiseGens[4]; } - public void generateTerrain(int par1, int par2, Block[] par3BlockArray, BiomeGenBase[] par4BiomeArray) + public void generateTerrain(int x, int z, Block[] par3BlockArray, BiomeGenBase[] par4BiomeArray) { byte b0 = 2; int k = b0 + 1; byte b1 = 33; int l = b0 + 1; - densities = initializeNoiseField(densities, par1 * b0, 0, par2 * b0, k, b1, l); + densities = initializeNoiseField(densities, x * b0, 0, z * b0, k, b1, l); for (int i1 = 0; i1 < b0; ++i1) for (int j1 = 0; j1 < b0; ++j1) @@ -123,9 +125,9 @@ public void generateTerrain(int par1, int par2, Block[] par3BlockArray, BiomeGen } } - public void replaceBlocksForBiome(int par1, int par2, Block[] par3BlockArray, BiomeGenBase[] par4BiomeArray) + public void replaceBlocksForBiome(int x, int z, Block[] par3BlockArray, BiomeGenBase[] par4BiomeArray) { - ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3BlockArray, par4BiomeArray); + ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, x, z, par3BlockArray, par4BiomeArray); MinecraftForge.EVENT_BUS.post(event); if (event.getResult() == Result.DENY) return; @@ -144,7 +146,7 @@ public void replaceBlocksForBiome(int par1, int par2, Block[] par3BlockArray, Bi if (block2 != null && block2.getMaterial() != Material.air) { - if (block2 == Blocks.stone) + if (block2 == AbyssalCraft.omotholstone) if (i1 == -1) { if (b0 <= 0) @@ -172,20 +174,20 @@ else if (i1 > 0) } @Override - public Chunk loadChunk(int par1, int par2) + public Chunk loadChunk(int x, int z) { - return provideChunk(par1, par2); + return provideChunk(x, z); } @Override - public Chunk provideChunk(int par1, int par2) + public Chunk provideChunk(int x, int z) { - rand.setSeed(par1 * 341873128712L + par2 * 132897987541L); + rand.setSeed(x * 341873128712L + z * 132897987541L); Block[] ablock = new Block[32768]; - biomesForGeneration = worldObj.getWorldChunkManager().loadBlockGeneratorData(biomesForGeneration, par1 * 16, par2 * 16, 16, 16); - generateTerrain(par1, par2, ablock, biomesForGeneration); - replaceBlocksForBiome(par1, par2, ablock, biomesForGeneration); - Chunk chunk = new Chunk(worldObj, ablock, par1, par2); + biomesForGeneration = worldObj.getWorldChunkManager().loadBlockGeneratorData(biomesForGeneration, x * 16, z * 16, 16, 16); + generateTerrain(x, z, ablock, biomesForGeneration); + replaceBlocksForBiome(x, z, ablock, biomesForGeneration); + Chunk chunk = new Chunk(worldObj, ablock, x, z); byte[] abyte = chunk.getBiomeArray(); for (int k = 0; k < abyte.length; ++k) @@ -199,136 +201,104 @@ public Chunk provideChunk(int par1, int par2) * generates a subset of the level's terrain data. Takes 7 arguments: the [empty] noise array, the position, and the * size. */ - private double[] initializeNoiseField(double[] par1ArrayOfDouble, int par2, int par3, int par4, int par5, int par6, int par7) + private double[] initializeNoiseField(double[] par1ArrayOfDouble, int x, int y, int z, int xSize, int ySize, int zSize) { - ChunkProviderEvent.InitNoiseField event = new ChunkProviderEvent.InitNoiseField(this, par1ArrayOfDouble, par2, par3, par4, par5, par6, par7); - MinecraftForge.EVENT_BUS.post(event); - if (event.getResult() == Result.DENY) return event.noisefield; - - if (par1ArrayOfDouble == null) - par1ArrayOfDouble = new double[par5 * par6 * par7]; - - double d0 = 684.412D; - double d1 = 684.412D; - noiseData4 = noiseGen4.generateNoiseOctaves(noiseData4, par2, par4, par5, par7, 1.121D, 1.121D, 0.5D); - noiseData5 = noiseGen5.generateNoiseOctaves(noiseData5, par2, par4, par5, par7, 200.0D, 200.0D, 0.5D); - d0 *= 2.0D; - noiseData1 = noiseGen3.generateNoiseOctaves(noiseData1, par2, par3, par4, par5, par6, par7, d0 / 80.0D, d1 / 160.0D, d0 / 80.0D); - noiseData2 = noiseGen1.generateNoiseOctaves(noiseData2, par2, par3, par4, par5, par6, par7, d0, d1, d0); - noiseData3 = noiseGen2.generateNoiseOctaves(noiseData3, par2, par3, par4, par5, par6, par7, d0, d1, d0); + if(par1ArrayOfDouble == null) + par1ArrayOfDouble = new double[xSize * ySize * zSize]; + double d = 684.41200000000003D; + double d1 = 684.41200000000003D; + noiseData4 = noiseGen4.generateNoiseOctaves(noiseData4, x, z, xSize, zSize, 1.121D, 1.121D, 0.5D); + noiseData5 = noiseGen5.generateNoiseOctaves(noiseData5, x, z, xSize, zSize, 200D, 200D, 0.5D); + d *= 2D; + noiseData1 = noiseGen3.generateNoiseOctaves(noiseData1, x, y, z, xSize, ySize, zSize, d / 80D, d1 / 160D, d / 80D); + noiseData2 = noiseGen1.generateNoiseOctaves(noiseData2, x, y, z, xSize, ySize, zSize, d, d1, d); + noiseData3 = noiseGen2.generateNoiseOctaves(noiseData3, x, y, z, xSize, ySize, zSize, d, d1, d); int k1 = 0; int l1 = 0; - - for (int i2 = 0; i2 < par5; ++i2) - for (int j2 = 0; j2 < par7; ++j2) + for(int j2 = 0; j2 < xSize; j2++) + for(int l2 = 0; l2 < zSize; l2++) { - double d2 = (noiseData4[l1] + 256.0D) / 512.0D; - - if (d2 > 1.0D) - d2 = 1.0D; - - double d3 = noiseData5[l1] / 8000.0D; - - if (d3 < 0.0D) - d3 = -d3 * 0.3D; - - d3 = d3 * 3.0D - 2.0D; - float f = (i2 + par2 - 0) / 1.0F; - float f1 = (j2 + par4 - 0) / 1.0F; - float f2 = 100.0F - MathHelper.sqrt_float(f * f + f1 * f1) * 8.0F; - - if (f2 > 80.0F) - f2 = 80.0F; - - if (f2 < -100.0F) - f2 = -100.0F; - - if (d3 > 1.0D) - d3 = 1.0D; - - d3 /= 8.0D; - d3 = 0.0D; - - if (d2 < 0.0D) - d2 = 0.0D; - - d2 += 0.5D; - d3 = d3 * par6 / 16.0D; - ++l1; - double d4 = par6 / 2.0D; - - for (int k2 = 0; k2 < par6; ++k2) + double d3; + d3 = 0.5D; + double d4 = 1.0D - d3; + d4 *= d4; + d4 *= d4; + d4 = 1.0D - d4; + double d5 = (noiseData4[l1] + 256D) / 512D; + d5 *= d4; + if(d5 > 1.0D) + d5 = 1.0D; + double d6 = noiseData5[l1] / 8000D; + if(d6 < 0.0D) + d6 = -d6 * 0.29999999999999999D; + d6 = d6 * 3D - 2D; + if(d6 > 1.0D) + d6 = 1.0D; + d6 /= 8D; + d6 = 0.0D; + if(d5 < 0.0D) + d5 = 0.0D; + d5 += 0.5D; + d6 = d6 * ySize / 16D; + l1++; + double d7 = ySize / 2D; + for(int j3 = 0; j3 < ySize; j3++) { - double d5 = 0.0D; - double d6 = (k2 - d4) * 8.0D / d2; - - if (d6 < 0.0D) - d6 *= -1.0D; - - double d7 = noiseData2[k1] / 512.0D; - double d8 = noiseData3[k1] / 512.0D; - double d9 = (noiseData1[k1] / 10.0D + 1.0D) / 2.0D; - - if (d9 < 0.0D) - d5 = d7; - else if (d9 > 1.0D) - d5 = d8; + double d8 = 0.0D; + double d9 = (j3 - d7) * 8D / d5; + if(d9 < 0.0D) + d9 *= -1D; + double d10 = noiseData2[k1] / 512D; + double d11 = noiseData3[k1] / 512D; + double d12 = (noiseData1[k1] / 10D + 1.0D) / 2D; + if(d12 < 0.0D) + d8 = d10; else - d5 = d7 + (d8 - d7) * d9; - - d5 -= 8.0D; - d5 += f2; - byte b0 = 2; - double d10; - - if (k2 > par6 / 2 - b0) + if(d12 > 1.0D) + d8 = d11; + else + d8 = d10 + (d11 - d10) * d12; + d8 -= 8D; + int k3 = 32; + if(j3 > ySize - k3) { - d10 = (k2 - (par6 / 2 - b0)) / 64.0F; - - if (d10 < 0.0D) - d10 = 0.0D; - - if (d10 > 1.0D) - d10 = 1.0D; - - d5 = d5 * (1.0D - d10) + -3000.0D * d10; + double d13 = (j3 - (ySize - k3)) / (k3 - 1.0F); + d8 = d8 * (1.0D - d13) + -30D * d13; } - - b0 = 8; - - if (k2 < b0) + k3 = 8; + if(j3 < k3) { - d10 = (b0 - k2) / (b0 - 1.0F); - d5 = d5 * (1.0D - d10) + -30.0D * d10; + double d14 = (k3 - j3) / (k3 - 1.0F); + d8 = d8 * (1.0D - d14) + -30D * d14; } - - par1ArrayOfDouble[k1] = d5; - ++k1; + par1ArrayOfDouble[k1] = d8; + k1++; } + } return par1ArrayOfDouble; } @Override - public boolean chunkExists(int par1, int par2) + public boolean chunkExists(int x, int z) { return true; } @Override - public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) + public void populate(IChunkProvider par1IChunkProvider, int x, int z) { BlockFalling.fallInstantly = true; - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, worldObj.rand, par2, par3, false)); + MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, worldObj.rand, x, z, false)); - int k = par2 * 16; - int l = par3 * 16; + int k = x * 16; + int l = z * 16; BiomeGenBase biomegenbase = worldObj.getBiomeGenForCoords(k + 16, l + 16); biomegenbase.decorate(worldObj, worldObj.rand, k, l); - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, worldObj.rand, par2, par3, false)); + MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, worldObj.rand, x, z, false)); BlockFalling.fallInstantly = false; } @@ -362,14 +332,14 @@ public String makeString() @Override @SuppressWarnings("rawtypes") - public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4) + public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int x, int y, int z) { - BiomeGenBase biomegenbase = worldObj.getBiomeGenForCoords(par2, par4); + BiomeGenBase biomegenbase = worldObj.getBiomeGenForCoords(x, z); return biomegenbase.getSpawnableList(par1EnumCreatureType); } @Override - public ChunkPosition func_147416_a(World p_147416_1_, String p_147416_2_, int p_147416_3_, int p_147416_4_, int p_147416_5_) + public ChunkPosition func_147416_a(World par1World, String par2String, int x, int y, int z) { return null; } @@ -381,5 +351,5 @@ public int getLoadedChunkCount() } @Override - public void recreateStructures(int par1, int par2) {} + public void recreateStructures(int x, int z) {} } \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterAbyss.java b/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterAbyss.java index ac94f2fe4..e97a9cc11 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterAbyss.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterAbyss.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterDreadlands.java index e4dfc5506..c788e0331 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterDreadlands.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterOmothol.java b/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterOmothol.java index 1cbcac301..b42bd246d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterOmothol.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/TeleporterOmothol.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldChunkManagerDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldChunkManagerDreadlands.java index 10bd438e8..3fd876134 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldChunkManagerDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldChunkManagerDreadlands.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderAbyss.java b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderAbyss.java index 1d415001f..4abc5c1b3 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderAbyss.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderAbyss.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDarkRealm.java b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDarkRealm.java index 5189200ab..85f149e7c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDarkRealm.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDarkRealm.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; @@ -36,7 +37,6 @@ public IChunkProvider createChunkGenerator() { @Override public void registerWorldChunkManager() { worldChunkMgr = new WorldChunkManagerHell(AbyssalCraft.darkRealm, 0.0F); - isHellWorld= false; dimensionId = AbyssalCraft.configDimId4; hasNoSky = true; } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDreadlands.java index 487543d37..0956ce068 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderDreadlands.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderOmothol.java b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderOmothol.java index b4b038cfc..2679a300c 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderOmothol.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/WorldProviderOmothol.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world; @@ -23,6 +24,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.WorldProvider; import net.minecraft.world.biome.WorldChunkManagerHell; +import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.IChunkProvider; public class WorldProviderOmothol extends WorldProvider { @@ -32,7 +34,7 @@ public void registerWorldChunkManager() { worldChunkMgr = new WorldChunkManagerHell(AbyssalCraft.omothol, 0.0F); dimensionId = AbyssalCraft.configDimId3; - hasNoSky = false; + hasNoSky = true; } @Override @@ -47,6 +49,16 @@ public String getDimensionName() return "Omothol"; } + @Override + protected void generateLightBrightnessTable() { + float f = 0.25F; + + for (int i = 0; i <= 15; ++i) { + float f1 = 1.0F - i / 15.0F; + lightBrightnessTable[i] = (1.0F - f1) / (f1 * 3.0F + 1.0F) * (1.0F - f) + f; + } + } + @Override public float calculateCelestialAngle(long par1, float par3) { @@ -82,6 +94,11 @@ public Vec3 getFogColor(float par1, float par2) return Vec3.createVectorHelper(f3, f4, f5); } + @Override + public boolean canDoRainSnowIce(Chunk chunk) { + return false; + } + @Override @SideOnly(Side.CLIENT) public boolean isSkyColored() diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbyDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbyDreadlands.java index 392441b71..aa6f82f66 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbyDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbyDreadlands.java @@ -1,25 +1,24 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; -import net.minecraft.block.Block; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.feature.*; import com.shinoow.abyssalcraft.AbyssalCraft; @@ -28,70 +27,52 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenAbyDreadlands extends BiomeGenBase -{ - - private WorldGenerator theWorldGenerator; - private WorldGenerator theSecondWorldGenerator; - private WorldGenerator theThirdWorldGenerator; +public class BiomeGenAbyDreadlands extends BiomeGenDreadlandsBase { @SuppressWarnings("unchecked") public BiomeGenAbyDreadlands(int par1) { super(par1); topBlock = AbyssalCraft.abydreadstone; fillerBlock = AbyssalCraft.abydreadstone; - spawnableMonsterList.clear(); - spawnableCreatureList.clear(); - spawnableWaterCreatureList.clear(); - spawnableCaveCreatureList.clear(); - theBiomeDecorator.treesPerChunk = -1; - theBiomeDecorator.flowersPerChunk= -1; - theWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 96, AbyssalCraft.dreadstone); - theSecondWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 64, AbyssalCraft.dreadstone); - theThirdWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 32, AbyssalCraft.dreadstone); - spawnableMonsterList.add(new SpawnListEntry(EntityDreadgolem.class, 2, 1, 2)); - spawnableCreatureList.add(new SpawnListEntry(EntityAbygolem.class, 5, 1, 5)); + spawnableCreatureList.add(new SpawnListEntry(EntityAbygolem.class, 100, 3, 8)); } @Override public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) - { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); + for(int rarity = 0; rarity < 8; rarity++) { + int veinSize = 2 + par2Random.nextInt(4); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(55); + int z = par4 + par2Random.nextInt(16); - if (var10 == AbyssalCraft.dreadstone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.abydreadore); + new WorldGenMinable(AbyssalCraft.abydreadore, veinSize, AbyssalCraft.dreadstone).generate(par1World, par2Random, x, y, z); } - for (var5 = 0; var5 < 7; ++var5) + for (int rarity = 0; rarity < 7; ++rarity) { - var6 = par3 + par2Random.nextInt(16); - var7 = par2Random.nextInt(64); - var8 = par4 + par2Random.nextInt(16); - theWorldGenerator.generate(par1World, par2Random, var6, var7, var8); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 96, + AbyssalCraft.dreadstone).generate(par1World, par2Random, x, y, z); } - for (var5 = 0; var5 < 7; ++var5) + for (int rarity = 0; rarity < 7; ++rarity) { - var6 = par3 + par2Random.nextInt(16); - var7 = par2Random.nextInt(64); - var8 = par4 + par2Random.nextInt(16); - theSecondWorldGenerator.generate(par1World, par2Random, var6, var7, var8); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 64, + AbyssalCraft.dreadstone).generate(par1World, par2Random, x, y, z); } - for (var5 = 0; var5 < 7; ++var5) + for (int rarity = 0; rarity < 7; ++rarity) { - var6 = par3 + par2Random.nextInt(16); - var7 = par2Random.nextInt(64); - var8 = par4 + par2Random.nextInt(16); - theThirdWorldGenerator.generate(par1World, par2Random, var6, var7, var8); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 32, + AbyssalCraft.dreadstone).generate(par1World, par2Random, x, y, z); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbywasteland.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbywasteland.java index e452cb7dd..d5d4d73ad 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbywasteland.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenAbywasteland.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; @@ -38,10 +39,12 @@ public BiomeGenAbywasteland(int par1){ spawnableCreatureList.clear(); spawnableWaterCreatureList.clear(); spawnableCaveCreatureList.clear(); - spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 5, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 50, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 50, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntitySkeletonGoliath.class, 15, 1, 1)); + spawnableMonsterList.add(new SpawnListEntry(EntityDragonMinion.class, 3, 1, 1)); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorOcean.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorOcean.java index 2c4916811..28eecc18a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorOcean.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorOcean.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; @@ -38,9 +39,8 @@ public BiomeGenCorOcean(int par1) { heightVariation = 0.1F; waterColorMultiplier = 0x24FF83; spawnableCreatureList.clear(); - spawnableMonsterList.clear(); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 5, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 5)); } @@ -59,7 +59,7 @@ public void decorate(World par1World, Random par2Random, int par3, int par4) { int var9 = par4 + par2Random.nextInt(16); Block var10 = par1World.getBlock(var7, var8, var9); - if (var10 == Blocks.stone || var10 == Blocks.iron_ore || var10 == Blocks.coal_ore) { + if (var10.isReplaceableOreGen(par1World, var7, var8, var9, Blocks.stone) || var10 == Blocks.iron_ore || var10 == Blocks.coal_ore) { par1World.setBlock(var7, var8, var9, AbyssalCraft.Coraliumore); if(var10 == Blocks.diamond_ore || var10 == Blocks.gold_ore || var10 == Blocks.iron_ore) par1World.setBlock(var7, var8, var9, AbyssalCraft.CoraliumInfusedStone); diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorSwamp.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorSwamp.java index 6a45b81b7..de1b1b356 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorSwamp.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenCorSwamp.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; @@ -25,6 +26,7 @@ import com.shinoow.abyssalcraft.AbyssalCraft; import com.shinoow.abyssalcraft.common.entity.*; +import com.shinoow.abyssalcraft.common.entity.anti.*; import com.shinoow.abyssalcraft.common.world.gen.WorldGenAntimatterLake; import cpw.mods.fml.relauncher.Side; @@ -35,8 +37,6 @@ public class BiomeGenCorSwamp extends BiomeGenBase { @SuppressWarnings("unchecked") public BiomeGenCorSwamp(int par1) { super(par1); - spawnableCreatureList.clear(); - spawnableMonsterList.clear(); rootHeight = -0.2F; heightVariation = 0.1F; topBlock=Blocks.grass; @@ -52,8 +52,19 @@ public BiomeGenCorSwamp(int par1) { theBiomeDecorator.sandPerChunk = 0; theBiomeDecorator.grassPerChunk = 5; waterColorMultiplier = 0x24FF83; - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 5, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 5)); + spawnableCreatureList.add(new SpawnListEntry(EntityAntiPig.class, 5, 1, 2)); + spawnableCaveCreatureList.add(new SpawnListEntry(EntityAntiBat.class, 10, 1, 2)); + spawnableCreatureList.add(new SpawnListEntry(EntityAntiChicken.class, 5, 1, 2)); + spawnableCreatureList.add(new SpawnListEntry(EntityAntiCow.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiAbyssalZombie.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiCreeper.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiGhoul.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiPlayer.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiSkeleton.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiSpider.class, 5, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAntiZombie.class, 5, 1, 2)); } @Override @@ -61,18 +72,15 @@ public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) + for (int var6 = 0; var6 < var5; ++var6) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; + int var7 = par3 + par2Random.nextInt(16); + int var8 = par2Random.nextInt(28) + 4; int var9 = par4 + par2Random.nextInt(16); Block var10 = par1World.getBlock(var7, var8, var9); - if (var10 == Blocks.stone || var10 == Blocks.iron_ore || var10 == Blocks.coal_ore) + if (var10.isReplaceableOreGen(par1World, var7, var8, var9, Blocks.stone) || var10 == Blocks.iron_ore || var10 == Blocks.coal_ore) par1World.setBlock(var7, var8, var9, AbyssalCraft.Coraliumore); } for(int rarity = 0; rarity < 3; rarity++) diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarkRealm.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarkRealm.java index e10b8a175..416687b24 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarkRealm.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarkRealm.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; @@ -32,9 +33,9 @@ public BiomeGenDarkRealm(int par1){ spawnableCreatureList.clear(); spawnableWaterCreatureList.clear(); spawnableCaveCreatureList.clear(); - spawnableMonsterList.add(new SpawnListEntry(EntityShadowCreature.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityShadowMonster.class, 3, 1, 3)); - spawnableMonsterList.add(new SpawnListEntry(EntityShadowBeast.class, 1, 1, 1)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowCreature.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowMonster.class, 40, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowBeast.class, 10, 1, 1)); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklands.java index 8b2aa4983..a266d4fdb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklands.java @@ -1,100 +1,84 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntityZombie; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenTrees; -import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraft.world.gen.feature.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityAbyssalZombie; -import com.shinoow.abyssalcraft.common.entity.EntityDepthsGhoul; +import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.world.gen.WorldGenDLT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenDarklands extends BiomeGenBase -{ +public class BiomeGenDarklands extends BiomeGenBase { - private WorldGenerator theWorldGenerator; - private WorldGenerator theSecondWorldGenerator; private WorldGenTrees WorldGenDarkTrees; @SuppressWarnings("unchecked") public BiomeGenDarklands(int par1) { super(par1); - spawnableCreatureList.clear(); - spawnableMonsterList.clear(); topBlock = AbyssalCraft.Darkgrass; fillerBlock = Blocks.dirt; waterColorMultiplier = 14745518; - theWorldGenerator = new WorldGenMinable(AbyssalCraft.Darkstone, 20); - theSecondWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 1); WorldGenDarkTrees = new WorldGenDLT(false); theBiomeDecorator.treesPerChunk = 10; - spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 3, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 3)); } + @Override public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) + for (int rarity = 0; rarity < var5; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(28) + 4; + int z = par4 + par2Random.nextInt(16); + Block var10 = par1World.getBlock(x, y, z); - if (var10 == Blocks.stone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.abyore); + if (var10.isReplaceableOreGen(par1World, x, y, z, Blocks.stone)) + par1World.setBlock(x, y, z, AbyssalCraft.abyore); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.Darkstone, 20).generate(par1World, par2Random, x, y, z); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theSecondWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 1).generate(par1World, par2Random, x, y, z); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsForest.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsForest.java index 5057b9973..0249798a9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsForest.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsForest.java @@ -1,65 +1,51 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntityZombie; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenTrees; -import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraft.world.gen.feature.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityAbyssalZombie; -import com.shinoow.abyssalcraft.common.entity.EntityDepthsGhoul; +import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.world.gen.WorldGenDLT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenDarklandsForest extends BiomeGenBase -{ +public class BiomeGenDarklandsForest extends BiomeGenBase { - private WorldGenerator theWorldGenerator; - private WorldGenerator theSecondWorldGenerator; private WorldGenTrees WorldGenDarkTrees; @SuppressWarnings("unchecked") public BiomeGenDarklandsForest(int par1) { super(par1); - spawnableCreatureList.clear(); - spawnableMonsterList.clear(); topBlock = AbyssalCraft.Darkgrass; fillerBlock = Blocks.dirt; waterColorMultiplier = 14745518; - theWorldGenerator = new WorldGenMinable(AbyssalCraft.Darkstone, 20); - theSecondWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 1); WorldGenDarkTrees = new WorldGenDLT(false); theBiomeDecorator.treesPerChunk = 20; - spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 3, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 3)); } @Override @@ -67,35 +53,32 @@ public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) + for (int rarity = 0; rarity < var5; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(28) + 4; + int z = par4 + par2Random.nextInt(16); + Block var10 = par1World.getBlock(x, y, z); - if (var10 == Blocks.stone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.abyore); + if (var10.isReplaceableOreGen(par1World, x, y, z, Blocks.stone)) + par1World.setBlock(x, y, z, AbyssalCraft.abyore); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.Darkstone, 20).generate(par1World, par2Random, x, y, z); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theSecondWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 1).generate(par1World, par2Random, x, y, z); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsHills.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsHills.java index d1937d3d6..65c709626 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsHills.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsHills.java @@ -1,47 +1,38 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntityZombie; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenTrees; -import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraft.world.gen.feature.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityAbyssalZombie; -import com.shinoow.abyssalcraft.common.entity.EntityDepthsGhoul; +import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.world.gen.WorldGenDLT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenDarklandsHills extends BiomeGenBase -{ +public class BiomeGenDarklandsHills extends BiomeGenBase { - private WorldGenerator theWorldGenerator; - private WorldGenerator theSecondWorldGenerator; - private WorldGenerator theThirdWorldGenerator; private WorldGenTrees WorldGenDarkTrees; @SuppressWarnings("unchecked") @@ -50,63 +41,57 @@ public BiomeGenDarklandsHills(int par1) super(par1); rootHeight = 1.1F; heightVariation = 0.5F; - spawnableCreatureList.clear(); - spawnableMonsterList.clear(); topBlock = AbyssalCraft.Darkgrass; fillerBlock = AbyssalCraft.Darkstone; waterColorMultiplier = 14745518; - theWorldGenerator = new WorldGenMinable(AbyssalCraft.Darkstone, 64); - theSecondWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 1); - theThirdWorldGenerator = new WorldGenMinable(AbyssalCraft.Darkstone, 32); WorldGenDarkTrees = new WorldGenDLT(false); theBiomeDecorator.treesPerChunk = 1; - spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 3, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowCreature.class, 10, 1, 1)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowMonster.class, 5, 1, 1)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowBeast.class, 1, 1, 1)); } + @Override public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) + for (int rarity = 0; rarity < var5; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(28) + 4; + int z = par4 + par2Random.nextInt(16); + Block var10 = par1World.getBlock(x, y, z); if (var10 == Blocks.stone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.abyore); + par1World.setBlock(x, y, z, AbyssalCraft.abyore); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.Darkstone, 64).generate(par1World, par2Random, x, y, z); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theSecondWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 1).generate(par1World, par2Random, x, y, z); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theThirdWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.Darkstone, 32).generate(par1World, par2Random, x, y, z); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsMountains.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsMountains.java index 22e8fc00b..8e2c77368 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsMountains.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsMountains.java @@ -1,32 +1,30 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntityZombie; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityAbyssalZombie; -import com.shinoow.abyssalcraft.common.entity.EntityDepthsGhoul; +import com.shinoow.abyssalcraft.common.entity.*; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -39,35 +37,31 @@ public BiomeGenDarklandsMountains(int par1) super(par1); rootHeight = 1.3F; heightVariation = 0.9F; - spawnableCreatureList.clear(); - spawnableMonsterList.clear(); topBlock = AbyssalCraft.Darkstone; fillerBlock = AbyssalCraft.Darkstone; waterColorMultiplier = 14745518; theBiomeDecorator.treesPerChunk = 0; - spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 2, 1, 2)); - spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 2, 1, 2)); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 2, 1, 2)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 2, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 45, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 45, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowCreature.class, 60, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowMonster.class, 45, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityShadowBeast.class, 15, 1, 1)); } @Override public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) + for (int rarity = 0; rarity < var5; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(28) + 4; + int z = par4 + par2Random.nextInt(16); + Block var10 = par1World.getBlock(x, y, z); - if (var10 == Blocks.stone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.abyore); + if (var10.isReplaceableOreGen(par1World, x, y, z, Blocks.stone)) + par1World.setBlock(x, y, z, AbyssalCraft.abyore); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsPlains.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsPlains.java index f9422f283..4af4f70e7 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsPlains.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDarklandsPlains.java @@ -1,100 +1,84 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntityZombie; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenTrees; -import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraft.world.gen.feature.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityAbyssalZombie; -import com.shinoow.abyssalcraft.common.entity.EntityDepthsGhoul; +import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.world.gen.WorldGenDLT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenDarklandsPlains extends BiomeGenBase -{ +public class BiomeGenDarklandsPlains extends BiomeGenBase { - private WorldGenerator theWorldGenerator; - private WorldGenerator theSecondWorldGenerator; private WorldGenTrees WorldGenDarkTrees; @SuppressWarnings("unchecked") public BiomeGenDarklandsPlains(int par1) { super(par1); - spawnableCreatureList.clear(); - spawnableMonsterList.clear(); topBlock = AbyssalCraft.Darkgrass; fillerBlock = Blocks.dirt; waterColorMultiplier = 14745518; - theWorldGenerator = new WorldGenMinable(AbyssalCraft.Darkstone, 32); - theSecondWorldGenerator = new WorldGenMinable(AbyssalCraft.abydreadstone, 1); WorldGenDarkTrees = new WorldGenDLT(false); theBiomeDecorator.treesPerChunk = 1; - spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 5, 1, 5)); - spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 3, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDepthsGhoul.class, 60, 1, 5)); + spawnableMonsterList.add(new SpawnListEntry(EntityAbyssalZombie.class, 60, 1, 3)); } + @Override public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - for (var6 = 0; var6 < var5; ++var6) + for (int rarity = 0; rarity < var5; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(28) + 4; + int z = par4 + par2Random.nextInt(16); + Block var10 = par1World.getBlock(x, y, z); - if (var10 == Blocks.stone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.abyore); + if (var10.isReplaceableOreGen(par1World, x, y, z, Blocks.stone)) + par1World.setBlock(x, y, z, AbyssalCraft.abyore); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.Darkstone, 32).generate(par1World, par2Random, x, y, z); } - for (var6 = 0; var6 < 7; ++var6) + for (int rarity = 0; rarity < 7; ++rarity) { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(64); - int var9 = par4 + par2Random.nextInt(16); - theSecondWorldGenerator.generate(par1World, par2Random, var7, var8, var9); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(64); + int z = par4 + par2Random.nextInt(16); + new WorldGenMinable(AbyssalCraft.abydreadstone, 1).generate(par1World, par2Random, x, y, z); } } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlands.java index 93ef42e5a..c50a7f947 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlands.java @@ -1,70 +1,33 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - -import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityAbygolem; import com.shinoow.abyssalcraft.common.entity.EntityDreadgolem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenDreadlands extends BiomeGenBase +public class BiomeGenDreadlands extends BiomeGenDreadlandsBase { @SuppressWarnings("unchecked") public BiomeGenDreadlands(int par1) { super(par1); - topBlock = AbyssalCraft.dreadstone; - fillerBlock = AbyssalCraft.dreadstone; - spawnableMonsterList.clear(); - spawnableCreatureList.clear(); - spawnableWaterCreatureList.clear(); - spawnableCaveCreatureList.clear(); - theBiomeDecorator.treesPerChunk = -1; - theBiomeDecorator.flowersPerChunk= -1; - spawnableMonsterList.add(new SpawnListEntry(EntityDreadgolem.class, 5, 1, 5)); - spawnableCreatureList.add(new SpawnListEntry(EntityAbygolem.class, 2, 1, 2)); - } - - @Override - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - - for (var6 = 0; var6 < var5; ++var6) - { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - Block var10 = par1World.getBlock(var7, var8, var9); - - if (var10 == AbyssalCraft.dreadstone) - par1World.setBlock(var7, var8, var9, AbyssalCraft.dreadore); - } + spawnableCreatureList.add(new SpawnListEntry(EntityDreadgolem.class, 100, 1, 5)); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlandsBase.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlandsBase.java new file mode 100644 index 000000000..adbb48ce3 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenDreadlandsBase.java @@ -0,0 +1,156 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.common.world.biome; + +import java.util.Random; + +import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.common.entity.*; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.gen.feature.WorldGenMinable; + +public class BiomeGenDreadlandsBase extends BiomeGenBase { + + @SuppressWarnings("unchecked") + public BiomeGenDreadlandsBase(int par1) { + super(par1); + topBlock = AbyssalCraft.dreadstone; + fillerBlock = AbyssalCraft.dreadstone; + spawnableMonsterList.clear(); + spawnableCreatureList.clear(); + spawnableWaterCreatureList.clear(); + spawnableCaveCreatureList.clear(); + theBiomeDecorator.treesPerChunk = -1; + theBiomeDecorator.flowersPerChunk= -1; + spawnableMonsterList.add(new SpawnListEntry(EntityDreadgolem.class, 60, 1, 3)); + spawnableCreatureList.add(new SpawnListEntry(EntityAbygolem.class, 60, 1, 3)); + spawnableCreatureList.add(new SpawnListEntry(EntityDreadSpawn.class, 30, 1, 2)); + spawnableCreatureList.add(new SpawnListEntry(EntityDreadling.class, 40, 1, 2)); + spawnableCreatureList.add(new SpawnListEntry(EntityChagarothFist.class, 2, 1, 1)); + spawnableCreatureList.add(new SpawnListEntry(EntityDemonPig.class, 5, 1, 2)); + spawnableCreatureList.add(new SpawnListEntry(EntityDreadguard.class, 1, 1, 1)); + } + + @Override + public void decorate(World par1World, Random par2Random, int par3, int par4) + { + super.decorate(par1World, par2Random, par3, par4); + + for(int rarity = 0; rarity < 8; rarity++) { + int veinSize = 2 + par2Random.nextInt(4); + int x = par3 + par2Random.nextInt(16); + int y = par2Random.nextInt(55); + int z = par4 + par2Random.nextInt(16); + + new WorldGenMinable(AbyssalCraft.dreadore, veinSize, AbyssalCraft.dreadstone).generate(par1World, par2Random, x, y, z); + } + } + + @Override + public void genTerrainBlocks(World world, Random rand, Block[] blockArray, byte[] byteArray, int x, int z, double d) + { + genDreadlandsTerrain(world, rand, blockArray, byteArray, x, z, d); + } + + public final void genDreadlandsTerrain(World world, Random rand, Block[] blockArray, byte[] byteArray, int x, int z, double d) + { + Block block = topBlock; + byte b0 = (byte)(field_150604_aj & 255); + Block block1 = fillerBlock; + int k = -1; + int l = (int)(d / 3.0D + 3.0D + rand.nextDouble() * 0.25D); + int i1 = x & 15; + int j1 = z & 15; + int k1 = blockArray.length / 256; + + for (int l1 = 255; l1 >= 0; --l1) + { + int i2 = (j1 * 16 + i1) * k1 + l1; + + if (l1 <= 0 + rand.nextInt(5)) + blockArray[i2] = Blocks.bedrock; + else + { + Block block2 = blockArray[i2]; + + if (block2 != null && block2.getMaterial() != Material.air) + { + if (block2 == AbyssalCraft.dreadstone) + if (k == -1) + { + if (l <= 0) + { + block = null; + b0 = 0; + block1 = AbyssalCraft.dreadstone; + } + else if (l1 >= 59 && l1 <= 64) + { + block = topBlock; + b0 = (byte)(field_150604_aj & 255); + block1 = fillerBlock; + } + + if (l1 < 63 && (block == null || block.getMaterial() == Material.air)) + if (getFloatTemperature(x, l1, z) < 0.15F) + { + block = AbyssalCraft.dreadstone; + b0 = 0; + } + else + { + block = AbyssalCraft.dreadstone; + b0 = 0; + } + + k = l; + + if (l1 >= 62) + { + blockArray[i2] = block; + byteArray[i2] = b0; + } + else if (l1 < 56 - l) + { + block = null; + block1 = AbyssalCraft.dreadstone; + blockArray[i2] = AbyssalCraft.dreadstone; + } else + blockArray[i2] = block1; + } + else if (k > 0) + { + --k; + blockArray[i2] = block1; + + if (k == 0 && block1 == AbyssalCraft.dreadstone) + { + k = rand.nextInt(4) + Math.max(0, l1 - 63); + block1 = AbyssalCraft.dreadstone; + } + } + } else + k = -1; + } + } + } +} diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenForestDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenForestDreadlands.java index b0aad74bd..7c76a2920 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenForestDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenForestDreadlands.java @@ -1,34 +1,34 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; import java.util.Random; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenTrees; +import net.minecraft.init.Blocks; +import net.minecraft.world.gen.feature.*; import com.shinoow.abyssalcraft.AbyssalCraft; -import com.shinoow.abyssalcraft.common.entity.EntityDemonPig; +import com.shinoow.abyssalcraft.common.entity.*; import com.shinoow.abyssalcraft.common.world.gen.WorldGenDrT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenForestDreadlands extends BiomeGenBase +public class BiomeGenForestDreadlands extends BiomeGenDreadlandsBase { private WorldGenTrees WorldGenDreadTrees; @@ -37,15 +37,11 @@ public class BiomeGenForestDreadlands extends BiomeGenBase public BiomeGenForestDreadlands(int par1) { super(par1); topBlock = AbyssalCraft.dreadgrass; - fillerBlock = AbyssalCraft.dreadstone; + fillerBlock = Blocks.dirt; WorldGenDreadTrees = new WorldGenDrT(false); theBiomeDecorator.treesPerChunk = 20; - theBiomeDecorator.flowersPerChunk= -1; - spawnableMonsterList.clear(); - spawnableCreatureList.clear(); - spawnableWaterCreatureList.clear(); - spawnableCaveCreatureList.clear(); - spawnableMonsterList.add(new SpawnListEntry(EntityDemonPig.class, 2, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDemonPig.class, 40, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDreadSpawn.class, 50, 1, 2)); } diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenMountainDreadlands.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenMountainDreadlands.java index 52cf848e0..f8b01efed 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenMountainDreadlands.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenMountainDreadlands.java @@ -1,45 +1,38 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; -import net.minecraft.world.biome.BiomeGenBase; -import com.shinoow.abyssalcraft.common.entity.EntityDreadling; -import com.shinoow.abyssalcraft.common.entity.EntityAbygolem; -import com.shinoow.abyssalcraft.common.entity.EntityDreadgolem; +import com.shinoow.abyssalcraft.common.entity.*; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BiomeGenMountainDreadlands extends BiomeGenBase { +public class BiomeGenMountainDreadlands extends BiomeGenDreadlandsBase { @SuppressWarnings("unchecked") public BiomeGenMountainDreadlands(int par1) { super(par1); rootHeight = 1.3F; heightVariation = 0.9F; - spawnableMonsterList.clear(); - spawnableCreatureList.clear(); - spawnableWaterCreatureList.clear(); - spawnableCaveCreatureList.clear(); - theBiomeDecorator.treesPerChunk = -1; - theBiomeDecorator.flowersPerChunk= -1; - spawnableMonsterList.add(new SpawnListEntry(EntityDreadgolem.class, 2, 1, 2)); - spawnableCreatureList.add(new SpawnListEntry(EntityAbygolem.class, 2, 1, 2)); - spawnableMonsterList.add(new SpawnListEntry(EntityDreadling.class, 2, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityDreadling.class, 40, 1, 3)); + spawnableMonsterList.add(new SpawnListEntry(EntityDreadguard.class, 15, 1, 1)); + spawnableMonsterList.add(new SpawnListEntry(EntityChagarothFist.class, 20, 1, 2)); + spawnableMonsterList.add(new SpawnListEntry(EntityChagarothSpawn.class, 30, 1, 2)); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenOmothol.java b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenOmothol.java index aaa70e152..e673e7470 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenOmothol.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/biome/BiomeGenOmothol.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.biome; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAbyLake.java b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAbyLake.java index e2e825980..9375560a8 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAbyLake.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAbyLake.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.gen; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAntimatterLake.java b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAntimatterLake.java index 88245ae54..b41dcb919 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAntimatterLake.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenAntimatterLake.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.gen; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDLT.java b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDLT.java index 5e40a5769..f87c3554a 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDLT.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDLT.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.gen; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDrT.java b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDrT.java index 23181a44e..b96967f9d 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDrT.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/WorldGenDrT.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.gen; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerBiomesDL.java b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerBiomesDL.java index ea9bd9eef..72aa362c9 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerBiomesDL.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerBiomesDL.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.gen.layer; diff --git a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerDL.java b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerDL.java index ac6407507..3cbc6622f 100644 --- a/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerDL.java +++ b/src/main/java/com/shinoow/abyssalcraft/common/world/gen/layer/GenLayerDL.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.common.world.gen.layer; diff --git a/src/main/java/com/shinoow/abyssalcraft/core/ACCorePlugin.java b/src/main/java/com/shinoow/abyssalcraft/core/ACCorePlugin.java deleted file mode 100644 index 64732e3c4..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/ACCorePlugin.java +++ /dev/null @@ -1,64 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core; - -import java.io.File; -import java.util.Map; - -import cpw.mods.fml.relauncher.IFMLCallHook; -import cpw.mods.fml.relauncher.IFMLLoadingPlugin; -import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion; -import cpw.mods.fml.relauncher.IFMLLoadingPlugin.Name; -import cpw.mods.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions; - -@Name("AbyssalCraft Core") -@MCVersion("1.7.2") -@TransformerExclusions("com.shinoow.abyssalcraft.core") -public class ACCorePlugin implements IFMLLoadingPlugin, IFMLCallHook { - - public static File coreLocation; - - @Override - public String[] getASMTransformerClass() { - return new String[0]; - } - - @Override - public String getModContainerClass() { - return Core.class.getName(); - } - - @Override - public String getSetupClass() { - return "com.shinoow.abyssalcraft.core.ACCorePlugin"; - } - - @Override - public void injectData(Map data) { - if(data.containsKey("coremodLocation")) - coreLocation = (File) data.get("coremodLocation"); - } - - @Override - public Void call() throws Exception { - return null; - } - - @Override - public String getAccessTransformerClass() { - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/Core.java b/src/main/java/com/shinoow/abyssalcraft/core/Core.java deleted file mode 100644 index 74ce44269..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/Core.java +++ /dev/null @@ -1,211 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core; - -import java.io.File; -import java.lang.reflect.*; -import java.util.*; - -import net.minecraft.potion.*; -import net.minecraftforge.common.config.Configuration; - -import com.google.common.collect.ImmutableList; -import com.google.common.eventbus.*; -import com.shinoow.abyssalcraft.core.common.CommonProxy; -import com.shinoow.abyssalcraft.core.handlers.CraftingHandler; -import com.shinoow.abyssalcraft.core.util.*; - -import cpw.mods.fml.client.*; -import cpw.mods.fml.client.event.ConfigChangedEvent; -import cpw.mods.fml.common.*; -import cpw.mods.fml.common.event.*; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; - -public class Core extends DummyModContainer { - - public static final String version = "1.2.0"; - public static final String modid = "accore"; - public static final String name = "AbyssalCraft Core"; - - public static Configuration cfg; - - public static boolean canRenderStarspawn; - - public static HashMap potionRequirements = null; - public static HashMap potionAmplifiers = null; - - public Core() { - super(new ModMetadata()); - ModMetadata meta = getMetadata(); - meta.modId = modid; - meta.name = name; - meta.version = version; - meta.credits = "shinoow (coding)"; - meta.authorList = Arrays.asList("shinoow"); - meta.description = "Library used by AbyssalCraft mods - contains API as well"; - meta.url = "https://shinoow.github.io/AbyssalCraft/"; - meta.updateUrl = "https://shinoow.github.io/AbyssalCraft/"; - meta.screenshots = new String[0]; - meta.logoFile = "assets/abyssalcraft/textures/logo_core.png"; - } - - @SidedProxy(clientSide = "com.shinoow.abyssalcraft.core.client.ClientProxy", - serverSide = "com.shinoow.abyssalcraft.core.common.CommonProxy") - public static CommonProxy proxy; - - @SuppressWarnings("unchecked") - @Subscribe - public void preInit(FMLPreInitializationEvent event) { - - CoreLogger.info("Pre-initializing Core."); - Potion[] potionTypes = null; - for (Field f : Potion.class.getDeclaredFields()) { - f.setAccessible(true); - try { - if (f.getName().equals("potionTypes") || f.getName().equals("field_76425_a")) { - Field modfield = Field.class.getDeclaredField("modifiers"); - modfield.setAccessible(true); - modfield.setInt(f, f.getModifiers() & ~Modifier.FINAL); - - potionTypes = (Potion[])f.get(null); - final Potion[] newPotionTypes = new Potion[256]; - System.arraycopy(potionTypes, 0, newPotionTypes, 0, potionTypes.length); - f.set(null, newPotionTypes); - } - } - catch (Exception e) { - System.err.println("Whoops, something screwed up here, please report this to shinoow:"); - System.err.println(e); - } - } - for(Field f : PotionHelper.class.getDeclaredFields()) - try { - if(f.getName().equals("potionRequirements") || f.getName().equals("field_77927_l")){ - f.setAccessible(true); - try { - potionRequirements = (HashMap)f.get(null); - } catch (IllegalArgumentException e) { - System.err.println("Whoops, something screwed up here, please report this to shinoow:"); - e.printStackTrace(); - } catch (IllegalAccessException e) { - System.err.println("Whoops, something screwed up here, please report this to shinoow:"); - e.printStackTrace(); - } - } - if(f.getName().equals("potionAmplifiers") || f.getName().equals("field_77928_m")){ - f.setAccessible(true); - try { - potionAmplifiers = (HashMap)f.get(null); - } catch (IllegalArgumentException e) { - System.err.println("Whoops, something screwed up here, please report this to shinoow:"); - e.printStackTrace(); - } catch (IllegalAccessException e) { - System.err.println("Whoops, something screwed up here, please report this to shinoow:"); - e.printStackTrace(); - } - } - } catch (SecurityException e) { - System.err.println("Whoops, something screwed up here, please report this to shinoow:"); - e.printStackTrace(); - } - - FMLCommonHandler.instance().bus().register(new CraftingHandler()); - FMLCommonHandler.instance().bus().register(this); - cfg = new Configuration(event.getSuggestedConfigurationFile()); - syncConfig(); - if(canRenderStarspawn == true) - CoreLogger.info("RenderPlayer Override enabled, the Coralium Longbow will render twice in your hand now."); - else CoreLogger.info("RenderPlayer Override disabled, Compatibility level +100."); - CoreRegistry.registerVanillaDimensions(); - proxy.PreInit(); - } - - @Subscribe - public void Init(FMLInitializationEvent event) { - - CoreLogger.info("Initializing Core."); - proxy.Init(); - proxy.registerRenderThings(); - } - - @Subscribe - public void postInit(FMLPostInitializationEvent event) { - - CoreLogger.info("Post-initializing Core."); - proxy.PostInit(); - CoreLogger.info("Core loaded."); - } - - public static void syncConfig(){ - - canRenderStarspawn = cfg.get("render", "RenderPlayer Override", true, "Whether or not to override the player model" - + "(set false for compatibility with other mods that alters the player model)").getBoolean(); - - if(cfg.hasChanged()) - cfg.save(); - } - - @SubscribeEvent - public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent eventArgs) { - if(eventArgs.modID.equals("accore")) - syncConfig(); - } - - @Override - public boolean registerBus(EventBus bus, LoadController controller) { - bus.register(this); - return true; - } - - @Override - public File getSource() { - return ACCorePlugin.coreLocation; - } - - @Override - public Class getCustomResourcePackClass() { - return getSource().isDirectory() ? FMLFolderResourcePack.class : FMLFileResourcePack.class; - } - - @Override - public String getGuiClassName() - { - return "com.shinoow.abyssalcraft.core.client.config.ACCoreGuiFactory"; - } - - @Override - public List getOwnedPackages() { - return ImmutableList.of( - "com.shinoow.abyssalcraft.core", - "com.shinoow.abyssalcraft.core.api", - "com.shinoow.abyssalcraft.core.api.addon", - "com.shinoow.abyssalcraft.core.api.block", - "com.shinoow.abyssalcraft.core.api.enchantment", - "com.shinoow.abyssalcraft.core.api.entity", - "com.shinoow.abyssalcraft.core.api.item", - "com.shinoow.abyssalcraft.core.api.potion", - "com.shinoow.abyssalcraft.core.api.render", - "com.shinoow.abyssalcraft.core.client", - "com.shinoow.abyssalcraft.core.client.config", - "com.shinoow.abyssalcraft.core.client.model", - "com.shinoow.abyssalcraft.core.client.render", - "com.shinoow.abyssalcraft.core.common", - "com.shinoow.abyssalcraft.core.handlers", - "com.shinoow.abyssalcraft.core.util", - "com.shinoow.abyssalcraft.core.util.recipes" - ); - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/ACMod.java b/src/main/java/com/shinoow/abyssalcraft/core/api/ACMod.java deleted file mode 100644 index eca63381d..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/ACMod.java +++ /dev/null @@ -1,33 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Annotation to define AbyssalCraft to Core, - * DO NOT USE THIS ON ANY MOD CLASSES! - * @author shinoow - * - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface ACMod { - -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/addon/IACAddon.java b/src/main/java/com/shinoow/abyssalcraft/core/api/addon/IACAddon.java deleted file mode 100644 index d69728ebd..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/addon/IACAddon.java +++ /dev/null @@ -1,43 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.addon; - -import com.shinoow.abyssalcraft.core.api.addon.ACAddon.AddonType; - -/** - * Coremod interface for AbyssalCraft add-ons, - * implement it in the dummy class - * @author shinoow - * - */ -public interface IACAddon { - - /** - * ModId, used for indexing multiple add-ons - */ - String getModId(); - - /** - * Name of the add-on (same as mod name) - */ - String getName(); - - /** - * What kind of add-on (can be multiple kinds) - */ - AddonType[] getType(); - -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/addon/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/addon/package-info.java deleted file mode 100644 index c73f4ee84..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/addon/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.addon; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/block/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/block/package-info.java deleted file mode 100644 index 97976b50f..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/block/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.block; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/ACDamageSource.java b/src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/ACDamageSource.java deleted file mode 100644 index b2e0b7cd0..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/ACDamageSource.java +++ /dev/null @@ -1,31 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.damagesource; - -import net.minecraft.util.DamageSource; - -/** - * Contains all Damagesources added in AbyssalCraft. - * This was originally in the main mod, but moved over to Core so other mods can use it. - * @author shinoow - * - */ -public class ACDamageSource { - - public static DamageSource coralium = new DamageSource("coralium").setDamageBypassesArmor().setMagicDamage(); - public static DamageSource dread = new DamageSource("dread").setDamageBypassesArmor().setMagicDamage(); - public static DamageSource antimatter = new DamageSource("antimatter").setDamageBypassesArmor().setMagicDamage(); -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/package-info.java deleted file mode 100644 index f4b3cfb8a..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/damagesource/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.damagesource; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/ACEnchantments.java b/src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/ACEnchantments.java deleted file mode 100644 index 58b9b9eb9..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/ACEnchantments.java +++ /dev/null @@ -1,31 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.enchantment; - -import net.minecraft.enchantment.Enchantment; - -/** - * Contains all potion effects added in AbyssalCraft - * @author shinoow - * - */ -public class ACEnchantments { - - public static Enchantment coralium_infusion = Enchantment.enchantmentsList[150]; - public static Enchantment dread_infusion = Enchantment.enchantmentsList[151]; - public static Enchantment light_pierce = Enchantment.enchantmentsList[152]; - // public static Enchantment iron_wall = Enchantment.enchantmentsList[153]; -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/package-info.java deleted file mode 100644 index a38706a5c..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/enchantment/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.enchantment; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/ACEntities.java b/src/main/java/com/shinoow/abyssalcraft/core/api/entity/ACEntities.java deleted file mode 100644 index 5985bde0f..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/ACEntities.java +++ /dev/null @@ -1,64 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.entity; - -import cpw.mods.fml.common.registry.EntityRegistry; - -/** - * Contains the names of all mobs added in AbyssalCraft. - * Use these with {@link EntityRegistry} to make them spawn in your biomes. - * @author shinoow - * - */ -public class ACEntities { - - public static String depths_ghoul = "depthsghoul"; - public static String evil_pig = "evilpig"; - public static String abyssal_zombie = "abyssalzombie"; - public static String jzahar = "Jzahar"; - public static String abyssalnite_golem = "abygolem"; - public static String dreaded_abyssalnite_golem = "dreadgolem"; - public static String dreadguard = "dreadguard"; - public static String spectral_dragon = "dragonminion"; - public static String asorah = "dragonboss"; - public static String shadow_creature = "shadowcreature"; - public static String shadow_monster = "shadowmonster"; - public static String dreadling = "dreadling"; - public static String dread_spawn = "dreadspawn"; - public static String demon_pig = "demonpig"; - public static String skeleton_goliath = "gskeleton"; - public static String spawn_of_chagaroth = "chagarothspawn"; - public static String fist_of_chagaroth = "chagarothfist"; - public static String chagaroth = "chagaroth"; - public static String shadow_beast = "shadowbeast"; - public static String sacthoth = "shadowboss"; - public static String abyssal_anti_zombie = "antiabyssalzombie"; - public static String anti_bat = "antibat"; - public static String anti_chicken = "antichicken"; - public static String anti_cow = "anticow"; - public static String anti_creeper = "anticreeper"; - public static String anti_ghoul = "antighoul"; - public static String anti_pig = "antipig"; - public static String anti_player = "antiplayer"; - public static String anti_Skeleton = "antiskeleton"; - public static String anti_spider = "antispider"; - public static String anti_zombie = "antizombie"; - public static String lesser_shoggoth = "lessershoggoth"; - public static String shadow_titan = "shadowtitan"; - public static String omothol_warden = "omotholwarden"; - public static String minion_of_the_gatekeeper = "jzaharminion"; - public static String omothol_ghoul = "omotholghoul"; -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/IAntiEntity.java b/src/main/java/com/shinoow/abyssalcraft/core/api/entity/IAntiEntity.java deleted file mode 100644 index b46d3edc6..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/IAntiEntity.java +++ /dev/null @@ -1,25 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.entity; - -/** - * Interface to define a entity that's immune to the Antimatter potion effect - * @author shinoow - * - */ -public interface IAntiEntity { - -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/ICoraliumEntity.java b/src/main/java/com/shinoow/abyssalcraft/core/api/entity/ICoraliumEntity.java deleted file mode 100644 index fd84e65f6..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/ICoraliumEntity.java +++ /dev/null @@ -1,25 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.entity; - -/** - * Interface to define a entity that's immune to the Coralium Plague - * @author shinoow - * - */ -public interface ICoraliumEntity { - -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/IDreadEntity.java b/src/main/java/com/shinoow/abyssalcraft/core/api/entity/IDreadEntity.java deleted file mode 100644 index f0fa49f18..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/IDreadEntity.java +++ /dev/null @@ -1,25 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.entity; - -/** - * Interface to define a entity that's immune to the Dread Plague - * @author shinoow - * - */ -public interface IDreadEntity { - -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/entity/package-info.java deleted file mode 100644 index 1d1a5eb12..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/entity/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.entity; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/item/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/item/package-info.java deleted file mode 100644 index f3d0c0cdb..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/item/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.item; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/package-info.java deleted file mode 100644 index 3508583d7..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/potion/ACPotions.java b/src/main/java/com/shinoow/abyssalcraft/core/api/potion/ACPotions.java deleted file mode 100644 index 2b21631f1..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/potion/ACPotions.java +++ /dev/null @@ -1,30 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.api.potion; - -import net.minecraft.potion.Potion; - -/** - * Contains all potion effects added in AbyssalCraft - * @author shinoow - * - */ -public class ACPotions { - - public static Potion Coralium_plague = Potion.potionTypes[100]; - public static Potion Dread_plague = Potion.potionTypes[101]; - public static Potion Antimatter = Potion.potionTypes[102]; -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/potion/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/potion/package-info.java deleted file mode 100644 index f5ca13a7f..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/potion/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.potion; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/api/render/package-info.java b/src/main/java/com/shinoow/abyssalcraft/core/api/render/package-info.java deleted file mode 100644 index f4b05f9e5..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/api/render/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="accore",provides="AbyssalCraftAPI") -package com.shinoow.abyssalcraft.core.api.render; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/client/ClientProxy.java b/src/main/java/com/shinoow/abyssalcraft/core/client/ClientProxy.java deleted file mode 100644 index 6e4a2f577..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/client/ClientProxy.java +++ /dev/null @@ -1,36 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.client; - -import net.minecraft.entity.player.EntityPlayer; - -import com.shinoow.abyssalcraft.core.Core; -import com.shinoow.abyssalcraft.core.client.render.RenderPlayerAC; -import com.shinoow.abyssalcraft.core.common.CommonProxy; - -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ClientProxy extends CommonProxy { - - @Override - @SideOnly(Side.CLIENT) - public void registerRenderThings(){ - if(Core.canRenderStarspawn == true) - RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new RenderPlayerAC()); - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreConfigGUI.java b/src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreConfigGUI.java deleted file mode 100644 index 0be805725..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreConfigGUI.java +++ /dev/null @@ -1,30 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.client.config; - -import net.minecraft.client.gui.GuiScreen; -import net.minecraftforge.common.config.ConfigElement; -import com.shinoow.abyssalcraft.core.Core; -import cpw.mods.fml.client.config.GuiConfig; - -public class ACCoreConfigGUI extends GuiConfig { - @SuppressWarnings({ "rawtypes", "unchecked" }) - public ACCoreConfigGUI(GuiScreen parent) { - super(parent, - new ConfigElement(Core.cfg.getCategory("render")).getChildElements(), - "accore", true, true, "AbyssalCraft Core"); - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreGuiFactory.java b/src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreGuiFactory.java deleted file mode 100644 index 5533b4d49..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/client/config/ACCoreGuiFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.client.config; - -import java.util.Set; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import cpw.mods.fml.client.IModGuiFactory; - -public class ACCoreGuiFactory implements IModGuiFactory { - @Override - public void initialize(Minecraft minecraftInstance) { - - } - - @Override - public Class mainConfigGuiClass() { - return ACCoreConfigGUI.class; - } - - @Override - public Set runtimeGuiCategories() { - return null; - } - - @Override - public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) { - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/common/CommonProxy.java b/src/main/java/com/shinoow/abyssalcraft/core/common/CommonProxy.java deleted file mode 100644 index b8091091a..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/common/CommonProxy.java +++ /dev/null @@ -1,47 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.common; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import cpw.mods.fml.common.network.IGuiHandler; - -public class CommonProxy implements IGuiHandler { - - @Override - public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - - return null; - } - - @Override - public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - - return null; - } - - public void registerRenderThings() { - } - - public void PreInit() { - } - - public void Init() { - } - - public void PostInit() { - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/handlers/CraftingHandler.java b/src/main/java/com/shinoow/abyssalcraft/core/handlers/CraftingHandler.java deleted file mode 100644 index ea7f57bce..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/handlers/CraftingHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.handlers; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; - -import com.shinoow.abyssalcraft.core.api.item.ItemUpgradeKit; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.PlayerEvent; - -public class CraftingHandler { - - @SubscribeEvent - public void onCraftingEvent(PlayerEvent.ItemCraftedEvent event) - { - for(int h=0; h < event.craftMatrix.getSizeInventory(); h++) - if(event.craftMatrix.getStackInSlot(h) != null) - for(int i=0; i < event.craftMatrix.getSizeInventory(); i++) - if(event.craftMatrix.getStackInSlot(i) != null) - { - ItemStack k = event.craftMatrix.getStackInSlot(h); - ItemStack j = event.craftMatrix.getStackInSlot(i); - - if(k.getItem() != null && j.getItem() != null && k.getItem() instanceof ItemUpgradeKit) - { - NBTTagCompound nbttest = new NBTTagCompound(); - NBTTagList tag = new NBTTagList(); - - if(j.isItemEnchanted()) - { - NBTTagList test = j.stackTagCompound.getTagList("ench", 10); - tag = test; - } - ItemStack l = event.crafting; - if(j.isItemEnchanted()) - { - l.stackTagCompound = nbttest; - l.stackTagCompound.setTag("ench", tag); - } - event.craftMatrix.setInventorySlotContents(i, l); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/util/CoreLogger.java b/src/main/java/com/shinoow/abyssalcraft/core/util/CoreLogger.java deleted file mode 100644 index 229cc1272..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/util/CoreLogger.java +++ /dev/null @@ -1,47 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.util; - -import org.apache.logging.log4j.Level; - -import cpw.mods.fml.common.FMLLog; - -public class CoreLogger { - - public static void log(Level level, String format, Object... data) { - FMLLog.log("AbyssalCraft Core", level, format, data); - } - - public static void severe(String format, Object... data) { - log(Level.ERROR, format, data); - } - - public static void warning(String format, Object... data) { - log(Level.WARN, format, data); - } - - public static void info(String format, Object... data) { - log(Level.INFO, format, data); - } - - public static void fine(String format, Object... data) { - log(Level.DEBUG, format, data); - } - - public static void finer(String format, Object... data) { - log(Level.TRACE, format, data); - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/util/CoreRegistry.java b/src/main/java/com/shinoow/abyssalcraft/core/util/CoreRegistry.java deleted file mode 100644 index 5ec408ae4..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/util/CoreRegistry.java +++ /dev/null @@ -1,353 +0,0 @@ -/**AbyssalCraft Core - *Copyright 2012-2014 Shinoow - * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. - */ -package com.shinoow.abyssalcraft.core.util; - -import java.util.*; - -import net.minecraft.block.Block; -import net.minecraft.item.*; -import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.world.*; -import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.oredict.OreDictionary; - -import com.google.common.collect.Lists; -import com.shinoow.abyssalcraft.core.Core; -import com.shinoow.abyssalcraft.core.util.recipes.*; - -import cpw.mods.fml.common.IFuelHandler; -import cpw.mods.fml.common.registry.GameRegistry; - -/** - * Core's equivalent to FML's {@link GameRegistry} - * @author shinoow - * - */ -public class CoreRegistry { - - private static List crystallizerFuelHandlers = Lists.newArrayList(); - private static List transmutatorFuelHandlers = Lists.newArrayList(); - - /** Hashtable of world providers, will be used for dimension-specific generation */ - private static Hashtable> dimensions = new Hashtable>(); - - /** - * Fuel types, also has support for the vanilla furnace. - * @author shinoow - * - */ - public enum FuelType{ - CRYSTALLIZER, TRANSMUTATOR, FURNACE - } - - /** - * Basic Crystallization - * @param input The block to crystallize - * @param output1 The first crystal output - * @param output2 The second crystal output - * @param xp Amount of exp given - */ - public static void addCrystallization(Block input, ItemStack output1, ItemStack output2, float xp){ - CrystallizerRecipes.crystallization().crystallize(input, output1, output2, xp); - } - - /** - * Basic Crystallization - * @param input The item to crystallize - * @param output1 The first crystal output - * @param output2 The second crystal output - * @param xp Amount of exp given - */ - public static void addCrystallization(Item input, ItemStack output1, ItemStack output2, float xp){ - CrystallizerRecipes.crystallization().crystallize(input, output1, output2, xp); - } - - /** - * Basic Crystallization - * @param input The itemstack to crystallize - * @param output1 The first crystal output - * @param output2 The second crystal output - * @param xp Amount of exp given - */ - public static void addCrystallization(ItemStack input, ItemStack output1, ItemStack output2, float xp){ - CrystallizerRecipes.crystallization().crystallize(input, output1, output2, xp); - } - - /** - * Single-output Crystallization - * @param input The block to crystallize - * @param output The crystal output - * @param xp Amount of exp given - */ - public static void addSingleCrystallization(Block input, ItemStack output, float xp){ - addCrystallization(input, output, null, xp); - } - - /** - * Single-output Crystallization - * @param input The item to crystallize - * @param output The crystal output - * @param xp Amount of exp given - */ - public static void addSingleCrystallization(Item input, ItemStack output, float xp){ - addCrystallization(input, output, null, xp); - } - - /** - * Single-output Crystallization - * @param input The itemstack to crystallize - * @param output The crystal output - * @param xp Amount of exp given - */ - public static void addSingleCrystallization(ItemStack input, ItemStack output, float xp){ - addCrystallization(input, output, null, xp); - } - - /** - * Basic Transmutation - * @param input The block to transmutate - * @param output The transmutated output - * @param xp Amount of exp given - */ - public static void addTransmutation(Block input, ItemStack output, float xp){ - TransmutatorRecipes.transmutation().transmutate(input, output, xp); - } - - /** - * Basic Transmutation - * @param input The item to transmutate - * @param output The transmutated output - * @param xp Amount of exp given - */ - public static void addTransmutation(Item input, ItemStack output, float xp){ - TransmutatorRecipes.transmutation().transmutate(input, output, xp); - } - - /** - * Basic Transmutation - * @param input The itemstack to transmutate - * @param output The transmutated output - * @param xp Amount of exp given - */ - public static void addTransmutation(ItemStack input, ItemStack output, float xp){ - TransmutatorRecipes.transmutation().transmutate(input, output, xp); - } - - /** - * Registers a fuel handler for an AbyssalCraft fuel type - * @param handler The file that implements {@link IFuelHandler} - * @param type The fuel type - */ - public static void registerFuelHandler(IFuelHandler handler, FuelType type){ - switch(type){ - case CRYSTALLIZER: - crystallizerFuelHandlers.add(handler); - break; - case TRANSMUTATOR: - transmutatorFuelHandlers.add(handler); - break; - case FURNACE: - GameRegistry.registerFuelHandler(handler); - } - } - - /** - * Gets the fuel value from an ItemStack, depending on the fuel type - * @param itemStack The ItemStack getting checked - * @param type The fuel type - * @return The fuel value for the specified machine - */ - public static int getFuelValue(ItemStack itemStack, FuelType type){ - int fuelValue = 0; - switch(type){ - case CRYSTALLIZER: - for (IFuelHandler handler : crystallizerFuelHandlers) - fuelValue = Math.max(fuelValue, handler.getBurnTime(itemStack)); - break; - case TRANSMUTATOR: - for (IFuelHandler handler : transmutatorFuelHandlers) - fuelValue = Math.max(fuelValue, handler.getBurnTime(itemStack)); - break; - case FURNACE: - GameRegistry.getFuelValue(itemStack); - } - return fuelValue; - } - - /** - * Smelting through the OreDictionary - * @param input The ore input - * @param output The ore output - * @param xp Amount of exp given - */ - public static void addOreSmelting(String input, String output, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output).isEmpty()) - while(inputIter.hasNext()) - FurnaceRecipes.smelting().func_151394_a(inputIter.next(), OreDictionary.getOres(output).iterator().next(), xp); - } - - /** - * OreDictionary specific Crystallization - * @param input The ore input - * @param output1 The first ore output - * @param output2 The second ore output - * @param xp Amount of exp given - */ - public static void addCrystallization(String input, String output1, String output2, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output1).isEmpty() && !OreDictionary.getOres(output2).isEmpty()) - while(inputIter.hasNext()) - addCrystallization(inputIter.next(), OreDictionary.getOres(output1).iterator().next(), OreDictionary.getOres(output2).iterator().next(), xp); - } - - /** - * OreDictionary specific Crystallization - * @param input The ore input - * @param output1 The first ore output - * @param out1 Quantity of the first output - * @param output2 The second ore output - * @param out2 Quantity of the second output - * @param xp Amount of exp given - */ - public static void addCrystallization(String input, String output1, int out1, String output2, int out2, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output1).isEmpty() && !OreDictionary.getOres(output2).isEmpty()) - while(inputIter.hasNext()) - addCrystallization(inputIter.next(), new ItemStack(OreDictionary.getOres(output1).iterator().next().getItem(), out1), new ItemStack(OreDictionary.getOres(output2).iterator().next().getItem(), out2), xp); - } - - /** - * OreDictionary specific single-output Crystallization - * @param input The ore input - * @param output The ore output - * @param xp Amount of exp given - */ - public static void addSingleCrystallization(String input, String output, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output).isEmpty()) - while(inputIter.hasNext()) - addSingleCrystallization(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem()), xp); - } - - /** - * OreDictionary specific single-output Crystallization - * @param input The ore input - * @param output The ore output - * @param out The output quantity - * @param xp Amount of exp given - */ - public static void addSingleCrystallization(String input, String output, int out, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output).isEmpty()) - while(inputIter.hasNext()) - addSingleCrystallization(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem(), out), xp); - } - - /** - * OreDictionary specific Transmutation - * @param input The ore input - * @param output The ore output - * @param xp Amount of exp given - */ - public static void addTransmutation(String input, String output, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output).isEmpty()) - while(inputIter.hasNext()) - addTransmutation(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem()), xp); - } - - /** - * OreDictionary specific Transmutation - * @param input The ore input - * @param output The ore output - * @param out The output quantity - * @param xp Amount of exp given - */ - public static void addTransmutation(String input, String output, int out, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output).isEmpty()) - while(inputIter.hasNext()) - addTransmutation(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem(), out), xp); - } - - /** - * OreDictionary specific Transmutation - * @param input The ore input - * @param output The ore output - * @param out The output quantity - * @param meta The output metadata - * @param xp Amount of exp given - */ - public static void addTransmutation(String input, String output, int out, int meta, float xp){ - Iterator inputIter = OreDictionary.getOres(input).iterator(); - if(!OreDictionary.getOres(output).isEmpty()) - while(inputIter.hasNext()) - addTransmutation(inputIter.next(), new ItemStack(OreDictionary.getOres(output).iterator().next().getItem(), out, meta), xp); - } - - /** - * Adds a bit sequence used to calculate the status on a potion. - * This description probably hardly makes any sense, deal with it. - * @param id The potion id - * @param requirements A bit sequence - */ - public static void addPotionRequirements(int id, String requirements){ - Core.potionRequirements.put(Integer.valueOf(id), requirements); - } - - /** - * Adds an amplifier to a potion. - * This description probably hardly makes any sense, deal with it. - * @param id The potion id - * @param amplifier The potion amplifier value (usually 5) - */ - public static void addPotionAmplifiers(int id, String amplifier){ - Core.potionAmplifiers.put(Integer.valueOf(id), amplifier); - } - - /** - * Bridge method for registering a dimension, used to store dimensions in Core - * @param name The dimension name - * @param id The dimension id - * @param provider World provider used for the dimension - * @param keepLoaded Whether the world should be kept loaded at all times - */ - public static void registerDimension(String name, int id, Class provider, boolean keepLoaded){ - registerWorldProvider(name, provider); - DimensionManager.registerProviderType(id, provider, keepLoaded); - DimensionManager.registerDimension(id, id); - } - - /** - * Used to add a dimension to {@link Core}'s dimension list - * @param name Dimension name, used to fetch the dimension later - * @param provider The world provider used for the dimension - * @return True if the world provider was successfully added. - */ - public static boolean registerWorldProvider(String name, Class provider){ - if(dimensions.containsKey(name.toLowerCase())) - return false; - dimensions.put(name.toLowerCase(), provider); - return true; - } - - public static void registerVanillaDimensions(){ - registerWorldProvider("overworld", WorldProviderSurface.class); - registerWorldProvider("nether", WorldProviderHell.class); - registerWorldProvider("end", WorldProviderEnd.class); - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/core/util/RandomFiltered.java b/src/main/java/com/shinoow/abyssalcraft/core/util/RandomFiltered.java deleted file mode 100644 index 4b6ee6900..000000000 --- a/src/main/java/com/shinoow/abyssalcraft/core/util/RandomFiltered.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.shinoow.abyssalcraft.core.util; - -import java.util.Random; - -public class RandomFiltered extends Random { - - private static final long serialVersionUID = 1L; - - public RandomFiltered(long par2) { - super(par2); - } - - @Override - public int nextInt() { - return this.nextInt(1); - } - - @Override - public int nextInt(int n) { - if (n > 0) - return super.nextInt(n); - return 0; - } -} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/integration/nei/CrystallizerRecipeHandler.java b/src/main/java/com/shinoow/abyssalcraft/integration/nei/CrystallizerRecipeHandler.java index 25042304e..1566c2c44 100644 --- a/src/main/java/com/shinoow/abyssalcraft/integration/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/shinoow/abyssalcraft/integration/nei/CrystallizerRecipeHandler.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.integration.nei; import java.awt.Rectangle; @@ -12,9 +28,9 @@ import codechicken.nei.*; import codechicken.nei.recipe.TemplateRecipeHandler; +import com.shinoow.abyssalcraft.api.recipe.CrystallizerRecipes; import com.shinoow.abyssalcraft.client.gui.GuiCrystallizer; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityCrystallizer; -import com.shinoow.abyssalcraft.core.util.recipes.CrystallizerRecipes; public class CrystallizerRecipeHandler extends TemplateRecipeHandler { diff --git a/src/main/java/com/shinoow/abyssalcraft/integration/nei/EngraverRecipeHandler.java b/src/main/java/com/shinoow/abyssalcraft/integration/nei/EngraverRecipeHandler.java new file mode 100644 index 000000000..97cc09008 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/integration/nei/EngraverRecipeHandler.java @@ -0,0 +1,173 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.integration.nei; + +import java.awt.Rectangle; +import java.util.*; +import java.util.Map.Entry; + +import net.minecraft.block.Block; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.init.Blocks; +import net.minecraft.item.*; +import net.minecraft.util.StatCollector; +import codechicken.nei.*; +import codechicken.nei.recipe.TemplateRecipeHandler; + +import com.shinoow.abyssalcraft.api.recipe.EngraverRecipes; +import com.shinoow.abyssalcraft.client.gui.GuiEngraver; + +public class EngraverRecipeHandler extends TemplateRecipeHandler +{ + public class EngravingPair extends CachedRecipe + { + public EngravingPair(ItemStack ingred, ItemStack result) { + ingred.stackSize = 1; + this.ingred = new PositionedStack(ingred, 51, 6); + this.result = new PositionedStack(result, 111, 24); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 48, Arrays.asList(ingred)); + } + + @Override + public PositionedStack getResult() { + return result; + } + + @Override + public PositionedStack getOtherStack() { + return afuels.get(cycleticks / 48 % afuels.size()).stack; + } + + PositionedStack ingred; + PositionedStack result; + } + + public static class FuelPair + { + public FuelPair(ItemStack ingred) { + stack = new PositionedStack(ingred, 51, 42, false); + } + + public PositionedStack stack; + public int burnTime; + } + + public static ArrayList afuels; + public static HashSet efuels; + + @Override + public void loadTransferRects() { + transferRects.add(new RecipeTransferRect(new Rectangle(50, 23, 18, 18), "fuel")); + transferRects.add(new RecipeTransferRect(new Rectangle(74, 23, 24, 18), "engraving")); + } + + @Override + public Class getGuiClass() { + return GuiEngraver.class; + } + + @Override + public String getRecipeName() { + return StatCollector.translateToLocal("container.abyssalcraft.engraver.nei"); + } + + @Override + public TemplateRecipeHandler newInstance() { + if (afuels == null) + findFuels(); + return super.newInstance(); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + if (outputId.equals("engraving") && getClass() == EngraverRecipeHandler.class) {//don't want subclasses getting a hold of this + Map recipes = EngraverRecipes.engraving().getEngravingList(); + for (Entry recipe : recipes.entrySet()) + arecipes.add(new EngravingPair(recipe.getKey(), recipe.getValue())); + } else + super.loadCraftingRecipes(outputId, results); + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + Map recipes = EngraverRecipes.engraving().getEngravingList(); + for (Entry recipe : recipes.entrySet()) + if (NEIServerUtils.areStacksSameType(recipe.getValue(), result)) + arecipes.add(new EngravingPair(recipe.getKey(), recipe.getValue())); + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + if (inputId.equals("fuel") && getClass() == EngraverRecipeHandler.class)//don't want subclasses getting a hold of this + loadCraftingRecipes("engraving"); + else + super.loadUsageRecipes(inputId, ingredients); + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + Map recipes = EngraverRecipes.engraving().getEngravingList(); + for (Entry recipe : recipes.entrySet()) + if (NEIServerUtils.areStacksSameTypeCrafting(recipe.getKey(), ingredient)) { + EngravingPair arecipe = new EngravingPair(recipe.getKey(), recipe.getValue()); + arecipe.setIngredientPermutation(Arrays.asList(arecipe.ingred), ingredient); + arecipes.add(arecipe); + } + } + + @Override + public String getGuiTexture() { + return "abyssalcraft:textures/gui/container/engraver.png"; + } + + @Override + public void drawExtras(int recipe) { + drawProgressBar(51, 25, 176, 0, 14, 14, 48, 7); + drawProgressBar(74, 23, 176, 14, 24, 16, 48, 0); + } + + private static Set excludedFuels() { + Set efuels = new HashSet(); + efuels.add(Item.getItemFromBlock(Blocks.brown_mushroom)); + efuels.add(Item.getItemFromBlock(Blocks.red_mushroom)); + efuels.add(Item.getItemFromBlock(Blocks.standing_sign)); + efuels.add(Item.getItemFromBlock(Blocks.wall_sign)); + efuels.add(Item.getItemFromBlock(Blocks.wooden_door)); + efuels.add(Item.getItemFromBlock(Blocks.trapped_chest)); + return efuels; + } + + private static void findFuels() { + afuels = new ArrayList(); + Set efuels = excludedFuels(); + for (ItemStack item : ItemList.items) + if (!efuels.contains(item.getItem())) { + boolean test = EngraverRecipes.engraving().getEngravingTemplates().containsKey(item.getItem()); + if (test) + afuels.add(new FuelPair(item.copy())); + } + } + + @Override + public String getOverlayIdentifier() { + return "engraving"; + } +} diff --git a/src/main/java/com/shinoow/abyssalcraft/integration/nei/NEIACConfig.java b/src/main/java/com/shinoow/abyssalcraft/integration/nei/NEIACConfig.java index 7dcaccc0e..342f46dc6 100644 --- a/src/main/java/com/shinoow/abyssalcraft/integration/nei/NEIACConfig.java +++ b/src/main/java/com/shinoow/abyssalcraft/integration/nei/NEIACConfig.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.integration.nei; import net.minecraft.item.ItemStack; @@ -15,9 +31,13 @@ public void loadConfig() { API.registerRecipeHandler(new TransmutatorRecipeHandler()); API.registerUsageHandler(new TransmutatorRecipeHandler()); + API.registerRecipeHandler(new EngraverRecipeHandler()); + API.registerUsageHandler(new EngraverRecipeHandler()); + API.hideItem(new ItemStack(AbyssalCraft.devsword)); API.hideItem(new ItemStack(AbyssalCraft.crystallizer_on)); API.hideItem(new ItemStack(AbyssalCraft.transmutator_on)); + API.hideItem(new ItemStack(AbyssalCraft.engraver_on)); } @Override diff --git a/src/main/java/com/shinoow/abyssalcraft/integration/nei/TransmutatorRecipeHandler.java b/src/main/java/com/shinoow/abyssalcraft/integration/nei/TransmutatorRecipeHandler.java index 6c93d412f..18e486bcb 100644 --- a/src/main/java/com/shinoow/abyssalcraft/integration/nei/TransmutatorRecipeHandler.java +++ b/src/main/java/com/shinoow/abyssalcraft/integration/nei/TransmutatorRecipeHandler.java @@ -1,3 +1,19 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.shinoow.abyssalcraft.integration.nei; import java.awt.Rectangle; @@ -12,9 +28,9 @@ import codechicken.nei.*; import codechicken.nei.recipe.TemplateRecipeHandler; +import com.shinoow.abyssalcraft.api.recipe.TransmutatorRecipes; import com.shinoow.abyssalcraft.client.gui.GuiTransmutator; import com.shinoow.abyssalcraft.common.blocks.tile.TileEntityTransmutator; -import com.shinoow.abyssalcraft.core.util.recipes.TransmutatorRecipes; public class TransmutatorRecipeHandler extends TemplateRecipeHandler { diff --git a/src/main/java/com/shinoow/abyssalcraft/integration/thaumcraft/ACThaumcraftIntegration.java b/src/main/java/com/shinoow/abyssalcraft/integration/thaumcraft/ACThaumcraftIntegration.java new file mode 100644 index 000000000..13d2ff913 --- /dev/null +++ b/src/main/java/com/shinoow/abyssalcraft/integration/thaumcraft/ACThaumcraftIntegration.java @@ -0,0 +1,111 @@ +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.shinoow.abyssalcraft.integration.thaumcraft; + +import net.minecraft.item.ItemStack; + +import com.shinoow.abyssalcraft.AbyssalCraft; +import com.shinoow.abyssalcraft.api.AbyssalCraftAPI.ACEntities; + +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class ACThaumcraftIntegration { + + public static void init(){ + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Darkstone), new AspectList().add(Aspect.EARTH, 2).add(Aspect.DARKNESS, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Darkgrass), new AspectList().add(Aspect.EARTH, 1).add(Aspect.PLANT, 1).add(Aspect.DARKNESS, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Darkstone_brick), new AspectList().add(Aspect.EARTH, 2).add(Aspect.DARKNESS, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Darkstone_cobble), new AspectList().add(Aspect.EARTH, 1).add(Aspect.ENTROPY, 1).add(Aspect.DARKNESS, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.abyore), new AspectList().add(Aspect.METAL, 3).add(Aspect.EARTH, 1).add(Aspect.CRYSTAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.abydreadore), new AspectList().add(Aspect.METAL, 3).add(Aspect.EARTH, 1).add(Aspect.CRYSTAL, 1).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.dreadore), new AspectList().add(Aspect.METAL, 3).add(Aspect.EARTH, 1).add(Aspect.CRYSTAL, 1).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Coraliumore), new AspectList().add(Aspect.CRYSTAL, 2).add(Aspect.EARTH, 1).add(Aspect.WATER, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.CoraliumInfusedStone), new AspectList().add(Aspect.CRYSTAL, 2).add(Aspect.EARTH, 1).add(Aspect.WATER, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.AbyCorOre), new AspectList().add(Aspect.CRYSTAL, 2).add(Aspect.EARTH, 1).add(Aspect.WATER, 1).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.AbyLCorOre), new AspectList().add(Aspect.METAL, 3).add(Aspect.EARTH, 1).add(Aspect.WATER, 1).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.AbyPCorOre), new AspectList().add(Aspect.CRYSTAL, 2).add(Aspect.EARTH, 1).add(Aspect.WATER, 1).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.abystone), new AspectList().add(Aspect.EARTH, 2).add(Aspect.WATER, 1).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.dreadstone), new AspectList().add(Aspect.EARTH, 2).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.abydreadstone), new AspectList().add(Aspect.EARTH, 2)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Cwater), new AspectList().add(Aspect.WATER, 3).add(Aspect.POISON, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.anticwater), new AspectList().add(Aspect.WATER, 3).add(Aspect.VOID, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.ethaxium), new AspectList().add(Aspect.SOUL, 2).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.ethaxiumbrick), new int[]{0}, new AspectList().add(Aspect.SOUL, 3).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.ethaxiumbrick), new int[]{1}, new AspectList().add(Aspect.SOUL, 3).add(Aspect.ELDRITCH, 2)); + + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.abyingot), new AspectList().add(Aspect.METAL, 3).add(Aspect.MAGIC, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Cingot), new AspectList().add(Aspect.METAL, 3).add(Aspect.ELDRITCH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.dreadiumingot), new AspectList().add(Aspect.METAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.Coralium), new AspectList().add(Aspect.CRYSTAL, 2).add(Aspect.WATER, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.ethaxiumIngot), new AspectList().add(Aspect.METAL, 1).add(Aspect.SOUL, 3)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.cbrick), new AspectList().add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.ethaxium_brick), new AspectList().add(Aspect.FIRE, 1).add(Aspect.SOUL, 2)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.shadowgem), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.DARKNESS, 2)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.shadowshard), new AspectList().add(Aspect.CRYSTAL, 2).add(Aspect.DARKNESS, 2)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.shadowfragment), new AspectList().add(Aspect.CRYSTAL, 1).add(Aspect.DARKNESS, 2)); + + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalIron), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalSulfur), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalCarbon), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalOxygen), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.AIR, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalHydrogen), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalNitrogen), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.COLD, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalPhosphorus), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.MAGIC, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalPotassium), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalNitrate), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.COLD, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalMethane), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalRedstone), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.MECHANISM, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalAbyssalnite), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalCoralium), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.WATER, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalDreadium), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalBlaze), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.FIRE, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalTin), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalCopper), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalSilicon), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalMagnesium), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalAluminium), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalSilica), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalAlumina), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalMagnesia), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(AbyssalCraft.crystalZinc), new AspectList().add(Aspect.CRYSTAL, 3).add(Aspect.METAL, 1)); + + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.depths_ghoul), new AspectList().add(Aspect.DEATH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.evil_pig), new AspectList().add(Aspect.BEAST, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.abyssal_zombie), new AspectList().add(Aspect.DEATH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.jzahar), new AspectList().add(Aspect.DEATH, 5).add(Aspect.DARKNESS, 5).add(Aspect.ELDRITCH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.dreadguard), new AspectList().add(Aspect.DEATH, 5).add(Aspect.FLESH, 3)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.spectral_dragon), new AspectList().add(Aspect.DEATH, 5).add(Aspect.AIR, 3)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.asorah), new AspectList().add(Aspect.DEATH, 5).add(Aspect.AIR, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.shadow_creature), new AspectList().add(Aspect.DARKNESS, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.shadow_monster), new AspectList().add(Aspect.DARKNESS, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.dreadling), new AspectList().add(Aspect.DEATH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.dread_spawn), new AspectList().add(Aspect.DEATH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.demon_pig), new AspectList().add(Aspect.FLESH, 5).add(Aspect.FIRE, 3)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.skeleton_goliath), new AspectList().add(Aspect.DEATH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.spawn_of_chagaroth), new AspectList().add(Aspect.DEATH, 5).add(Aspect.FLESH, 3)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.fist_of_chagaroth), new AspectList().add(Aspect.DEATH, 5).add(Aspect.FLESH, 3)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.chagaroth), new AspectList().add(Aspect.DEATH, 5).add(Aspect.FLESH, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.shadow_beast), new AspectList().add(Aspect.DARKNESS, 5)); + ThaumcraftApi.registerEntityTag(getMobName(ACEntities.sacthoth), new AspectList().add(Aspect.DEATH, 5).add(Aspect.DARKNESS, 5)); + } + + public static String getMobName(String name){ + return "abyssalcraft." + name; + } +} \ No newline at end of file diff --git a/src/main/java/com/shinoow/abyssalcraft/update/IUpdateProxy.java b/src/main/java/com/shinoow/abyssalcraft/update/IUpdateProxy.java index ed0019ab5..933c5dafa 100644 --- a/src/main/java/com/shinoow/abyssalcraft/update/IUpdateProxy.java +++ b/src/main/java/com/shinoow/abyssalcraft/update/IUpdateProxy.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.update; diff --git a/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyClient.java b/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyClient.java index a4268aab4..1a0b8def5 100644 --- a/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyClient.java +++ b/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyClient.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.update; diff --git a/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyServer.java b/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyServer.java index 504318588..440bffe88 100644 --- a/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyServer.java +++ b/src/main/java/com/shinoow/abyssalcraft/update/UpdateProxyServer.java @@ -1,17 +1,18 @@ -/**AbyssalCraft - *Copyright 2012-2014 Shinoow +/** + * AbyssalCraft + * Copyright 2012-2014 Shinoow * - *Licensed under the Apache License, Version 2.0 (the "License"); - *you may not use this file except in compliance with the License. - *You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - *Unless required by applicable law or agreed to in writing, software - *distributed under the License is distributed on an "AS IS" BASIS, - *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *See the License for the specific language governing permissions and - *limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package com.shinoow.abyssalcraft.update; diff --git a/src/main/resources/assets/abyssalcraft/lang/en_US.lang b/src/main/resources/assets/abyssalcraft/lang/en_US.lang index f867ae6d0..7d6dd85ab 100644 --- a/src/main/resources/assets/abyssalcraft/lang/en_US.lang +++ b/src/main/resources/assets/abyssalcraft/lang/en_US.lang @@ -497,7 +497,7 @@ item.shoggothFlesh.abyssalwasteland.name=Abyssal Shoggoth Flesh item.shoggothFlesh.dreadlands.name=Dreaded Shoggoth Flesh item.shoggothFlesh.omothol.name=Omothol Shoggoth Flesh item.shoggothFlesh.darkrealm.name=Shadow Shoggoth Flesh -item.eldirtchscale.name=Eldritch Scale +item.eldritchscale.name=Eldritch Scale item.omotholflesh.name=Omothol Ghoul Flesh item.shadowplate.name=Shadow Titan Armor Plate diff --git a/src/main/resources/assets/abyssalcraft/sounds.json b/src/main/resources/assets/abyssalcraft/sounds.json index b055ca510..4af1defc4 100644 --- a/src/main/resources/assets/abyssalcraft/sounds.json +++ b/src/main/resources/assets/abyssalcraft/sounds.json @@ -22,10 +22,20 @@ "dreadguard/hit4" ] }, - "ghoul.pete.death": { + "ghoul.normal.idle": { "category": "hostile", "sounds": [ - "ghoul/pete/death" + "ghoul/normal/idle1", + "ghoul/normal/idle2", + "ghoul/normal/idle3", + "ghoul/normal/idle4", + "ghoul/normal/idle5" + ] + }, + "ghoul.death": { + "category": "hostile", + "sounds": [ + "ghoul/death" ] }, "ghoul.pete.hit": { @@ -69,5 +79,11 @@ "sounds": [ "golem/idle1" ] + }, + "sacthoth.death": { + "category": "hostile", + "sounds": [ + "shadow/sacthoth/death" + ] } } \ No newline at end of file diff --git a/src/main/resources/assets/abyssalcraft/sounds/ghoul/death.ogg b/src/main/resources/assets/abyssalcraft/sounds/ghoul/death.ogg new file mode 100644 index 0000000000000000000000000000000000000000..009e9b31f013609d4d16d7ed704b16771b42db63 GIT binary patch literal 29243 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle1.ogg b/src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..12105d37e0346de6a4d21feb1694b09f9ea1d01a GIT binary patch literal 17458 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 AoB#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle2.ogg b/src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..da8841f0fa15d8f754a52515edc337c13e10ee49 GIT binary patch literal 17564 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle5.ogg b/src/main/resources/assets/abyssalcraft/sounds/ghoul/normal/idle5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7d54ea7c86f4580709368840102bcedce94fa5a6 GIT binary patch literal 22495 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 I*&C1iFGs07761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/sounds/shadow/sacthoth/death.ogg b/src/main/resources/assets/abyssalcraft/sounds/shadow/sacthoth/death.ogg new file mode 100644 index 0000000000000000000000000000000000000000..18eb211f7111a551cbf8f1a1debb86f7f0b48f4e GIT binary patch literal 100291 zcmeFZd00|g+c>;IKpcYvBD6vrQpA!HOPfH!*%AdpY(Oki)JAPShB$;coE$RKG{Yf9 zDJZe&RGQ#WR*qygp5{SM^IZCE>pa8zeDC#pzw3Ih@4w%6v97i5HSKi|Yu)Q!_jcL3 zb>RRM`1@%g{z{as;y6L3L$+?%EQ;GQ0fI6cf0Y26epNmVSvJw~pU*@~2$*v=-LoF; zI{qJz(XXDSffe|18)IiJ+q{mL5GUgO?4KAwoa5#;&&^}boQdur@L!dky?uBP00}~< z!9=~JXCD^;PyisbceX5y32?3{I^wjWq{x3FrFY9JDaz90qjRY3|A>h0Yp?(S10+r+ zc~wsW#MeC6;b-P;uJnvsI{zrqSkAuhX>#dxZsn#a{1P^H?}6<*!o*UNk-)9-y%+DL=I)F{FD)e&-^=l z{_WnUiSTpkL0j(`#%SIY$q9@gShP2WYe+9o)u=_v6*806T_VV zNK<+kMZekIZ;N}!mW5#OOJa5v1z&w1Jn0`qm>@d<(5W{1O*UO1Ho{!{H`A7HS#)Dd z$PEw`6BzkFKdC?Y1)PX&c}%fbf}FcA>L*$xV7K@qNFVcGBY_oUM;;MNdrIG3^|UN~ zTv?AP>u=5Cl+8R-UsCpyf(h5AJ_Kp$eEFch@?cNtmTLj#r8U1&J0_PItLpne*wm+o zEZe6>f%W40N{#Dp^1-$dJ*7|T&S1b)R#DkZ?HSIm{{Ci*`c;RnwR-*uw#XVTi$7zs z5=?zrbLg+DCKIs#WFI<6x2Pd}d%2YOTOLA$v8}Z&oSyW%Wnm??)46(jZk}&oeOhSP z)R{F&(w{RY0zf+ICl~)C`pL?_xVXANPQL7PvU|=I%0$%IcFpUhx((%HP6fG`LIb%t zSNo)5%P~*?_!_N2;8If*7U*2_OQJxc64&fwAg2BllFX9Lmz|G-Qt|JEdu@LmJ+1fO z!u2;c?8y#b=$+#lK6eq9!(F~LG2%e-ty38*hm!Bz`0d_}+|^Su|C6!)DLDWrH0eKO zvPhIe?KqUS)Z642f&U>nn=l>uHeLDlK_~1(`Y2c5x-Wa@-fP8TyN85hSN39)`*CZ- zJy!P9*7kGP4sKn0vw3agsox@+{}z~EVsr0C^1n&Wgouzl^B(#a!2TsUl}>pN=I7Z3 z6xc@;IPNH3msMJSu;O{W!t_5RCsuy6M1E8ze=5s!$|{b_Dpj6QBwRlB^6dW@{wXN)BtY{l7_03)RL4l%^Aukaxf4xTqIIXcBA6zY_oeTK1U-{ai=bVXlK=w81b} zE@#pISz^G_LHCe;cM!4r0bnWsJgTl8*l9Ugw9hk(5sM7a+2~hzJwH^nB4_VDJKum& z+wg7_Ok2_ukbxO^AP`U6!pY86t?_5LHn)e_KCUwcmpvqKWGZ0U0kH`&vI#N*C2!&h z=m$bDkgHY`y9M~P^t#in7SXL(zq0?k7#zr*4Fkj9-GBr2av;6#e~$%@(lVDtcL#Tp z|NZmdjK!uwmi^mUboUTCC**%W(*Nz@|6<^O!~n?R5KHif^FCth0+q~%0DB+O3y1-) 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 delta 1828 zcmV+<2iy40Ak8DNzY2c__(?=TRCwCtSWic%LGHIM+5-CSbY!}Em0Si0-)?a zA^+%p89(HpKh2;GqY=ao#+VZi(+o)8d;M005OD;N^fnmVm+z_^kxn<_(*l zRX={`f#wmrc6ReoNY;AcO%Kqt=6uL2VlK)Qc`YVz5!#{qW}BN7cvj9|<6 z<2Lm{3g!yFXA`JxBFw%3ptJcumVlB6EUg2f;vs&k@tG@tKjR1xH0Kk8Z8qf&n(*Q6$Nb3&yOn6oT9&BZU z|4+L7HjDt@9PUP~cjb-9fT;l46)x8T0<&O5_0{M9TL7x3-`X(_*Uw*0yTz*d;Tt>8 z|7JQxs3?$sH-IDs%6Xtv1fCoQq>JinFWz(PuV4JBH*aYvx@{o`lya!Pd&0SU5!`8v zm&t#C%%c4cmB86h)Pg8M8pIS$Deli?b9LxTvk<3G0<(XUu{xz|t+yXQDjX{t0XBDq zwi^Z4%*`Y91RUXz@|o{P_g_GXsYxIwdH8H!d6!`CIRL-kxw{op*icxMK$O@dD%zv! zaekF+`5r;N(*XWlx~JmI*{vtIt52T4OrL)oG>Tr&@_;@;hYauF!|&=;=p9VR8$KhHt`JO|ub25v1wU%r3I z`46Newq3_)YO=H0%#!-sUrZ0dXH!)=6stjx^MkMhNC&i$BIjSYX4f?CBc>*qV;F0T z4_@KB9;?DVbBfQO9Ro^5d*4UHM(l}C#tMjHK&72zN=!`x6BX#MuJF2;18z4Nwqivv zlXG3zelgGjI5;(fpQKn2*invA{!CK(TF08seo)~wSi`f0L`05Ows7efJgt&fK!^xY+Wnd-38>9%xbghX5)p&49&u=C2h;RNIF14LVxi+L8ug2W!4(N z!76Kl^_Z4=dW5XVB1J*c9tD@Kq_j=G{G4Tv6hH*~n}l%4n#}#W6Rkw|=K}idG-=fA zQsAsv5ynfl4z4cE$E>ygq)oVMFBfNp2=I6h3{DaXp9u=~_w;1vj!j03o{!42xP7hx&5p)Bn#GX78@BP1ka<&nQsJS=5xa6klAY80B-Mp%hki zU9)+WTFQ0{l`H7GC6j+3#R=zT;#ZWs?_wT%3`XF>wgsgixmK;g!%LSymx}iNSvNZ| zKiEjO&$jqSC(@1;ijs#Dj@`6lRK9z(jUX+oQFUWwyF`h$>Yg1gC*U;O>>4H7f@x@+ z7F;+gMJgR2CptRdL>lRkXX#v!WM&v!1_q&>n-_GEz(krMANm~P^&L~;e+B^kuvI@z Sne}M^0000|`J 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 W(-`u4;j!uf0000 delta 2614 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 FV1fl969oVO diff --git a/src/main/resources/assets/abyssalcraft/textures/armor/dreadium_2.png b/src/main/resources/assets/abyssalcraft/textures/armor/dreadium_2.png index ded5900aca140192b62ee70c983d767c2b07c2ae..5a3e33e08c18651ca4377a889d46bc1edad5354e 100644 GIT binary patch delta 664 zcmV;J0%!f&8p|56zzTnMNkl+B3 zN0V~S);S7m9yI|q0W|?N0W|?N0W|?N0W|?N0W|?N0W|^Z7-@g8;~Q@LAo%SKb8a)1 z{lDUk8Su2z@twW(mB2}PtkO4F2MH{u*taQV7+{RwS6l+=0lA9C2KF(+U)VttEmScs z#@`DA`6cI+QhIkiV2H2qP|Id?9^%UYKR}850XX9`eC_>}kVui@WSarMLKh!PTG++} zFM@yyQ=B?8UL}7MywEd@^uEBBU8gbDimQl>*bE|8p@=9B@PR!&+zC*dNC9s$=MC3B zu_fuP3ISbI`ie;L^8h_DHjTb%06#?^6M1Hc?|N+X1MF6${}>;lVM7r{SYX$lySgr8 zUJL&$+0~c%b(s;cjgc&&H>dgQcqM`6%rLg&OVEt#i$2FL&KOm`Q}Q0Pu6W?fb(Ae$@p(bUHVx z%2y`a^+!nP$4EU~ zdd73b(n)`LESswIO-yEfQs8k}YDk_3kwsB>RF-x$Y`UWe-?}AaiOPS?824iEmh$Ed6!SgpM(^uxF3XcuHuBZ y<(rg<%;4{)VDm%ELp-}o6*U&^8 z<7kHhSHnOar<7$`_W$*ODGqScuGUIk+=$6fqTY%LFR+Jw?`}kjXAHU+?QQ-!fSa{Tv@{M@PeO5WG;0!Nrj>Kn2P)Q@n@sU}`y76w>TR|_M| z(b1I*3{gf(JiTC7zsTL?3_u5^BnzWk=KL~B)HMjncf5Z&D>nkpCs~$0#;x#&#mYGA zaez;=Oe4l9qO@bI#S&5|@1wssuK%k5;J5fnBNXrpas%)jN6NGMt$?yz#~HpmJoN4D zdxp{Hale1=RQbka2a0(1O~3D9?~b8kBYb^$D9`hA@65c`cXIIx_#vh2?_{?w+4c4Z zq=&cfcxiuRwsKf{)VnKLD2&a`Eh3fb__Ehille7FHqUck^m_Kx?6@LdQNyMG4gS-( zPx?^9E2Sr4p!al5y>eo1S50Al_Mty;Q`gwQ1jn)aT(xInq^YGa)sXp7^3&P^{paoj znqin%a6R&T87DY0S3^T~PSEef-)4>jU8TYh&rBb+w4F%Wm!N<@2LOin%(O~DNa6qh N002ovPDHLkV1j4FROkQz diff --git a/src/main/resources/assets/abyssalcraft/textures/blocks/DSsSides.png b/src/main/resources/assets/abyssalcraft/textures/blocks/DSsSides.png index 5b8fbdb6b2fe789f5d74580ced9fbeef1b135234..a0038520ffba1a5705306d600ff54056629c7d7e 100644 GIT binary patch delta 522 zcmV+l0`>jX8NC^>zY2c==t)FDRCwANfD4!ZwEt=fc1B834aTtGD)&=i80A1G;LnNhy zbDrRwV;mkRTEIYnq6Hr!eczK(!aI*@fnDLct(X}=Qy?P55Lves+0V5q%eowv#_<8* zD6F+|o8AekEiw2&a2}jcRgc#~2;`K=IblF4WpAK3ADV*UH0%M}5y$~9rX@kRV8-un8D|45qd-JJgy20n=VoE|e^)h}243G@aAt-R$LTbD1c$M4QN_$Cr4VCx z+&gh>X={*G6$En5c<)hFwrvFjCywD^0ASm;!%f$w!@jmT=fj$rL9HNAt0B%I82<+V;AtQvK_ed@00000 MNkvXXu0jG}f=RmdaR2}S delta 546 zcmV+-0^R++8PyrEzY2c>07*naRCwA^nnoej7R;1MjQI3C7oW?Wjz7Qk;(02o! z^~4lW4VbEO8gIxYfrAjpB@w!Tp&y8GC#X?MYSMr$uDG`b<~X84r#;)gHtDL=npwBP z>p4v~065Kmt4y|Hca7jvox%9UOlBzQ+K5+mV z+Z3kp+_rFAaCdUaOyilZ8*rR`+t}0IAm>~_Af-sqK&gL)eP2No)xdPX-1qJ3rtjM( zmJ%@wEs0}w5y-V56cEAb!MVl&q-|+`Cv<4_%FvAf4E;#;O3;96z};EanPr=)UT}9* z13?2rKN8e19Ab(HdN2@j$=68)4Ipv_8RJgzO5PH=WbE$eXO{H^p?&4zg=uOKQ%YBB kjzej@s)HJ6K&bp30REvSsoD8JfB*mh07*qoM6N<$g1zPiLI3~& diff --git a/src/main/resources/assets/abyssalcraft/textures/blocks/DSsTop.png b/src/main/resources/assets/abyssalcraft/textures/blocks/DSsTop.png index d7ef927ebff464a5c535326bbeee047a2be101ab..4529ed0abade48065f3456c98d51f0eb15eab65d 100644 GIT binary patch delta 516 zcmV+f0{i{F8Mzs-zzTolNkl zb_}9{`ve_wz3?CfuF3w?D*b#+-u&hzRb6h%OS~$OnI=oR=V^w2?xh^@fTN zRfSuAVc1wj5*VWsLS)}|`sj%2Cv+&Y@K_NCQ6Xufwu%5MikngD$HklvJ};ZbyZt7* zuZuyIpb7|P6GT>r5a_+rM+abzfdlSFh>5suJ9*2DIhMC7;KJ>=0nl0{Z5z1b7m2$g z2=DK2#NIo7b_9P}?=%Au?&lr7DC|0W5Ui+`5F!yEg@mYZo}Jt6g;EPK1TI&}`vC&( z{@j94;w4bpGD}q{FYEa?Yffp1$!S(g4hX8kzX1Sw^fCle-P9=n0000zzTopNkl z3IItj1trBr@Of4DKq(I}=wlE=p!fP}9;1Vn6INb9USu_ka+O@`rLh7#iprV&>$uky2VothHd~JnIwpNS__M zUU0w2575fR(4^PKSt}7b_mB5i@-Qth&|2gF(j1r>Qv!3`;O_v>^)Z(Z18~~_0000< LMNUMnLSO-c6jbSp diff --git a/src/main/resources/assets/abyssalcraft/textures/blocks/EB.png b/src/main/resources/assets/abyssalcraft/textures/blocks/EB.png index 4d9572a0d2d5004878776f7e260b2238b2a60ca9..eb90bca5b00268d4c7474a56a9dddef443c25fd9 100644 GIT binary patch delta 721 zcmV;?0xtcY8iX6LzzTn_Nkl+At3~ubITczCul8XS&n~mo-E5L%aXh(2tZn` z6M+aUiUndzON7Q(E zJ)~N#(P%VC(<*<>#)!4Gb^5(NCWNqrb!Rlj5aSKlBuNM{&}uaq4o7IC>GgX!?{U^5 z-uq>Ltu--5thGz1i^T#$1f?hz3o53<)ntOR76q97{a;9ugz5B(5CXMYog`UdHk%P+ zL@Aihr%b0)I-L#|vk9}=oDdv&mSdhh`{ov)Mnw4aw*!CncAwlP60CKE;4#J!Lg4M& zH#~j%H4rhzVD5T*?g)b(27EYQf8b&|)cgVZE!b z;SJG6-}lX@K7aWXV~A|x=H@Ru zJI~3ogb)G%A{vM|=eWAMV0ZTg07?`RLclrKzv*;_)xQ;%xvy(hZOfBE zP6Q&bTCNb=T4Icd2qHq7cAJec0BEi8-lIh$N|@f>V%rwmwg8x`tKUqg)9#ZNM&mK( z=V#pA%^6R|H1(3IS`Z@?#Z#1mi_2du$~jtV%--HUBEsYF-uLSF$W)KEES`z;Kw8WhrG@5@SRuSS;qu=W`~L3C=mna>4eqZJN5lyncPO7EmK1 zeE)IA{@zPO1g!;Y9U*v(F@zAfy!^@G;VU3wjOi$B__u#;OFqmAA+TC4dm6?Vmdmbg zng(kvNt)0!4YJ`SA|y$|a=An)dS57|dW11XMx!wygx&}0V$6qIF& zQi}0-OjT7t=K=3Mi$#TVmdRv-wJqlO`0d*3|N9`u$l2L94h|02<^^rc=8_$~4Y!VK zcg_d1z+hr9d~`yKS?AWdPRPyR<6CR1G%?q@hl~9aRVldc2#El@t17lh#wxx5Wd(Ymd11TAH!5*)*zP-%PFP^8QiBJ0Q z;XV8N_bG}DRRzFW2P9&QTwIJfJp2{_V+~eSi7|e@>2!v3mJokRViZCssj7-{xkQ04 z8Z8o#fYow^t*e@p64qL*wdDEQ*?SLwa}H5uJRV~(wA&qGjMP;HfWNqS%XB(LL~zcs z)$KAKzafN@?sk{eazzLW>N@i3_-O5I9bb<|y!-nt{?ViFu+{=_{OXuivrV4o?CkUb zXf@h&yW5CFVibSw<~I~Ylil4R_XhXys`?pLT~#!j4X&@R5mE9yM^%VXFu<4l`$($k z^#(){VqN1!ge=R}eZ0pQgR>dKVIMFU10urJ)fL`3lEBB=jPBMJ2Jj~*uPKUxo12d~ z=K!ec6#!43`~bko$zQM`@4e&l@)FfZ8A|-qr$250I!=F2U-N%bRod+i&z}7RB)s?Q z3b2m3SOoh0^-EQiv$Io-v3T!M6;zegvZStSvOJ?KOFTe~kvz{SiX0JPKA)qiygg}-#Bq@B_!ONF_aR12${3?HyZNJB&snjIo>6X_Ii5s#-CbOo$>(|NV!$ zt}ws6c%FYmmGkpAB&{|(aezTpaMq(qNJ$Zi_$+5{?<@9(!*zn?a*6exUT>TEe8Jt_ zEj}3@KmMMi%4G76Zw?<~5=c^JqYpx5s+n@wr8TKqBo+pib{{eGXLqd$ofDZ>I|ES*k= fW~)hE*ZemCVb5r*Mt^ep00000NkvXXu0mjfl*?I; delta 665 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 Qd%#$cpNEHkqO;`{CsX-JWbQKf~HS`Vw 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 KR4+%`h5s8ZY1w@M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/textures/items/AAC.png b/src/main/resources/assets/abyssalcraft/textures/items/AAC.png index 197efcc4f32c215ffe4d7d6309fdc9eb308b5d29..38a11aece15a2722ee322e1663c83d81240e3d58 100644 GIT binary patch delta 252 zcmVI|_s_6r6|%DXj!sEA2dhH}DV(o@>Fo>;WuO zr4zwo5d?WlK(dt~uF0;8Q@+f+H}4aswZ;_$xQIi7l$Sc?r9K-EZ2|xkagC7#QeNtT zI<~zPacy|C&X|;BCV@@ZKlBV8jzb)%W6zf~!KP}R)i!azbY=#D-SbGoEB?90Ny(iHAMEOfJMc~3)w}nQTtuIE zw}rEUuMQ?9S-*6r`v(B#`i*gvIlt(q*qh)Vyaxapo^;4X^NH600000I|_q96r2|%D5=Ck64F_jDjpy=$RUKBOUPY3 zfTfjP2v`ImARC16QiNUNXWb1>wLE6#&A#17%#0;iVIiDhVdo_((p?m!tMv?i34t2{ z075TT^@D%zH4yJ70HEnAqOE)6z>N@kv32ZPlmLKRTYP8mk9cS_L>WgS%Tr`|YV1Dy z3YXK>N<1>CMX42A{e#D=G74^Op*I-L!xUc`)S^^`DWXmc0L0Aj*OB^2`%Pkfg{G^> qkp}=hqd7?alMiww#VqP5H25r-f8emby5y6}GloYtNH&>E$=6wSJ``FM!@&Gv z-2pa#E%^{JbuU@cgSSFd8`r|~v@1sES)P`4)h3M|c#NhxhCre~R8wXVzo zBp0_#tjuz_wuf3v<8+_W`hx4OB8Y_~j6fuBV(<7|>_Zn6RF%f*LAtl2g(^u9fx_^* zL%$hHj)A_sk_3NuH0%MO6vjhS5afqv>^H-dMX@TE8Q$Ex?u9|pm)9>1gskNtZ2fK$ zlduKGASU%n1m3Pbip>bH@Cu`jFt}``dNU)O>r(JQzJ4Ze)7P=NsSiz`&O{3OzXbsB x>Qzm>(;T~g^HKn!D8d*+rBeAG;4kq$0P&8v3*ZU%&HxJl002ovPDHLkV1g0`zl{I@ delta 444 zcmV;t0Ym=C81WdezzTnyNkl4)7doSM!;P#8h0RmwE)d!gwW=4OOWoSB`a^u;f2!e31 z%aD;Mc>*T5s4sLt7vK%)3I0znKX zq9z{tQOT7YT{t>tVVDpcsrecjp?yo8b-EDnhkmG#-yx-+YiPJ7nuuTfcP> zH9(>~n1F-?`)@xfm&Et&9nI%+ZasMzsW}oT&Mr~1wf8jUqp~c+%*eAWOX|#!NE4du mVlfY;)M~Jqp;dq9zXJd!55sM*kLsEL0000E=T1{^Jlws=q`C-WKE{i@>Z z+Xv3R4=U(yCYHz^R_xwBHnHy$LYcYLT(6g7DH|9_#gz}En9DS%agWJy^700009cdIK5N_{Th0JtU~Nx;#N_TtK@bpz;dTP=J@s~Mm1YC7-`OmOGwOd=u}vSkD&i`JSiLy0 zO7oP*#xAK)AuSbk|o2J2?4*CBlw zZ7?CMRsj>XFT{1FuOou9qddcvh4gKV)vA9Oqw?h(zWrV@Ny0JV&86ArH!8{%*w+F{Oz*pjqG&t8|NIN334R6u1xs#c=dL@>00000 LNkvXXu0mjfTjY|$ diff --git a/src/main/resources/assets/abyssalcraft/textures/items/ADDC.png b/src/main/resources/assets/abyssalcraft/textures/items/ADDC.png index a56076cc8a3f0a30722d8dc3a6d4f6ca71446cfa..6863bc56723a32857888f0ab2d6a30e51aa3e9e2 100644 GIT binary patch delta 215 zcmV;|04V?e7LFINzzTo4Nkl^h#j@Oh zVB?Tnv4ogB%fYx~`(}{b0rJF!y@b^Z1~WZYbV&a{aUn*T$vjbfHwPTScL47)SV=-1 RDsun;002ovPDHLkV1hMJVS)ev delta 200 zcmV;(05|`R7ylNpzzTn=NklITFJl5R)=|B84mGDDsKC%MZv8U1V&k6!d&R zDePnbCxC}-V8pI=5rUG?5(hMfNr5Z*9qB3Y9~KdW2_2U6KEUr_)WENMCy^IG9f*F% z*mhkLSdM6Nv2ePZ?9J`Y&dJQkK|v<61$HSiNXfZwX8I@)B)hPx;|`RPjZUOUU9S6% zy6;vZ6{2+AZF+D$ofoffLGc>n_M50^z^Gn)ixH2JG_e83<6$*E?}2uD%p$+f!NB+F rl#guj delta 184 zcmV;p07w7y7Vj3YzzTnwNkljulmn>+ mz}*xsTeLRv`hOvtU>yM64KK=$4jmK#0000PtO?<1eE<^Z zZ0PJrEG=jZ{n#7|7yjguyId~&&F<_Tv0_Dl+PgCqDCxVqa6%$jA~2LWA@P#1C;t<$ z;hTg4FfuD)z#MDgo8NzoNkw014){N+bOX-qBCl#1Bpt)96b9Ex^Q#6 zY{uex71&h(7|lFbK^*SnryeQ^2NJFkTqF>OJ6%s(WMz$9VkO~i8apMzc6@&7AuDS< so(*kFQ&t!O3IN;}_#L%y$NKdd05B?$hB>qbTmS$707*qoM6N<$g2rQKUH||9 delta 247 zcmV<-cCcTMy*NxMY-SR}AebbuUyr?8jyT<3oNX00?=aXl5yh1( x4pUCI7x%|U)ktkolz~^kH6d?fge%?8cK{?H1Rc&Xf(4g|4lNCiN$KX+NrwzpMRG)mm*DUmQa$vV zqu_%#effTV@BQ9;N_C@j2M4o-5$R^uLM(+Zwtv- zMvOOyMEVA>x6-^E9>Ly9)6&(0v1r1&l8S&Eb98Ws`fwO(V$=kK0MzP1?D-VN=3R&j zxP1Tj<$mfzA+{%fGPoMOmCtiII0C()=?=v6iRq77Aj`nYGir?>$?o>9q&@_i%{aH4}utkK^RduqRUR&Rr(; w&tpm{F&0hlCf+kw27qVd0FT)p@Skx#0L=Qh)s%q@_y7O^07*qoM6N<$f*7~mWB>pF delta 557 zcmV+|0@D5Z7~mPOzY2c>3rR#lRCwB?lRaxwVHC%I&+U_%mz%^`laf*==~4=Uqk~4# z=%_f@#nErj(Qn`vP;gNSE>azwszVWR6dXIKwNRolZ@0Pcx%VE2q-oODE*?1W@SJo0 z|MRLug#Qseeg%((xCKcA5JxpTi|{I6c{Ne z_tZaWe`kg470@fA44Q!VnR{=aj)S&d)sNNI-P#=5=UqiJCuCA1fD}-%6}%h;ugmh) z>m-t37S9sJ5naooRIAGvq~a(#RWSf~C=<-WsY zWOlBhjL8&-%r$??l?txo5=RjLSu@9er$cwIL2kY}1!5enGg~MS1_6UG#4P0TTo2cF z@I8+>j!0)RQ~t*Q^o+*t+i0y(N)bf^0^i4W9A=9pB$m?wJjW%SPQ$1xTBqo=J0yvq zv?g$z(*b&anq+cWa;C|C&th+PmpBaZel-x+CQ~pEoj-plF^?1aF}DO#zf@by>W08Qe@(uY~5o zEyPVQmY`h`=9;RzwW+4&eRLE1%fb$@dIv;gsQtSl&k%WmjQ>v3{)$MuDq`Ib5gCg5JX>h&)Vh`KnOPq5oi@5aj!@~1tP%t0f}%pOcn__S1Qo&C4P}&OKGt@aElGW^Ypl zH-KXf@bdUI)d1di`v*0LJDa;(%vPMP&tw#9$!MBq+~5Bgn@x2FF7BjNg_;qA z$eCNEWWs}#>`~Vve0JAmgFOKT&;_f>O^66ol*f``YJ>+~92p$e$j$t_w;?o_stz1uzvqR4x@b4MkzgJ2Gb=QqFi#Oc#PnK0RZjC^RV>LGG*$z=H%@Y d%k(ej_W%fgc5Qd-K^%uA1g4Nb-l2ZN=RG_Fr>i?<) zRHiCO{G`OL102htC4ubj^bp5dHz)^~(`a_*<9+8HB_jNfMNb3ehf6W0A680X?TRGH zc>Q*wdT-$bUp`%l)|w1wk*R z70X`>>e&=+qOOP%5pK$lqJi=0OOiIZs;1renyUD92Q4w%=>=_0OWZNKv5hcUhvMNT84G7Y`ph0O^t4;iJ};QI8M7i^Z6}4fT06$ zJQdIeuh8ekXwxsCP&nsUEFKt+#xzY$Q5>V%Nxb(IM?>aK&GS6(5!ngpb9p7+TZW?( z(k!Ezt#vRQjj5|y$Hi@3;RPn|F4VS^uS;=mg)s)gBWp9I?5xFk>5{h!0F>`9#YBHQ lCQF*8yn3_anEu5c2LR|A!tCW@dnNz?002ovPDHLkV1lWU*)0G7 diff --git a/src/main/resources/assets/abyssalcraft/textures/items/cthulhucoin.png b/src/main/resources/assets/abyssalcraft/textures/items/cthulhucoin.png new file mode 100644 index 0000000000000000000000000000000000000000..98ecd34ff710dd58c52518eb10308ef557107f24 GIT binary patch literal 3184 zcmV-$43G1PP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0004-Nklfgc5Qd-K^%uA1g4Nb-l2ZN=RG_Fr>i?<)RHiCO{G`OL102ht zC4ubj^bp5dHz)^~(`a_*<9+8HB_jNfMNb3ehf6W0A680X?TRGHc>Q*wdT-$bUp`%l z)|w>p?O-)f8quNQl_Y_A%=1tA>Jns?N3F&irCEiKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0004$Nkl;F|m0Bz@b0zNPs{QLgKwDK_jdc%yXU3Ts{}ai>MDg{+RQqY?9Nsq!1{rTZj9l-n%i!DD*hGZE zV8AYGW;nOO)K!HUyc>OVdj-Bc2$w~EXyg+p1(jf zK~%BrC#5S$2p)@uim;f^0Lb$pWjQ6!hg(fzPhffI!tL$6ci(}_a>`;pLqz^$qhlwi zJ<@q|IxHG7M0Qq7$82KU&=V&;aBGKifDt?2xMyI7YC@h5nNBAygI(Mg0~PHTa5zE; ztX996&t@&%;qU;nNQe=fkR-}-S#5>X{vcfzV~f#qaCl6bWqUL4n}()Y^J8*DG#GvQ z?Dj|bys!`&R28~QwjJf*Jt0~P-YWo5d^s^q9$O|)nx?#Y|CeR@m-syZc`VrL2;wBV P00000NkvXXu0mjf$-3-0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/textures/items/eldritchScale.png b/src/main/resources/assets/abyssalcraft/textures/items/eldritchScale.png new file mode 100644 index 0000000000000000000000000000000000000000..b675beea99d39c23f4f4c0ea5d8e6d4d8f4c795c GIT binary patch literal 3006 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 D1#)N< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/textures/items/engraving_elder.png b/src/main/resources/assets/abyssalcraft/textures/items/engraving_elder.png new file mode 100644 index 0000000000000000000000000000000000000000..ea51b7392b694b24c5f186fe2d26a3a69ebb9c98 GIT binary patch literal 2899 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 Y0HjLL&z^j|CIA2c07*qoM6N<$f<8X-{Qv*} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/textures/items/methane.png b/src/main/resources/assets/abyssalcraft/textures/items/methane.png index e6f8f924ca77b438a0d3e0825f29a82491ae7cb3..968c70f22bdec632e7b08e143e1e4851c73cc8aa 100644 GIT binary patch delta 286 zcmV+(0pb3^7t|N9zzTo=Nkl$><8plLosRS_BUwYs!6gSNefYR0Sp zg1e)t>~_2KP(j;XLPRmMrLnH-Nm&z{fTn4puHO(5Mhmj!0CIoVq4$8CGiHveATj~~ zN-31`%`gnx09C=v07b+wGt3I^;2u=f%R1nCy@YB;RVbw_x4Szcy5yTPaQDf=TpF07*qoM6N<$f-;$kF8}}l delta 267 zcmV+m0rdXV7r_^>zzTotNkli>UbsR9Y5yH%q0R z89O-~-n44r_H1@Gzg_F7GS4&n{i_}>(((B2h;lR3s*Aqw^{Y+%x8L|R0DH@gj?e^A Rvj6}907*qoM6LruV1k5cgNpzF diff --git a/src/main/resources/assets/abyssalcraft/textures/items/nitre.png b/src/main/resources/assets/abyssalcraft/textures/items/nitre.png index 4d3637c33a4755359a51a6c7c5a3f8b33d8cffcc..22077e5efff69282767a56c368709ae920204786 100644 GIT binary patch delta 377 zcmV-<0fzpL7_S(xzzTm_NklPrG5QV>askB>;F%c&~i2L7#10ZB&5s3v@ z)?_s96t7uKq7d0h5Y(m@UEk|hKRxu``Jafl62`->O9kf2(Lwc-tirWsPD5 z2$eOE3t^vc;&`~}p#TgBXJQ%Wj1Y=~4T_6X2jgMav1!@Jb_am75h_R(l?~ZuA_`=l z3WO@oMp2>E_q6FJ5fzh=Ghn2}+vdZk;aLgee%EoLN5BDb2{PE2j(9lzi_ty=^@S?!K#_s_D Xz(K?HgLhYo00000NkvXXu0mjf?zXZ2 delta 344 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 BA%_3} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/abyssalcraft/textures/logo_core.png b/src/main/resources/assets/abyssalcraft/textures/logo_core.png deleted file mode 100644 index a2a485b067e8a090d165581f9d22977afc3b35ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22720 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 I*(&^h06E9!qyPW_ diff --git a/src/main/resources/assets/abyssalcraft/textures/model/blocks/Engraver.png b/src/main/resources/assets/abyssalcraft/textures/model/blocks/Engraver.png new file mode 100644 index 0000000000000000000000000000000000000000..855f3813dc69bb9695db4c9d37125c02906937d0 GIT binary patch literal 4482 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 B5j+3@ delta 76085 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